ErrLookup › jackwener/OpenCLI
jackwener/OpenCLI
Make Any Website into CLI & Use your logged-in browser by AI agent. · JavaScript · 1,570 source files
Analyzed at 49907e53dc on 2026-08-29. 4683 documented errors.
| Code / Message | Type | Severity | Tags |
|---|---|---|---|
| Not a git repository | exception | error | scraping, dom-parsing, selector-drift, cli |
| Working tree not clean: ${status} | exception | warning | scraping, empty-response, dom-parsing, cli |
| Stale .git/index.lock found — remove it first | exception | error | error-handling, cli, unknown-error, envelope |
| Detached HEAD — checkout a branch first | exception | error | http, daemon, empty-response, server-error |
| Verify command returned no metric for baseline | exception | warning | filesystem, trace, best-effort, retention |
| 12306 tk auth cookie missing | exception | error | authentication, twitter, cookies, csrf |
| ${probe.detail} | exception | error | twitter, api-error, feature-gating, graphql |
| 12306 whoami failed: ${probe.detail} | exception | error | browser-session, twitter, cli, prerequisite |
| Unexpected 12306 probe: ${JSON.stringify(probe)} | exception | warning | twitter, timeout, browser-automation, side-effect-confirmation |
| Waiting for 12306 tk auth cookie | exception | error | twitter, browser-automation, command-failed, dom-selector |
| <train-no> must not be empty | validation | error | argument-validation, cli-usage, missing-argument |
| <train-no> "${trainNo}" does not look like a 12306 internal | validation | error | argument-validation, cli, input-format |
| --from station must not be empty | validation | error | argument-validation, cli, missing-option |
| --to station must not be empty | validation | error | argument-validation, cli, missing-option |
| --seat-types must contain only 12306 seat letters/digits (A- | validation | error | argument-validation, cli, input-format |
| --from and --to must differ; both resolved to ${fromStation. | validation | error | argument-validation, cli, station-resolution |
| No prices returned for train_no=${trainNo} ${fromStation.nam | exception | warning | empty-result, upstream-api, cli |
| keyword must not be empty | validation | error | argument-validation, cli, missing-argument |
| No 12306 stations match "${keyword}" | exception | warning | empty-result, search, cli |
| 12306 queryByTrainNo returned HTTP ${resp.status} | http | error | network, http, upstream-api, rate-limiting |
| 12306 queryByTrainNo returned non-JSON body | exception | error | network, http, json-parsing, upstream-api, anti-bot |
| 12306 ${endpoint} returned non-JSON body | exception | error | network, http, json-parsing, anti-bot |
| 12306 ${endpoint} returned an unexpected payload shape | exception | error | network, json, schema, api-change |
| 12306 rejected every known query endpoint name (${QUERY_ENDP | exception | error | network, endpoint-rotation, api-change, wire-protocol |
| <from> station must not be empty | validation | error | argument-validation, missing-argument, cli |
| <to> station must not be empty | validation | error | argument-validation, missing-argument, cli |
| <from> and <to> must differ; both resolved to ${fromStation. | validation | error | argument-validation, duplicate-argument, station-resolution |
| No trains found from ${fromStation.name} to ${toStation.name | exception | warning | empty-result, no-data, date-range, schedule |
| Failed to parse 12306 station_name.js: source string not fou | exception | error | parsing, html-response, anti-bot, resource-changed |
| Failed to parse 12306 station_name.js: no station records fo | exception | error | parsing, schema, truncated-response, api-change |
| station must not be empty | validation | error | argument-validation, empty-input, station-resolution |
| Unknown 12306 station telecode "${trimmed}" | validation | error | input-validation, station-lookup, argument-error |
| Unknown 12306 station "${trimmed}" | validation | error | input-validation, station-lookup, argument-error |
| date must be YYYY-MM-DD, got "${value}" | validation | error | input-validation, date-format, argument-error |
| date "${value}" is not a real calendar date | validation | error | input-validation, date-format, argument-error |
| limit must be a positive integer (1-${max}) | validation | error | input-validation, argument-error, pagination |
| limit must be <= ${max} | validation | error | input-validation, argument-error, pagination |
| 1688 item expects an offer URL or offer ID | validation | error | argument-validation, url-parsing, input-error |
| 1688 store expects a store URL or member ID | validation | error | argument-validation, missing-input, empty-string |
| Invalid 1688 store URL | validation | error | url-parsing, argument-validation, host-validation |
| 1688 ${action} navigation lost the current browser target | exception | error | cdp, puppeteer, browser-target, navigation |
| 请先在共享 Chrome 完成 1688 登录/验证,再重试(${action}) | exception | error | auth, captcha, session-expired, anti-bot |
| Invalid 1688 URL | validation | error | url-parsing, argument-validation, input-error |
| 1point3acres Discuz *_auth cookie missing | exception | error | auth, cookies, discuz, login-required |
| tid must be a numeric thread id | validation | error | argument-validation, input-error, cli |
| 1point3acres thread | exception | info | empty-result, thread-not-found, scraping |
| who 不能为空 | validation | error | argument-validation, missing-argument, cli |
| 1point3acres user | exception | info | user-not-found, empty-result, scraping |
| ${label} must be <= ${maxValue} | validation | error | argument-validation, limit, fail-fast |
| ${label} must be a positive integer | validation | error | argument-validation, type-error, fail-fast |
| ${label} must be >= ${min} | validation | error | argument-validation, minimum-value, fail-fast |
| 1point3acres request failed: ${error?.message || error} | exception | error | network, http-request, scraping |
| 1point3acres request failed: HTTP ${res.status} ${res.status | exception | error | http, network, http-status, scraping |
| 需要登录一亩三分地后再使用该命令 | exception | error | auth, login-required, discuz, forum |
NO_DATA Company ${encCoId} not found | error_code | warning | scraping, no-data, page-not-found |
INVALID_ARGUMENT jobId is required | error_code | error | validation, invalid-argument, missing-parameter |
NO_DATA Job ${jobId} is offline or removed | error_code | warning | scraping, no-data, expired-listing |
API_ERROR 51job hot failed: ${data.message ?? 'unknown'} | error_code | error | api, http-error, rate-limit |
NO_DATA No recommended jobs returned | error_code | warning | no-data, empty-result, pagination |
INVALID_ARGUMENT keyword is required | error_code | error | validation, invalid-argument, missing-parameter |
API_ERROR 51job search failed: ${data.message ?? 'unknown'} | error_code | error | api, http-error, rate-limit |
| Missing ${label} | exception | error | configuration, missing-env-var, atlassian, setup |
| Invalid ${label}: ${raw} | exception | error | configuration, url-validation, atlassian, invalid-url |
| ${label} returned HTTP ${resp.status}: ${summarizeApiError(p | http | error | http, api, atlassian, network, authentication |
| ${label} returned a non-JSON response | http | error | http, json, html-response, atlassian, proxy |
| ${label} is required | validation | error | validation, arguments, cli, atlassian |
| ${label} returned an unexpected payload shape; expected an o | validation | error | validation, payload, schema, atlassian, json |
| ${label} returned an unexpected payload shape; expected an a | validation | error | validation, payload, schema, array, atlassian |
| ${label} did not include a stable ${field}. | validation | error | validation, payload, missing-field, atlassian, schema |
| ${label} | validation | info | empty-result, search, query, atlassian |
| ${label} must be a positive integer | validation | error | validation, arguments, pagination, cli |
| ${label} must be <= ${maxValue} | validation | error | validation, pagination, arguments, cli, limits |
| ${commandName} requires --execute to perform a remote write | validation | error | cli, argument-validation, safety-guard, remote-write |
| File not found: ${path} | validation | error | filesystem, file-not-found, argument-validation, cli |
| File must be a readable text file: ${path} | validation | error | filesystem, file-type, argument-validation, cli |
| File could not be read: ${path} | validation | error | filesystem, permissions, read-error, cli |
| File could not be decoded as UTF-8 text: ${path} | validation | error | encoding, utf-8, argument-validation, cli |
| ${label} must be a numeric ID | validation | error | validation, argument-validation, numeric-id, cli |
| ${label} cannot be empty | validation | error | validation, empty-input, argument-validation, cli |
| ${label} cannot be empty | validation | error | validation, empty-input, search, cli |
| ${label} must be an integer between ${min} and ${max}, got $ | validation | error | validation, type-error, argument-validation, cli |
| ${label} must be between ${min} and ${max}, got ${parsed} | validation | error | validation, range-check, argument-validation, cli |
| ${label} must be a non-negative integer, got ${JSON.stringif | validation | error | cli, argument-validation, input-validation |
| ${label} returned an unexpected payload shape; expected an a | validation | error | cli, payload-shape, browser-scraping |
| ${label} failed: ${error?.message ?? error} | exception | error | browser, network, error-wrapping |
| ${config.site} login | exception | error | authentication, timeout, browser |
| limit must be a positive integer | validation | error | cli, argument-validation, input-validation |
| limit must be <= ${MAX_LIMIT} | validation | error | cli, argument-validation, limits |
| AIbase daily page returned an unreadable payload | exception | error | browser-scraping, payload-shape, cli |
| AIbase daily selector drift: ${reason} | exception | error | browser-scraping, selector-drift, cli |
| aibase news | validation | warning | browser-scraping, empty-results, cli |
| Failed to extract AIbase daily news: ${getErrorMessage(error | exception | error | browser, browser-scraping, error-wrapping |
| amazon.com | exception | error | authentication, cookies, amazon, browser-automation |
| Unexpected Amazon probe: ${JSON.stringify(probe)} | exception | error | amazon, dom-scraping, browser-automation, unexpected-state |
| Amazon review discussion requires an active signed-in Amazon | exception | error | authentication, amazon, sign-in-redirect, scraping |
| amazon review page redirected to sign-in and product page fa | exception | error | amazon, scraping, dom-scraping, sign-in-redirect |
| amazon discussion page did not expose review summary (landed | exception | error | amazon, scraping, robot-check, dom-scraping |
| amazon offer buy box is blocked by the current delivery loca | exception | error | amazon, buybox, delivery-location, scraping |
| amazon offer surface did not expose seller or fulfillment fa | exception | error | amazon, buybox, scraping, dom-scraping |
| amazon product page did not expose product content (landed o | exception | error | amazon, scraping, robot-check, invalid-input |
| amazon ${definition.commandName} did not expose any ranked i | exception | error | scraping, empty-result, robot-check |
| amazon search did not expose any product cards | exception | error | scraping, empty-result, robot-check |
| amazon search query cannot be empty | validation | error | validation, empty-argument |
| amazon product expects an ASIN or product URL | validation | error | validation, asin, bad-input |
| amazon discussion expects an ASIN or product URL | validation | error | validation, asin, bad-input |
| spec.invalidInputMessage | validation | error | validation, url-parsing |
| Invalid Amazon URL | validation | error | validation, url-parsing, amazon-host |
| amazon ${action} navigation lost the current browser target | exception | error | browser-automation, cdp, stale-target |
| amazon ${action} hit a robot check | exception | error | robot-check, captcha, rate-limiting, scraping |
| kind | validation | warning | argument-validation, cli-usage, input-error |
| ${label} click failed | exception | error | dom-click, selector-not-found, browser-automation |
| antigravity copy-message | exception | error | empty-result, dom-scrape, browser-automation |
| Copy button click failed | exception | error | dom-click, clipboard, selector-not-found |
| antigravity copy-code | exception | error | empty-result, dom-scrape, code-block |
| data.err | exception | error | in-page-eval-error, dom-structure, browser-automation |
| settings click failed | exception | error | dom-click, selector-not-found, ui-automation |
| sidebar-toggle failed | exception | error | dom-click, selector-not-found, ui-automation |
| direction | validation | warning | argument-validation, cli-usage, input-error |
| Could not find Antigravity input box | exception | error | dom, selector, automation, antigravity |
| Could not find input box | exception | error | dom, selector, automation, antigravity |
| Could not find antigravity.agentSidePanelInputBox | exception | error | dom, selector, automation, antigravity |
| Could not find Antigravity input box | exception | error | dom, selector, automation, antigravity |
| Timeout waiting for Antigravity reply after ${timeout / 1000 | exception | error | timeout, polling, automation, antigravity |
| No user message found in request | exception | error | validation, request-body, api, antigravity |
| Empty user message | exception | error | validation, request-body, empty-content, antigravity |
| Cannot connect to Antigravity at ${endpoint}. 1. Make sure | exception | critical | network, cdp, connection-refused, antigravity |
| state.vscdb not found: ${db} | exception | error | filesystem, sqlite, configuration, antigravity |
| sqlite3 failed on ${path.basename(db)}: ${e.message} | exception | error | sqlite, filesystem, locked-database, antigravity |
| Workspace state.vscdb not found: ${db} | exception | error | filesystem, workspace, path-not-found, antigravity |
| storage must be "local" or "session" | validation | error | argument-validation, storage, cli, antigravity |
| antigravity storage-keys: No keys match "${flt}". | exception | warning | empty-result, filter, storage, antigravity |
| key is required | validation | error | argument-validation, missing-argument, cli, antigravity |
| Key not found in ${store}: ${key} | exception | error | key-not-found, storage, lookup-miss, antigravity |
| antigravity cookies: document.cookie is empty. | exception | warning | cookies, empty-result, browser, httponly, antigravity |
| antigravity idb-list: No IndexedDB databases. | exception | info | indexeddb, empty-result, browser, antigravity |
| antigravity state-keys: No keys match "${flt}". | exception | warning | empty-result, filter, sqlite, antigravity |
| Key not found: ${key} | exception | error | key-not-found, sqlite, lookup-miss, antigravity |
| antigravity recent-paths: No recent paths recorded. | exception | info | empty-result, state-database, antigravity |
| antigravity recent-paths: Recent paths list is empty. | exception | info | empty-result, state-database, antigravity |
| workspaceStorage not found: ${AG_WORKSPACE_STORAGE} | exception | error | filesystem, missing-path, antigravity |
| antigravity workspaces-list: No workspace storage. | exception | info | empty-result, filesystem, antigravity |
| settings.json not found: ${AG_SETTINGS_JSON} | exception | error | filesystem, missing-file, settings, antigravity |
| Failed to parse settings.json: ${e.message} | exception | error | |
NOT_FOUND NOT_FOUND: No episodes found | error_code | warning | not-found, itunes-api, apple-podcasts |
NOT_FOUND NOT_FOUND: No podcasts found | error_code | warning | not-found, itunes-api, apple-podcasts |
FETCH_ERROR FETCH_ERROR: Unable to reach Apple Podcasts charts for ${country.toUpperCase()} | error_code | error | network, fetch, timeout, apple-podcasts |
| archive item returned malformed payload: files must be an ar | exception | error | api, payload-validation, archive-org, cli |
| archive search sort must be one of ${SORT_OPTIONS.join(', ') | validation | error | validation, cli, argument-error, input |
| archive search mediatype must be one of ${MEDIATYPES.join(', | validation | error | validation, cli, argument-error, input |
| archive search limit must be a positive integer | validation | error | validation, cli, argument-error, input |
| archive search limit must be <= 100 | validation | error | validation, cli, argument-error, limit |
| archive search query must not be empty | validation | error | validation, cli, argument-error, input |
| archive search request failed: ${error?.message || error} | exception | error | network, fetch, archive-org, cli |
| archive search failed: HTTP ${resp.status} | http | error | http, api, archive-org, cli |
| archive search returned malformed JSON: ${error?.message || | exception | error | json, parsing, network, archive-org, cli |
| archive search returned malformed payload: response.docs mus | exception | error | payload-validation, api, archive-org, cli |
| No items match "${query}" on archive.org. | exception | warning | empty-results, search, archive-org, user-input |
| archive search returned malformed payload: result row is mis | exception | error | malformed-payload, api-schema, archive-org, data-validation |
| archive search returned malformed payload for "${id}": downl | exception | error | malformed-payload, type-error, archive-org, data-validation |
| archive snapshots returned malformed CDX payload: missing "$ | exception | error | malformed-payload, api-schema, wayback, cdx, archive-org |
| archive snapshots url cannot be empty | validation | error | argument-validation, cli-input, user-input, archive-org |
| archive snapshots limit must be a positive integer | validation | error | argument-validation, cli-input, user-input, archive-org |
| archive snapshots limit must be <= 1000 | validation | error | argument-validation, cli-input, limits, archive-org |
| archive snapshots ${key} must be a digit-only timestamp (YYY | validation | error | argument-validation, cli-input, date-format, archive-org |
| archive snapshots request failed: ${error?.message || error} | exception | error | network, http-request, archive-org, wayback |
| archive snapshots failed: HTTP ${resp.status} | http | error | http-status, network, archive-org, wayback, rate-limit |
| archive snapshots returned malformed JSON: ${error?.message | exception | error | network, json, http, wayback-machine |
| archive snapshots returned malformed CDX payload: top-level | exception | error | json, schema, cdx-api, wayback-machine |
| No Wayback snapshots for "${target}". | exception | warning | empty-result, wayback-machine, cdx-api, no-data |
| archive snapshots returned malformed CDX payload: header row | exception | error | json, schema, cdx-api, contract-change |
| archive snapshots returned malformed CDX payload: snapshot r | exception | error | json, schema, cdx-api, row-validation |
| archive snapshots returned malformed CDX payload: snapshot r | exception | error | cdx-api, data-quality, schema, wayback-machine |
| archive snapshots returned malformed CDX payload: snapshot r | exception | error | cdx-api, data-quality, schema, wayback-machine |
| archive wayback timestamp must be YYYY[MM[DD[hh[mm[ss]]]]] o | validation | error | argument-validation, timestamp, input-validation |
| archive wayback url cannot be empty | validation | error | argument-validation, missing-argument, input-validation |
| archive wayback request failed: ${error?.message || error} | exception | error | network, dns, fetch, wayback-machine, timeout |
| archive wayback failed: HTTP ${resp.status} | http | error | http, network, archive, wayback |
| archive wayback returned malformed JSON: ${error?.message || | exception | error | json, parsing, network, archive |
| No Wayback snapshot for "${target}". | exception | warning | empty-result, archive, wayback |
| archive wayback returned malformed payload: closest snapshot | exception | error | schema, validation, archive, wayback |
| arxiv author cannot be empty | validation | error | validation, input, arxiv, cli |
| No papers found for author "${authorText}". Try alternate sp | exception | warning | empty-result, arxiv, search |
| Paper ${args.id} was not found. Check the arXiv ID format, e | exception | warning | empty-result, arxiv, input |
| No recent papers in ${category}. Check the category name. | exception | warning | empty-result, arxiv, validation |
| arxiv search query cannot be empty | validation | error | validation, input, arxiv, cli |
| No papers found. Try a different keyword. | exception | warning | empty-result, arxiv, search |
| arXiv API HTTP ${resp.status} | exception | error | network, http-error, api |
| arxiv ${label} must be a positive integer | validation | error | validation, arguments, input |
| arxiv ${label} must be <= ${maxValue} | validation | error | validation, arguments, limits |
| Invalid arXiv category "${value}". Examples: cs.CL, cs.LG, m | validation | error | validation, arguments, arxiv |
| autohome brand catalog returned an unexpected HTML shape; ex | exception | error | scraping, html-parsing, upstream-change |
| No series found for '${brand}'. Check the brand name spellin | exception | warning | empty-results, scraping, input |
| No koubei data found — the series id may be wrong, or Autoho | exception | error | scraping, html-parsing, upstream-change |
| This series has no koubei rating yet. | exception | warning | empty-results, scraping, data-availability |
| brand must be a non-empty value | validation | error | validation, arguments, input |
| unknown brand '${brandArg}'. Pass a known Chinese brand name | validation | error | validation, arguments, lookup |
| series_id must be a non-empty value | validation | error | validation, argument-error, input-validation |
| '${rawInput}' does not look like an autohome series id (a nu | validation | error | validation, argument-error, url-parsing |
| limit must be an integer between 1 and ${max} | validation | error | validation, argument-error, range-check |
| ${label} did not include a stable numeric id. | exception | error | scraping, data-extraction, validation |
| ${label} did not include a stable text value. | exception | error | scraping, data-extraction, validation |
| ${label} returned an unexpected payload shape; expected an o | exception | error | scraping, schema-validation, data-shape |
| autohome ${contextHint} network error: ${err?.message || err | exception | error | network, http, connectivity |
| autohome ${contextHint} HTTP ${resp.status} | exception | error | network, http, rate-limit |
| Band band_session cookie missing | exception | error | authentication, session, cookie |
| ${probe.detail} | exception | error | authentication, session, redirect |
| No posts found in this Band | exception | warning | scraping, empty-result, band, session |
| Could not extract CSRF token from barchart.com. Make sure yo | exception | error | authentication, csrf, scraping, barchart |
| symbol is required | validation | error | validation, argument-error, cli, missing-argument |
| --expiration must use YYYY-MM-DD format | validation | error | validation, argument-error, date-format, cli |
| --expiration must be a valid calendar date | validation | error | validation, argument-error, date, cli |
| --limit must be an integer between ${MIN_LIMIT} and ${MAX_LI | validation | error | validation, argument-error, cli, range-check |
| Barchart greeks request failed: HTTP ${data.status}${data.st | exception | error | network, http, barchart, scraping |
| Barchart greeks returned an unreadable options payload${data | exception | error | parsing, scraping, barchart, schema-change |
| Barchart greeks request failed: ${data.message || 'unknown e | exception | error | network, browser-automation, barchart, exception |
| Failed to fetch Barchart greeks for ${symbol} | exception | error | barchart, browser-automation, unknown-state, scraping |
| Barchart greeks returned an unreadable options payload | exception | error | barchart, options, payload-shape, scraping |
| No option greeks were returned for ${symbol}. Confirm the sy | exception | warning | barchart, options, empty-result |
| Barchart greeks returned a malformed option row | exception | error | barchart, options, row-validation, schema |
| Barchart greeks returned a malformed option row identity | exception | error | barchart, options, validation, schema |
| Failed to fetch quote for ${symbol} | exception | error | barchart, quote, network |
| bbc topic "${args.topic}" is not supported | validation | warning | bbc, argument, validation |
| BBC ${raw} feed returned no items. | exception | warning | bbc, rss, empty-result, parsing |
| bbc ${label} must be a positive integer | validation | warning | bbc, validation, argument |
| bbc ${label} must be <= ${maxValue} | validation | warning | bbc, validation, argument |
| ${label} request failed: ${err?.message ?? err} | exception | error | bbc, network, rss, fetch |
| ${label} returned HTTP ${resp.status} (${url}) | http | error | http, network, http-status, rss |
| Waiting for Bilibili session cookies | exception | warning | auth, cookies, login, polling |
| bilibili comment ${label} must be a positive integer | validation | error | argument-validation, input-validation, cli |
| Browser session required for bilibili comment | exception | error | auth, browser-session, prerequisite |
| bilibili comment message cannot be empty | validation | error | argument-validation, input-validation, cli |
| Refusing to post: pass --execute to actually publish this co | validation | error | safety-guard, write-guard, cli |
| Cannot resolve Bilibili BV ID from input: ${String(kwargs.bv | validation | error | argument-validation, parsing, input-validation |
| Cannot resolve aid for bvid: ${bvid} | exception | error | api, schema-change, response-parsing |
| Bilibili user search returned malformed mid for @${name} | exception | error | api, mention, response-parsing |
| Bilibili reply add API did not return rpid for the posted co | exception | error | api, schema-change, write-operation |
| bilibili comments limit must be an integer between 1 and ${M | validation | error | validation, argument-error, cli-options |
| bilibili comments parent must be a positive integer rpid | validation | error | validation, argument-error, cli-options |
| Bilibili ${label} API returned a malformed payload | exception | error | network, api-response, schema-validation |
| Bilibili ${label} API requires login or permission: ${messag | exception | error | auth, cookies, session-expired |
| Bilibili ${label} API failed: ${message} (${payload.code}) | exception | error | network, api-response, upstream-error |
| Bilibili ${label} API returned malformed data | exception | error | api-response, schema-validation, upstream-error |
| Bilibili ${label} API did not return replies | exception | error | api-response, schema-validation, upstream-error |
| Bilibili ${label} API returned malformed replies | exception | error | api-response, schema-validation, upstream-error |
| Bilibili ${label} API did not return top_replies | exception | error | api-response, schema-validation, cli-options |
| Bilibili ${label} API returned malformed top_replies | exception | error | bilibili, api-schema, validation |
| Bilibili comments reply ${index + 1} was malformed | exception | error | bilibili, data-shape, validation |
| Bilibili comments reply ${index + 1} was missing rpid | exception | error | bilibili, missing-field, validation |
| Bilibili comments reply ${index + 1} was missing ctime | exception | error | bilibili, missing-field, validation |
| Browser session required for bilibili comments | exception | error | browser-session, bilibili, setup |
| bilibili comments --top cannot be combined with --parent (pi | validation | error | cli-usage, argument-error, mutually-exclusive-flags |
| Cannot resolve Bilibili BV ID from input: ${String(kwargs.bv | validation | error | bilibili, argument-error, input-validation |
| Cannot resolve aid for bvid: ${bvid} | exception | error | bilibili, id-resolution, api |
| bilibili pinned comments: ${bvid} | exception | warning | bilibili, empty-result, pinned-comments |
| bilibili comment replies: ${parent} | exception | warning | bilibili, empty-result, nested-replies |
| Bilibili creator comparison API returned a malformed envelop | exception | error | bilibili, api-contract, response-validation, network |
| Bilibili creator-center login is required: ${message} | exception | error | bilibili, authentication, session-expired, cookie |
| Bilibili creator comparison API failed: ${message} (${payloa | exception | error | bilibili, api-error, rate-limit, remote-api |
| Bilibili creator comparison API returned malformed list data | exception | error | bilibili, schema-validation, api-contract, response-validation |
| Bilibili creator comparison | exception | error | bilibili, timeout, network, latency |
| Bilibili creator-center login is required: ${detail} | exception | error | bilibili, authentication, http-403, session-expired |
| Bilibili creator comparison request failed: ${detail} | exception | error | bilibili, network, http-error, request-failed |
| Bilibili creator comparison returned a malformed manuscript | exception | error | bilibili, schema-validation, api-contract, data-integrity |
| Bilibili creator comparison returned duplicate rows for ${bv | exception | error | bilibili, data-integrity, duplicate-data, api-contract |
| bilibili creator-stats ${bvid} | exception | warning | bilibili, empty-result, not-found, query-parameters |
| Bilibili creator comparison returned malformed stat data for | exception | error | bilibili, api-schema, validation, malformed-response |
| Bilibili creator comparison omitted metric ${definition.key} | exception | error | bilibili, api-schema, whitelist, missing-field |
| Bilibili creator comparison returned malformed metric ${defi | exception | error | bilibili, validation, type-mismatch, malformed-response |
| Bilibili creator comparison returned out-of-range percentage | exception | error | bilibili, validation, out-of-range, percentage |
| Bilibili creator comparison returned non-integer metric ${de | exception | error | bilibili, validation, integer, malformed-response |
| Bilibili view API returned a malformed payload during paid-c | exception | error | bilibili, api, malformed-response, risk-control |
| Bilibili view API returned malformed paid-content metadata | exception | error | bilibili, api-schema, paid-content, validation |
PAID_CONTENT 该视频为付费内容(${PAYMENT_LABELS[paymentType]}),当前账号无观看权益,无法获取完整视频流 | error_code | error | bilibili, paid-content, permissions, drm-adjacent |
| 获取视频分P信息失败: ${error?.message || error} | exception | error | bilibili, network, api, video-metadata |
| 获取视频分P信息失败: ${payload?.message ?? 'unknown'} (${payload?.cod | exception | error | bilibili, api-error, network |
| bilibili follow target cannot be empty | validation | error | validation, argument-error, cli |
| bilibili follow target must be a valid space.bilibili.com/<u | validation | error | validation, argument-error, url-parsing |
| Cannot resolve Bilibili target from input: ${trimmed} | validation | error | argument-error, resolution, bilibili |
| Browser session required for bilibili follow | exception | error | session, authentication, browser |
| Cannot follow yourself | validation | error | validation, argument-error, bilibili |
| Bilibili user ${mid} is blocked; unblock first before follow | exception | error | bilibili, relation, precondition |
| Browser session required for bilibili following | exception | error | session, authentication, browser |
| 获取关注列表失败: ${payload.message} (${payload.code}) | exception | error | bilibili, api-error, network, privacy |
| Bilibili relation query returned a malformed attribute | exception | error | schema, api-error, bilibili |
| Bilibili relation modify did not verify ${expectedLabel}; la | exception | error | network, timeout, bilibili, polling |
| Browser session required for bilibili subtitle | exception | error | browser-session, authentication, bilibili, precondition |
| 获取视频信息失败: ${err?.message || err} | exception | error | network, api, bilibili, error-wrapping |
| 获取视频信息失败: ${view?.message ?? 'unknown'} (${view?.code}) | exception | error | api, bilibili, risk-control, business-error |
| 无法从 view API 拿到 cid (bvid=${bvid}) | exception | error | api, bilibili, data-shape, cid |
| 获取视频播放信息失败: ${err?.message || err} | exception | error | network, api, wbi-signature, bilibili |
| 获取到的视频播放信息对象不符合预期格式 | exception | error | api, data-shape, bilibili, validation |
| 获取视频播放信息失败: ${payload.message} (${payload.code}) | exception | error | api, bilibili, risk-control, wbi-signature |
| 获取到的字幕列表对象不符合数组格式 | exception | error | api, data-shape, bilibili, subtitles |
| Bilibili subtitles are hidden behind login for this video. P | exception | error | authentication, bilibili, subtitles, login-required |
| 此视频没有发现外挂或智能字幕。 | exception | info | bilibili, subtitle, empty-result |
| 字幕条目缺少 subtitle_url 字段 | exception | error | bilibili, subtitle, schema, api-response |
| [风控拦截/未登录] 获取到的 subtitle_url 为空!请确保 CLI 已成功登录且风控未封锁此账号。 | exception | error | bilibili, auth, risk-control, rate-limit |
| 字幕 URL 非法: ${finalUrl} | exception | error | bilibili, subtitle, url, validation |
| 字幕获取失败: ${err?.message || err} | exception | error | network, fetch, bilibili, subtitle, cdp |
| 字幕获取失败: ${items.error}${items.text ? ' — ' + items.text : '' | exception | error | bilibili, subtitle, http-error, cdn, expired-url |
| 字幕获取结果对象不符合预期格式 | exception | error | bilibili, subtitle, schema, cdp, serialization |
| 解析到的字幕列表对象不符合数组格式 | exception | error | bilibili, subtitle, schema, json |
| 字幕文件中没有字幕片段。 | exception | info | bilibili, subtitle, empty-result |
| 字幕片段缺少有效 from/to 时间戳 | exception | error | bilibili, subtitle, schema, validation |
| bilibili summary bvid cannot be empty | validation | error | argument-validation, cli, input-missing |
| Bilibili summary URL must use http or https | validation | error | url-validation, protocol, argument-error |
| Bilibili summary URL must contain a BV video id | validation | error | url-validation, url-path, argument-error |
| Bilibili summary URL must be a bilibili.com or b23.tv URL | validation | error | url-validation, domain-whitelist, argument-error |
| Cannot resolve Bilibili BV ID from input: ${input} | validation | error | url-resolution, network, short-link, argument-error |
| Bilibili ${label} API returned a malformed payload | exception | error | api-response, malformed-json, anti-bot |
| Bilibili ${label} API requires login or permission: ${messag | exception | error | authentication, cookies, bilibili, permission |
| Bilibili ${label} API failed: ${message} (${payload.code}) | exception | error | api-error, bilibili, business-error, error-code |
| Bilibili conclusion API returned malformed data | exception | error | api-response, schema-validation, bilibili |
| Bilibili has not generated an AI summary for ${bvid}. | exception | warning | empty-result, bilibili, ai-summary, fallback |
| Bilibili conclusion API returned malformed model_result JSON | exception | error | bilibili, json-parse, api-response, validation |
| Bilibili conclusion API returned malformed model_result | exception | error | bilibili, api-response, schema-validation, validation |
| Bilibili conclusion API returned malformed outline | exception | error | bilibili, schema-validation, outline, api-response |
| Bilibili conclusion API returned malformed outline section | exception | error | bilibili, schema-validation, outline, data-mapping |
| Bilibili conclusion API returned malformed part outline | exception | error | bilibili, schema-validation, outline, api-response |
| Bilibili conclusion API returned malformed outline point | exception | error | bilibili, schema-validation, outline, data-mapping |
| Browser session required for bilibili summary | exception | error | bilibili, browser-session, authentication, prerequisite |
| Bilibili view API did not return cid/up_mid for ${bvid} | exception | error | bilibili, api-response, missing-field, video-availability |
| bilibili unfollow target cannot be empty | validation | error | bilibili, argument-validation, input-validation, cli |
| bilibili unfollow target must be a valid space.bilibili.com/ | validation | error | argument-validation, bilibili, cli-input |
| Cannot resolve Bilibili target from input: ${trimmed} | validation | error | argument-validation, bilibili, resolution-failure |
| Browser session required for bilibili unfollow | exception | error | browser-session, authentication, bilibili |
| Cannot unfollow yourself | validation | error | argument-validation, bilibili, self-action |
| Expected an exact BVID or bilibili.com video URL, for exampl | validation | error | argument-validation, bilibili, url-parsing |
| Expected a trusted HTTPS bilibili.com video URL without cred | validation | error | argument-validation, security, url-parsing, bilibili |
| Bilibili video URL did not contain an exact case-sensitive B | validation | error | argument-validation, bilibili, url-parsing |
| --page must be a positive decimal integer, got: ${value} | validation | error | argument-validation, cli-input, bilibili |
| --page must be a positive decimal integer, got: ${String(val | validation | error | argument-validation, cli-input, bilibili |
| --page is too large: ${value} | validation | error | argument-validation, cli-input, bilibili |
| Bilibili view API returned a malformed ${label} | exception | error | api, validation, bilibili, fail-closed |
| Bilibili view API did not return pages[] for --page selectio | exception | error | api, validation, bilibili, pagination |
| Bilibili view API returned a malformed pages[] entry | exception | error | api, validation, bilibili, fail-closed |
| Bilibili view API returned duplicate page entries for p=${pa | exception | error | api, validation, bilibili, data-integrity |
| 分P 序号超出范围:p=${pageNum}(该视频共 ${total} 集) | exception | error | api, validation, bilibili, out-of-range, pagination |
| Bilibili ${label} API returned a malformed payload | exception | error | api, validation, bilibili, json, payload |
| Bilibili ${label} API requires login or permission: ${messag | exception | error | auth, bilibili, cookies, csrf, permission |
| Bilibili ${label} API failed: ${message} (${payload.code}) | exception | error | api, bilibili, error-code, request |
| bilibili.com | exception | error | auth, bilibili, cookies, login, session-expired |
| Bilibili user search returned malformed result for ${input} | exception | error | api, validation, bilibili, search, schema |
| Bilibili user search returned malformed mid for ${input} | exception | error | api, malformed-response, bilibili |
| bilibili user search: ${input} | exception | warning | empty-result, user-lookup, bilibili |
| ${label} returned a malformed payload | exception | error | api, malformed-response, bilibili, validation |
| ${label} returned a malformed flag | exception | error | type-mismatch, api, bilibili |
| ${label} returned a malformed string | exception | error | type-mismatch, api, bilibili |
| Browser session required for bilibili video | exception | error | browser-session, authentication, bilibili |
| Bilibili view API failed: ${payload.message} (${payload.code | exception | error | api-error, bilibili, rate-limit |
| bloomberg businessweek --limit must be an integer between 1 | validation | error | argument-validation, cli, input-validation |
PARSE_ERROR Bloomberg Businessweek page returned malformed story data | error_code | error | scraping, parse-error, nextjs, bloomberg |
NOT_FOUND No Bloomberg Businessweek stories found | error_code | warning | scraping, empty-result, bloomberg |
FETCH_ERROR Bloomberg served the bot-protection page instead of article content | error_code | error | bot-detection, scraping, bloomberg |
PARSE_ERROR Bloomberg page did not expose article story data (${result.errorCode}) | error_code | error | scraping, parsing, bloomberg |
ARGUMENT Unknown Bloomberg feed: ${name} | error_code | error | argument, validation, bloomberg |
| ${label} must be a positive integer | validation | error | argument-validation, cli, input-validation, positive-integer |
| ${label} must be <= ${max} | validation | error | argument-validation, range-check, cli, bounds |
| ${label} must be a non-negative integer | validation | error | argument-validation, cli, input-validation, non-negative-integer |
| ${label} is required (YYYY-MM-DD) | validation | error | argument-validation, cli, missing-argument, date-format |
| ${label} must be YYYY-MM-DD, got ${JSON.stringify(value)} | validation | error | validation, argument-error, date-format |
| ${label} is not a valid calendar date: ${v} | validation | error | validation, argument-error, calendar-date |
| currency must be a 3-letter ISO code (e.g. USD, JPY, CNY), g | validation | error | validation, argument-error, currency |
| lang must be one of: ${[...ALLOWED_LANGS].join(', ')} | validation | error | validation, argument-error, locale, allowlist |
| destination is required | validation | error | validation, argument-error, required-parameter |
| checkout (${checkout}) must be after checkin (${checkin}) | validation | error | validation, argument-error, dates |
| Failed to load Booking.com search page: ${err?.message || er | exception | error | network, navigation, browser-automation |
| Failed to extract Booking.com cards: ${err?.message || err} | exception | error | browser-automation, scraping, dom |
| Booking.com page returned no extractable data | exception | error | scraping, browser-automation, empty-response |
| Booking.com served a verification / captcha page; retry late | exception | error | captcha, bot-detection, scraping |
| Booking.com extractor returned an invalid status | exception | error | scraping, contract-violation, browser-automation |
| Booking.com extractor returned malformed items | exception | error | scraping, schema-validation, browser-automation |
| Booking.com page declared results but no property cards were | exception | error | scraping, selector-mismatch, browser-automation |
| No hotels rendered (${totalText}). Try a broader destination | exception | warning | empty-results, search, user-input |
| Booking.com extractor returned malformed hotel row | exception | error | scraping, data-mapping, schema-validation |
| Booking.com hotel row is missing stable name/url identity | exception | error | scraping, dom-parse, data-integrity, booking |
| Boss wt2 / t cookies missing | exception | error | authentication, cookies, session, zhipin |
| Boss redirected to login page | exception | error | authentication, session-expired, redirect, zhipin |
| Unexpected Boss probe: ${JSON.stringify(probe)} | exception | error | probe, page-evaluate, scraping, unexpected-response |
| Waiting for Boss wt2 / t cookies | exception | warning | authentication, cookies, login-flow, polling |
| No recruiter-side chat sessions were returned. | exception | info | empty-result, chatlist, pagination, zhipin |
| No job-seeker-side chat sessions were returned. | exception | info | empty-result, chatlist, zhipin, side-selection |
| Boss chatlist returned an unexpected response | exception | error | unexpected-response, api-contract, chatlist, zhipin |
| 未找到该候选人 | exception | warning | empty-result, boss-zhipin, chat-history, lookup-failed |
| 该聊天缺少 securityId,无法获取历史消息 | exception | error | boss-zhipin, missing-field, securityid, command-execution-error |
| Boss recruiter history response did not include a message li | exception | error | boss-zhipin, api-response-shape, wapi, command-execution-error |
| Boss returned no messages for this chat. | exception | info | empty-result, boss-zhipin, pagination, chat-history |
| 未找到该聊天(geek 侧) | exception | warning | empty-result, boss-zhipin, geek-side, lookup-failed |
| uid 在招聘端与求职端聊天列表中均未找到 | exception | warning | empty-result, boss-zhipin, lookup-failed, chat-list |
| BOSS redirected the job detail page to the login flow | exception | error | auth-required, boss-zhipin, login-wall, session-expired |
| BOSS detail page did not expose a complete job posting | exception | error | boss-zhipin, dom-scraping, incomplete-page, command-execution-error |
| boss security-id contains unsupported characters | validation | error | argument-validation, input-validation, boss |
| 未找到该候选人 | exception | error | candidate-not-found, boss, chat-list |
| 未找到该候选人,请确认 uid 是否正确(可从 recommend 命令获取) | exception | error | candidate-not-found, boss, chat-list |
| 无法在聊天列表中找到该用户,候选人可能不在当前列表中 | exception | error | dom-click-failed, boss, chat-list, ui-automation |
| 找不到消息输入框 | exception | error | dom-selector, boss, chat-input, ui-automation |
| 未找到该候选人 | exception | error | candidate-not-found, boss, chat-list |
| 时间格式错误: ${kwargs.time},请使用格式如 2025-04-01 14:00 | validation | error | date-parsing, argument-validation, boss |
| 未知标签: ${labelInput}。可用标签: ${Object.keys(LABEL_MAP).join(', ' | exception | error | argument-validation, label-mapping, boss, i18n |
| boss candidate search | exception | error | empty-result, candidate-not-found, boss, chat-list |
| 未找到该候选人,请确认 uid 是否正确 | exception | error | candidate-not-found, boss, chat-list |
| 无法在聊天列表中找到该用户,请确认聊天列表中有此人 | exception | error | dom-click, ui-state, boss-zhipin |
| 无法获取简历面板: | exception | error | scraping, dom-selector, render-timing |
| Invalid BOSS city: ${input} | validation | error | argument-validation, input-mapping, boss-zhipin |
| Invalid jobType: ${input} | validation | error | argument-validation, enum-value, boss-zhipin |
| BOSS search requires CDP network capture | exception | error | cdp, network-capture, environment |
| BOSS search page did not expose its job-list response | exception | error | network-capture, scraping, anti-bot, boss-zhipin |
| boss search | exception | warning | empty-result, recommendation-feed, boss-zhipin |
| boss candidate search | exception | error | empty-result, uid-lookup, boss-zhipin |
| Browser page required | exception | error | missing-context, browser-session, precondition |
| boss ${name} must be a positive integer | validation | error | argument-validation, pagination, input-mapping |
| boss ${name} must be <= ${max} | validation | error | validation, cli-options, argument-error |
| boss ${name} cannot be empty | validation | error | validation, cli-options, missing-argument |
| Cookie 已过期!请在当前 Chrome 浏览器中重新登录 BOSS 直聘。 | exception | critical | auth, cookie-expired, login-required |
| Boss rejected the current browser environment: ${data.messag | exception | critical | risk-control, anti-bot, environment-rejected, blocked |
| 该命令仅支持招聘端(BOSS 端)账号,请使用招聘者账号登录后重试。 | exception | error | auth, wrong-account-type, recruiter-only, identity-mismatch |
| ${errorPrefix ? `${errorPrefix}: ` : ''}Boss API returned ma | exception | error | malformed-response, api-shape, network |
| ${prefix}${data.message || 'Unknown error'} (code=${data.cod | exception | error | api-error, business-error, boss-api |
| Boss API request failed: ${message} | exception | error | network, timeout, json-parse, xhr |
| Boss API returned malformed response | exception | error | malformed-response, empty-body, api-shape |
| Boss friend list response did not include zpData.friendList | exception | error | schema-mismatch, api-shape, friend-list, malformed-response |
| Boss recommend response did not include zpData.friendList | exception | error | boss-zhipin, api-response, missing-field, auth |
| Boss geek chat list response did not include zpData.friendLi | exception | error | boss-zhipin, api-response, missing-field, auth |
| Boss geek friend enrichment response did not include zpData. | exception | error | boss-zhipin, api-response, missing-field, batch |
| Boss geek history response did not include a message list | exception | error | boss-zhipin, api-response, chat-history, missing-field |
| boss chatmsg | exception | warning | boss-zhipin, empty-result, chat-history |
| 未获取到课程列表 | exception | error | chaoxing, auth, empty-list, session |
| 未找到匹配「${courseFilter}」的课程 | exception | error | chaoxing, filter, no-match, user-input |
| Chaoxing session cookies missing | exception | error | chaoxing, auth, cookies, session |
| ${probe.detail} | exception | error | chaoxing, auth, session-expired, probe |
| Unexpected Chaoxing probe: ${JSON.stringify(probe)} | exception | error | chaoxing, probe, unexpected-response, parsing |
| ChatGPT Desktop integration requires macOS (osascript is not | validation | error | macos, platform-check, config-error, desktop-app |
| Temporary chat did not become visible after selecting the me | exception | error | applescript, ui-automation, desktop-app, timeout |
| Failed to open ChatGPT chat: | exception | error | applescript, desktop-app, error-wrapper |
| ChatGPT Desktop integration requires macOS (osascript is not | validation | error | macos, platform-check, config-error, desktop-app |
| Failed to read from ChatGPT: | exception | error | applescript, desktop-app, error-wrapper |
| ChatGPT Desktop integration requires macOS (osascript is not | validation | error | macos, platform-check, config-error, desktop-app |
| Failed to send ChatGPT message: | exception | error | applescript, desktop-app, error-wrapper |
| ChatGPT Desktop integration requires macOS (osascript is not | validation | error | macos, platform-check, config-error, desktop-app |
| Error querying ChatGPT application state | exception | error | applescript, desktop-app, process-check |
| ChatGPT did not create a conversation URL after sending the | exception | error | browser-automation, timeout, chatgpt-web, session |
| chatgpt deep-research-result | exception | error | chatgpt, empty-result, deep-research |
| chatgpt detail | exception | error | chatgpt, empty-result, dom-extraction |
| chatgpt history | exception | error | chatgpt, empty-result, sidebar |
| --timeout must be a positive integer (seconds) | validation | error | argument-validation, timeout, chatgpt |
| ${preparedImages.reason} | validation | error | argument-validation, file-not-found, image-upload |
| Failed to upload image to ChatGPT: ${err instanceof Error ? | exception | error | chatgpt, upload, dom-extraction, command-execution |
| Failed to upload image to ChatGPT | exception | error | chatgpt, upload, command-execution |
| Failed to send image prompt to ChatGPT | exception | error | chatgpt, composer, command-execution |
| chatgpt image | exception | error | chatgpt, timeout, image-generation, empty-result |
| Failed to export generated ChatGPT image assets | exception | error | browser-automation, chatgpt, scraping, empty-result |
| chatgpt project-file-add requires at least one file path | validation | error | argument-validation, cli, chatgpt, missing-argument |
| Failed to upload file to ChatGPT project knowledge: ${err in | exception | error | browser-automation, chatgpt, upload, wrapped-error |
| Invalid project file path | validation | error | argument-validation, file-path, chatgpt, input-error |
| Failed to upload file to ChatGPT project knowledge | exception | error | chatgpt, upload, browser-automation, command-execution |
| chatgpt project-list | exception | warning | empty-result, chatgpt, browser-automation, scraping |
| chatgpt read | exception | warning | empty-result, chatgpt, browser-automation, scraping |
| chatgpt send cannot use --new and --conversation together | validation | error | argument-validation, cli, mutually-exclusive, chatgpt |
| chatgpt send cannot use --project and --conversation togethe | validation | error | argument-validation, cli, mutually-exclusive, chatgpt |
| Failed to send message to ChatGPT | exception | error | chatgpt, browser-automation, send-message, command-execution |
| ${commandName} prompt cannot be empty | validation | error | argument-validation, cli-input, empty-string |
| ${flagLabel} must be a positive integer | validation | error | argument-validation, cli-input, integer |
| ${flagLabel} must be a non-negative integer | validation | error | argument-validation, cli-input, integer |
| ${label}: ${String(payload.error)} | exception | error | browser-automation, page-evaluate, extraction |
| ${label} returned malformed extraction payload | exception | error | browser-automation, page-evaluate, extraction |
| chatgpt detail requires a conversation id or chatgpt.com /c/ | validation | error | argument-validation, url-parsing, conversation-id |
| ChatGPT requires a logged-in browser session. | exception | error | authentication, browser-session, login-gate |
| ChatGPT composer is not available on the current page. | exception | error | browser-automation, chatgpt, dom-selector, ui-change |
| Unknown ChatGPT model "${model}" | validation | error | validation, argument-error, chatgpt, model-name |
| Unknown ChatGPT tool "${tool}" | validation | error | validation, argument-error, chatgpt, tool-name |
| ChatGPT model selection requires native browser click suppor | exception | error | browser-automation, capability-check, chatgpt, cdp |
| Could not find the ChatGPT model selector in the composer. | exception | error | browser-automation, dom-selector, chatgpt, ui-change |
| Could not click the ChatGPT ${target.label} model option. | exception | error | browser-automation, dom-selector, chatgpt, entitlement |
| ChatGPT model did not switch to ${target.label}. | exception | error | browser-automation, chatgpt, state-verification |
| ChatGPT tool selection requires native browser click support | exception | error | browser-automation, capability-check, chatgpt, cdp |
| Could not find the ChatGPT tools menu button in the composer | exception | error | browser-automation, dom-selector, chatgpt, ui-change |
| Could not find the ChatGPT ${target.label} tool option. | exception | error | automation, chatgpt, ui-selector, dom-not-found |
| ChatGPT tool did not switch to ${target.label}. | exception | error | automation, chatgpt, ui-state, sync |
| chatgpt project commands require a chatgpt.com project id or | validation | error | validation, argument-error, chatgpt, url-parsing |
| chatgpt project commands require a project id or /g/g-p-<id> | validation | error | validation, argument-error, chatgpt, identifier |
| chatgpt detail | exception | error | timeout, chatgpt, polling, stability |
| Malformed ChatGPT Deep Research ${label}: expected object so | exception | error | validation, deep-research, payload-parsing |
| Malformed ChatGPT Deep Research ${label}: missing source URL | exception | error | validation, deep-research, missing-field |
| Malformed ChatGPT Deep Research ${label}: invalid source URL | exception | error | validation, deep-research, url-validation |
| Malformed ChatGPT conversation payload for Deep Research ext | exception | error | validation, deep-research, payload-parsing |
| ChatGPT conversation payload id mismatch: expected ${expecte | exception | error | validation, deep-research, id-mismatch |
| Malformed ChatGPT conversation payload for Deep Research ext | exception | error | chatgpt, payload-validation, deep-research, schema |
| Malformed ChatGPT conversation network payload for ${entryCo | exception | error | chatgpt, network, payload-validation, deep-research |
| ChatGPT deep-research-result did not stay on requested conve | exception | error | chatgpt, navigation, deep-research, url |
| ChatGPT deep-research-result conversation mismatch: expected | exception | error | chatgpt, navigation, deep-research, conversation-id |
| chatgpt deep-research-result | exception | error | timeout, chatgpt, deep-research |
| ChatGPT navigated away from the target conversation (${optio | exception | error | chatgpt, navigation, url, stability-check |
| No ChatGPT response appeared before timeout. Re-run with a h | exception | error | timeout, chatgpt, ask, no-response |
| No finished image appeared before timeout. Re-run with a hig | exception | error | timeout, chatgpt, image-generation |
| ChatGPT project requires a logged-in ChatGPT session. | exception | error | auth, chatgpt, login-required, session |
| ChatGPT did not open the requested project ${id}. Current UR | exception | error | chatgpt, navigation, project, url-mismatch |
| ChatWise response | exception | error | timeout, browser-automation, chatwise |
| --timeout must be a positive integer (seconds) | validation | error | validation, argument-error, cli |
| Browser session required for chess analyze | exception | error | browser-session, chess, cli |
| Failed to open Chess.com analysis board: ${error?.message || | exception | error | network, navigation, chess, browser-automation |
| Chess.com callback returned no game payload | exception | error | api-response, schema-validation, chess |
| Chess.com callback returned malformed PGN headers | exception | error | api-response, schema-validation, chess |
| Chess.com callback returned malformed player metadata | exception | error | api-response, schema-validation, chess |
| Chess.com callback payload is missing stable game summary fi | exception | error | api-response, data-missing, chess |
| Failed to fetch Chess.com callback ${url}: ${error?.message | exception | error | network, fetch, chess, http |
| Chess.com callback returned an invalid response object for $ | exception | error | network, fetch, http-client, invariant |
| Chess.com callback returned HTTP ${resp.status} for ${url} | exception | error | http, rate-limit, http-403, upstream-error |
| Chess.com callback returned malformed JSON for ${url}: ${err | exception | error | json, parse-error, network, bot-detection |
| --limit must be an integer between 1 and ${MAX_LIMIT} | validation | error | argument-validation, input-validation, cli-args |
| Chess.com archives payload is missing archives array | exception | error | schema-validation, upstream-api, chess-com |
| Chess.com has no game archives for ${username} | exception | warning | empty-result, no-data, chess-com |
| Chess.com archives payload contains an unexpected archive UR | exception | error | schema-validation, url-validation, chess-com |
| Chess.com monthly archive payload is missing games array | exception | error | schema-validation, upstream-api, chess-com |
| Chess.com has games archives for ${username} but no games in | exception | warning | empty-result, no-data, chess-com, limit |
| Chess.com returned no stats for ${username} | exception | warning | empty-result, chess-com, api-response, no-data |
| <username> is required | validation | error | argument-error, validation, missing-argument |
| Invalid Chess.com username "${value}" Usernames are 3-25 cha | validation | error | argument-error, validation, regex, input-validation |
| <game-url> is required | validation | error | argument-error, validation, missing-argument |
| Invalid Chess.com game URL: "${value}" Expected https://www. | validation | error | argument-error, validation, url-parsing, regex |
| Failed to fetch Chess.com API ${url}: ${error?.message || er | exception | critical | network, fetch, dns, timeout, chess-com |
| Chess.com API returned an invalid response object for ${url} | exception | error | fetch, contract-violation, mocking, chess-com |
| Chess.com returned 404 for ${url} | exception | warning | http-404, not-found, empty-result, chess-com |
| Chess.com API returned HTTP ${resp.status} for ${url} | exception | error | http-error, rate-limit, retry, chess-com |
| Chess.com API returned malformed JSON for ${url}: ${error?.m | exception | error | json, malformed-response, network, chess-com |
| Chess.com API returned an unexpected payload shape for ${url | exception | error | api, payload-shape, chess-com, validation |
| Chess.com stats payload for ${kind} is not an object | exception | error | api, schema-validation, chess-com, stats |
| Chess.com stats payload for ${kind}.last is not an object | exception | error | api, schema-validation, chess-com, stats |
| Chess.com stats payload for ${kind}.best is not an object | exception | error | api, schema-validation, chess-com, stats |
| Chess.com stats payload for ${kind}.record is not an object | exception | error | api, schema-validation, chess-com, stats |
| Chess.com game archive entry is not an object | exception | error | api, schema-validation, chess-com, games |
| Chess.com game archive entry is missing a stable game URL | exception | error | api, url-validation, chess-com, games |
| Chess.com game archive entry has malformed player objects | exception | error | api, schema-validation, chess-com, games |
| Chess.com game archive entry is missing stable player identi | exception | error | api, schema-validation, chess-com, games |
| Chess.com game archive entry does not include the requested | exception | error | api, games, chess-com, data-mismatch |
| Cannot switch to ${wantModel} model inside an existing conve | validation | error | argument, model-selection, browser-automation |
| ${wantModel} model requires a paid Claude plan. | validation | error | permissions, billing, model-selection |
| Could not switch to ${wantModel} model | exception | error | browser-automation, ui-selector, timeout |
| Could not enable Adaptive thinking | exception | error | browser-automation, ui-toggle, feature-unsupported |
| Failed to attach file | exception | error | file-upload, browser-automation, io |
| No Claude response appeared within ${timeoutSeconds}s. Re-ru | exception | error | timeout, empty-result, browser-automation |
| Failed to send message | exception | error | send-failure, browser-automation, network |
| Claude sessionKey cookie missing | exception | error | auth, session, cookies |
| result.detail (auth required from Claude probe) | exception | error | auth, session-expired, cookies |
| HTTP ${result.httpStatus} from /api/organizations | exception | error | http, claude, network, api |
| Claude whoami failed: ${result.detail} | exception | error | network, claude, browser, fetch |
| Unexpected Claude probe: ${JSON.stringify(result)} | exception | error | claude, browser, automation, unexpected-state |
| Claude session incomplete — ajs_user_id cookie missing | exception | error | auth, cookies, claude, session |
| Waiting for Claude sessionKey cookie | exception | warning | auth, cookies, claude, login-polling |
| No visible Claude messages were found for conversation ${id} | exception | error | claude, empty-result, scraping, dom |
| No Claude conversation history was visible on /recents. | exception | error | claude, empty-result, scraping, dom |
| No visible Claude messages were found in the current convers | exception | error | claude, empty-result, scraping, dom |
| Failed to send message | exception | error | claude, send, browser, automation |
| Claude requires a logged-in browser session. | exception | error | auth, claude, session, login-required |
| Claude composer is not available on the current page. | exception | error | browser-automation, ui-selector, authentication |
| ${commandName} prompt cannot be empty | validation | error | validation, argument-error, cli |
| ${flagLabel} must be a positive integer | validation | error | validation, argument-error, cli |
| claude detail requires a conversation id | validation | error | validation, argument-error, cli |
| Codex sidebar extraction returned an invalid payload. | exception | error | browser-automation, ui-selector, dom-extraction |
| Could not resolve a stable Codex conversation identity. | exception | error | browser-automation, ui-selector, resolution-failed |
| Failed to perform action. | exception | error | browser-automation, ui-selector, click-failed |
| Codex ${description} was not verified for ${conversationRefF | exception | error | browser-automation, timeout, verification-failed |
| --timeout must be a positive integer (seconds) | validation | error | validation, argument-error, cli |
| Codex extract-diff returned an invalid payload. | exception | error | browser-automation, ui-scraping, payload-validation, codex |
| No Codex diffs were visible. Run opencli codex send "/review | exception | warning | empty-result, ui-scraping, codex, workflow-order |
| No Codex conversations were visible. Open the Codex sidebar | exception | warning | empty-result, ui-scraping, codex, sidebar |
| model name cannot be empty | validation | error | argument-error, validation, cli, codex |
| Model name "${rawName}" is ambiguous. | exception | error | ambiguity, ui-scraping, codex, model-selection |
| ${result.reason} | exception | error | browser-automation, ui-scraping, codex, model-selection |
| No model matched. | exception | error | no-match, cli, codex, model-selection |
| Codex model selection was inconsistent. | exception | error | consistency-check, codex, model-selection, ui-scraping |
| Codex model switch to "${selected}" was not verified. | exception | error | verification-failed, browser-automation, codex, model-selection |
| No Codex projects matched "${kwargs.project}". / No Codex pr | exception | warning | empty-result, filter-mismatch, codex, ui-automation |
| title cannot be empty | validation | error | argument-validation, input-validation, codex |
| title must be a single line | validation | error | argument-validation, input-validation, codex |
| Failed to fill rename input. | exception | error | dom-automation, ui-automation, codex, command-execution |
| --pick label cannot be empty | validation | error | argument-validation, input-validation, codex, picker |
| Picker option "${rawLabel}" is ambiguous. | exception | error | ambiguity, picker, codex, ui-automation |
| Codex picker did not open after typing the command. | exception | error | picker, ui-automation, codex, dom-automation |
| No picker option matched. | exception | error | picker, match-failure, codex, ui-automation |
| Codex picker option disappeared before it could be clicked. | exception | error | codex, picker, dom-race, automation |
| Codex picker selection did not reach the composer. | exception | error | codex, picker, composer, chip, automation |
| Codex send was not submitted. | exception | error | codex, composer, send, automation |
| Codex send was not verified. | exception | error | codex, composer, send, verification |
| ${label} must be a positive integer | validation | error | validation, argument, codex, input |
| ${label} cannot be empty | validation | error | validation, argument, codex, empty-input |
| Codex sidebar project extraction returned an invalid payload | exception | error | codex, sidebar, dom, serialization |
| ${result?.error || 'Could not select Codex conversation'}${d | validation | error | codex, sidebar, ambiguity, argument |
| coingecko sort "${args.sort}" is not supported | validation | error | argument-error, validation, cli, coingecko |
| coingecko limit must be a positive integer | validation | error | argument-error, validation, cli, coingecko |
| coingecko limit must be <= 100 | validation | error | argument-error, validation, cli, coingecko |
| coingecko categories request failed: ${err?.message ?? err} | exception | error | network, fetch-failed, cli, coingecko |
| coingecko returned HTTP 429 (rate limited) | http | error | rate-limit, http-429, network, coingecko |
| coingecko categories returned HTTP ${resp.status} | http | error | http-error, network, server-error, coingecko |
| coingecko categories returned malformed JSON: ${err?.message | exception | error | json-parse, malformed-response, network, coingecko |
| CoinGecko returned no category data. | exception | warning | empty-result, data-shape, cli, coingecko |
| coingecko coin id cannot be empty | validation | error | cli, argument-validation, input-validation |
| coingecko coin id must look like a CoinGecko slug (got "${ar | validation | error | cli, argument-validation, regex-validation |
| coingecko currency must look like a currency slug (got "${ar | validation | error | cli, argument-validation, regex-validation |
| coingecko coin request failed: ${error?.message || error} | exception | error | network, fetch, api-request |
| coingecko has no coin with id "${id}". | http | error | http-404, api-request, empty-result |
| coingecko returned HTTP 429 (rate limited) | http | warning | rate-limit, http-429, api-request |
| coingecko coin failed: HTTP ${resp.status} | http | error | http-error, api-request, server-error |
| coingecko returned malformed JSON: ${error?.message || error | exception | error | json, api-response, parsing |
| coingecko returned error: ${data.error} | exception | error | api-error, api-response, response-body |
| coingecko returned no market data for currency "${currency}" | exception | error | api-response, currency, empty-result |
| coingecko derivatives limit must be a positive integer | validation | error | validation, argument-error, input-validation, cli |
| coingecko derivatives limit must be <= 500 | validation | error | validation, argument-error, limit, cli |
| coingecko derivatives request failed: ${err?.message ?? err} | exception | error | network, fetch, http-request, connectivity |
| coingecko derivatives returned HTTP 429 (rate limited) | http | warning | rate-limit, http-429, api, retry |
| coingecko derivatives returned HTTP ${resp.status} | http | error | http, http-status, api, server-error |
| coingecko derivatives returned malformed JSON: ${err?.messag | exception | error | network, json-parsing, http, coingecko |
| coingecko derivatives | exception | warning | empty-result, api-response, coingecko |
| coingecko limit must be a positive integer | validation | error | argument-validation, user-input, cli, coingecko |
| coingecko limit must be <= 250 (per_page upper bound) | validation | error | argument-validation, pagination, limits, api-constraint, coingecko |
| coingecko page must be a positive integer | validation | error | argument-validation, input-error, pagination |
| coingecko exchanges request failed: ${err?.message ?? err} | exception | error | network, fetch-failed, dns |
| coingecko returned HTTP 429 (rate limited) | http | warning | rate-limit, http-429, throttling |
| coingecko exchanges returned HTTP ${resp.status} | http | error | http-error, upstream-api, coingecko |
| coingecko exchanges returned malformed JSON: ${err?.message | exception | error | json-parse, malformed-response, proxy |
| coingecko exchanges | exception | info | empty-result, pagination, no-data |
| coingecko currency must look like a currency slug (got "${ar | validation | error | argument-validation, input-error, regex |
| coingecko global request failed: ${err?.message ?? err} | exception | error | network, fetch-failed, dns |
| coingecko returned HTTP 429 (rate limited) | http | warning | rate-limit, http-429, throttling |
| coingecko global returned HTTP ${resp.status} | http | error | http-error, upstream-api, coingecko |
| coingecko global returned malformed JSON: ${err?.message ?? | exception | error | network, http, json-parsing, api-response |
| coingecko global returned no data envelope | exception | error | api-response, schema-change, json |
| coingecko has no market totals for currency "${currency}" | validation | error | validation, argument-error, currency, coingecko |
| limit must be a positive integer | validation | error | validation, argument-error, input-validation |
| limit must be <= 250 (CoinGecko per_page upper bound) | validation | error | validation, argument-error, api-limits, pagination |
| coingecko top request failed: ${error?.message || error} | exception | error | network, dns, connection, timeout |
| coingecko returned malformed JSON: ${error?.message || error | exception | error | network, json-parsing, cloudflare, http |
| coingecko returned error: ${data.error} | exception | error | api-response, api-error, coingecko, http |
| coingecko returned an unexpected response | exception | error | api-response, schema-change, unexpected-response, json |
| coingecko top | exception | warning | empty-result, api-response, coingecko, cli |
| coingecko trending request failed: ${error?.message || error | exception | error | network, fetch, dns, coingecko, cli |
| coingecko returned HTTP 429 (rate limited) | http | error | rate-limit, http-429, coingecko, retry, cli |
| coingecko trending failed: HTTP ${resp.status} | http | error | http-error, api-response, coingecko, cli |
| coingecko returned malformed JSON: ${error?.message || error | exception | error | json, malformed-response, coingecko, cli |
| coingecko returned no trending coins. | exception | warning | empty-result, api-response, coingecko, cli |
| confluence update could not determine the current page versi | exception | error | confluence, version-conflict, missing-field, payload |
| Either --product-id or --url is required | validation | error | argument-error, missing-argument, coupang, cli, validation |
| coupang add-to-cart navigation failed: ${error?.message || e | exception | error | navigation, playwright, coupang, timeout, browser-automation |
| coupang add-to-cart evaluation failed: ${error?.message || e | exception | error | page-evaluate, playwright, coupang, browser-automation, dom |
| coupang.com | exception | error | authentication, coupang, login-required |
| Product mismatch: expected ${productId}, ${observed} | exception | error | coupang, product-mismatch, validation |
| This product requires option selection and is not supported | exception | error | coupang, unsupported-feature, options |
| Could not find an add-to-cart button on the product page. | exception | error | coupang, dom-selector, ui-automation |
| Failed to confirm add-to-cart success. | exception | error | coupang, ui-automation, verification-failed |
| coupang.com | exception | error | authentication, cookies, coupang |
| auth | exception | error | authentication, anti-bot, coupang, geo-blocking |
| Unexpected Coupang probe: ${JSON.stringify(probe)} | exception | error | coupang, unexpected-state, page-evaluation |
| Either --product-id or --url is required | validation | error | argument-validation, cli-usage, coupang |
| coupang product navigation failed: ${error?.message || error | exception | error | network, navigation, browser, coupang |
| coupang product wait failed: ${error?.message || error} | exception | error | timeout, browser, coupang, wait |
| coupang product extraction failed: ${error?.message || error | exception | error | extraction, dom, browser, coupang |
| coupang.com | exception | error | auth, login, session, coupang |
| coupang product | exception | error | empty-result, redirect, product, coupang |
| query cannot be empty | validation | error | argument, validation, usage, coupang |
| Unsupported --filter | validation | error | argument, validation, filter, coupang |
| coupang search navigation failed: ${error?.message || error} | exception | error | network, navigation, search, coupang |
| coupang search filter evaluation failed: ${error?.message || | exception | error | extraction, filter, dom, coupang |
| coupang search | exception | error | browser-automation, dom, filter |
| coupang search wait failed: ${error?.message || error} | exception | error | browser-automation, timeout |
| coupang search location evaluation failed: ${error?.message | exception | error | browser-automation, pagination, navigation |
| coupang search filtered navigation failed: ${error?.message | exception | error | browser-automation, navigation, network |
| coupang search scroll failed: ${error?.message || error} | exception | error | browser-automation, scrolling |
| coupang search extraction failed: ${error?.message || error} | exception | error | browser-automation, dom, scraping |
| coupang.com | exception | error | authentication, scraping, cookies |
| --limit must be an integer between 1 and ${max} (got ${raw}) | validation | error | argument-validation, cli |
| --page must be a positive integer (got ${raw}) | validation | error | argument-validation, cli, pagination |
| ${label} must be a Coupang product URL containing /vp/produc | validation | error | argument-validation, url-parsing, coupang |
| ${label} must be a numeric Coupang product ID | validation | error | argument-validation, coupang, input-format |
| crates crate | exception | warning | empty-result, crates-io, not-found |
| crates search | exception | warning | empty-result, crates-io, search |
| crates ${label} cannot be empty | validation | error | argument-validation, empty-input, crates-io |
| crates crate name is required (e.g. "serde", "tokio") | validation | error | argument-validation, missing-argument, crates-io |
| crates crate name "${value}" is not a valid crates.io name | validation | error | argument-validation, naming, crates-io |
| crates ${label} must be a positive integer | validation | error | argument-validation, integer-parsing, crates-io |
| crates ${label} must be <= ${maxValue} | validation | error | argument-validation, bounds-check, crates-io |
| ${label} request failed: ${err?.message ?? err} | exception | critical | network, fetch-failed, crates-io, connectivity |
| crates.io returned 404 for ${url}. | http | warning | http-404, crates-io, not-found, empty-result |
| ${label} returned HTTP 429 (rate limited) | http | warning | rate-limit, http-429, crates-io, retry |
| ${label} returned HTTP ${resp.status} | http | error | http-error, crates-io, server-error, network |
| ${label} returned malformed JSON: ${err?.message ?? err} | exception | error | json, malformed-response, crates-io, network |
| Ctrip is asking for a captcha; complete it in your browser s | exception | error | captcha, anti-bot, auth-required, ctrip, scraping |
| Ctrip place page did not render attraction links for city id | exception | error | scraping, dom-render, invalid-input, ctrip, timeout |
| Ctrip attraction DOM extraction returned malformed rows | exception | error | scraping, dom-parsing, schema-changed, ctrip |
| Ctrip attraction links rendered but parser did not find requ | exception | error | scraping, empty-result, dom-parsing, ctrip |
| Ctrip login_uid cookie missing — anonymous | exception | error | auth-required, cookies, not-logged-in, ctrip |
| Ctrip login_uid cookie absent after navigation | exception | error | auth-required, session-expired, cookies, ctrip |
| Waiting for Ctrip login_uid cookie | exception | warning | auth, ctrip, cookie, login |
| --from and --to must differ (got ${fromCity}) | validation | error | argument-validation, cli, ctrip, input-error |
| Ctrip is asking for a captcha; complete it in your browser s | exception | error | captcha, ctrip, anti-bot, auth |
| Ctrip bus page did not render schedule rows (state=${String( | exception | error | dom-render, ctrip, timeout, scraping |
| Ctrip bus DOM extraction returned malformed rows | exception | error | dom-parsing, ctrip, scraping, malformed-data |
| Ctrip bus rows rendered but parser did not find required sch | exception | error | dom-parsing, ctrip, scraping, selector-mismatch |
| No coaches for ${fromCity} to ${toCity} on ${date} | exception | warning | empty-result, ctrip, no-data, scraping |
| Ctrip is asking for a captcha; complete it in your browser s | exception | error | captcha, ctrip, anti-bot, auth |
| Ctrip cruise page did not render (state=${String(indexWait)} | exception | error | dom-render, ctrip, timeout, scraping |
| No cruise departure port matching "${port}" (try a listed se | exception | warning | empty-result, ctrip, input-validation, no-data |
| No cruises currently departing "${port}" | exception | info | empty-result, ctrip, cruise, no-data |
| Ctrip cruise port page did not render (state=${String(portWa | exception | error | render-failure, timeout, dom, ctrip, browser-automation |
| Ctrip cruise DOM extraction returned malformed rows | exception | error | dom-extraction, parser, contract-violation, ctrip, browser-automation |
| Ctrip cruise cards rendered but parser did not find required | exception | error | parser, selector-drift, markup-change, ctrip, dom-extraction |
| --from and --to must differ (got ${fromCity}) | validation | warning | argument-error, input-validation, cli, ferry |
| Ctrip is asking for a captcha; complete it in your browser s | exception | error | captcha, auth-required, anti-bot, ctrip, ship |
| Ctrip ferry page did not render sailing rows (state=${String | exception | error | render-failure, timeout, spa, ferry, ctrip |
| Ctrip ferry DOM extraction returned malformed rows | exception | error | dom-extraction, parser, contract-violation, ferry, ctrip |
| Ctrip ferry rows rendered but parser did not find required s | exception | error | parser, selector-drift, markup-change, ferry, ctrip |
| No sailings for ${fromCity} to ${toCity} on ${date} | exception | warning | empty-result, scraping, ctrip, ferry |
| --from and --to must differ (got ${fromCode}) | validation | error | argument-validation, input-error, ctrip, cli |
| --return (${ret}) must be on or after --depart (${depart}) | validation | error | argument-validation, date-validation, ctrip, cli |
| Ctrip is asking for a captcha; complete it in your browser s | exception | error | captcha, auth-required, anti-bot, ctrip, browser-automation |
| Ctrip round-trip flight page did not render flight cards (st | exception | error | scraping, timeout, dom-render, ctrip, browser-automation |
| Ctrip round-trip flight DOM extraction returned malformed ro | exception | error | scraping, dom-extraction, ctrip, parser |
| Ctrip round-trip flight cards rendered but parser did not fi | exception | error | scraping, dom-extraction, selector-drift, ctrip, parser |
| ctrip flight-round | exception | warning | empty-result, scraping, ctrip, flights |
| Ctrip round-trip flight rows were missing required airline/f | exception | error | scraping, dom-extraction, data-quality, ctrip, parser |
| Ctrip flight network capture returned malformed entries | exception | error | scraping, network-capture, ctrip, parser |
| Ctrip flight API returned HTTP ${status}; complete any verif | exception | error | auth, http-403, anti-bot, captcha, browser-automation |
| Ctrip flight API returned HTTP ${status || 'unknown'} | exception | error | http, rate-limit, network, server-error |
| Ctrip flight API response exceeded the browser capture limit | exception | error | payload-size, truncation, cdp, browser-capture |
| Ctrip flight API response body was unavailable | exception | error | cdp, capture-failure, browser-automation, response-body |
| Ctrip flight API returned invalid JSON | exception | error | json, parse-error, anti-bot, html-response |
| Ctrip flight API failed (status=${String(payload?.status)}): | exception | error | api, upstream, network, third-party |
| Ctrip flight API returned a malformed batchSearch payload | exception | error | schema, api, third-party, parsing |
| Ctrip flight API returned an itinerary without an id | exception | error | schema, api, third-party, data-quality |
| Ctrip flight batchSearch ended before the upstream search re | exception | error | timeout, pagination, network, third-party |
| Ctrip flight API returned malformed itinerary at index ${ind | exception | error | schema, parsing, third-party, data-quality |
| --from and --to must differ (got ${fromCode}) | validation | warning | argument-validation, cli-input, user-input |
| Ctrip flight requires browser response interception | exception | error | browser, network-interception, cdp, environment |
| flights.ctrip.com | exception | warning | captcha, anti-bot, authentication, browser |
| Ctrip flight API capture | exception | error | timeout, network, scraper, xhr-capture |
| ctrip flight | exception | info | empty-result, no-data, scraper |
| --checkin must be earlier than --checkout (got ${checkin} >= | validation | warning | argument-validation, date-validation, cli-input |
| hotels.ctrip.com | exception | warning | captcha, anti-bot, authentication, browser |
| Ctrip hotel-search page did not expose SSR hotel list (state | exception | error | timeout, ssr, scraper, browser |
| Ctrip hotel-search returned malformed SSR hotel list | exception | error | schema-validation, ssr, scraper, race-condition |
| ctrip hotel-search | exception | error | scraping, ssr, dom-changed, ctrip |
| Ctrip hotel-search SSR rows were missing required hotelId/na | exception | error | scraping, schema-drift, mapping, ctrip |
| Search keyword cannot be empty | validation | warning | validation, arguments, input |
| ctrip hotel-suggest | exception | info | empty-result, search, ctrip |
| hotels.ctrip.com | exception | error | captcha, anti-bot, auth, scraping |
| Ctrip hotel detail page did not expose SSR hotel data (state | exception | error | scraping, ssr, timeout, dom-changed |
| Ctrip hotel detail SSR extraction returned malformed data | exception | error | scraping, ssr, extraction, hydration |
| ctrip hotel | exception | info | empty-result, scraping, schema-drift |
| vacations.ctrip.com | exception | error | captcha, anti-bot, auth, scraping |
| ctrip package | exception | info | empty-result, search, ctrip, packages |
| Ctrip package page did not render package cards (state=${Str | exception | error | browser-automation, dom-rendering, scraping, ctrip |
| Ctrip package DOM extraction returned malformed rows | exception | error | browser-automation, dom-extraction, scraping, ctrip |
| Ctrip package cards rendered but parser did not find require | exception | error | dom-extraction, selector-mismatch, scraping, ctrip |
| Search keyword cannot be empty | validation | error | validation, argument-error, input-validation, ctrip |
| ctrip search | exception | warning | empty-result, search, scraping, ctrip |
| Ctrip is asking for a captcha; complete it in your browser s | exception | error | auth, captcha, anti-bot, ctrip |
| No tour packages for "${destination}" | exception | warning | empty-result, search, scraping, ctrip |
| Ctrip tour page did not render package cards (state=${String | exception | error | browser-automation, dom-rendering, scraping, ctrip |
| Ctrip tour DOM extraction returned malformed rows | exception | error | browser-automation, dom-extraction, scraping, ctrip |
| Ctrip tour cards rendered but parser did not find required p | exception | error | dom-extraction, selector-mismatch, scraping, ctrip |
| --from and --to must differ (got ${fromName}) | validation | error | argument-validation, cli, input-error |
| Ctrip is asking for a captcha; complete it in your browser s | exception | error | captcha, auth-required, scraping, anti-bot |
| Ctrip train page did not render train cards (state=${String( | exception | error | scraping, dom-render, timeout, page-structure |
| Ctrip train DOM extraction returned malformed rows | exception | error | scraping, dom-extraction, page-structure |
| Ctrip train cards rendered but parser did not find required | exception | error | scraping, dom-extraction, page-structure, selector-drift |
| No trains for ${fromName} to ${toName} on ${date} | exception | warning | empty-result, scraping, no-data |
| --${name} must be a positive integer, got ${JSON.stringify(r | validation | error | argument-validation, cli, parsing |
| --${name} must be between ${min} and ${max}, got ${parsed} | validation | error | argument-validation, cli, range-check, limit |
FETCH_ERROR ctrip suggest fetch failed: ${err instanceof Error ? err.message : String(err)} | error_code | error | network, fetch, cli |
COMMAND_EXEC ctrip suggest returned invalid JSON: ${err instanceof Error ? err.message : Stri | error_code | error | json, parsing, http |
| --${name} is required (YYYY-MM-DD) | validation | error | argument-validation, cli, missing-argument |
| --${name} must be YYYY-MM-DD, got ${JSON.stringify(raw)} | validation | error | argument-validation, date-format, cli |
| --${name} has invalid month/day: ${value} | validation | error | argument-validation, date-format, cli |
| --${name} is not a real calendar date: ${value} | validation | error | argument-validation, date-format, calendar |
| --${name} is required (3-letter IATA code, e.g. PEK, SHA) | validation | error | argument-validation, cli, missing-argument, iata |
| --${name} must be a 3-letter IATA code, got ${JSON.stringify | validation | error | cli, validation, argument-error, iata-code |
| --city is required (numeric city ID from `ctrip search` or ` | validation | error | cli, validation, argument-error, missing-argument |
| --city must be a positive integer city ID, got ${JSON.string | validation | error | cli, validation, argument-error, integer-validation |
| targetCount must be an integer between 1 and 100, got ${JSON | validation | error | validation, argument-error, browser-automation, integer-validation |
| maxScrolls must be an integer between 1 and 30, got ${JSON.s | validation | error | validation, argument-error, browser-automation, integer-validation |
| --${name} is required (e.g. 北京 / 上海) | validation | error | cli, validation, argument-error, missing-argument |
| --${name} is not a valid place name: ${JSON.stringify(raw)} | validation | error | cli, validation, argument-error, input-sanitization |
| hotel id is required (numeric id from `ctrip hotel-suggest`, | validation | error | cli, validation, argument-error, missing-argument |
| hotel id must be a positive integer, got ${JSON.stringify(ra | validation | error | cli, validation, argument-error, integer-validation |
| --timeout must be a positive integer (seconds) | validation | error | cli, validation, argument-error, timeout |
| No conversation history found in Cursor. | exception | warning | cursor, empty-result, cli |
| dblp pid "${pidArg}" is not a valid PID | validation | error | dblp, argument-validation, cli |
| No dblp author matched "${name}". Try a different spelling, | exception | warning | dblp, empty-result, search |
| dblp author search for "${name}" returned a hit without a PI | exception | error | dblp, schema-change, api-response |
| dblp PID ${pid}${resolvedName ? ` (${resolvedName})` : ''} h | exception | warning | dblp, empty-result, cli |
| dblp returned an empty record for key "${key}". | exception | warning | dblp, empty-result, record-key |
| No publications matched "${query}". | exception | warning | dblp, empty-result, search |
| ${label} request failed: ${err?.message ?? err} | exception | error | dblp, network, http-request |
| ${label} returned HTTP 429 (rate limited) | http | warning | dblp, rate-limit, http-429 |
| dblp returned 404 — the requested record may not exist. | http | warning | dblp, http-404, empty-result |
| ${label} returned HTTP ${res.status} | http | error | http, network, dblp, api |
| ${label} returned malformed JSON: ${err?.message ?? err} | exception | error | json, parsing, network, dblp |
| ${label} returned JSON without result.status.@code | exception | error | json, schema, dblp, api |
| ${label} returned API status ${statusCode}${statusText ? ` ( | exception | error | dblp, api, http |
| dblp ${label} must be a positive integer | validation | error | validation, arguments, cli, input |
| dblp ${label} must be <= ${maxValue} | validation | error | validation, arguments, cli, limits |
| dblp ${label} cannot be empty | validation | error | validation, arguments, cli, input |
| dblp paper key is required | validation | error | validation, arguments, cli, input |
| dblp paper key "${value}" is not a valid record key | validation | error | validation, arguments, format, dblp |
| No dblp venues matched "${query}". | exception | warning | empty-result, search, dblp, no-results |
| devto/${id} | exception | error | http, empty-result, devto, api |
| dianping.com | exception | error | auth, cookies, dianping, login-required |
| Dianping member page rendered but no user_id link found — st | exception | error | scraping, dom-selector, dianping, layout-change |
| unknown city '${cityArg}'. pass a numeric cityId, a pinyin s | validation | error | argument-validation, dianping, city-resolution, pinyin |
| dianping could not resolve cityId for '${cityArg}' (pinyin=$ | exception | error | scraping, dianping, city-resolution, network |
| dianping citylist did not render any city anchors; cannot re | exception | error | scraping, dianping, citylist, empty-result |
| keyword | validation | error | argument-validation, missing-argument, dianping, cli |
| dianping search parser found no result-shaped shop cards | exception | error | scraping, parser, dom-change, empty-result |
| dianping search parser found result cards without shop_id va | exception | error | scraping, parser, schema-mismatch, dom-change |
| unknown city '${cityArg}'. pass a numeric cityId or one of: | validation | error | validation, argument-error, city-lookup |
| limit must be an integer between 1 and 15 (dianping single p | validation | error | validation, argument-error, limit |
| shop_id must be a non-empty string | validation | error | validation, argument-error, shop-id |
| ${raw}' does not look like a dianping shop id | validation | warning | argument-validation, input-parsing, dianping |
| dianping ${label} failed: ${message} | exception | error | error-wrapping, browser-automation, dianping |
| dianping.com | exception | error | captcha, anti-bot, authentication, dianping |
| dianping ${contextHint} | exception | info | empty-result, search, dianping |
| dianping ${contextHint} did not render expected data${sample | exception | error | scraping, anti-bot, dom-change, browser-automation |
| discord-app channels | exception | warning | discord, empty-result, scraping, browser-automation |
| Browser session required for discord-app delete | exception | error | discord, browser-session, precondition |
| Invalid message ID: "${messageId}". A Discord message ID is | exception | error | discord, validation, input-validation |
| discord-app read | exception | warning | discord, empty-result, scraping |
| Search input not found | exception | error | discord, dom-selector, search, browser-automation |
| Discord search returned malformed browser payload. | exception | error | discord, payload, browser-automation, scraping |
| Discord search result selector returned no rows and no expli | exception | error | discord, selector, scraping, localization |
| discord-app search | exception | info | discord, search, empty-result |
| Could not find Discord message input. Make sure a channel is | exception | error | discord, dom-selector, message-send, browser-automation |
| discord-app servers | exception | error | discord, empty-result, automation |
| discord-app thread-read | exception | error | discord, empty-result, thread |
| discord-app threads | exception | error | discord, empty-result, forum |
| ${context} returned malformed browser output. | exception | error | discord, browser-automation, contract-violation |
| ${context} returned malformed row ${index + 1}. | exception | error | discord, data-validation, scraping |
| ${context} row ${index + 1} is missing ${field}. | exception | error | discord, data-validation, scraping |
| Discord channel navigation requires both guild_id and channe | validation | error | discord, argument-validation, url |
| --${label} must be a positive integer. | validation | error | argument-validation, cli, input-validation |
| --url must be a Discord channel URL like https://discord.com | validation | error | discord, cli, argument-validation, url-parsing |
| Pass --url or --guild/--channel to choose a Discord channel. | validation | error | discord, cli, missing-argument, argument-validation |
| Pass --channel with --guild, or use --url. | validation | error | discord, cli, missing-argument, argument-validation |
| Could not resolve Discord channel "${channelArg}". Use "open | exception | error | discord, cli, channel-resolution, lookup-failed |
| Discord did not finish navigating to the requested channel. | exception | error | discord, navigation, timeout, browser-automation |
| ${context} target is missing a stable channel/thread id. | exception | error | discord, cli, invariant-violation, message-verification |
| ${context} returned malformed message rows. | exception | error | discord, data-shape, scraper-output, message-verification |
| ${context} could not verify returned message target. Expecte | exception | error | discord, data-shape, message-verification, scraper-output |
| ${context} returned messages from the wrong Discord target. | exception | error | discord, race-condition, message-verification, wrong-target |
| --url must be a Discord thread/post URL like https://discord | validation | error | discord, cli, argument-validation, url-parsing |
| Pass --thread <thread_id> or --url <thread_url>. | validation | error | cli, argument-validation, discord |
| Could not resolve Discord thread "${threadArg}". Open the pa | exception | error | cli, argument-validation, discord |
| dockerhub search: No Docker Hub repositories matched "${quer | exception | warning | empty-result, search, dockerhub |
| dockerhub ${label} cannot be empty | validation | error | argument-validation, cli, dockerhub |
| dockerhub ${label} must be a positive integer | validation | error | argument-validation, numeric, dockerhub |
| dockerhub ${label} must be <= ${maxValue} | validation | error | argument-validation, numeric, bounds, dockerhub |
| dockerhub image name is required (e.g. "nginx", "library/ngi | validation | error | argument-validation, image-parsing, dockerhub |
| dockerhub image "${input}" is not a valid repository slug. U | validation | error | argument-validation, image-parsing, validation, dockerhub |
| dockerhub image "${input}" name must be 2-255 chars | validation | error | argument-validation, image-parsing, length, dockerhub |
| ${label} request failed: ${err?.message ?? err}. Check that | exception | critical | network, http, fetch, dockerhub |
| dongchedi search "${keyword}": No car series matched. Try th | exception | warning | empty-result, search, dongchedi, user-input |
| dongchedi specs ${seriesId}: No spec overview found for this | exception | error | layout-drift, parsing, dongchedi, web-scraping |
| dongchedi ${contextHint} network error: ${err?.message || er | exception | error | network, fetch, dongchedi, connectivity |
| dongchedi ${contextHint} HTTP ${resp.status} | http | error | http, network, rate-limit, dongchedi |
| dongchedi ${contextHint} returned no __NEXT_DATA__. Dongched | exception | error | web-scraping, anti-bot, layout-drift, dongchedi |
| dongchedi ${contextHint} returned no __NEXT_DATA__ | exception | error | soft-404, invalid-id, dongchedi, web-scraping |
| ${label} returned an unexpected payload shape; expected an o | exception | error | schema-validation, parsing, dongchedi, type-mismatch |
| ${label} returned an unexpected payload shape; expected an a | exception | error | schema-validation, parsing, dongchedi, type-mismatch |
| ${label} did not include a stable numeric id. | exception | error | schema-validation, missing-id, parsing, dongchedi |
| ${label} did not include a stable text value. | exception | error | schema-validation, missing-field, parsing, dongchedi |
| series_id must be a non-empty value | validation | error | argument-error, input-validation, dongchedi |
| '${rawInput}' does not look like a dongchedi series id (a nu | validation | error | argument-error, input-validation, regex-match, dongchedi |
| limit must be an integer between 1 and ${max} | validation | error | argument-error, validation, pagination, limit |
| Douban dbcl2 / ck cookies missing | exception | error | auth, cookies, douban, login-required |
| ${probe.detail} | exception | error | auth, douban, session-expired, login-required |
| Unexpected Douban probe: ${JSON.stringify(probe)} | exception | error | douban, unexpected-state, dom-parsing, probe |
| Waiting for Douban dbcl2 / ck cookies | exception | info | auth, polling, cookies, douban, waiting-for-login |
| Photo ID ${requestedPhotoId} was not found under subject ${s | exception | error | empty-result, douban, not-found, pagination |
AUTH_REQUIRED Douban requires a logged-in browser session before these commands can load data. | error_code | error | auth, douban, login-required, anti-bot, cli-error |
| Invalid Douban subject ID: ${subjectId} | validation | error | argument-error, input-validation, douban, regex-match |
| Unexpected Doubao probe: ${JSON.stringify(result)} | exception | error | doubao, auth, page-evaluate, unexpected-response |
| Waiting for Doubao login | exception | info | doubao, auth, login-flow, waiting |
| Could not find Doubao input element | exception | error | doubao, dom-locator, composer, page-evaluate |
| Unsupported Doubao input element | exception | error | doubao, dom-locator, composer, unsupported-element |
| Failed to insert text into Doubao composer | exception | error | doubao, composer, text-insertion, send-message |
| Doubao blocked the request with a verification challenge | exception | error | doubao, captcha, verification, rate-limit |
| Douyin API request failed (${method} ${url}): ${error instan | exception | error | douyin, network, page-evaluate, api-request |
| Empty response from Douyin API (${method} ${url}) | exception | error | douyin, api, empty-response, signing |
| Malformed response from Douyin API (${method} ${url}) | exception | error | douyin, api, response-validation, anti-bot |
| Douyin API auth/permission error ${code} at ${method} ${url} | exception | error | douyin, auth, session-expired, permissions |
| Douyin API error ${code} at ${method} ${url}: ${msg} | exception | error | douyin, api, status-code, rate-limit |
| ${context}: malformed evaluate payload | exception | error | douyin, puppeteer, page-evaluate, serialization |
| Cover image file not found: ${imagePath} | exception | error | douyin, filesystem, file-not-found, upload |
| ImageX upload failed with status ${res.status}: ${body} | exception | error | douyin, imagex, upload, http-status |
| creator.douyin.com | exception | error | douyin, auth, sts2, credentials |
| 无效的时间戳: ${unixSeconds} | validation | error | douyin, validation, timestamp, scheduling |
| 定时发布时间必须在至少 2 小时后 | validation | error | douyin, validation, scheduling, timezone |
| 定时发布时间不能超过 14 天 | validation | error | douyin, validation, scheduling, timestamp |
| 无效的时间格式: "${input}" | validation | error | date-parsing, validation, input-format |
| TOS init multipart upload failed with status ${res.status}: | exception | critical | http, upload, auth, douyin |
| TOS init response missing UploadId: ${res.body} | exception | critical | upload, response-parsing, douyin |
| TOS upload part ${partNumber} failed with status ${res.statu | exception | critical | upload, http, retry, douyin |
| TOS complete multipart upload failed with status ${res.statu | exception | critical | upload, http, multipart, douyin |
| Video file not found: ${filePath} | exception | error | filesystem, validation, input |
| Video file is empty: ${filePath} | exception | error | filesystem, validation, empty-file |
| Short read on part ${partNumber}: expected ${chunkSize} byte | exception | error | filesystem, io, upload |
| Douyin transcode for video ${videoId} | exception | error | timeout, polling, transcode, douyin |
| 获取抖音上传授权失败: ${JSON.stringify(result)} | exception | critical | auth, douyin, fetch, upload |
| 获取抖音上传授权失败: ${message} | exception | error | auth, session-expired, douyin, login-required |
| 解析抖音上传授权失败: ${error instanceof Error ? error.message : Strin | exception | error | douyin, json-parse, upload-auth, encoding |
| 抖音上传授权缺少 AccessKeyID/SecretAccessKey/SessionToken | exception | error | douyin, credentials, schema-validation, missing-field |
| 申请抖音上传地址失败,非 JSON 响应: HTTP ${res.status} ${text.slice(0, 300 | exception | error | network, douyin, json-parse, non-json-response |
| 申请抖音上传地址失败: HTTP ${res.status} ${JSON.stringify(error ?? pay | exception | error | network, douyin, api-error, aws4-signature |
| 申请抖音上传地址响应缺少必要字段: ${JSON.stringify(payload).slice(0, 500)} | exception | error | douyin, schema-validation, missing-field, upload-address |
| 抖音上传提交缺少 SessionKey | exception | error | douyin, validation, missing-field, commit-upload |
| 提交抖音上传失败,非 JSON 响应: HTTP ${res.status} ${text.slice(0, 300)} | exception | error | network, douyin, json-parse, non-json-response |
| 提交抖音上传失败: HTTP ${res.status} ${JSON.stringify(error ?? paylo | exception | error | douyin, vod, upload, api-error |
| 提交抖音上传响应缺少 video id: ${JSON.stringify(payload).slice(0, 500) | exception | error | douyin, vod, upload, schema-change |
| Douyin user info response is missing user_info | exception | error | douyin, auth, session, api-error |
| creator.douyin.com | exception | info | douyin, auth, cookies, login |
| douyin delete aweme_id cannot be empty | validation | error | douyin, argument, validation, cli |
| douyin delete aweme_id must be a numeric id | validation | error | douyin, argument, validation, cli |
| 抖音后台管理删除失败: ${JSON.stringify(result)} | exception | error | douyin, delete, ui-automation, page-script |
| 抖音作品列表响应缺少 work_list/aweme_list | exception | error | douyin, delete, api-error, schema-change |
| 抖音作品 ${awemeId} 未在作品列表中找到,未执行删除 | exception | error | douyin, delete, not-found, api-error |
| 抖音作品 ${awemeId} 删除后仍在作品列表中,删除未确认 | exception | error | douyin, delete, timeout, async |
| 等待抖音草稿编辑页超时 | exception | error | timeout, douyin, browser-automation, upload |
| 填写抖音草稿表单失败: title-input-missing | exception | error | douyin, dom-selector, browser-automation |
| 填写抖音草稿表单失败: caption-editor-missing | exception | error | douyin, dom-selector, contenteditable, browser-automation |
| 填写抖音草稿表单失败: visibility-missing | exception | error | douyin, dom-selector, browser-automation |
| 准备抖音自定义封面输入框失败: ${lastReason} | exception | error | douyin, dom-selector, cover-upload, timeout |
| 等待抖音封面处理完成超时 | exception | error | douyin, timeout, cover, browser-automation |
| 点击草稿按钮失败: ${result?.reason || 'unknown'} | exception | error | douyin, dom-selector, save-draft, browser-automation |
| 点击草稿按钮失败: creation-id-missing | exception | error | douyin, react-fiber, draft-id, browser-automation |
| 未检测到抖音草稿恢复提示 | exception | error | douyin, timeout, draft-save, browser-automation |
| 视频文件不存在: ${videoPath} | validation | error | argument-error, file-not-found, input-validation, douyin |
| 不支持的视频格式: ${ext}(支持 mp4/mov/avi/webm) | validation | error | validation, file-format, argument-error |
| 标题不能超过 30 字 | validation | error | validation, argument-error, limit-exceeded |
| 正文不能超过 1000 字 | validation | error | validation, argument-error, limit-exceeded |
| 封面文件不存在: ${path.resolve(coverPath)} | validation | error | validation, file-not-found, argument-error |
| 当前浏览器适配器不支持文件注入 | exception | error | browser-automation, capability-missing, command-execution-error |
| douyin hashtag ${action}: API returned malformed payload | exception | error | api-response, malformed-payload, scraping |
| douyin hashtag ${action}: API returned malformed "${field}" | exception | error | api-response, schema-validation, scraping |
| --limit must be a positive integer, got ${JSON.stringify(kwa | validation | error | validation, argument-error, cli-input |
| douyin hashtag search 需要 --keyword <关键词> | validation | error | validation, argument-error, missing-argument |
| douyin hashtag suggest 需要 --cover <cover_uri> | validation | error | validation, argument-error, missing-argument |
| douyin hashtag search: API returned suggestions but none had | exception | error | douyin, api-schema, response-parsing |
| douyin hashtag hot: API returned malformed payload | exception | error | douyin, api-schema, json-parsing, auth |
| douyin hashtag hot: API returned malformed "hotspot_list" | exception | error | douyin, api-schema, type-mismatch |
| douyin hashtag hot: API returned malformed "all_sentences" | exception | error | douyin, api-schema, type-mismatch |
| 未知的 action: ${action} | validation | error | cli, argument-validation, usage |
| 用户信息获取失败,请确认已登录 creator.douyin.com | exception | error | douyin, auth, session-expired |
| ${action}失败: ${JSON.stringify(error)} | exception | error | douyin, upload, imagex, api-error |
| 视频文件不存在: ${videoPath} | validation | error | filesystem, argument-validation, file-not-found |
| 不支持的视频格式: ${ext}(支持 mp4/mov/avi/webm) | validation | error | argument-validation, video-format, file-extension |
| 标题不能超过 30 字 | validation | error | argument-validation, douyin, input-length |
| 正文不能超过 1000 字 | validation | error | validation, argument-error, input-length |
| 封面文件不存在: ${path.resolve(coverPath)} | validation | error | validation, filesystem, argument-error |
| 抖音封面申请上传地址响应缺少 UploadHost/StoreUri: ${JSON.stringify(applyRe | exception | error | network, api-response, imagex, upload |
| 内容安全检测不通过,请修改后重试 | exception | error | content-policy, safety-check, validation |
| 内容安全检测超时(30s),请稍后重试 | exception | warning | timeout, safety-check, network |
| 发布成功但未返回 aweme_id/item_id: ${JSON.stringify(publishRes)} | exception | error | api-response, publish, session |
| --limit must be an integer between 1 and ${MAX_SEARCH_LIMIT} | validation | error | validation, argument-error, cli |
| --limit must be between 1 and ${MAX_SEARCH_LIMIT}, got ${par | validation | error | validation, argument-error, cli |
| douyin search 需要 <query> 关键词 | validation | error | validation, argument-error, cli |
| Douyin search extraction failed: ${error instanceof Error ? | exception | error | network, scraping, timeout, browser |
| Douyin search: unexpected evaluator payload shape | exception | error | browser-automation, payload-shape, douyin, page-evaluate |
| Douyin search results are blocked behind a login wall — log | exception | error | authentication, login-wall, douyin, cookies |
| No Douyin videos matched "${keyword}". | exception | warning | empty-results, douyin, search |
| Douyin search did not render result cards within the timeout | exception | error | timeout, rendering, douyin, anti-bot |
| Douyin search: evaluator returned malformed cards payload | exception | error | payload-shape, version-mismatch, douyin |
| douyin search | exception | warning | empty-results, douyin, selectors |
| Douyin search parser found result cards without stable video | exception | error | parsing, dom-extraction, douyin, selectors |
| douyin stats aweme_id must be a 16-20 digit numeric ID | validation | error | validation, argument-error, douyin, input |
| douyin stats ${awemeId} | exception | warning | empty-results, api-response, douyin, metrics |
| 必须提供 --reschedule 或 --caption | validation | error | argument-error, douyin, cli-usage, missing-argument |
| douyin user-videos requires a sec_uid | validation | error | argument-error, douyin, missing-argument, input-validation |
| ${raw} is not a Douyin sec_uid | validation | error | argument-error, douyin, format-validation, input-validation |
| Failed to fetch Douyin comments for video ${awemeId}: ${erro | exception | error | command-execution, douyin, scraping, network |
| douyin user-videos | exception | error | empty-result, douyin, scraping, session |
| douyin videos limit must be an integer between ${MIN_LIMIT} | validation | error | argument-error, douyin, range-validation, input-validation |
| Dribbble session cookies are missing | exception | error | auth-required, dribbble, session, cookies |
| auth | exception | error | auth-required, dribbble, session-expired, waf-challenge |
| Unexpected Dribbble identity response: ${JSON.stringify(resu | exception | error | command-execution, dribbble, scraping, unexpected-response |
| designer is required (for example: halolab) | validation | error | argument-validation, missing-argument, input-validation |
| designer must be a Dribbble username or profile slug | validation | error | argument-validation, format-validation, regex |
| shot is required (numeric id or dribbble.com/shots URL) | validation | error | argument-validation, missing-argument, input-validation |
| shot must be a numeric id or dribbble.com/shots URL | validation | error | argument-validation, url-parsing, format-validation |
| shot URL must use dribbble.com | validation | error | argument-validation, url-host, domain-validation |
| shot URL must match dribbble.com/shots/<id> | validation | error | argument-validation, url-path, format-validation |
| ${command} returned an unreadable browser payload | exception | error | browser-automation, payload, internal-error, scraping |
| ${command} returned no results | exception | warning | empty-results, no-data, scraping |
| ${command} selector drift${reason} | exception | error | selector-drift, scraping, site-change, dom-structure |
| ${command} returned a malformed rows payload | exception | error | payload, schema-mismatch, internal-error, scraping |
| ${command} page loaded but no matching rows were found | exception | warning | empty-result, scraping, cli |
| ${command} was not found | exception | warning | empty-result, not-found, scraping |
| ${label} failed: ${error?.message ?? error} | exception | error | wrapper, browser-automation, cli |
| --offset must be a multiple of 10 for DuckDuckGo HTML pagina | validation | error | argument-validation, pagination, cli |
| --time must be one of d, w, m, or y | validation | error | argument-validation, cli, input-validation |
| DuckDuckGo suggest request failed: ${err instanceof Error ? | exception | error | network, fetch-failed, cli |
| DuckDuckGo suggest returned HTTP ${resp.status} | exception | error | http-status, rate-limit, cli |
| DuckDuckGo suggest returned malformed JSON: ${err?.message ? | exception | error | json-parse, malformed-response, cli |
| empty symbol | exception | error | validation, input, secid |
| Unrecognized symbol: ${input} | exception | error | validation, input, secid, symbol-format |
HTTP_ERROR announcement failed: HTTP ${resp.status} | error_code | error | network, http, api, eastmoney |
NO_DATA eastmoney returned no announcement data | error_code | warning | api, empty-result, eastmoney, no-data |
| eastmoney convertible returned malformed ${field} for ${bond | exception | error | api, schema, data-quality, eastmoney |
| eastmoney convertible --limit must be an integer between 1 a | validation | error | validation, argument, cli, limit |
| eastmoney convertible returned a malformed response envelope | exception | error | api, response-shape, eastmoney, validation |
| eastmoney convertible returned a malformed data envelope | exception | error | api, response-shape, eastmoney, empty-payload |
| eastmoney convertible returned malformed diff data | exception | error | api, response-shape, eastmoney, schema-validation |
| eastmoney convertible | exception | warning | api, empty-result, eastmoney, market-data |
| eastmoney convertible returned malformed row at rank ${rank} | exception | error | api, data-mapping, eastmoney, validation |
| Unknown sort "${sortKey}". Valid: ${Object.keys(SORTS).join( | validation | warning | cli, argument-validation, eastmoney, user-input |
| eastmoney convertible failed: HTTP ${resp.status} | exception | error | network, http, eastmoney, rate-limit |
| eastmoney convertible returned invalid JSON: ${error?.messag | exception | error | network, json, eastmoney, anti-bot |
INVALID_ARGUMENT Unknown sort "${sortKey}". Valid: ${Object.keys(SORTS).join(', ')} | error_code | warning | cli, argument-validation, eastmoney, user-input |
HTTP_ERROR etf failed: HTTP ${resp.status} | error_code | error | network, http, eastmoney, api |
NO_DATA eastmoney returned no ETF data | error_code | warning | empty-data, eastmoney, api, no-data |
| Unrecognized A-share symbol: ${input} | exception | error | validation, input-parsing, symbol, eastmoney |
INVALID_ARGUMENT ${err instanceof Error ? err.message : err} | error_code | error | validation, invalid-argument, input-parsing, eastmoney |
HTTP_ERROR holders failed: HTTP ${resp.status} | error_code | error | network, http, eastmoney, api |
NO_DATA No shareholder data for ${secucode} | error_code | warning | empty-result, api, no-data, eastmoney |
INVALID_ARGUMENT Unknown group "${group}". Valid: main, hk, us, all | error_code | error | validation, invalid-argument, cli |
HTTP_ERROR eastmoney index-board failed: HTTP ${resp.status} | error_code | error | http, network, rate-limit, eastmoney |
NO_DATA eastmoney returned no index data | error_code | warning | empty-result, api, no-data, eastmoney |
INVALID_ARGUMENT Unknown period "${periodKey}". Valid: ${Object.keys(PERIOD_MAP).join(', ')} | error_code | error | validation, invalid-argument, cli, kline |
HTTP_ERROR `longhu failed: HTTP ${resp.status}` | error_code | error | http, network, api, eastmoney |
NO_DATA `No longhu data since ${sinceDate}` | error_code | warning | empty-result, api, eastmoney, date-range |
INVALID_ARGUMENT `Unknown range "${rangeKey}". Valid: ${Object.keys(RANGES).join(', ')}` | validation | error | validation, arguments, cli, eastmoney |
HTTP_ERROR `money-flow failed: HTTP ${resp.status}` | error_code | error | http, network, api, eastmoney, rate-limit |
NO_DATA eastmoney returned no money-flow data | error_code | warning | empty-result, api, eastmoney |
INVALID_ARGUMENT `Unknown direction "${dir}". Valid: north / south` | validation | warning | cli, argument-validation, invalid-argument |
HTTP_ERROR `northbound failed: HTTP ${resp.status}` | error_code | error | network, http, upstream-api, eastmoney |
NO_DATA `No ${key} data returned` | error_code | warning | empty-data, upstream-api, market-hours, eastmoney |
INVALID_ARGUMENT At least one symbol is required | validation | warning | cli, argument-validation, invalid-argument |
HTTP_ERROR `eastmoney quote failed: HTTP ${resp.status}` | error_code | error | network, http, upstream-api, eastmoney |
NO_DATA eastmoney returned no quotes | error_code | warning | empty-data, upstream-api, symbol-parsing, eastmoney |
INVALID_ARGUMENT `Unknown market "${market}". Valid: ${Object.keys(MARKETS).join(', ')}` | validation | warning | cli, argument-validation, invalid-argument |
HTTP_ERROR `eastmoney rank failed: HTTP ${resp.status}` | error_code | error | http, network, api, eastmoney |
NO_DATA eastmoney returned no rank data | error_code | error | api, empty-result, eastmoney, data |
INVALID_ARGUMENT `Unknown sector type "${typeKey}". Valid: ${Object.keys(SECTOR_TYPES).join(', ') | validation | error | validation, argument, cli, eastmoney |
HTTP_ERROR `sectors failed: HTTP ${resp.status}` | error_code | error | http, network, api, eastmoney |
NO_DATA eastmoney returned no sector data | error_code | error | api, empty-result, eastmoney, data |
| `endoflife.date returned no cycles for "${product}".` | error_code | error | api, empty-result, endoflife, data |
| endoflife product is required (e.g. "nodejs", "python", "ubu | validation | error | validation, argument, missing-argument, endoflife |
| `endoflife product "${value}" is not a valid endoflife.date | validation | error | validation, argument, slug, endoflife |
| `endoflife ${label} must be a positive integer` | validation | error | validation, argument, integer, endoflife |
| `endoflife ${label} must be <= ${maxValue}` | validation | error | validation, argument-error, cli-input |
| `${label} request failed: ${err?.message ?? err}` | http | error | network, fetch, dns, connectivity |
| `${label} returned malformed JSON: ${err?.message ?? err}` | http | error | network, json, http, cli |
| Facebook c_user cookie missing — anonymous session | error_code | error | authentication, cookies, facebook, browser-automation |
| `Facebook /me redirected to ${finalUrl} — logged out or in c | error_code | error | authentication, facebook, redirect, session |
| Waiting for Facebook c_user cookie | error_code | info | authentication, cookies, facebook, polling |
| `facebook feed --limit must be an integer between 1 and ${MA | validation | error | validation, cli, arguments, facebook |
| `Failed to navigate to facebook feed: ${err instanceof Error | exception | error | network, navigation, browser, facebook |
| `Failed to read facebook feed: ${err instanceof Error ? err. | exception | error | extraction, page-evaluate, facebook, browser |
| facebook feed returned malformed extraction payload | exception | error | schema, extraction, facebook |
| Open Chrome and log in to Facebook before retrying. | error_code | error | auth, session, facebook |
| Facebook did not show any feed posts for this account. | error_code | warning | empty-result, facebook, feed |
| facebook feed page rendered but no feed rows could be extrac | exception | error | extraction, selectors, facebook, markup-change |
| facebook feed | exception | warning | empty-result, render, facebook, blank-page |
| facebook marketplace-inbox --limit must be a positive intege | validation | error | argument-validation, cli, input |
| Browser session required for facebook marketplace-inbox | exception | error | browser-session, prerequisite, facebook |
| facebook.com | exception | error | auth, session, marketplace, facebook |
| facebook marketplace-inbox | exception | warning | empty-result, scraping, facebook |
| facebook marketplace-listings --limit must be a positive int | validation | error | argument-validation, cli-input |
| Browser session required for facebook marketplace-listings | exception | error | browser-session, prerequisite, facebook |
| facebook.com | exception | error | auth, facebook, session |
| facebook marketplace-listings | exception | warning | empty-result, scraping, facebook |
| --limit must be a positive integer in [1, ${NOTIFICATIONS_LI | validation | error | argument-validation, cli-input |
| AUTH_REQUIRED: facebook.com redirected to login | exception | error | auth, session-redirect, facebook |
| Failed to navigate to facebook notifications: ${message} | exception | error | network, navigation, facebook |
| facebook.com | exception | error | auth, facebook, session |
| Failed to read facebook notifications: ${message} | exception | error | scraping, dom-change, facebook |
| facebook/notifications | exception | error | scraping, dom-extraction, network, facebook |
| facebook search --limit must be an integer between 1 and ${M | validation | error | validation, argument-error, cli-input |
| facebook search requires a non-empty query | validation | error | validation, argument-error, cli-input |
| Failed to open facebook search: ${err instanceof Error ? err | exception | error | network, navigation, browser-extension, facebook |
| Failed to read facebook search results: ${err instanceof Err | exception | error | scraping, dom-extraction, page-evaluate, facebook |
| flathub search | exception | warning | empty-results, search, http-api |
| flathub ${label} cannot be empty | validation | error | argument-validation, input-error, empty-string |
| flathub ${label} must be a positive integer | validation | error | argument-validation, input-error, numeric-validation |
| flathub ${label} must be <= ${maxValue} | validation | error | argument-validation, input-error, bounds-check |
| flathub appId is required (e.g. "org.mozilla.firefox") | validation | error | argument-validation, missing-argument, appstream-id |
| flathub appId "${value}" is not a valid AppStream identifier | validation | error | argument-validation, format-validation, appstream-id |
| ${label} request failed: ${err?.message ?? err} | exception | critical | network, http-client, fetch-error |
| Flathub returned 404 for ${url}. | exception | error | http-404, not-found, http-api |
| ${label} returned HTTP 429 (rate limited) | exception | warning | rate-limit, http-429, http-api |
| ${label} returned HTTP ${resp.status} | exception | error | http-error, server-error, http-api |
| flomo memos --${name} must be a positive integer | validation | error | cli, argument-validation, input-parsing |
| flomo memos --${name} must be between 1 and ${max} | validation | error | cli, argument-validation, range-check |
| flomo memos --since must be a non-negative Unix timestamp in | validation | error | cli, argument-validation, timestamp |
| flomo memos --since must be a safe integer Unix timestamp in | validation | error | cli, argument-validation, integer-overflow |
| flomo memos --slug must be an opaque memo cursor containing | validation | error | cli, argument-validation, pagination-cursor |
| Flomo API returned a malformed memo entry | exception | error | schema-validation, api-contract, flomo, response-shape |
| Flomo API returned a memo without slug/id | exception | error | schema-validation, missing-field, flomo, api-contract |
| Failed to fetch Flomo memos: ${err instanceof Error ? err.me | exception | error | network, fetch-failed, dns, connectivity |
| Flomo API returned HTTP ${resp.status}; please refresh your | exception | error | auth, token-expired, http-401, session, flomo |
| Flomo API returned HTTP ${resp.status} | exception | error | http-error, rate-limit, server-error, flomo, network |
| Flomo API returned malformed JSON: ${err instanceof Error ? | exception | error | network, json-parsing, http-response, api |
| Flomo memos requires an active signed-in Flomo browser sessi | exception | error | auth, session-expired, browser-automation, localstorage |
| Flomo API returned a malformed response | exception | error | api, schema-validation, json, contract-violation |
| ${message} | exception | error | api, server-error, error-propagation, rate-limit |
| Flomo API returned malformed memo data | exception | error | api, response-validation, flomo |
| No Flomo memos matched the requested filters. | exception | warning | empty-result, filters, flomo |
| Gemini model discovery returned a malformed Browser Bridge e | exception | error | browser-automation, envelope, gemini |
| Gemini model discovery returned a malformed result | exception | error | model-discovery, gemini, browser-automation |
| Gemini model discovery returned a malformed row | exception | error | model-discovery, schema-validation, gemini |
| --model requires a canonical model id (e.g. "2.5-flash"). Us | validation | error | argument-validation, cli, gemini |
| --model "${value}" is not accepted. Short aliases like "pro" | validation | error | argument-validation, cli, gemini |
| --model "${value}" is not a valid canonical model id. Expect | validation | error | argument-validation, cli, gemini |
| --timeout must be a positive integer (seconds) | validation | error | argument-validation, cli, timeout |
| --thinking must be 'standard' or 'extended', got '${thinking | validation | error | argument-validation, cli, gemini |
| ${pickerResult?.reason || 'Failed to open Gemini model picke | exception | error | browser-automation, gemini, ui-selector |
| Gemini model discovery returned no selectable models. Gemini | exception | error | gemini, ui-scraping, model-discovery |
| Unknown model "${modelValue}". Available models: ${available | validation | error | argument-validation, gemini, invalid-model |
| --thinking '${thinkingValue}' is not available for the ${has | validation | error | argument-validation, gemini, thinking-level |
| --thinking '${thinkingValue}' is not currently available | validation | error | argument-validation, gemini, thinking-level |
| Could not select thinking level '${thinkingValue}' in the Ge | validation | error | browser-automation, gemini, ui-selector |
| Google session cookies (SID / SAPISID) missing | exception | error | auth, gemini, cookies |
| ${probe.detail} | exception | error | auth, gemini, parsing |
| Unexpected Gemini probe: ${JSON.stringify(probe)} | exception | error | gemini, probe, browser-automation |
| Waiting for Google session cookies | exception | warning | auth, gemini, login-polling |
| --timeout must be a positive integer (seconds) | validation | error | validation, argument-error, cli, timeout |
| --timeout must be a positive integer (seconds) | validation | error | validation, argument-error, cli, timeout |
| must be a conversation id, /app/<id> URL, or sidebar title | validation | error | argument-error, validation, cli, missing-argument |
| No sidebar conversation matched "${raw}". Try the exact id f | exception | error | empty-result, sidebar-lookup, cli, not-found |
| No turns were visible after navigating to ${target}. | exception | error | empty-result, rendering, session, cli |
| 'limit', 'must be a positive integer ≤ 200' | validation | error | validation, argument-error, cli, limit |
| 'gemini read','No Gemini conversation links were visible in | exception | error | empty-result, sidebar, cli, session |
| --timeout must be a positive integer (seconds) | validation | error | validation, argument-error, cli, timeout |
| 'gemini image',`No generated image was detected. Open ${link | exception | error | empty-result, image-generation, timeout, cli |
| Failed to export the generated Gemini image | exception | error | export-failure, image-generation, network, cli |
| Gemini conversation list returned a malformed row | exception | error | gemini, dom-scraping, schema-validation, page-evaluate |
| Gemini visible turns returned a malformed row | exception | error | gemini, dom-scraping, schema-validation, page-evaluate |
| Gemini transcript lines returned a malformed row | exception | error | gemini, dom-scraping, type-mismatch, page-evaluate |
| Gemini page snapshot returned a malformed result | exception | error | gemini, schema-validation, page-evaluate, snapshot |
| prepared?.reason || 'Could not find Gemini composer' | exception | error | gemini, browser-automation, dom-selector, composer |
| Failed to insert text into Gemini composer | exception | error | gemini, browser-automation, input, composer |
| Gemini image detection returned a malformed result | exception | error | gemini, dom-scraping, schema-validation, images |
| Gemini generation probe failed | exception | error | gemini, page-evaluate, polling, execution-context |
| Gemini generation probe returned a malformed result | exception | error | gemini, type-mismatch, page-evaluate, polling |
| 'gemini image', timeoutSeconds, 'Gemini was still generating | exception | error | timeout, browser-automation, gemini |
| Gemini image export returned a malformed result | exception | error | validation, browser-automation, gemini |
| pickerResult?.reason || 'Failed to open model picker for mod | exception | error | browser-automation, dom, gemini |
| result?.reason || 'Failed to select Gemini model "' + modelI | exception | error | browser-automation, dom, gemini |
| selectedModelId ? `Gemini model selection read-back returned | exception | error | browser-automation, state-mismatch, gemini |
| Use either --point or --radius, not both | validation | error | cli, argument-validation, geogebra |
| Provide --radius (number or point label) or --point (point o | validation | error | cli, argument-validation, geogebra |
| type must be one of: line, segment, ray | validation | error | cli, argument-validation, geogebra |
| command must contain at least one GeoGebra command | validation | error | cli, argument-validation, geogebra |
| `Failed to capture GeoGebra screenshot: ${err?.message || er | exception | error | screenshot, browser-automation, geogebra |
| `Failed to inspect GeoGebra object: ${err?.message || err}` | exception | error | browser, playwright, geogebra, bridge |
| GeoGebra object existence probe returned malformed result | exception | error | browser, geogebra, serialization, bridge |
| `Failed to inspect GeoGebra object: ${exists.error}` | exception | error | geogebra, applet-not-ready, browser, timing |
| `geogebra info ${objName}`, `Object "${objName}" not found o | exception | warning | geogebra, not-found, empty-result |
| type must be a GeoGebra object type like point, line, or cir | validation | warning | geogebra, argument-validation, cli |
| No objects found on the canvas. Fresh runs start a blank ses | exception | warning | geogebra, empty-result, statelessness |
| Failed to capture GeoGebra screenshot: ${err?.message || err | exception | error | playwright, screenshot, filesystem, geogebra |
| ${label} must be an ASCII GeoGebra label like A, B1, or poly | validation | warning | geogebra, label-validation, argument-validation |
| ${label} must contain ${min === max ? min : `${min}-${max}`} | validation | warning | geogebra, label-validation, argument-validation |
| ${label} must be a ${positive ? 'positive ' : ''}finite numb | validation | error | argument-validation, input-validation, cli |
| coords must be in "x,y" format (e.g. "1,2") | validation | error | argument-validation, input-format, cli |
| ${message}: malformed GeoGebra result | exception | error | automation, browser, result-parsing |
| result.error || message | exception | error | geogebra, command-execution, automation |
| Failed to detect GeoGebra applet: ${err?.message || err} | exception | error | browser, automation, page-evaluation, geogebra |
| Failed to load GeoGebra Geometry: ${err?.message || err} | exception | critical | network, navigation, browser, geogebra |
| ggbApplet not available after waiting. Make sure the GeoGebr | exception | error | browser, automation, initialization, geogebra, timeout |
| Failed to execute GeoGebra command: ${err?.message || err} | exception | error | browser, automation, page-evaluation, geogebra |
| GeoGebra command returned malformed result | exception | error | automation, browser, result-parsing, geogebra |
| Failed to read GeoGebra object property: ${err?.message || e | exception | error | geogebra, browser-automation, command-execution, object-property |
| AuthRequiredError('gitee.com', probe.detail) | exception | error | gitee, authentication, auth-required, session |
| HTTP ${probe.httpStatus} from Gitee /api/v5/user | exception | error | gitee, http, api-error, network |
| Gitee whoami failed: ${probe.detail} | exception | error | gitee, network, fetch-failed, browser-automation |
| Unexpected Gitee probe: ${JSON.stringify(probe)} | exception | error | gitee, unexpected-state, contract-violation, browser-automation |
| AuthRequiredError('gitee.com', 'Waiting for Gitee login') | exception | error | authentication, gitee, login-required, browser-session |
INVALID_ARGUMENT Keyword is required | error_code | error | validation, cli-arguments, gitee, input-validation |
REQUEST_FAILED Failed to request Gitee search API: ${response.status} | error_code | error | network, http, gitee, rate-limit |
NOT_FOUND No Gitee repository search results found | error_code | warning | not-found, search, gitee, empty-results |
FETCH_ERROR Failed to parse Gitee Explore page | error_code | error | scraping, dom-parsing, gitee, page-structure-change |
NOT_FOUND No recommended projects found on Gitee Explore | error_code | warning | scraping, not-found, gitee, empty-results |
INVALID_ARGUMENT Username is required | error_code | error | validation, cli-arguments, gitee, input-validation |
NOT_FOUND Gitee user "${username}" does not exist | error_code | warning | not-found, gitee, user-profile, scraping |
FORBIDDEN Gitee user page "${username}" is not accessible | error_code | error | forbidden, access-denied, gitee, anti-bot |
REQUEST_FAILED Failed to read Gitee user profile API: ${apiResponse.status} | error_code | error | gitee, network, http-error, cli |
| github-trending parser drift: missing ${field} for ${repo} | exception | error | scraping, parser-drift, github, html-parsing |
| github-trending parser drift: no repository rows found | exception | error | scraping, parser-drift, github, html-parsing |
| github-trending parser drift: missing repository link | exception | error | scraping, parser-drift, github, html-parsing |
| github-trending parser drift: invalid repository identity "$ | error_code | error | scraping, parser-drift, github, validation |
| Unknown --since "${sinceKey}". Valid: ${Object.keys(SINCE).j | validation | error | argument-validation, cli, input-error |
| --limit must be a positive integer | validation | error | argument-validation, cli, input-error |
| --limit must be <= 25 (GitHub Trending lists at most 25 repo | validation | error | argument-validation, cli, input-error |
| github-trending request failed: ${error?.message || error} | error_code | error | network, github, http-request, cli |
| github-trending request failed: HTTP ${resp.status} | error_code | error | http, scraping, network, github |
| no trending repositories for language "${language}" (${since | error_code | warning | empty-result, scraping, github, parser |
| Could not detect a logged-in GitHub account | error_code | error | auth, github, browser, session |
| Waiting for GitHub session cookies | error_code | warning | auth, cookies, github, polling |
| Browser session required for gmail attachments | error_code | error | browser, session, gmail, precondition |
| The Gmail thread has no attachments | error_code | warning | empty-result, gmail, attachments |
| Google session cookies are missing | error_code | error | auth, cookies, gmail, google, session |
| ${result.detail} | error_code | error | auth, gmail, probe, session |
| Gmail identity probe returned an unexpected result | error_code | error | gmail, dom-parsing, probe, gmail-ui |
| Browser session required for gmail labels | error_code | error | browser, session, gmail, precondition |
| Browser session required for gmail ${command} | error_code | error | browser-session, gmail, missing-session |
| Browser session required for gmail thread | error_code | error | browser-session, gmail, missing-session |
| Gmail ${label} returned a malformed Browser Bridge envelope | error_code | error | browser-bridge, envelope, contract-mismatch |
| limit must be a positive integer | validation | error | validation, arguments, gmail |
| limit must be <= ${max} | validation | error | validation, arguments, limits |
| account must be an integer between 0 and 20 | validation | error | validation, arguments, gmail |
| Gmail ${label} had an invalid timestamp | error_code | error | gmail, timestamp, data-format |
| Gmail ${operation} returned HTTP ${status} | error_code | critical | auth, http-401, http-403, gmail |
| Gmail ${operation} returned HTTP ${status || 'unknown'} | error_code | error | http, network, gmail, rate-limit |
| Gmail ${operation} response exceeded the browser capture lim | error_code | error | gmail, browser-bridge, truncated-response, network-capture |
| Gmail ${operation} response body was unavailable | error_code | error | gmail, browser-bridge, missing-response-body, race-condition |
| Gmail ${operation} returned malformed JSON | error_code | error | gmail, json, browser-bridge, malformed-response |
| Gmail batch-view response had an unexpected shape | error_code | error | gmail, schema-validation, response-shape, browser-bridge |
| Gmail batch-view returned a malformed thread at index ${inde | error_code | error | gmail, schema-validation, batch-view, malformed-row |
| Gmail batch-view returned a thread without an id at index ${ | error_code | error | gmail, batch-view, missing-thread-id, schema-validation |
| Gmail returned a malformed label at index ${index} | error_code | error | gmail, labels, malformed-row, schema-validation |
| Gmail fetch-data response had an unexpected shape | error_code | error | gmail, fetch-data, schema-validation, response-shape |
| Gmail fetch-data returned a malformed message | error_code | error | gmail, fetch-data, malformed-message, schema-validation |
| Gmail ${operation} page | error_code | error | timeout, browser-automation, gmail, page-load |
| Gmail ${operation} requires browser response interception | error_code | error | browser-automation, api-mismatch, gmail, network-capture |
| Gmail ${operation} could not start browser response intercep | error_code | error | browser-automation, network-capture, gmail, cdp |
| Gmail ${operation} capture included a response without a bod | error_code | error | network-capture, gmail, partial-data, browser-automation |
| Gmail ${operation} capture lost a response body; refusing po | exception | error | network-capture, gmail, partial-data, timeout |
| Gmail ${operation} capture | exception | error | timeout, network-capture, gmail, browser-automation |
| Gmail ${operation} could not find the search input | exception | error | browser-automation, dom, gmail, race-condition |
| Gmail ${operation} requires native browser input | exception | error | browser-automation, api-mismatch, gmail, input |
| Gmail ${operation} could not set the search query exactly | exception | error | browser-automation, input, gmail, verification |
| Gmail ${operation} requires native browser keyboard input | exception | error | browser-automation, api-mismatch, gmail, keyboard |
| Gmail search query cannot be empty | validation | error | validation, argument-error, gmail |
| Gmail thread pagination page ${pageNumber} repeated an earli | exception | error | pagination, gmail, ui-automation |
gmail search No threads matched "${normalizedQuery}" | exception | warning | empty-result, gmail, search |
gmail labels Gmail returned no labels | exception | warning | empty-result, gmail, labels |
| thread must be a Gmail thread id from `gmail search` or a Gm | validation | error | validation, argument-error, gmail |
| Gmail thread navigation failed | exception | error | navigation, gmail, ui-automation |
gmail thread No messages found for thread ${target} | exception | error | empty-result, gmail, thread |
| Could not find search result at index ${index + 1} | exception | error | index-out-of-range, google-scholar, ui-automation |
| Could not find ${formatLabel} citation link for result ${ind | exception | error | google-scholar, citation, ui-automation |
| ${formatLabel} citation page returned an empty response | exception | error | empty-response, google-scholar, citation |
| No profile found for: ${author} | exception | error | scraping, browser, google-scholar, not-found |
| Could not load Google Scholar profile for: ${author} | exception | error | scraping, browser, google-scholar, captcha |
| No papers found for: ${data.name || author} | exception | error | scraping, browser, google-scholar, empty-result |
| Google Scholar search returned an unexpected payload shape | exception | error | scraping, browser, payload-shape, google-scholar |
| Google Scholar result cards were present but no rows could b | exception | error | scraping, dom-selector, google-scholar, empty-result |
google-scholar/search Try a different query or check whether Google Scholar returned a CAPTCHA. | exception | warning | scraping, google-scholar, empty-result, captcha |
| google images returned an unexpected row shape. | exception | error | scraping, google-images, payload-shape, dom-selector |
| google images returned a result row without stable external | exception | error | scraping, google-images, url-validation, dom-selector |
google images No Google image results matched "${query}". | exception | warning | scraping, google-images, empty-result |
| google images returned an unexpected page-state payload shap | exception | error | scraping, google-images, payload-shape, browser |
| google images is blocked by a Google CAPTCHA/consent/interst | exception | error | captcha, scraping, google, blocked |
| google images returned no extractable result rows; the page | exception | error | scraping, dom-layout, google, selector-drift |
FETCH_ERROR HTTP ${resp.status} | error_code | error | network, http, rss, google |
NOT_FOUND No news articles found | error_code | warning | rss, empty-result, google, not-found |
NOT_FOUND No search results found | error_code | error | scraping, google, empty-result, not-found |
FETCH_ERROR HTTP ${resp.status} | error_code | error | network, http, google, autocomplete |
NOT_FOUND No suggestions found | error_code | warning | empty-result, google, autocomplete, not-found |
FETCH_ERROR HTTP ${resp.status} | error_code | error | network, http, google, trends |
NOT_FOUND No trending data found | error_code | warning | rss, empty-result, google, trends |
goproxy module proxy.golang.org returned no @latest entry for "${modulePath}". | exception | error | golang, empty-result, module-proxy, not-found |
| goproxy module path is required (e.g. "github.com/gin-gonic/ | validation | error | argument-error, input-validation, goproxy |
| goproxy module path "${value}" is not a recognised Go module | validation | error | argument-error, input-validation, goproxy, go-modules |
| goproxy --version cannot be empty | validation | error | argument-error, input-validation, goproxy, semver |
| goproxy --version "${value}" is not a valid Go semver tag | validation | error | argument-error, input-validation, goproxy, semver |
| goproxy ${label} must be a positive integer | validation | error | argument-error, input-validation, goproxy, numeric-parsing |
| goproxy ${label} must be <= ${maxValue} | validation | error | argument-error, input-validation, goproxy, bounds-check |
| ${label} request failed: ${err?.message ?? err} | exception | error | network, http, fetch, goproxy |
| ${label} returned HTTP ${resp.status} | http | error | http, server-error, goproxy, network |
| ${label} returned malformed JSON: ${err?.message ?? err} | exception | error | network, json, http, go |
| proxy.golang.org returned no published versions for "${modul | exception | warning | go, empty-result, http, modules |
| "${modulePath}" has no semver-shaped tags on proxy.golang.or | exception | warning | go, semver, empty-result, tags |
FRAMEWORK_CHANGED Could not access Vue Router on flk.npc.gov.cn — the site may have been restructu | error_code | error | web-scraping, framework-changed, browser, spa |
| gov-policy ${command} --limit must be a positive integer | validation | error | validation, cli-argument, gov-policy |
| gov-policy ${command} --limit must be <= 20 | validation | error | validation, cli-argument, gov-policy, limit |
| gov-policy search | exception | info | empty-result, search, gov-policy, web-scraping |
| gov-policy ${command} page did not expose readable result ro | exception | error | web-scraping, extraction, gov-policy, dom |
| gov-policy ${command} extractor returned no result rows | exception | error | web-scraping, extraction, gov-policy, dom |
| gov-policy ${command} browser extraction failed: ${error?.me | exception | error | browser, puppeteer, web-scraping, gov-policy |
| ${reason}${detail} | exception | error | browser-automation, authentication, grok, session-expired |
| grok ask response | exception | error | timeout, browser-automation, grok, network |
| grok.com | exception | error | authentication, cookies, grok, login-required |
| HTTP ${result.httpStatus} from /api/auth/session | http | error | http, server-error, rate-limit, grok, network |
| Grok whoami failed: ${result.detail} | exception | error | browser-automation, network, whoami, grok |
| Unexpected Grok probe: ${JSON.stringify(result)} | exception | error | browser-automation, contract-violation, grok, whoami |
| ${result?.reason || 'Failed to click delete menu item.'}${de | exception | error | browser-automation, ui-selector, grok, delete |
| Delete menu item was clicked, but the conversation is still | exception | error | browser-automation, timeout, grok, delete |
| grok detail | exception | error | empty-result, scraping, authentication |
| must be an integer | validation | error | argument-validation, cli-input, type-error |
| must be >= ${min} | validation | error | argument-validation, bounds-check, cli-input |
| must be <= ${max} | validation | error | argument-validation, bounds-check, cli-input |
| manifestPath | validation | error | file-io, json-parse, argument-validation |
| grok export-all | exception | warning | empty-result, pagination, manifest |
| Sign in to grok.com in the browser, then retry. | exception | critical | authentication, session-expired, scraping |
| grok export-all history dialog | exception | error | timeout, scraping, ui-automation |
| delayMaxMs | validation | error | argument-validation, cli, config |
| ${label} returned a malformed payload | exception | error | browser-automation, payload-shape, dom-scraping |
| ${label} returned malformed rows | exception | error | browser-automation, payload-shape, dom-scraping |
| ${label} returned a malformed row | exception | error | validation, input-validation, schema-mismatch, grok-export |
| manifestPath must point to a JSON array exported by grok/exp | validation | error | validation, cli-argument, json-schema, grok-export |
| manifestPath row ${index + 1} must be an object | validation | error | validation, json-schema, manifest, grok-export |
| manifestPath row ${index + 1} is missing a valid Grok conver | validation | error | validation, uuid, manifest, grok-export |
| ${label} must be a positive integer | validation | error | validation, argument-error, cli-options |
| Failed to download grok image ${img.src}${reason} | exception | critical | network, authentication, download, cloudflare |
| Grok composer rejected the prompt: ${JSON.stringify(sendResu | exception | error | browser-automation, ui-selector, session |
| grok image generation | exception | error | timeout, browser-automation, polling |
| ${before.reason || `Failed to inspect ${name} state.`}${deta | exception | error | browser-automation, session, ui-selector |
| ${result?.reason || `Failed to ${name} conversation.`}${deta | exception | error | browser-automation, click, ui-selector |
| ${name} menu item was clicked, but the conversation did not | exception | error | browser-automation, verification, state |
| prompt is required | validation | error | validation, argument-error, cli-options |
| ${send?.reason || 'Failed to send Grok prompt'} | exception | error | browser-automation, submission, rate-limit |
| id must be a non-empty session ID or grok.com chat URL | validation | error | validation, argument-error, session-id |
| id not a valid Grok URL (got "${input}") | validation | error | argument-validation, url-parsing, cli |
| id not a valid Grok conversation URL (got "${input}"); expec | validation | error | argument-validation, url-format, cli |
| id not a valid Grok session ID (got "${input}"); expected a | validation | error | argument-validation, uuid, cli |
| guazi browse ${code} | exception | error | scraping, empty-results, html-parsing, layout-change |
| guazi car ${clueId} | exception | error | scraping, empty-results, stale-data |
| city unknown city '${cityArg}'. pass a Guazi city code or on | validation | error | argument-validation, cli, city-code |
| clue_id must be a non-empty value | validation | error | argument-validation, cli, missing-value |
| '${rawInput}' does not look like a guazi clue id (a number, | validation | error | argument-validation, cli, id-format |
| limit must be an integer between 1 and ${max} | validation | error | argument-validation, cli, range-check |
| ${label} did not include a stable text value. | exception | error | scraping, empty-results, html-parsing |
| ${label} did not include a stable numeric id. | exception | error | validation, input, cli |
| guazi ${contextHint} network error: ${err?.message || err} | exception | error | network, fetch, scraping |
| guazi ${contextHint} HTTP ${resp.status} | exception | error | http, scraping, status-code |
| guazi ${contextHint} hit an anti-bot challenge — Guazi may h | exception | warning | anti-bot, captcha, scraping, auth |
| HN API HTTP ${res.status} for item ${id} | exception | error | http, api, hackernews, network |
| ${label} must be a positive integer | validation | error | argument-error, cli, validation, input-validation |
| ${label} must be an integer >= ${min} | validation | error | argument-error, cli, validation, input-validation |
| Invalid HN item id: ${args.id} | validation | error | argument-error, cli, input-validation, hn-item-id |
| hackernews/${id} | exception | warning | empty-result, not-found, hn, deleted-content |
| auth | exception | error | auth-required, huggingface, authentication, browser-session |
| http | exception | error | http, network, huggingface, whoami |
| exception | exception | error | exception, huggingface, browser, whoami |
| Unexpected HF probe: ${JSON.stringify(probe)} | exception | error | huggingface, schema-mismatch, whoami, defensive |
| huggingface.co | exception | warning | auth, huggingface, login, polling |
| hf datasets sort must be one of ${SORT_OPTIONS.join(', ')} | validation | error | validation, arguments, cli, huggingface |
| hf datasets limit must be a positive integer | validation | error | validation, arguments, cli, huggingface |
| hf datasets limit must be <= 100 | validation | error | validation, arguments, cli, limits |
| hf datasets request failed: ${error?.message || error} | exception | error | network, fetch, huggingface, api |
| hf datasets failed: HTTP ${resp.status} | exception | error | http, api, huggingface, status-code |
| hf datasets returned malformed JSON: ${error?.message || err | exception | error | json, parsing, huggingface, api |
| hf datasets | exception | error | empty-result, api, huggingface, network |
| hf models sort must be one of ${SORT_OPTIONS.join(', ')} | validation | error | argument-validation, cli, huggingface |
| hf models limit must be a positive integer | validation | error | argument-validation, cli, huggingface |
| hf models limit must be <= 100 | validation | error | argument-validation, cli, limit-exceeded, huggingface |
| hf models request failed: ${error?.message || error} | exception | error | network, fetch, huggingface, connectivity |
| hf models failed: HTTP ${resp.status} | exception | error | http, api, huggingface, rate-limit |
| hf models returned malformed JSON: ${error?.message || error | exception | error | json, parsing, network, huggingface |
| hf models | exception | error | empty-result, api, huggingface, filter |
| hf paper id cannot be empty | validation | error | argument-validation, cli, missing-argument, huggingface |
| hf paper id "${args.id}" is not a valid arXiv id | validation | error | argument-validation, cli, format-validation, huggingface |
| hf paper request failed: ${err?.message ?? err} | exception | error | network, fetch, huggingface, cli |
| hf paper | exception | warning | huggingface, not-found, http-404, cli |
| hf paper returned HTTP 429 (rate limited) | exception | warning | rate-limit, http-429, huggingface, cli |
| hf paper returned HTTP ${resp.status} | exception | error | http-error, huggingface, cli, server-error |
| hf paper returned malformed JSON: ${err?.message ?? err} | exception | error | json, parse-error, huggingface, cli |
| hf spaces sort must be one of ${SORT_OPTIONS.join(', ')} | validation | error | huggingface, argument-validation, cli, invalid-argument |
| hf spaces limit must be a positive integer | validation | error | huggingface, argument-validation, cli, invalid-argument |
| hf spaces limit must be <= 100 | validation | error | huggingface, argument-validation, cli, limit-exceeded |
| hf spaces sdk must be one of gradio / streamlit / docker / s | validation | error | huggingface, argument-validation, cli, invalid-argument |
| hf spaces request failed: ${err?.message ?? err} | exception | error | network, fetch, cli, huggingface |
| hf spaces returned HTTP 429 (rate limited) | exception | warning | rate-limit, http-429, huggingface, retry |
| hf spaces failed: HTTP ${resp.status} | exception | error | http, huggingface, api, cli |
| hf spaces returned malformed JSON: ${err?.message ?? err} | exception | error | json, parsing, huggingface, http |
| No matching spaces on huggingface.co. | exception | warning | empty-result, huggingface, search, cli |
INVALID_ARG --date is not supported for ${period} period | error_code | error | argument-validation, cli, huggingface |
FETCH_ERROR HF API error: ${res.status} ${res.statusText} | error_code | error | http, huggingface, api, cli |
| No last encounter found for ${playerA.playerId} and ${player | exception | warning | hltv, empty-result, no-data |
| The selected players were not both present in the resolved m | exception | warning | hltv, empty-result, parsing |
| No shared map rows found for ${playerA.playerId} and ${playe | exception | warning | hltv, empty-result, no-data |
| No player match rows matched team ${teamRef.teamId}/${teamRe | exception | warning | hltv, empty-result, name-matching |
| query is required | validation | error | argument-error, validation, input |
| hltv team-map-pool parser returned an unexpected shape | exception | error | parser, hltv, page-structure, breaking-change |
| No map-pool rows found for team ${teamId}/${slug} | exception | warning | hltv, empty-result, no-data |
| ${label} must be a valid hltv.org URL | validation | error | argument-error, validation, url |
| ${label} must be an hltv.org URL | validation | error | argument-error, validation, url, wrong-host |
| ${label} must be a positive integer | validation | error | argument-error, validation, limit |
| ${label} must be <= ${maxValue} | validation | error | cli, validation, argument-error, hltv |
| offset must be a non-negative integer | validation | error | cli, validation, paging, argument-error |
| offset must be a multiple of 100 | validation | error | cli, validation, paging, argument-error |
| ${label} must be one of: ${Object.keys(choices).join(', ')} | validation | error | cli, validation, enum, argument-error |
| HLTV parser returned a malformed URL | exception | error | scraping, url-parsing, html-changed, hltv |
| HLTV parser returned an off-domain URL: ${url.toString()} | exception | error | scraping, url-parsing, security, hltv |
| event query parameter must be a numeric event id | validation | error | cli, validation, url-parsing, argument-error |
| event must be an event id, an /events/:id URL, a stats URL w | validation | error | cli, validation, url-parsing, argument-error |
| team is required | validation | error | cli, validation, missing-argument, argument-error |
| team must be like 6667/falcons, a team URL, or a stats team | validation | error | cli, validation, url-parsing, argument-error |
| player is required | validation | error | argument-error, validation, hltv |
| player must be like 3741/niko, a player URL, or a stats play | validation | error | argument-error, validation, url-parsing, hltv |
| period must be all, lastMonth, last3Months, last6Months, las | validation | error | argument-error, validation, date-parsing, hltv |
| match is required | validation | error | argument-error, validation, hltv |
| match must be an HLTV match, stats series, or mapstats URL | validation | error | argument-error, validation, url-parsing, hltv |
| series resolution requires a /stats/matches/mapstatsid/:id/: | validation | error | hltv, argument-validation, url-format |
| match map parser requires a /stats/matches/mapstatsid/:id/:s | validation | error | hltv, argument-validation, url-format |
| hltv match-map parser returned an unexpected shape | exception | error | hltv, scraping, parser, command-execution |
| hltv match-map parser found no player rows | exception | error | hltv, scraping, empty-result, selector |
| TimeoutError | exception | error | hltv, timeout, network, scraping |
| ${label} failed: ${error?.message ?? error} | exception | error | network, scraping, browser-automation |
| ${command} parser returned an unexpected shape | exception | error | parsing, schema-mismatch, scraping |
| No rows were found in the visible HLTV page | exception | warning | empty-result, scraping, parsing |
| ${command} parser returned row ${index + 1} without required | exception | error | parsing, schema-mismatch, scraping |
| homebrew popular | exception | error | network, http, homebrew |
| homebrew ${label} cannot be empty | validation | error | validation, argument-error, input |
| homebrew ${label} must be a positive integer | validation | error | validation, argument-error, numeric-input |
| homebrew ${label} must be <= ${maxValue} | validation | error | validation, argument-error, limits |
| homebrew ${label} is required (e.g. "wget", "gcc@13", "firef | validation | error | validation, argument-error, missing-argument |
| homebrew ${label} "${value}" is not a valid token | validation | error | validation, argument-error, input-format |
| homebrew ${label} is required | validation | error | argument-validation, missing-argument, cli |
| homebrew ${label} "${value}" is not supported | validation | error | argument-validation, invalid-argument, enum |
| ${label} request failed: ${err?.message ?? err} | exception | error | network, fetch-failed, connectivity |
| Homebrew API returned 404 for ${url}. | http | warning | http-404, not-found, api |
| ${label} returned HTTP 429 (rate limited) | http | warning | rate-limit, http-429, retry |
| ${label} returned HTTP ${resp.status} | http | error | http-error, server-error, api |
| ${label} returned malformed JSON: ${err?.message ?? err} | exception | error | json-parse, malformed-response, network |
| huodongxing limit must be a positive integer | validation | error | argument-validation, invalid-limit, cli |
| huodongxing limit must be <= ${MAX_LIMIT} | validation | error | argument-validation, limit-exceeded, cli |
| huodongxing ${label} must be a valid YYYY-MM-DD date | validation | error | argument-validation, date-format, cli |
| huodongxing date must be <= dateTo | validation | error | argument-validation, date-range, cli |
| huodongxing eventType must be 1 (offline) or 2 (online) | validation | error | argument-validation, enum, cli |
| huodongxing events returned malformed extraction rows | exception | error | runtime, scraping, malformed-payload |
RATE_LIMIT ${payload.message || 'huodongxing events was rate limited by www.huodongxing.com | exception | error | rate-limit, scraping, retryable |
TRANSIENT_ACCESS ${payload.message || 'huodongxing events page returned a temporary busy/access p | exception | warning | transient, scraping, access-block |
INVALID_LIMIT ${payload.message || 'huodongxing limit must be a positive integer <= 50'} | validation | error | argument-validation, pagination, limit |
EMPTY_RESULT No Huodongxing event cards were found. The page may be empty. | exception | warning | empty-result, scraping, no-data |
| ${payload?.message || 'huodongxing events returned malformed | exception | error | runtime, scraping, malformed-payload |
| hupu.com | exception | error | auth, cookies, login-required |
| auth | exception | error | auth, session-expired, cookies |
| Unexpected Hupu probe: ${JSON.stringify(probe)} | exception | error | auth, browser-automation, hupu, unexpected-state |
| 帖子访问失败: ${errorInfo.message} (code: ${errorInfo.code}) | exception | error | hupu, scraping, next-data, thread-unavailable |
| 帖子不存在或已被删除 | exception | error | hupu, scraping, missing-data, deleted-content |
| --limit must be a positive integer in [1, ${HOT_LIMIT_MAX}], | validation | error | validation, argument-error, cli, hupu |
| Failed to read hupu hot threads: ${message} | exception | error | network, scraping, hupu, browser-automation |
| No threads found on bbs.hupu.com — page structure may have c | exception | error | scraping, empty-result, hupu, markup-change |
| 接口错误 code=${result.code}: ${result.msg || result.message} | exception | error | api-error, hupu, like, non-200 |
| 点赞失败: ${errorMessage} | exception | error | error-wrapping, hupu, like, api |
| Read Hupu mentions failed: invalid browser response | exception | error | hupu, browser-automation, invalid-response, mentions |
| my.hupu.com | error_code | error | auth, hupu, cookie, login-required |
| Read Hupu mentions failed: ${result.error || 'unknown error' | exception | error | network, hupu, scraping, api-error |
| 接口错误 code=${result.code}: ${result.msg || result.message} | exception | error | hupu, api-error, write-operation, moderation |
| 回复失败: ${errorMessage} | exception | error | hupu, error-wrapping, write-operation, try-catch |
| 接口错误 code=${result.code}: ${result.msg || result.message} | exception | error | hupu, api-error, write-operation, unexpected-response |
| 取消点赞失败: ${errorMessage} | exception | error | hupu, http-api, authentication, cli |
| ${actionLabel} failed: ${result?.error || 'invalid browser r | exception | error | hupu, scraping, timeout, dom-parsing |
| ${actionLabel} failed: invalid browser response | exception | error | hupu, browser-automation, http-api |
| bbs.hupu.com | error_code | error | hupu, authentication, http-401, http-403, cookies |
| Search query cannot be empty | validation | error | validation, argument-error, input-validation |
| IMDb blocked this request | exception | error | anti-bot, captcha, network, rate-limit |
| IMDb search results did not finish loading | exception | error | timeout, page-load, network, scraping |
| IMDb blocked this request | exception | error | anti-bot, captcha, network, rate-limit |
| Title page did not finish loading: ${id} | exception | error | navigation, page-load, scraping, timeout |
| IMDb redirected to a different title: ${currentId} | exception | warning | redirect, scraping, data-integrity |
| Title not found: ${id} | exception | error | scraping, json-ld, not-found, data-extraction |
| IMDb blocked this request | exception | error | anti-bot, captcha, network, rate-limit |
| Could not find chart data on page | exception | error | scraping, json-ld, page-structure, data-extraction |
| IMDb blocked this request | exception | error | anti-bot, captcha, network, rate-limit |
| Could not find chart data on page | exception | error | scraping, dom, json-ld, page-structure |
| Invalid IMDb ID: "${input}" | validation | error | validation, argument, imdb-id, input-parsing |
| Failed to scrape Indeed job detail DOM: ${e?.message ?? e} | exception | error | scraping, dom, page-load, indeed |
| Indeed served a Cloudflare challenge page | exception | error | cloudflare, bot-detection, scraping, indeed |
| Indeed job page did not expose detail or error markers withi | exception | error | timeout, scraping, dom, page-load |
| No Indeed job posting found for jk "${jk}" | exception | warning | empty-result, not-found, indeed, job-key |
| Failed to scrape Indeed search DOM: ${e?.message ?? e} | exception | error | scraping, dom, page-load, indeed |
| Indeed served a Cloudflare challenge page | exception | error | cloudflare, bot-detection, scraping, indeed |
| Indeed search page did not expose result or empty-state mark | exception | error | timeout, scraping, dom, page-load |
| No Indeed jobs matched "${query}"${location ? ` in ${locatio | exception | warning | empty-result, search, indeed, query |
| indeed ${label} must be <= ${maxValue} | validation | error | cli, argument-validation, limit-exceeded |
| indeed ${label} must be a non-negative integer | validation | error | cli, argument-validation, input-error |
| indeed job id is required | validation | error | cli, missing-argument, input-error |
| indeed job id "${value}" is not a valid jk (expected 16-char | validation | error | cli, format-validation, job-key |
| indeed ${label} cannot be empty | validation | error | cli, missing-argument, input-error |
| indeed fromage must be one of 1/3/7/14 (days), got "${value} | validation | error | cli, enum-validation, argument-validation |
| indeed sort must be "relevance" or "date", got "${value}" | validation | error | cli, enum-validation, argument-validation |
| Instagram post feed returned malformed payload for ${usernam | exception | error | instagram, schema-mismatch, network, scraping |
| Instagram post feed returned no valid owner id for ${usernam | exception | error | instagram, schema-mismatch, data-missing, scraping |
| Instagram post feed returned malformed items for ${username} | exception | error | instagram, scraping, schema-validation, puppeteer |
| Instagram post feed returned malformed post row for ${userna | exception | error | instagram, scraping, data-validation |
| No visible posts for ${username}; check the username and whe | exception | warning | instagram, empty-result, user-input |
| Post index ${index} not found; ${username} has ${snapshot.po | exception | warning | instagram, user-input, bounds-check |
| Instagram post feed no longer shows the expected post ${expe | exception | error | instagram, race-condition, consistency-check |
| Instagram did not persist the ${shouldLike ? 'like' : 'unlik | exception | error | instagram, rate-limiting, persistence-check |
| username is required | validation | error | validation, user-input, argument-error |
| --index must be a positive integer | validation | error | validation, user-input, argument-error |
| Could not find the like control on ${post.code} | exception | error | instagram, selector-not-found, scraping, puppeteer |
| Instagram did not keep the ${shouldLike ? 'like' : 'unlike'} | exception | error | instagram, rate-limit, action-rejected, retry |
| Instagram private route could not derive CSRF token from bro | exception | error | instagram, csrf, session, authentication |
| Instagram private route could not derive X-IG-App-ID from in | exception | error | instagram, headers, configuration, private-api |
| Instagram private route could not derive X-Instagram-AJAX fr | exception | error | instagram, headers, configuration, private-api |
| Failed to read image dimensions for ${filePath} | exception | error | image, validation, file-format |
| Instagram private publish does not support auto-normalizing | exception | error | instagram, image, platform-limitation, macos |
| Instagram private publish failed to normalize ${asset.fileNa | exception | error | instagram, image, macos, sips, process |
| Instagram private story publish does not support auto-normal | exception | error | instagram, story, platform-limitation, macos |
| Instagram private story publish failed to normalize ${asset. | exception | error | instagram, story, macos, sips, process |
| Instagram private publish failed to ${stage} | exception | error | macos, swift, video, process |
| Instagram private mixed-media publish does not support readi | exception | error | platform, macos-only, video-metadata |
| Instagram private publish failed to read video metadata for | exception | error | video-metadata, avfoundation, invalid-input |
| Instagram private mixed-media publish does not support gener | exception | error | platform, macos-only, video-cover |
| Instagram private story publish does not support trimming lo | exception | error | platform, macos-only, video-trim, story |
| Instagram private publish ${stage} returned invalid JSON | exception | error | network, json-parsing, instagram-api, http-response |
| Instagram private publish ${stage} failed: ${response.status | exception | error | network, http-status, instagram-api, rate-limit |
| Instagram private publish upload failed for ${prepared.asset | exception | error | instagram-api, upload, http-response, media |
| Instagram private publish video upload failed for ${prepared | exception | error | instagram-api, video-upload, codec, media |
| Instagram private publish video cover upload failed for ${pr | exception | error | instagram-api, upload, video-cover, http-response |
| Instagram private publish configure_sidecar returned invalid | exception | error | instagram, json-parse, http-response, private-api |
| Instagram private publish configure_sidecar failed: ${respon | exception | error | instagram, http-error, private-api, sidecar |
| Instagram private publish configure_sidecar timed out waitin | exception | error | instagram, timeout, transcode, video, retry |
| Instagram private publish configure_sidecar failed | exception | error | instagram, api-error, sidecar, content-policy |
| Instagram private publish only supports single-video uploads | exception | error | instagram, validation, unsupported-media-type, video |
| Instagram story publish could not derive current user id fro | exception | error | instagram, session, authentication, cookies, story |
| ${label} | validation | error | instagram, user-id, validation, response-parsing |
| ${label} returned invalid JSON | exception | error | instagram, json-parse, session, http-response |
| HTTP ${response.status} - make sure you are logged in to Ins | http | error | http-401, http-403, authentication, instagram |
| ${label} failed: HTTP ${response.status} | http | error | http-error, rate-limit, instagram, network |
| Instagram sessionid cookie missing | exception | error | authentication, cookies, instagram, auth-required |
| ${result.detail} | exception | error | authentication, session-expired, instagram, cookies |
| HTTP ${result.httpStatus} from Instagram /users/info | http | error | http-error, rate-limit, instagram, retry |
| Instagram whoami failed: ${result.detail} | exception | error | instagram, runtime-exception, network, json |
| Unexpected Instagram probe: ${JSON.stringify(result)} | exception | error | instagram, unexpected-state, defensive, page-context |
| Waiting for Instagram sessionid cookie | exception | warning | authentication, login-flow, instagram, polling |
| Collection name cannot be empty | validation | error | validation, instagram, input-validation, cli-arguments |
| csrftoken cookie missing - make sure you are logged in to In | exception | error | authentication, csrf, cookies, browser-automation |
| Failed to create collection: HTTP ${res.status}${body ? ' - | http | error | http, network, instagram-api, rate-limit |
| Instagram returned non-ok status: ${JSON.stringify(d).slice( | exception | error | instagram-api, api-response, status-field |
| Collection target (name or id) cannot be empty | validation | error | validation, argument-error, input |
| csrftoken cookie missing - make sure you are logged in to In | exception | error | authentication, csrf, cookies, browser-automation |
| Failed to list collections: HTTP ${listRes.status} - make su | http | error | http, network, instagram-api, authentication |
| Collection id not found in your account: ${raw} | exception | error | validation, instagram-api, id-resolution |
| Collection not found: ${raw}. Available: ${(names.length ? n | exception | error | validation, id-resolution, instagram-api |
| Multiple collections share the name "${raw}" (ids: ${ids}). | exception | error | ambiguity, id-resolution, instagram-api |
| Failed to delete collection: HTTP ${res.status}${body ? ' - | http | error | http, network, instagram-api, rate-limit |
| Instagram returned non-ok status: ${JSON.stringify(d).slice( | exception | error | instagram, http-status, api-response, json |
| index must be a positive integer | validation | error | instagram, validation, argument-error |
| ${label} returned invalid JSON | exception | error | instagram, json-parse, invalid-response, session |
| ${label} returned malformed items payload | exception | error | instagram, schema-mismatch, api-response, validation |
| Post index ${(idx + 1)} not found | exception | error | instagram, range-error, argument-validation |
| returned malformed post row | exception | error | instagram, schema-mismatch, data-validation |
| returned no success evidence | exception | error | instagram, api-response, comment, validation |
| User not found: ' + username (or 'HTTP ' + r1.status + ' - m | http | error | instagram, http-status, auth, user-not-found |
| Failed to comment: HTTP ' + r2.status | http | error | instagram, http-status, csrf, comment |
| Instagram URL is required | validation | error | instagram, argument-error, validation, missing-input |
| Invalid Instagram URL: ${raw} | validation | error | cli, argument-validation, url-parsing |
| Unsupported URL protocol: ${url.protocol} | validation | error | cli, url-parsing, protocol |
| Unsupported host: ${host} | validation | error | cli, url-parsing, host-validation |
| Unsupported Instagram media URL: ${raw} | validation | error | cli, url-parsing, unsupported-link-type |
| Invalid Instagram shortcode: ${shortcode} | validation | error | cli, shortcode, argument-validation |
| Instagram media metadata returned a malformed media list | exception | error | browser-automation, data-shape, instagram-api |
| Instagram media metadata returned malformed media item #${in | exception | error | browser-automation, data-shape, instagram-api |
| Instagram media metadata returned an invalid download URL fo | exception | error | browser-automation, url-parsing, instagram-api |
| Instagram media metadata returned an unsupported download UR | exception | error | browser-automation, url-parsing, protocol |
| Browser session required | exception | error | browser-automation, session, initialization |
| Failed to fetch Instagram media metadata | exception | error | instagram, browser-automation, malformed-result, puppeteer |
| Instagram media metadata returned malformed result | exception | error | instagram, schema-validation, contract-violation, browser-automation |
| instagram.com | exception | error | instagram, authentication, session-expired, cookies |
| Open the post in a logged-in browser session and retry | exception | error | instagram, permissions, private-content, content-unavailable |
| Failed to download ${item.filename}: ${result.error || 'unkn | exception | error | instagram, network, download-failure, timeout, cdn |
| Failed to verify downloaded bytes for ${item.filename} | exception | error | instagram, download-failure, corrupt-file, validation |
| No downloadable media found | exception | error | instagram, empty-result, unsupported-content, url-validation |
| HTTP ' + res.status + ' - make sure you are logged in to Ins | http | error | instagram, http-error, authentication, rate-limit, explore |
| Failed to follow: HTTP ' + r2.status | http | error | instagram, http-error, csrf, follow-action, rate-limit |
| Instagram follow returned invalid JSON | exception | error | instagram, network, json-parsing, browser-automation |
| Instagram follow returned no success evidence | exception | error | instagram, api-contract, rate-limit, response-validation |
| limit must be a positive integer | validation | error | validation, argument-parsing, instagram |
| Failed to fetch followers: HTTP ' + r2.status | http | error | instagram, network, http-status, rate-limit, authentication |
| Instagram followers returned malformed users payload | exception | error | instagram, api-contract, response-validation, schema-change |
| Instagram followers returned malformed user row | exception | error | instagram, response-validation, data-quality |
| limit must be a positive integer | validation | error | validation, argument-parsing, instagram |
| Failed to fetch following: HTTP ' + r2.status | http | error | instagram, network, pagination, http-status, rate-limit |
| Instagram following returned malformed users payload | exception | error | instagram, api-response, validation, pagination |
| Instagram following returned malformed user row | exception | error | instagram, data-validation, schema |
| Instagram following returned malformed pagination cursor | exception | error | instagram, pagination, type-validation |
| Instagram following returned malformed has_more flag | exception | error | instagram, pagination, type-validation |
| Instagram following returned has_more without pagination cur | exception | error | instagram, pagination, inconsistent-response |
| Browser session required for instagram note | exception | error | browser-session, prerequisite, instagram, command-execution |
| Argument "content" is required. | validation | error | argument-validation, cli, input |
| Instagram note content cannot be empty. | validation | error | argument-validation, cli, empty-input |
| Instagram note content must be 60 characters or fewer. | validation | error | argument-validation, length-limit, instagram, unicode |
| Instagram note publish failed at ${String(result?.stage || ' | exception | error | instagram, browser-automation, ui-strategy, publish-failed |
| Browser session required for instagram post | exception | error | instagram, browser-session, null-check, prerequisite-missing |
| Argument "media" is required. | validation | error | instagram, argument-error, missing-argument, input-validation |
| Too many media items: ${inputs.length} | validation | error | instagram, argument-error, limit-exceeded, carousel |
| Media path cannot be empty | validation | error | instagram, argument-error, empty-path, input-validation |
| Media file not found: ${resolved} | validation | error | argument-error, file-not-found, validation |
| Unsupported media format: ${ext} | validation | error | argument-error, unsupported-format, validation |
| Instagram login required before posting | exception | error | auth, instagram, session-expired |
| Failed to open Instagram post composer | exception | error | automation, instagram, transient |
| Instagram upload input not found | exception | error | instagram, dom-selector, browser-automation |
| Instagram fallback file injection failed | exception | error | instagram, file-upload, browser-automation |
| Instagram posting requires Browser Bridge file upload suppor | exception | error | instagram, browser-bridge, api-capability |
| Instagram mixed-media posting requires Browser Bridge file u | exception | error | instagram, browser-bridge, video-upload, api-capability |
| Instagram image preview did not appear after upload | exception | error | instagram, upload-timeout, ui-automation |
| Instagram action button not found: ${labels.join(' / ')} | exception | error | instagram, dom-selector, ui-automation |
| Instagram caption editor did not appear | exception | error | instagram, ui-automation, timeout |
| Failed to fill Instagram caption | exception | error | instagram, caption, ui-automation |
| Instagram caption did not stick before sharing | exception | error | instagram, caption, verification-timeout |
| Instagram post share failed | exception | error | instagram, automation, publish-failed, screenshot-debug |
| Instagram post share confirmation did not appear | exception | error | instagram, timeout, automation, publish-confirmation |
| ${uiError.message} | exception | error | instagram, fallback, command-execution-error, automation |
| ${label} | exception | error | instagram, validation, profile-api, payload-shape |
| ${label} returned invalid JSON | exception | error | instagram, json, network, response-parsing |
| ${label} failed: HTTP ${response.status} | http | error | instagram, http, rate-limit, network |
| Instagram profile returned malformed user payload for: ${use | exception | error | instagram, schema, validation, profile-api, payload-shape |
| Browser session required for instagram reel | exception | error | browser-session, precondition, instagram |
| Video path cannot be empty | validation | error | argument-validation, missing-argument, instagram |
| Video file not found: ${resolved} | validation | error | file-not-found, argument-validation, filesystem |
| Unsupported video format: ${ext} | validation | error | unsupported-format, argument-validation, instagram |
| Argument "video" is required. | validation | error | missing-argument, cli-usage, instagram |
| Instagram login required before posting a reel | exception | error | authentication, instagram, browser-session |
| Failed to open Instagram reel composer | exception | error | dom-automation, instagram, composer |
| Instagram reel upload input not found | exception | error | dom-automation, timeout, instagram |
| Instagram reel upload requires Browser Bridge file upload su | exception | error | capability-missing, browser-bridge, file-upload |
| Instagram reel upload failed | exception | error | instagram, upload, puppeteer, automation |
| Instagram reel preview did not appear after upload | exception | error | instagram, timeout, upload, puppeteer, automation |
| Instagram action button not found: ${labels.join(' / ')} | exception | error | instagram, ui-automation, button-not-found, puppeteer |
| Instagram reel editor did not appear | exception | error | instagram, editor, flow-failure, puppeteer, automation |
| Instagram reel ${expected} editor did not appear | exception | error | instagram, timeout, editor, puppeteer, automation |
| Instagram reel caption editor did not appear | exception | error | instagram, dom-selector, automation, browser-automation |
| Instagram reel caption did not stick before sharing | exception | error | instagram, automation, content-mismatch, browser-automation |
| Instagram reel share failed | exception | error | instagram, upload-failed, rate-limit, automation |
| Instagram reel share confirmation did not appear | exception | error | instagram, timeout, automation, browser-automation |
| index must be a positive integer | validation | error | validation, argument-error, instagram |
| returned invalid JSON | exception | error | network, json, instagram, authentication |
| returned malformed items payload | exception | error | schema-validation, api-change, instagram |
| Post index not found | exception | error | validation, range-error, instagram |
| returned malformed post row | exception | error | schema-validation, instagram, data-integrity |
| returned no success evidence | exception | error | csrf, instagram, authentication, soft-failure |
| User not found: ' + username : 'HTTP ' + r1.status + ' - mak | http | error | network, authentication, http-error, instagram |
| Failed to save: HTTP ' + r2.status | http | error | csrf, http-error, authentication, instagram |
| Failed to list collections: HTTP ' + listRes.status + ' - ma | http | error | network, authentication, http-error, instagram |
| Collection not found: ' + collectionArg + '. Available: ' + | exception | error | validation, argument-error, instagram |
| HTTP ' + res.status + ' - make sure you are logged in to Ins | http | error | http, authentication, instagram, session |
| HTTP ' + res.status + ' - make sure you are logged in to Ins | http | error | http, authentication, instagram, search |
| Browser session required for instagram story | exception | error | browser, session, puppeteer, instagram |
| Argument "media" is required. | validation | error | arguments, validation, cli, instagram |
| Instagram story currently supports a single media item. | validation | error | arguments, validation, instagram, media |
| Story media file not found: ${resolved} | validation | error | filesystem, validation, file-not-found, instagram |
| Unsupported story media format: ${ext} | validation | error | validation, media-format, file-type, instagram |
| Failed to unfollow: HTTP ' + r2.status | http | error | http, instagram, csrf, authentication |
| Instagram unfollow returned invalid JSON | exception | error | json, parsing, instagram, session |
| Instagram unfollow returned no success evidence | exception | error | instagram, authentication, api-response, rate-limit |
| index must be a positive integer | validation | warning | validation, arguments, instagram |
| returned invalid JSON | exception | error | instagram, json, network, authentication |
| returned malformed items payload | exception | error | instagram, api-response, schema-mismatch |
| Post index ' + (idx + 1) + ' not found | validation | warning | instagram, validation, arguments |
| ' + label + ' returned malformed post row | validation | error | instagram, api-response, schema-mismatch |
| ' + label + ' returned no success evidence | validation | error | instagram, csrf, authentication, api-response |
| User not found: ' + username | http | error | instagram, http-404, not-found, arguments |
| Failed to unsave: HTTP ' + r2.status | http | error | instagram, http-error, authentication, rate-limit |
| HTTP ' + r2.status + ' - make sure you are logged in to Inst | http | error | instagram, http-error, authentication, rate-limit |
| jd add-cart requires a logged-in JD session | exception | error | auth, jd, login-required, browser-session |
| jd.com | exception | error | auth, jd, cookies, login-required |
| JD pin cookie empty after decode (probe.detail) | exception | error | auth, jd, cookies, stale-session |
| Unexpected JD probe: ${JSON.stringify(probe)} | exception | error | jd, probe, unexpected-response, anti-bot |
| jd cart requires a logged-in JD session | exception | error | auth, jd, cart, login-required |
| item.jd.com | exception | error | jd, anti-bot, blocked, auth |
| data.error | exception | error | jd, scrape, command-execution, invalid-item |
| JD item detail images were not found | exception | warning | jd, scraping, images, empty-result |
| jianyu360.cn | exception | error | auth, jianyu360, cookies, login-required |
| Jianyu whoami failed: ${probe.detail} | exception | error | network, fetch-failed, probe, jianyu |
| Unexpected Jianyu probe: ${JSON.stringify(probe)} | exception | error | contract-violation, probe, jianyu, selector-drift |
| [taxonomy=selector_drift] site=jianyu command=search blocked | exception | warning | anti-bot, captcha, rate-limit, auth, jianyu |
| Waiting for Jike login: ${detail} | exception | info | auth, login-flow, polling, jike |
| Jike notifications API returned a malformed notification | exception | error | api-contract, schema-validation, jike, notifications |
| Jike notifications API returned a notification without a typ | exception | error | api-contract, schema-validation, jike, notifications |
| Jike notifications API returned a malformed action item | exception | error | api-contract, schema-validation, jike, notifications |
| Jike notifications API returned a malformed users list | exception | error | api-contract, schema-validation, jike, notifications |
| Jike notifications API returned a malformed user | exception | error | api-response, schema-validation, jike |
| Jike notifications API failed: ${String(body?.error || body? | exception | error | network, api-response, jike |
| No notifications found | exception | info | empty-result, pagination, jike |
| Jike notifications API returned a malformed pagination curso | exception | error | pagination, schema-validation, jike |
| Jike notifications pagination returned a repeated cursor | exception | error | pagination, infinite-loop-guard, jike |
| Jike notifications pagination exceeded ${MAX_PAGES} pages be | exception | warning | pagination, limit, jike |
| Jike post page did not expose the expected data script | exception | error | scraping, missing-data, jike |
| Failed to parse Jike post data: ${data.message || 'unknown e | exception | error | parsing, scraping, json, jike |
| Jike post returned an unreadable payload | exception | error | scraping, fallback, jike |
| Jike search API failed: ${String(body?.message || 'malformed | exception | error | network, api-response, search, jike |
| Jike search API returned a malformed post | exception | error | api, schema-validation, jike |
| No posts found for "${keyword}" | exception | warning | empty-results, jike, api |
| Jike search API returned a malformed pagination cursor | exception | error | api, pagination, jike |
| Jike search pagination returned a repeated cursor | exception | error | pagination, jike, api |
| Jike search pagination exceeded ${MAX_PAGES} pages before sa | exception | error | pagination, limits, jike |
| Jike search query cannot be empty | validation | error | argument-validation, cli, input |
| No posts were returned for topic ${args.id}. Confirm the top | exception | warning | empty-results, jike, auth |
| Jike topic page did not expose the expected data script | exception | error | scraping, jike, dom |
| Failed to parse Jike topic data: ${data.message || 'unknown | exception | error | scraping, json, jike |
| Jike topic returned an unreadable payload | exception | error | scraping, jike, schema-drift |
| No posts were returned for user ${args.username}. Confirm th | exception | warning | scraping, empty-result, authentication |
| Jike user page did not expose the expected data script | exception | error | scraping, dom-parsing, page-structure |
| Failed to parse Jike user data: ${data.message || 'unknown e | exception | error | scraping, parse-error, dom-parsing |
| Jike user returned an unreadable payload | exception | error | scraping, unexpected-payload, defensive |
| ${probe.detail} | exception | error | authentication, jike, session-expired |
| HTTP ${probe.httpStatus} from Jike users/profile | exception | error | http, api, rate-limit |
| Jike identity probe failed: ${probe.detail} | exception | error | browser, fetch, network |
| Unexpected Jike identity probe: ${JSON.stringify(probe)} | exception | error | defensive, browser-automation, unexpected-payload |
| --limit must be a positive integer | validation | warning | argument-validation, cli, input |
| ${outcome?.detail || `${label} returned HTTP ${outcome?.stat | exception | error | authentication, jike, http-401 |
| ${label} request failed: ${outcome.detail} | exception | error | network, http, command-execution-error, jike |
| ${label} returned invalid JSON: ${outcome.detail} | exception | error | json, http, parsing, jike |
| ${label} returned an unexpected response | exception | error | invariant, contract-violation, jike, command-execution-error |
| ${label} returned HTTP ${outcome.status} | exception | error | http, http-status, rate-limit, jike |
| ${probe.detail} | exception | error | auth, session-expired, jimeng, browser-automation |
| HTTP ${probe.httpStatus} from Jimeng passport | exception | error | http, http-status, jimeng, passport |
| Jimeng whoami failed: ${probe.detail} | exception | error | browser-automation, jimeng, script-error, page-evaluate |
| Unexpected Jimeng probe: ${JSON.stringify(probe)} | exception | error | invariant, contract-violation, jimeng, browser-automation |
| Waiting for Jimeng login | exception | info | auth, login-flow, jimeng, polling |
| Not logged in — open jimeng.jianying.com in Chrome and sign | exception | error | auth, not-logged-in, jimeng, session-expired |
| workspace/create failed: ret=${resp.ret} errmsg=${resp.errms | exception | error | api, http, cookie-auth, cli |
| workspace/create returned no workspace_id: ${JSON.stringify( | exception | error | api, schema, cli, response-shape |
| Not logged in — open jimeng.jianying.com in Chrome and sign | exception | error | auth, cookie, session-expired, cli |
| workspace/list failed: ret=${data.ret} errmsg=${data.errmsg | exception | error | api, http, cookie-auth, cli |
| Jira --fields must be a comma-separated string or auto | validation | error | argument-validation, cli, jira, type-error |
| Invalid Jira --fields selection | validation | error | argument-validation, cli, jira, parsing |
| Jira --fields auto cannot be combined with other field ids | validation | error | argument-validation, cli, jira |
| Invalid Jira field id in --fields | validation | error | argument-validation, cli, jira, parsing |
| Invalid Jira issue key: ${key} | validation | error | argument-validation, jira, cli, parsing |
| jira issue ${key} did not return requested field ${id}. | exception | error | jira, api, field-lookup, cli |
| juejin recommend returned a malformed cursor | exception | error | pagination, cursor, api-response, cli |
| juejin recommend returned a malformed has_more flag | exception | error | pagination, api-response, type-mismatch, cli |
| juejin recommend returned has_more without a next cursor | exception | error | pagination, cursor, api-response, cli |
| juejin ${label} cannot be empty | validation | error | argument-validation, cli, input-validation |
| juejin ${label} must be a positive decimal integer | validation | error | argument-validation, cli, input-validation, integer |
| juejin ${label} must be a positive integer | validation | error | argument-validation, cli, input-validation, integer |
| juejin ${label} must be <= ${maxValue} | validation | error | argument-validation, cli, limit, pagination |
| juejin cursor must be a non-negative decimal integer | validation | error | argument-validation, pagination, cursor, integer |
| juejin category "${value}" is not recognised | validation | error | argument-validation, cli, enum, input-validation |
| ${label} request failed: ${err?.message ?? err} | exception | error | network, fetch, dns, http-request |
| ${label} returned HTTP 429 (rate limited) | exception | warning | rate-limit, http-429, throttling, retry |
| ${label} returned HTTP ${resp.status} | exception | error | http, http-status, api-endpoint, waf |
| ${label} returned malformed JSON: ${err?.message ?? err} | exception | error | json, parse-error, http-response, malformed-response |
| ${label} returned a malformed API envelope | exception | error | api-schema, envelope, response-validation, contract-mismatch |
| ${label} returned err_no ${payload.err_no}: ${payload.err_ms | exception | error | api, http, response-envelope, juejin |
| ${label} returned a malformed payload | exception | error | api, schema-validation, response-shape, juejin |
| ${label} returned a non-array data field | exception | error | api, type-error, schema-validation, juejin |
| ${label} returned no articles. | exception | warning | empty-result, pagination, juejin |
| ${label} returned a malformed article id | exception | error | validation, schema-validation, juejin, response-shape |
| ${label} returned a malformed numeric field | exception | error | api, data-validation, juejin |
| Ke lianjia_token cookie missing — anonymous | exception | error | auth, session, browser, ke |
| Ke no user-name DOM anchor — anonymous or SSR failed | exception | error | auth, dom-scraping, selector, ke |
| Unexpected Ke probe: ${JSON.stringify(probe)} | exception | error | automation, evaluate, runtime, ke |
| Waiting for Ke lianjia_token cookie | exception | info | auth, login-flow, polling, ke |
| 触发了验证码,请先在浏览器中完成验证 | exception | warning | captcha, anti-bot, rate-limit, ke |
| 触发了验证码,请先在浏览器中完成滑块验证 | exception | warning | captcha, anti-bot, slider, ke |
| 未登录,请先在浏览器中登录贝壳找房 | exception | error | auth, login, ke |
| 未登录或登录已过期,请先在浏览器中登录贝壳找房 | exception | error | auth, http-401, http-403, session-expired, ke |
| 响应不是有效 JSON | exception | error | network, json, risk-control, ke |
| HTTP ${code} | exception | error | network, http, scraping, rate-limit |
| SignOut svg not found | exception | error | browser-automation, dom-selector, ui-change |
| upgrade click failed | exception | error | browser-automation, dom-selector, ui-change |
| No Close svg visible — no banner to dismiss? | exception | warning | browser-automation, dom-selector, idempotency |
| unknown mode "${mode}" | validation | error | argument-validation, cli, user-input |
| No template cards visible. Are you on a mode page? | exception | error | browser-automation, dom-selector, empty-result |
| is required | validation | error | argument-validation, cli, missing-argument |
| Edit click failed | exception | error | browser-automation, dom-selector, ui-change |
| Rename input fill failed | exception | error | browser-automation, dom-selector, ui-change |
| Kimi history rename was not verified for chat ${id} | exception | error | kimi, ui-verification, rename, timeout |
| Kimi access_token cookie missing | exception | error | kimi, auth, cookie, login-required |
| HTTP ${result.httpStatus} from /api/user | exception | error | kimi, http-error, api, rate-limit |
| Kimi whoami failed: ${result.detail} | exception | error | kimi, network, evaluate-exception, api |
| Unexpected Kimi probe: ${JSON.stringify(result)} | exception | warning | kimi, contract-change, defensive, api |
| Waiting for Kimi auth cookies | exception | info | kimi, auth, login-flow, polling |
| must be a Kimi chat id or https://www.kimi.com/chat/<id> URL | validation | error | kimi, argument-validation, url-parsing |
| No chats visible in sidebar. Are you logged in? | exception | error | kimi, empty-result, scraping, auth |
| is required | validation | error | kimi, argument-validation, missing-argument |
| No messages found in /chat/${id}. | exception | error | empty-result, dom-scraping, kimi |
| No chat turns found on current page. | exception | error | empty-result, dom-scraping, kimi |
| composer type failed | exception | error | dom-scraping, command-execution, kimi |
| Send button click failed | exception | error | dom-scraping, command-execution, kimi |
| Kimi message submission was not verified | exception | error | command-execution, verification-timeout, kimi |
| No assistant message visible. | exception | error | empty-result, dom-scraping, kimi |
| Copy button not visible | exception | warning | dom-scraping, command-execution, kimi |
| Refresh button not visible | exception | warning | dom-scraping, command-execution, kimi |
| must be "like" or "dislike" | validation | error | argument-validation, input-validation, kimi |
| ${kind} button not visible | exception | error | browser-automation, ui-selector, kimi |
| Share button not visible | exception | error | browser-automation, ui-selector, kimi |
| No new Kimi assistant reply was visible before the timeout. | exception | error | timeout, browser-automation, kimi |
| must be "local" or "session" | validation | error | argument-validation, invalid-enum, kimi |
| No keys match "${flt}". | exception | warning | empty-result, filtering, kimi |
| is required | validation | error | argument-validation, cli-usage, kimi |
| Key not found in ${store}: ${key} | exception | error | key-not-found, web-storage, kimi |
| document.cookie is empty (likely all cookies are httpOnly). | exception | warning | cookies, httponly, empty-result, kimi |
| No IndexedDB databases. | exception | info | indexeddb, empty-result, kimi |
| unknown mode "${name}". Known: ${Object.keys(MODES).join(', | validation | error | argument-validation, cli, kimi |
| LeftBar svg not visible | exception | error | dom, ui-automation, kimi |
| No avatar found — not logged in? | exception | error | authentication, dom-scraping, kimi |
| Model "${wantSet}" is ambiguous: ${partialMatches.map(item = | validation | error | argument-validation, ambiguity, kimi |
| No model matched "${wantSet}". Available: ${opts.join(', ')} | validation | error | argument-validation, kimi, model-selection |
| Failed to click model option | exception | error | dom, ui-automation, kimi |
| Kimi model switch did not verify the requested model: reques | exception | error | verification, ui-automation, kimi |
| Model dropdown opened but no options detected. | exception | warning | empty-result, ui-automation, kimi |
| kimi usage returned malformed payload: missing or invalid "$ | exception | error | payload-validation, usage, kimi |
| kimi usage returned malformed payload: missing "${name}" | exception | error | payload-validation, usage, kimi |
| kimi usage returned malformed payload: expected object | exception | error | cli, payload-validation, kimi, external-api |
| LessWrong API returned HTTP ${resp.status} | exception | error | http, graphql, network, lesswrong |
| Unknown GraphQL error | exception | error | graphql, query-error, lesswrong, schema |
| Check the username — LessWrong slugs are lowercase (e.g. "zv | exception | warning | user-input, slug, lesswrong, empty-result |
| lesswrong comments: Post "${postId}" not found | error_code | warning | empty-result, lesswrong, post-id, user-input |
| lesswrong read: Post "${postId}" not found | error_code | warning | empty-result, lesswrong, post-id, user-input |
| lesswrong tag ${tagInput}: Use "opencli lesswrong tags" to l | error_code | warning | empty-result, tag, lesswrong, user-input |
| lesswrong user ${String(kwargs.username)}: Check the usernam | error_code | warning | user-input, slug, lesswrong, empty-result |
| lichess top: Lichess returned no leaderboard rows for perf " | error_code | warning | empty-result, lichess, leaderboard, api |
| lichess user: Lichess user "${username}" returned empty payl | error_code | warning | empty-result, lichess, api, payload |
| lichess user: Lichess user "${username}" is closed/disabled. | error_code | warning | lichess, api, account-disabled, empty-result |
| lichess username is required | validation | error | lichess, argument-validation, missing-argument |
| lichess username "${value}" is not a valid handle. Allowed: | validation | error | lichess, argument-validation, invalid-format, regex |
| lichess perf is required (e.g. "blitz", "bullet", "rapid") | validation | error | lichess, argument-validation, missing-argument |
| lichess perf "${value}" is not recognised. Allowed values: $ | validation | error | lichess, argument-validation, invalid-enum-value |
| lichess ${label} must be a positive integer | validation | error | lichess, argument-validation, type-error, integer |
| lichess ${label} must be <= ${maxValue} | validation | error | lichess, argument-validation, out-of-range, limit |
| ${label} request failed: ${err?.message ?? err}. Check that | exception | error | network, fetch, lichess, connectivity |
| Lichess returned 404 for ${url}. | error_code | warning | lichess, http-404, not-found, api |
| ${label} returned HTTP 429 (rate limited). Lichess throttles | exception | warning | rate-limit, http-429, lichess, backoff |
| ${label} returned HTTP ${resp.status} | http | error | http, network, api |
| ${label} returned malformed JSON: ${err?.message ?? err} | exception | error | json, network, parsing |
| linkedin.com: LinkedIn li_at cookie missing | error_code | error | auth, cookie, linkedin |
| linkedin.com: ${result.detail} | error_code | error | auth, linkedin, session |
| HTTP ${result.httpStatus} from /voyager/api/me | http | error | http, linkedin, api |
| LinkedIn Learning whoami failed: ${result.detail} | exception | error | linkedin, page-evaluate, api |
| Unexpected LinkedIn Learning probe: ${JSON.stringify(result) | exception | error | linkedin, contract, debugging |
| linkedin.com: Waiting for LinkedIn li_at cookie | error_code | warning | auth, cookie, polling |
| <slug> is required | validation | error | arguments, validation, cli |
| Invalid LinkedIn Learning URL: "${s}" | validation | error | arguments, url, validation |
| Invalid LinkedIn Learning host: "${parsed.hostname}" | validation | error | argument-validation, url-parsing, linkedin-learning |
| Invalid LinkedIn Learning course URL: "${s}" | validation | error | argument-validation, url-parsing, linkedin-learning |
| Invalid LinkedIn Learning slug: "${slug}" | validation | error | argument-validation, slug, linkedin-learning |
| Browser session required for linkedin-learning course | exception | error | browser-session, prerequisite, linkedin-learning |
| LinkedIn Learning courses lookup failed: ${result?.error ?? | exception | error | network, authentication, api-response, linkedin-learning |
| LinkedIn Learning courses lookup returned malformed payload: | exception | error | api-response, schema-change, linkedin-learning |
| No LinkedIn Learning course found for slug "${slug}" | error_code | warning | empty-result, not-found, linkedin-learning |
| LinkedIn Learning courses lookup returned malformed course d | exception | error | api-response, schema-change, parsing, linkedin-learning |
| Browser session required for linkedin-learning search | exception | error | browser-session, prerequisite, linkedin-learning |
| --keywords is required | validation | error | argument-validation, empty-input, linkedin-learning |
| LinkedIn Learning searchV2 failed: ${result?.error ?? 'no pa | exception | error | network, api, http, linkedin |
| LinkedIn Learning searchV2 returned malformed payload: missi | exception | error | schema, api, linkedin, payload |
| No LinkedIn Learning results for "${keywords}" | error_code | info | empty-result, search, linkedin |
| LinkedIn Learning searchV2 returned no parseable rows with s | exception | error | schema, parsing, linkedin, payload |
| --limit must be an integer between 1 and ${MAX_LIMIT} | validation | warning | argument-validation, cli, input |
| LinkedIn JSESSIONID cookie not found. Please sign in to Link | exception | error | auth, session, cookies, linkedin |
| LinkedIn Learning auth failed (HTTP ${result.status ?? ''}). | exception | error | auth, csrf, http-403, http-401, linkedin |
| Browser session required for linkedin-learning trending | exception | error | browser, session, cli, precondition |
| LinkedIn Learning feedRecommendationGroups failed: ${result? | exception | error | network, api, http, linkedin |
| LinkedIn Learning feedRecommendationGroups returned malforme | exception | error | schema, api, linkedin, payload |
| LinkedIn Learning feedRecommendationGroups returned no parse | exception | error | scraping, markup-change, parse-failure |
| LinkedIn Learning returned no personalized recommendations | exception | warning | empty-result, scraping, recommendations |
| LinkedIn li_at cookie missing | exception | error | auth, session, cookie |
| ${result.detail} | exception | error | auth, session-expired, voyager-api |
| HTTP ${result.httpStatus} from /voyager/api/me | exception | error | http, voyager-api, rate-limit |
| LinkedIn whoami failed: ${result.detail} | exception | error | javascript, browser-automation, network |
| Unexpected LinkedIn probe: ${JSON.stringify(result)} | exception | error | unexpected-response, version-mismatch, voyager-api |
| Waiting for LinkedIn li_at cookie | exception | info | auth, login-flow, polling |
| LinkedIn company requires a company universal name or URL | exception | error | validation, argument-error, cli |
| LinkedIn company received a malformed URL: ${raw} | exception | error | validation, url-parsing, argument-error |
| LinkedIn company URL must point to linkedin.com | exception | error | url-validation, linkedin, input-validation |
| LinkedIn company URL must look like /company/<name> | exception | error | url-validation, linkedin, input-validation |
| LinkedIn company URL has a malformed company slug: ${m[1]} | exception | error | url-validation, encoding, linkedin |
| LinkedIn company name has unexpected characters: ${slug} | exception | error | url-validation, linkedin, input-validation |
| LinkedIn company extraction returned a malformed current URL | exception | error | scraping, linkedin, malformed-output |
| LinkedIn company extraction ended on a non-LinkedIn page | exception | error | scraping, linkedin, redirect |
| LinkedIn company extraction ended outside a company page | exception | error | scraping, linkedin, navigation |
| LinkedIn company extraction returned a malformed company slu | exception | error | scraping, encoding, linkedin |
| LinkedIn company extraction returned a malformed payload | exception | error | scraping, linkedin, layout-drift |
| LinkedIn company page rendered but no company name was found | exception | error | scraping, linkedin, layout-drift |
| LinkedIn company extraction returned a malformed followers c | exception | warning | scraping, parsing, linkedin |
| ${label} is required | validation | error | cli, validation, arguments |
| ${label} must be an exact https://www.linkedin.com/in/<profi | validation | error | cli, validation, url |
| --note must be 300 characters or fewer for LinkedIn connecti | validation | error | cli, validation, linkedin |
| Browser session required for linkedin connect | exception | error | browser, session, cli |
| LinkedIn connect requires an active signed-in LinkedIn brows | exception | error | authentication, linkedin, session |
| LinkedIn connect blocked: ${safety.blockReason} | exception | error | linkedin, safety-check, automation |
| LinkedIn connect blocked: invalid_connect_link | exception | error | linkedin, url, automation |
| LinkedIn connect blocked: ${opened?.reason || 'connect_contr | exception | error | linkedin, automation, dom |
| LinkedIn connect blocked: ${result?.reason || 'send_failed'} | exception | error | linkedin, automation, dom |
| LinkedIn sent-invitations verification requires an active si | exception | error | linkedin, authentication, browser-session, cookies |
| LinkedIn connection miniProfile field ${field} was malformed | exception | error | linkedin, schema-validation, api-change |
| LinkedIn connections returned an element without a miniProfi | exception | error | linkedin, schema-validation, data-quality |
| LinkedIn connection element missing a stable public identifi | exception | error | linkedin, data-quality, validation |
| LinkedIn connections API authentication failed: | error_code | error | linkedin, authentication, http-401, cookies |
| LinkedIn connections API returned an unexpected response: | error_code | error | linkedin, network, http-error |
| LinkedIn connections API returned a malformed payload: missi | error_code | error | linkedin, schema-validation, api-change |
| linkedin connections | error_code | warning | linkedin, empty-result, no-data |
| LinkedIn messaging API returned malformed normalized payload | error_code | error | linkedin, schema-validation, messaging |
| LinkedIn messaging API returned a conversation without threa | error_code | error | linkedin, schema-validation, messaging, urn |
| --limit must be an integer between ${MIN_LIMIT} and ${MAX_LI | validation | error | cli, argument-validation, linkedin |
| LinkedIn requires an active signed-in browser session. | error_code | error | authentication, linkedin, browser-session |
| LinkedIn did not issue a messaging API request; the inbox ma | error_code | error | network, spa, linkedin, scraping |
| LinkedIn JSESSIONID cookie not found. Please sign in to Link | error_code | error | authentication, cookies, csrf, linkedin |
| LinkedIn messaging API authentication failed: | error_code | error | authentication, api, csrf, linkedin |
| LinkedIn messaging API returned an unexpected response: | error_code | error | network, api, linkedin, unexpected-response |
| linkedin inbox | error_code | warning | empty-result, linkedin, no-data |
| job-url must be a https://www.linkedin.com/jobs/view/<id> UR | validation | error | cli, argument-validation, url, linkedin |
| LinkedIn job detail returned malformed extraction payload | error_code | error | scraping, extraction, linkedin, malformed-data |
| LinkedIn job detail could not find a job title | error_code | error | scraping, extraction, linkedin, missing-field |
| Browser session required for linkedin job-detail | error_code | error | browser-session, linkedin, session-required |
| LinkedIn jobs preferences returned malformed preferences pay | error_code | error | linkedin, schema-validation, scraping |
| LinkedIn jobs preferences returned malformed alerts payload | error_code | error | linkedin, schema-validation, scraping |
| LinkedIn jobs preferences could not find stable preferences | error_code | error | linkedin, empty-content, scraping |
| Browser session required for linkedin jobs-preferences | error_code | error | browser-session, linkedin, session-required |
| ${label} is required | validation | error | argument-validation, cli, missing-argument |
| --limit must be an integer between 1 and ${MAX_LIMIT} | validation | error | argument-validation, cli, range-validation |
| LinkedIn people search returned malformed extraction payload | error_code | error | linkedin, schema-validation, scraping |
| LinkedIn people search returned malformed row at index ${ind | error_code | error | linkedin, schema-validation, scraping |
| LinkedIn people search returned row without stable profile i | error_code | error | linkedin, schema-validation, scraping |
| LinkedIn people search returned malformed extraction payload | error_code | error | scraping, linkedin, dom-parsing, payload-validation |
| Browser session required for linkedin people-search | error_code | error | browser-session, linkedin, puppeteer, prerequisite |
| LinkedIn people search navigation failed: ${error?.message | | error_code | error | network, navigation, linkedin, timeout |
| LinkedIn cookie lookup failed: ${error?.message || error} | error_code | error | cookies, linkedin, browser-crash, cdp |
| LinkedIn cookie lookup returned malformed payload | error_code | error | cookies, linkedin, payload-validation, contract-mismatch |
| LinkedIn JSESSIONID cookie not found. Please sign in to Link | error_code | error | authentication, linkedin, cookies, session-expired |
| LinkedIn people search extraction failed: ${error?.message | | error_code | error | linkedin, page-evaluate, dom-parsing, javascript |
| LinkedIn people search requires an active signed-in browser | error_code | error | authentication, linkedin, authwall, scraping |
| LinkedIn redirected away from the search page (${result.erro | error_code | error | linkedin, rate-limit, cul, account-restricted |
| LinkedIn people search returned malformed extraction payload | error_code | error | linkedin, payload-validation, serialization, dom-parsing |
| LinkedIn people search found profile candidates but could no | error_code | error | linkedin, scraping, dom-parsing |
| No people found on the rendered page for "${keywords}". The | error_code | warning | linkedin, empty-results, scraping |
| LinkedIn post analytics expected an array of posts | error_code | error | linkedin, type-error, input-validation |
| linkedin post-analytics | error_code | warning | linkedin, empty-results, analytics |
| Sales Navigator messaging threads API returned malformed pay | exception | error | linkedin, sales-navigator, api, malformed-response |
| Sales Navigator messaging threads API returned malformed thr | exception | error | linkedin, sales-navigator, malformed-response |
| Sales Navigator messaging thread row missing id | exception | error | linkedin, sales-navigator, missing-identifier |
| LinkedIn JSESSIONID cookie not found. Please sign in to Link | exception | critical | linkedin, authentication, csrf, session-expired |
| ${label} authentication failed (HTTP ${result.status || 'aut | exception | critical | linkedin, sales-navigator, authentication, http-401 |
| ${label} returned an unexpected response | exception | error | linkedin, sales-navigator, api, malformed-response, network |
| Sales Navigator messaging threads API returned the same curs | exception | error | pagination, sales-navigator, scraping |
| Sales Navigator messaging threads API reached the ${maxPages | exception | error | pagination, sales-navigator, limits |
| Browser session required for linkedin salesnav-inbox | exception | error | browser-session, authentication, sales-navigator |
| linkedin salesnav-inbox | exception | warning | empty-result, sales-navigator, scraping |
| ${label} is required | validation | error | argument-validation, cli, input |
| --recipient must resolve to a Sales Navigator lead urn | validation | error | argument-validation, urn, sales-navigator |
| --subject is required | validation | error | argument-validation, cli, input |
| --body is required | validation | error | argument-validation, cli, input |
| --subject must be 200 characters or fewer | validation | error | argument-validation, limits, input |
| --body must be 1900 characters or fewer | validation | error | argument-validation, limits, input |
| ${label} auth failed. | exception | error | auth, linkedin, session-expired, sales-navigator |
| ${label} failed | exception | error | api, linkedin, sales-navigator, upstream-error |
| ${label} returned malformed response | exception | error | linkedin, malformed-response, sales-navigator, html-response |
| LinkedIn JSESSIONID cookie not found. Please sign in to Link | exception | error | auth, cookies, linkedin, jsessionid |
| --recipient must be a Sales Navigator lead URL, Sales Naviga | validation | error | argument-validation, linkedin, sales-navigator, bad-input |
| Could not resolve Sales Navigator auth token for recipient | exception | error | linkedin, sales-navigator, resolution-failed, scraping |
| Sales Navigator profile lookup returned malformed profile da | exception | error | linkedin, sales-navigator, missing-data, profile |
| Browser session required for linkedin salesnav-message | exception | error | browser, linkedin, sales-navigator, missing-session |
| Sales Navigator InMail blocked by recipient restriction | exception | error | linkedin, sales-navigator, inmail, policy-restriction |
| Sales Navigator post-send verification failed | exception | error | linkedin, sales-navigator, verification, ui-scraping |
| ${label} is required | validation | error | argument-validation, cli, missing-argument |
| --limit must be an integer between 1 and 500 | validation | error | argument-validation, cli, limit, range-check |
| Sales Navigator lead search API returned malformed payload | exception | error | linkedin, sales-navigator, malformed-response, api-response, parsing |
| Sales Navigator lead search API returned malformed lead row | exception | error | api-response, schema-validation, sales-navigator, parsing |
| Sales Navigator lead row missing name | exception | error | api-response, schema-validation, sales-navigator, missing-field |
| Sales Navigator lead row missing profile identity | exception | error | api-response, schema-validation, sales-navigator, urn-parsing |
| LinkedIn Sales Navigator API auth failed (HTTP ' + (result.s | exception | critical | authentication, http-401, http-403, sales-navigator, session-expired |
| Sales Navigator lead search API returned an unexpected respo | exception | error | network, http-error, rate-limit, sales-navigator |
| Browser session required for linkedin salesnav-search | exception | error | linkedin, browser-session, missing-page, setup |
| LinkedIn JSESSIONID cookie not found. Please sign in to Link | exception | error | linkedin, authentication, cookie, jsessionid, csrf |
| linkedin salesnav-search | exception | warning | linkedin, sales-navigator, empty-result, search |
| Sales Navigator recipient urn must be urn:li:fs_salesProfile | validation | error | linkedin, argument-validation, urn, sales-navigator |
| Sales Navigator lead URL must contain resolved profileId, au | validation | error | linkedin, argument-validation, url, sales-navigator |
| Sales Navigator messaging thread API returned malformed payl | exception | error | linkedin, sales-navigator, api-response, schema-validation, malformed-payload |
| Sales Navigator messaging thread API returned a thread witho | exception | error | linkedin, sales-navigator, api-response, schema-validation, missing-field |
| Sales Navigator messaging thread API returned malformed mess | exception | error | linkedin, sales-navigator, api-response, schema-validation, malformed-payload |
| Sales Navigator messaging thread API returned malformed mess | exception | error | linkedin, sales-navigator, api-response, schema-validation, malformed-row |
| thread or recipient is required | validation | error | argument-error, input-validation, linkedin, sales-navigator |
| No Sales Navigator thread matched ${input} | exception | error | empty-result, linkedin, sales-navigator, search-failed |
| Sales Navigator messaging thread API returned partial histor | exception | error | pagination, linkedin, sales-navigator, api-inconsistency |
| Browser session required for linkedin salesnav-thread | exception | error | browser-session, prerequisite, linkedin, command-execution |
| thread-or-recipient is required | validation | error | argument-error, cli, input-validation, linkedin |
| No messages found for ${threadId} | exception | warning | empty-result, parser, linkedin, sales-navigator |
| Unsupported ${label}: ${value} | validation | error | argument-error, invalid-value, linkedin, filter-mapping |
| ${label} must be an integer, got ${JSON.stringify(value)} | validation | error | argument-error, type-error, integer-validation, linkedin |
| ${label} must be ${range}, got ${parsed} | validation | error | argument-error, range-validation, linkedin, pagination |
| ${context} requires an active signed-in LinkedIn browser ses | exception | error | auth-required, session-expired, linkedin, authentication |
| Could not resolve LinkedIn company filter: ${unresolved.join | validation | error | linkedin, argument-validation, company-filter, dom-scraping |
| LinkedIn JSESSIONID cookie not found. Please sign in to Link | exception | error | linkedin, authentication, csrf, cookies, browser-session |
| ${batch.error} | exception | error | linkedin, api, http-error, rate-limit, voyager |
| LinkedIn search returned an unexpected response | exception | error | linkedin, api, unexpected-response, voyager, browser-automation |
| query is required | validation | error | linkedin, argument-validation, missing-argument, input-validation |
| Browser session required for linkedin sent-invitations | exception | error | linkedin, browser-session, environment, browser-launch |
| LinkedIn sent invitations requires an active signed-in brows | exception | error | linkedin, authentication, authwall, browser-session, scraping |
| LinkedIn warning/restriction state visible on sent invitatio | exception | error | linkedin, anti-bot, account-restricted, captcha, scraping |
| LinkedIn sent invitations returned a malformed extraction pa | exception | error | linkedin, scraping, payload-validation, browser-automation, serialization |
| LinkedIn sent invitations contained a malformed invitation c | exception | error | linkedin, scraping, dom-parsing, ui-change, data-quality |
| No pending sent invitations were found. | exception | info | linkedin, empty-result, scraping |
| LinkedIn sent invitation cards were not found; the page stru | exception | error | linkedin, scraping, dom-change, selector |
| LinkedIn services-read requires a /in/<handle>/ profile URL | exception | error | linkedin, argument-validation, url |
| LinkedIn services-read requires a /services/page/<id>/ URL | exception | error | linkedin, argument-validation, url |
| LinkedIn services-read returned malformed extraction payload | exception | error | linkedin, scraping, payload-validation, malformed-data |
| LinkedIn services-read could not find stable Services page c | exception | error | linkedin, scraping, empty-content, dom-change |
| Browser session required for linkedin services-read | exception | error | linkedin, browser-session, precondition |
| No LinkedIn Services page link was found on the profile. | exception | info | linkedin, empty-result, services-page, scraping |
| ${label} must be a LinkedIn URL | validation | error | linkedin, argument-validation, url |
| ${label} must be an https LinkedIn URL without credentials o | validation | error | linkedin, argument-validation, url, security |
| ${label} must point to linkedin.com | validation | error | argument-validation, url-validation, linkedin |
| ${label} is required | validation | error | argument-validation, missing-argument, cli, linkedin |
| --limit must be an integer between 1 and ${max} | validation | error | argument-validation, cli-flags, range-validation, linkedin |
| LinkedIn cookie lookup failed: ${error?.message || error} | exception | error | browser-automation, cookie-lookup, driver-error, linkedin |
| LinkedIn cookie lookup returned malformed payload | exception | error | browser-automation, malformed-response, cookie-lookup, linkedin |
| ${context} requires an active signed-in LinkedIn browser ses | exception | error | authentication, linkedin, session-expired, cookie, jsessionid |
| ${label} is required | validation | error | argument-validation, missing-argument, cli, linkedin |
| ${label} must be an exact https://www.linkedin.com/messaging | validation | error | argument-validation, url-validation, linkedin, messaging |
| --max-scrolls must be an integer between 0 and 80 | validation | error | argument-validation, cli-flags, range-validation, linkedin |
| LinkedIn did not issue a messengerMessages API request for t | exception | error | linkedin, api-discovery, scraping, empty-result |
| LinkedIn messengerMessages discovery returned an invalid URL | exception | error | linkedin, url-validation, scraping |
| LinkedIn messengerMessages discovery returned an unsafe or m | exception | error | linkedin, url-validation, security, scraping |
| LinkedIn messengerMessages API returned no pages. | exception | error | linkedin, empty-response, scraping |
| LinkedIn messengerMessages API returned a malformed page wra | exception | error | linkedin, schema-validation, scraping |
| LinkedIn messengerMessages API returned a malformed normaliz | exception | error | linkedin, schema-validation, payload-shape, scraping |
| LinkedIn messengerMessages GraphQL returned errors. | exception | error | linkedin, graphql, api-error, scraping |
| LinkedIn messengerMessages payload is missing the included e | exception | error | linkedin, schema-validation, payload-shape, scraping |
| LinkedIn messengerMessages payload is missing normalized dat | exception | error | linkedin, graphql, schema-validation, scraping |
| LinkedIn messengerMessages payload is missing a message coll | exception | error | linkedin, graphql, schema-validation, scraping |
| LinkedIn messengerMessages payload contains a malformed incl | exception | error | linkedin, payload-validation, schema-mismatch |
| LinkedIn messengerMessages URL is missing the conversation o | exception | error | linkedin, url-parsing, owner-identity |
| LinkedIn messengerMessages payload is missing the counterpar | exception | error | linkedin, participant-missing, payload-validation |
| LinkedIn messengerMessages payload contains a message withou | exception | error | linkedin, missing-identifier, payload-validation |
| LinkedIn messengerMessages payload contains a message withou | exception | error | linkedin, timestamp-validation, payload-validation |
| LinkedIn messengerMessages payload contains a message with a | exception | error | linkedin, unresolved-reference, sender-missing |
| linkedin thread-snapshot | exception | warning | linkedin, empty-result, pagination |
| Browser session required for linkedin thread-snapshot | exception | error | linkedin, browser-session, precondition |
| LinkedIn thread-snapshot requires an active signed-in Linked | exception | error | linkedin, authentication, session-expired |
| LinkedIn thread-snapshot returned a malformed API discovery | exception | error | linkedin, discovery-failed, network-interception |
| LinkedIn thread-snapshot blocked: thread_url_mismatch | exception | error | linkedin, url-validation, browser-automation |
| LinkedIn thread history did not stabilize before --max-scrol | exception | error | linkedin, incomplete-data, browser-automation, pagination |
| LinkedIn messengerMessages API authentication failed: ${fetc | exception | error | linkedin, authentication, session-expired, browser-automation |
| LinkedIn messengerMessages API returned an unexpected respon | exception | error | linkedin, api-schema, unexpected-response, browser-automation |
| linkedin.com | exception | error | linkedin, authentication, login-wall, browser-automation |
| linkedin timeline | exception | warning | linkedin, empty-result, scraping, browser-automation |
| linux.do | exception | error | linux-do, authentication, cookie, discourse |
| auth | exception | error | linux-do, authentication, discourse, whoami |
| http | exception | error | linux-do, http-error, rate-limit, discourse |
| exception | exception | error | linux-do, whoami, browser-automation, discourse |
| Unexpected Linux.do probe: ${JSON.stringify(probe)} | exception | error | linux-do, authentication, browser-automation, unexpected-state |
| Browser page required | exception | error | linux-do, browser-automation, argument-error, programming-error |
| linux.do returned an empty browser response | exception | error | linux-do, browser-automation, empty-response, transient |
| linux.do requires an active signed-in browser session | exception | error | authentication, browser-session, http-401, http-403, cli |
| linux.do request failed: HTTP ${result.status ?? 'unknown'} | exception | error | http, network, cli, rate-limit |
| Please verify your linux.do session is still valid | exception | error | authentication, browser-session, cli, session-expired |
| Unknown tag: ${value} | validation | warning | argument-validation, cli, user-input, not-found |
| Unknown category: ${value} | validation | warning | argument-validation, cli, user-input, not-found |
| --period is only valid with --view top | validation | warning | cli, argument-validation, flags |
| linux.do returned an unexpected topic payload | exception | error | http, payload-parsing, discourse, session |
| Could not find the main post for topic ${id}. | exception | error | discourse, empty-result, payload-parsing |
| Topic ${id} does not contain a readable main post body. | exception | error | discourse, empty-result, content-extraction |
| linux.do returned an empty browser response | exception | error | browser-automation, network, empty-result |
| linux.do requires an active signed-in browser session | exception | error | auth, session, http-403, discourse |
| linux.do request failed: HTTP ${result.status ?? 'unknown'} | exception | error | http, network, rate-limit, discourse |
| Please verify your linux.do session is still valid | exception | warning | auth, session, discourse |
| Invalid linux.do topic id: ${String(kwargs.id ?? '')} | exception | warning | cli, argument-validation, input-validation |
| lobsters domain is required (e.g. "github.com" or "arxiv.org | validation | error | argument-error, missing-argument, cli, input-validation |
| lobsters domain "${value}" is not a valid hostname | validation | error | argument-error, hostname-validation, input-validation, cli |
| lobsters limit must be a positive integer | validation | error | argument-error, validation, cli, numeric-input |
| lobsters limit must be <= ${maxValue} | validation | error | argument-error, validation, bounds-check, cli |
| lobsters domain request failed: ${err?.message ?? err} | exception | error | network, fetch-failure, dns, connectivity, command-execution-error |
| No Lobste.rs stories found for domain "${domain}". | exception | warning | empty-result, http-404, cli, input-validation |
| lobsters domain returned HTTP ${resp.status} | exception | error | network, http-error, rate-limit, cli |
| lobsters domain returned malformed JSON: ${err?.message ?? e | exception | error | network, json-parsing, cloudflare, cli |
| Story not found | exception | error | not-found, http-404, cli, user-input |
| Lobsters API HTTP ${res.status} for story ${shortId} | exception | error | network, http, api, rate-limit |
| ${label} must be a positive integer | validation | error | validation, cli-arguments, input-error |
| ${label} must be an integer >= ${min} | validation | error | validation, cli-arguments, input-error |
| Invalid Lobsters short_id: ${args.id} | validation | error | validation, cli-arguments, input-error |
| ${probe.detail} | exception | error | authentication, browser-session, login-required |
| HTTP ${probe.httpStatus} from Maimai | exception | error | network, http, browser-automation, waf |
| Maimai whoami failed: ${probe.detail} | exception | error | browser-automation, page-evaluate, runtime-error |
| Unexpected Maimai probe: ${JSON.stringify(probe)} | exception | warning | browser-automation, unexpected-state, debugging |
| 需要登录!请先在浏览器中访问 maimai.cn 并登录 | exception | error | authentication, login-required, csrf, session-expired |
| ${result.message || result.error || 'API 请求失败'} | exception | error | api, network, authentication |
| Maimai search returned malformed API payload | exception | error | api, payload, schema-drift |
| Maimai search API payload missing talent list | exception | error | api, schema-drift, payload |
| 未找到匹配 "${query}" 的候选人 | exception | info | empty-result, search, query |
| limit must be a positive integer ≤ ${max} | validation | error | validation, argument, cli |
| Authentication required — please sign in to Manus in the bro | validation | error | authentication, session, browser |
| Manus ${label} failed (HTTP ${value.__httpError}): ${message | http | error | http, api, network |
| Manus ${label} failed: ${value.message || value.__error} | exception | error | api, network, runtime |
| Manus ${label} returned a malformed API payload | exception | error | payload, schema-drift, api |
| Manus session cookies missing — anonymous | validation | error | authentication, session-cookie, manus, auth-required |
| Manus /api/auth/session HTTP ${r.status} | validation | error | authentication, http-401, http-403, session-expired, manus |
| HTTP ${probe.httpStatus} from Manus /api/auth/session | http | error | http-5xx, server-error, network, manus, api-availability |
| Manus whoami failed: ${probe.detail} | exception | error | network, fetch-failed, manus, browser-automation, command-execution |
| Unexpected Manus probe: ${JSON.stringify(probe)} | exception | error | auth, session, api-schema, browser-automation |
| Waiting for Manus session cookies | validation | info | auth, cookies, login, polling |
| No connectors found. | exception | info | empty-result, connectors, api |
| Manus credits returned a malformed API payload | exception | error | api-schema, credits, payload-validation, browser-automation |
| No sessions found. | exception | info | empty-result, sessions, filtering |
| uid must be a non-empty session UID | validation | error | argument-validation, input-validation, cli |
| Session not found: ${uid} | exception | error | empty-result, lookup-miss, not-found, cli |
| Manus skills returned a malformed API payload | exception | error | schema-change, api-payload, malformed-response, cli |
| No skills found. | exception | warning | empty-result, no-data, cli |
| Maven Central has no published versions for ${coordLabel}. | exception | error | empty-result, not-found, maven, registry |
| No Maven Central artifacts matched "${query}". | exception | info | empty-result, maven, search, input-validation |
| maven ${label} cannot be empty | validation | error | argument-error, maven, empty-string, input-validation |
| maven ${label} must be a positive integer | validation | error | argument-error, maven, integer-validation, input-validation |
| maven ${label} must be <= ${maxValue} | validation | error | argument-error, maven, bounds-validation, input-validation |
| maven coordinate is required (e.g. "com.fasterxml.jackson.co | validation | error | argument-error, maven, coordinate, input-validation |
| maven coordinate "${value}" must be "groupId:artifactId" or | validation | error | argument-error, maven, input-validation, coordinate-format |
| maven coordinate "${value}" is missing groupId or artifactId | validation | error | argument-error, maven, input-validation, missing-field |
| maven groupId "${groupId}" is not a valid token | validation | error | argument-error, maven, input-validation, regex-validation |
| maven artifactId "${artifactId}" is not a valid token | validation | error | argument-error, maven, input-validation, regex-validation |
| maven version "${version}" is too long (max 200 chars). | validation | error | argument-error, maven, input-validation, length-limit |
| ${label} request failed: ${err?.message ?? err} | exception | error | network, fetch, command-execution-error, maven |
| Maven Central returned 404 for ${url}. | http | warning | http-404, not-found, maven, empty-result |
| ${label} returned HTTP 429 (rate limited) | http | error | rate-limit, http-429, maven, retry |
| ${label} returned HTTP ${resp.status} | http | error | http-error, maven, command-execution-error, http-5xx |
| ${label} returned malformed JSON: ${err?.message ?? err} | exception | error | json, malformed-response, maven, command-execution-error |
| mdn ${label} cannot be empty | validation | error | validation, argument-error, cli |
| mdn limit must be a positive integer | validation | error | validation, argument-error, cli |
| mdn limit must be <= ${maxValue} | validation | error | validation, argument-error, cli |
| mdn locale "${value}" is not supported | validation | error | validation, argument-error, i18n |
| mdn search request failed: ${err?.message ?? err} | exception | error | network, http, fetch, cli |
| mdn search returned HTTP ${resp.status} | exception | error | http, network, server-error |
| mdn search returned malformed JSON: ${err?.message ?? err} | exception | error | json, http, parse-error, network |
| No MDN results matched "${query}" (locale ${locale}). | exception | info | empty-result, search, i18n |
| medium tag is required (e.g. "programming", "javascript") | validation | error | validation, argument-error, cli |
| medium tag "${value}" is not valid | validation | error | cli, validation, argument-error, input-validation |
| medium limit must be a positive integer | validation | error | cli, validation, argument-error, numeric-validation |
| medium limit must be <= ${maxValue} | validation | error | cli, validation, argument-error, limits |
| medium tag request failed: ${err?.message ?? err} | exception | error | network, http, cli, command-execution-error |
| medium tag returned HTTP ${resp.status} | exception | error | http, rate-limit, cli, command-execution-error |
| Medium tag "${tag}" RSS feed has no items. | exception | warning | rss, empty-result, cli, parsing |
| Browser session required for medium posts | exception | error | browser, cli, command-execution-error, precondition |
| Mercury appears to have an existing expense review open; ref | exception | warning | browser-automation, safety-guard, mercury, command-execution-error |
| Could not find the Mercury Submit expense or New expense but | exception | error | browser-automation, selector-not-found, mercury, command-execution-error |
| Mercury reimbursement-draft requires Browser Bridge uploadFi | exception | error | browser-automation, file-upload, capability-check, mercury |
| Mercury receipt upload did not confirm exactly one uploaded | exception | error | file-upload, browser-automation, selector-mismatch, mercury |
| Mercury receipt upload did not confirm the intended receipt | exception | error | selector-mismatch, browser-automation, file-upload, mercury |
| Mercury receipt upload did not confirm the expected receipt | exception | error | file-upload, path-resolution, browser-automation, mercury |
| Mercury reimbursement form fields were not all filled: ${mis | exception | error | form-fill, ocr-race, mercury, browser-automation |
| Mercury returned malformed Review click result | exception | error | browser-automation, dom-scripting, validation |
| Mercury Review button was not clicked; inspect the page for | exception | error | browser-automation, ui-selector, form-validation |
| Mercury did not reach the Review step with the final Submit | exception | error | browser-automation, ui-selector, timeout |
| Missing required argument: ${name} | validation | error | argument-validation, cli, input |
| Boolean argument ${name} must be true or false | validation | error | argument-validation, cli, boolean-parsing |
| Receipt file cannot be read: ${receipt} | validation | error | argument-validation, filesystem, permissions, input |
| Receipt file does not exist: ${receipt} | validation | error | argument-validation, filesystem, file-not-found, input |
| Amount must be a positive number with up to two decimals: ${ | validation | error | argument-validation, input-validation, number-format, cli |
| Currency must be a three-letter ISO currency code: ${currenc | validation | error | argument-validation, input-validation, currency, cli |
| Date must be YYYY-MM-DD: ${date} | validation | error | argument-validation, date-format, input-validation, cli |
| Date must be a real calendar date: ${date} | validation | error | argument-validation, date-validation, input-validation, calendar |
| ocr-wait-seconds must be a non-negative integer: ${raw} | validation | error | argument-validation, input-validation, cli, timeout |
| Mercury returned malformed ${label} | exception | error | runtime, integration, malformed-response, mercury |
| Mercury returned malformed ${label}: ${field} must be boolea | exception | error | runtime, integration, malformed-response, mercury, type-mismatch |
| Mercury returned malformed click result | exception | error | browser-automation, page-evaluate, schema-validation-failed, mercury |
| Mercury returned malformed create expense click result | exception | error | browser-automation, page-evaluate, schema-validation-failed, mercury |
| Mercury is already showing a submit/review surface; refusing | exception | error | safety-guard, duplicate-submission, browser-automation, mercury |
| Mercury is showing a submit button without a recognizable ex | exception | error | safety-guard, browser-automation, duplicate-submission, mercury |
| --repeat must be a positive integer | validation | error | argument-validation, cli, midjourney |
| --repeat in the prompt must be a positive integer | validation | error | cli, validation, argument-error, repeat |
| --repeat conflicts with the prompt (${structuredRepeat} vs $ | validation | error | cli, validation, argument-error, conflicting-options |
| ${capabilities.plan || 'current'} plan allows at most ${capa | validation | error | cli, plan-limit, quota, argument-error |
| Estimated GPU cost ${estimatedMinutes} minutes exceeds --max | validation | error | cli, budget, gpu-cost, argument-error |
| Midjourney budget guard would leave ${Number((remainingMinut | exception | error | cli, budget, quota, gpu-credits, command-execution-error |
| operation must be one of: ${ACTION_CHOICES.join(', ')} | validation | error | argument-error, validation, cli, midjourney |
| --video-resolution must be sd or hd | validation | error | argument-error, validation, cli, video |
| --batch-size must be 1, 2, or 4 | validation | error | argument-error, validation, cli, batch |
| No cost model is defined for action "${operation}" | validation | error | argument-error, cost-model, configuration, midjourney |
| ${capabilities.plan || 'current'} plan does not support HD v | validation | error | plan-limitation, entitlement, video, midjourney |
| describe currently requires a local image file | validation | error | argument-error, file-input, midjourney, describe |
| --timeout must be an integer from 1 to 180 | validation | error | argument-error, validation, timeout, cli |
| Could not open the uploaded image action menu for Describe | exception | error | dom-automation, selector-drift, command-execution-error, midjourney |
| Midjourney did not expose a Describe action for the uploaded | exception | error | browser-automation, ui-selector, midjourney |
| Midjourney Describe | exception | error | timeout, browser-automation, midjourney |
| Midjourney job ${jobId} is "${status || 'missing'}"; media i | exception | error | job-status, midjourney, download |
| --kind must be one of: ${KINDS.join(', ')} | validation | error | argument-validation, cli, midjourney |
| Video jobs support video-raw, video-social, or gif downloads | validation | error | argument-validation, kind-mismatch, video, midjourney |
| Image jobs only support --kind image | validation | error | cli, argument-validation, midjourney, download |
| Midjourney Imagine composer was not found. | exception | error | browser-automation, ui-selector, midjourney, session |
| composer fill was not verified | exception | error | browser-automation, midjourney, verification, race-condition |
| Could not submit the Midjourney prompt: ${error instanceof E | exception | error | browser-automation, midjourney, submission-failure, wrapped-error |
| Midjourney job submission | exception | error | timeout, midjourney, browser-automation, budget |
| Midjourney generation | exception | error | timeout, cli, async-wait, midjourney |
| ${label} must be one of: ${choices.join(', ')} | validation | error | validation, argument-error, cli, enum |
| midjourney history | exception | warning | empty-result, cli, filtering, midjourney |
| Midjourney login | exception | error | timeout, authentication, interactive-login, midjourney |
| ${label} must be a positive integer | validation | error | validation, argument-error, cli, numeric-input |
| ${label} must be <= ${max} | validation | error | cli, argument-validation, midjourney |
| job-id must be a Midjourney UUID or https://www.midjourney.c | validation | error | cli, argument-validation, url-parsing, midjourney |
| --index must be "all" or an integer from 1 to ${max} | validation | error | cli, argument-validation, midjourney |
| --index must be between 1 and ${max} for this job | validation | error | cli, argument-validation, range-check, midjourney |
| prompt cannot be empty | validation | error | cli, argument-validation, empty-input, midjourney |
| Midjourney rejected the submitted job: ${detail} | exception | error | midjourney, api-rejection, cli |
| Midjourney submit response was ambiguous; expected ${expecte | exception | error | midjourney, cli, partial-failure |
| --output cannot be empty | validation | error | cli, argument-validation, configuration |
| Log into Midjourney in Chrome, then retry. | exception | error | midjourney, authentication, http-401, http-403 |
| Midjourney API request failed: ${message} | exception | error | midjourney, network, http-error, api |
| Midjourney subscription endpoint returned a malformed payloa | exception | error | midjourney, schema-validation, api |
| Midjourney generation requires an active subscription. | exception | error | midjourney, subscription, entitlement, billing |
| No Midjourney generation credits remain for this billing per | exception | error | midjourney, credits, quota, subscription |
| Midjourney history endpoint returned a malformed payload | exception | error | midjourney, schema-validation, pagination, api |
| Midjourney job-status endpoint returned a malformed payload | exception | error | midjourney, http-response, schema-validation |
| Job ${jobId} was not found in the current account. | exception | error | midjourney, not-found, lookup |
| Midjourney cancel request failed: ${errorMessage(error)} | exception | error | midjourney, network, cancel-request |
| Midjourney cancel request failed: HTTP ${result?.status ?? 0 | exception | error | midjourney, http-error, cancel-request |
| Midjourney submission is ambiguous; ${ambiguousIds.length} n | exception | error | midjourney, ambiguity, polling |
| Midjourney job submission | exception | error | midjourney, timeout, polling |
| Midjourney action is ambiguous; ${candidates.length} derived | exception | error | midjourney, ambiguity, derived-job |
| Midjourney derived job submission | exception | error | midjourney, timeout, derived-job |
| Midjourney job ${jobId} ended with status "${lastStatus}" | exception | error | midjourney, job-failed, polling |
| Midjourney job ${jobId} (last status: ${lastStatus}) | exception | warning | timeout, polling, midjourney, async |
| Midjourney browser-context media fetch failed: ${errorMessag | exception | error | network, browser, fetch, midjourney |
| Midjourney media download failed: HTTP ${payload?.status ?? | exception | error | http, network, cdn, midjourney |
| Midjourney media download returned unexpected content type " | exception | error | content-type, validation, cdn, midjourney |
| Midjourney media download returned an empty file from ${url} | exception | error | validation, empty-response, cdn, midjourney |
| Midjourney media transfer lost its browser buffer at byte ${ | exception | error | browser, data-loss, chunked-transfer, midjourney |
| Midjourney media transfer size mismatch: expected ${size}, r | exception | error | integrity, chunked-transfer, data-corruption, midjourney |
| Midjourney original image returned invalid media bytes from | exception | error | validation, magic-bytes, corruption, midjourney |
| Could not write Midjourney image ${filePath}: ${errorMessage | exception | error | filesystem, io, write-failure, midjourney |
| Could not write Midjourney media ${filePath}: ${errorMessage | exception | error | filesystem, io, write-failure, video, midjourney |
| Midjourney raw video returned invalid MP4 bytes from ${url} | exception | error | midjourney, browser-automation, media-download, mp4-validation |
| Rendered video kind must be video-social or gif | validation | error | argument-error, validation, midjourney |
| Midjourney did not expose "${config.label}" for video ${jobI | exception | error | midjourney, ui-automation, selector-mismatch, browser-automation |
| Browser Bridge download lifecycle support is required for so | exception | error | browser-bridge, version-compatibility, midjourney, api-support |
| Midjourney ${kind} download did not complete: ${downloaded?. | exception | error | download-failed, midjourney, browser-automation, timeout |
| Browser reported a completed download but the file is missin | exception | error | filesystem, download-failed, browser-bridge, race-condition |
| Midjourney ${kind} returned invalid media bytes; expected ${ | exception | error | midjourney, media-download, mime-validation, magic-bytes |
| Could not store Midjourney ${kind} at ${filePath}: ${errorMe | exception | error | filesystem, file-copy, permissions, midjourney |
| Could not read Midjourney usage snapshots: ${errorMessage(er | exception | error | filesystem, file-read, permissions, midjourney |
| ${label} must be a path/URL or a JSON array: ${errorMessage( | validation | error | argument-error, json-parse, validation, cli-input |
| ${label} must contain one or more non-empty strings | validation | error | argument-validation, cli, input-validation |
| ${label} accepts exactly one reference | validation | error | argument-validation, cli, arity-mismatch |
| ${label} Midjourney job URL index must be 0..3: ${item} | validation | error | argument-validation, url-parsing, cli |
| ${label} file does not exist: ${ref.value} | validation | error | filesystem, argument-validation, file-not-found |
| ${label} must reference a non-empty file: ${ref.value} | validation | error | filesystem, argument-validation, empty-file |
| ${label} exceeds Midjourney's 10MB upload limit: ${ref.value | validation | error | filesystem, upload-limit, argument-validation |
| ${label} must be PNG, JPEG, WEBP, or GIF: ${ref.value} | validation | error | filesystem, argument-validation, file-format |
| Midjourney image upload input did not become active | exception | error | browser-automation, dom, timeout |
| Midjourney reference upload fallback could not initialize it | exception | error | browser-automation, page-context, injection |
| Midjourney reference upload fallback lost its transfer buffe | exception | error | browser-automation, page-context, state-loss |
| Midjourney reference upload fallback failed: ${result?.reaso | exception | error | midjourney, browser-automation, file-upload, dom |
| Could not locate Midjourney ${slotLabel} slot after upload | exception | error | midjourney, dom, selector, browser-automation |
| Midjourney ${slotLabel} reference assignment was not verifie | exception | error | midjourney, drag-and-drop, verification, browser-automation |
| Midjourney reference upload | exception | error | midjourney, timeout, file-upload, network |
| Midjourney manual video composer did not expose the End Fram | exception | error | midjourney, ui, video, dom |
| Omni Reference accepts exactly one local image | validation | error | midjourney, argument-validation, api-misuse |
| Browser Bridge does not support Reference drag-and-drop | exception | error | midjourney, browser-bridge, compatibility, api-capability |
| Midjourney Creation Action unavailable: ${target?.reason || | exception | error | midjourney, button, dom, ui-automation |
| Browser Bridge native click support is required for Creation | exception | error | midjourney, browser-bridge, native-click, compatibility |
| Visible Midjourney control "${label}" was not found | exception | error | midjourney, dom, selector, ui-automation |
| Browser Bridge native click support is required | exception | error | browser-automation, api-compat, midjourney |
| Midjourney composer submit control was not found | exception | error | browser-automation, dom-selector, midjourney |
| Visible Midjourney Settings control was not found | exception | error | browser-automation, dom-selector, midjourney |
| Midjourney composer did not switch from video to image mode | exception | error | browser-automation, ui-state, midjourney |
| Midjourney settings panel returned an unexpected shape | exception | error | browser-automation, dom-selector, midjourney, schema-validation |
| Midjourney settings panel is missing required field(s): ${mi | exception | error | browser-automation, dom-selector, midjourney, schema-validation |
| Could not set Midjourney ${anchorText}: ${target?.reason || | exception | error | browser-automation, dom-selector, midjourney, settings |
| Could not verify Midjourney ${anchorText}: expected ${target | exception | error | browser-automation, verification, midjourney, settings |
| minimax music ${flag} must be one of: ${allowed.join(', ')} | validation | error | validation, argument-error, minimax, cli |
| minimax music ${flag} must be true or false | validation | error | cli, minimax, argument-validation, boolean-flag |
| minimax music ${flag} must be an integer from ${min} to ${ma | validation | error | cli, minimax, argument-validation, range-check |
| minimax music ${flag} must be at most ${max} characters | validation | error | cli, minimax, argument-validation, length-limit |
| minimax music --instrumental requires prompt and cannot be c | validation | error | cli, minimax, flag-conflict, mutual-exclusion |
| minimax music --lyrics-optimizer requires prompt and cannot | validation | error | cli, minimax, flag-conflict, mutual-exclusion |
| minimax music vocal generation requires --lyrics, or prompt | validation | error | cli, minimax, missing-required-flag |
| minimax music --aigc-watermark is only supported with --regi | validation | error | cli, minimax, region-restriction, flag-conflict |
| minimax music --op requires --output-format hex | validation | error | cli, minimax, flag-dependency, output-format |
| Refusing to spend MiniMax quota without --execute | validation | warning | cli, minimax, dry-run-guard, cost-protection |
| Missing ${MINIMAX_API_KEY_VAR} | exception | error | config, environment-variable, api-key, precondition |
| MiniMax music generation | exception | error | timeout, network, billing-ambiguity |
| MiniMax music request failed: ${error?.message ?? error} | exception | error | network, fetch, connection, dns |
| MiniMax ${region.host} rejected ${MINIMAX_API_KEY_VAR} (HTTP | http | error | auth, http-401, http-403, api-key, region-mismatch |
| MiniMax music returned HTTP ${response.status} from ${region | exception | error | http, api-error, rate-limit, server-error |
| MiniMax music returned malformed JSON: ${error?.message ?? e | exception | error | json, parse, protocol, network |
| MiniMax music returned a malformed response envelope | exception | error | schema-validation, response-parsing, api-change |
| MiniMax music response is missing integer base_resp.status_c | exception | error | schema-validation, response-parsing, api-change |
| MiniMax ${region.host} rejected ${MINIMAX_API_KEY_VAR} (serv | exception | error | auth, api-key, service-error, billing, region-mismatch |
| MiniMax music failed (service ${base.status_code}${message}) | exception | error | service-error, api-error, content-policy, response-parsing |
| MiniMax music response is missing integer data.status | exception | error | minimax, schema-validation, api-response, music |
| MiniMax music returned status 1 (in progress) without a resu | exception | error | minimax, music, async-task, polling |
| MiniMax music returned unknown data.status ${data.status} | exception | error | minimax, music, api-versioning, status-code |
| MiniMax music reported completion without data.audio | exception | error | minimax, music, missing-field, api-response |
| MiniMax music returned malformed extra_info | exception | error | minimax, music, schema-validation, extra-info |
| MiniMax music returned invalid extra_info.music_size | exception | error | minimax, music, validation, byte-size |
| MiniMax music returned data.audio that is not a URL | exception | error | minimax, music, url-parsing, audio |
| MiniMax music returned a non-HTTPS audio URL (${url.protocol | exception | error | minimax, music, https, security, url |
| MiniMax music returned invalid hexadecimal audio | exception | error | minimax, music, hex, encoding, audio |
| MiniMax music audio size mismatch (expected ${expectedBytes} | exception | error | minimax, music, corruption, size-mismatch, network |
| MiniMax music returned bytes that are not a WAV file | exception | error | minimax, audio, wav, format-validation |
| MiniMax music returned bytes that are not an MP3 file | exception | error | minimax, audio, mp3, format-validation |
| Unsupported home-directory path: ${raw} | validation | error | minimax, path, argument-validation, tilde-expansion |
| not a directory | exception | error | minimax, filesystem, directory, path |
| target already exists | exception | error | minimax, filesystem, file-exists, collision |
| target appeared during reservation | exception | error | filesystem, race-condition, toctou, cli |
| MiniMax music cannot reserve output file ${target}: ${error? | exception | error | filesystem, permissions, cli, lock-file |
| MiniMax music could not atomically write ${reservation.targe | exception | error | filesystem, atomic-write, disk, cli |
| --output 只接受 md 或 text,收到:${format} | validation | warning | cli, argument-validation, export |
| ${label} 非法:${year},应为正整数 | validation | warning | validation, argument-error, date |
| 月份非法:${month},应为 1-12 | validation | error | date-validation, argument-error, cli |
| 日期非法:${year}-${month}-${day}(${year} 年 ${month} 月共 ${maxDay} | validation | error | date-validation, argument-error, cli |
| 日期格式错误:${s},应为 YYYY-MM-DD | validation | error | date-validation, argument-error, cli, format |
| 月份格式错误:${s},应为 YYYY-MM | validation | error | date-validation, argument-error, cli, format |
| 使用 --to 时必须同时指定 --from | validation | error | argument-error, cli, flag-pairing |
| --from 不能晚于 --to | validation | error | argument-error, cli, date-range |
| --output 只接受 md 或 text,收到:${format} | validation | error | argument-error, cli, flag-validation |
| AuthRequiredError(MUBU_DOMAIN, AUTH_HINT) | exception | error | auth, browser-session, token-missing |
| mubu: ${path}: HTTP ${result.status} ${result.error ?? ''} | http | error | network, http-error, api |
| mubu: ${path}: code=${data.code} ${data.message ?? ''} | exception | error | mubu, api-error, command-execution, http |
| --file path does not exist: ${filePath} | validation | error | filesystem, argument-validation, notebooklm, file-upload |
| --file path is not a regular file: ${filePath} | validation | error | filesystem, argument-validation, notebooklm, file-upload |
| --file exceeds ${MAX_FILE_SOURCE_BYTES} bytes (got ${stat.si | validation | error | file-size, argument-validation, notebooklm, limits |
| Invalid source URL: "${url}" | validation | error | url, argument-validation, notebooklm, parsing |
| --content must not be empty | validation | error | argument-validation, notebooklm, empty-input |
| --content exceeds ${MAX_TEXT_SOURCE_BYTES} bytes; split into | validation | error | content-size, argument-validation, notebooklm, limits |
| NotebookLM file upload failed: | exception | error | notebooklm, file-upload, browser-automation, google-drive |
| Pass exactly one of --url <url>, --content <text>, or --file | validation | error | argument-validation, notebooklm, cli-usage, missing-argument |
| Pass exactly one of --url, --content, --file (got: | validation | error | cli, argument-validation, notebooklm |
| NotebookLM AddFileSource (o4cbdc) RPC returned no source id; | exception | error | rpc, notebooklm, file-upload |
| NotebookLM AddSources RPC returned no source id; verify the | exception | error | rpc, notebooklm, response-parsing |
| Google SSO cookies (SID + SAPISID) missing | exception | error | auth, cookies, google-sso, notebooklm |
| NotebookLM redirected to Google sign-in | exception | error | auth, google-sso, redirect, notebooklm |
| Unexpected NotebookLM probe: ${JSON.stringify(probe)} | exception | error | probe, dom-parsing, notebooklm, unexpected-state |
| Waiting for Google SSO cookies (SID + SAPISID) | exception | warning | auth, polling, google-sso, transient |
| <title> is required | validation | error | cli, argument-validation, notebooklm |
| Title must be at most ${MAX_TITLE_LEN} characters (got ${tit | validation | error | cli, argument-validation, length-limit, notebooklm |
| NotebookLM CreateProject RPC returned no notebook id | exception | error | rpc, notebooklm, response-parsing |
| opencli notebooklm current | exception | error | notebooklm, empty-result, session-state, cli |
| Failed to open NotebookLM notebook ${notebookId}: ${error?.m | exception | error | notebooklm, navigation, command-execution, network |
| notebooklm generate-audio | exception | error | notebooklm, empty-result, precondition, audio |
| NotebookLM CreateAudioOverview RPC returned no audio id; ser | exception | error | notebooklm, rpc, audio, parse-failure, server-rejection |
| --length must be a positive integer | validation | error | argument-validation, cli, input-validation, notebooklm |
| Failed to open NotebookLM notebook ${notebookId}: ${error?.m | exception | error | notebooklm, navigation, command-execution, network |
| notebooklm generate-slides | exception | error | notebooklm, empty-result, precondition, slides |
| NotebookLM CreateArtifact (slides) RPC returned no slide-dec | exception | error | notebooklm, rpc, slides, parse-failure, server-rejection |
| opencli notebooklm get | exception | error | notebooklm, empty-result, session-state, cli |
| opencli notebooklm history | exception | error | notebooklm, session-state, empty-result |
| opencli notebooklm list | exception | error | notebooklm, empty-result, auth |
| opencli notebooklm note-list | exception | error | notebooklm, session-state, empty-result |
| opencli notebooklm notes-get | exception | error | notebooklm, session-state, empty-result |
NOTEBOOKLM_OPEN_FAILED NOTEBOOKLM_OPEN_FAILED | error_code | error | notebooklm, navigation, invalid-id |
| opencli notebooklm open | exception | warning | notebooklm, empty-result, dom-scraping, timing |
| NotebookLM ${label} returned a malformed Browser Bridge payl | exception | error | browser-bridge, payload-validation, notebooklm |
| NotebookLM ${label} failed: ${error?.message || error} | exception | error | browser-bridge, transport, notebooklm |
NOTEBOOKLM_TOKENS NOTEBOOKLM_TOKENS | error_code | error | auth, csrf-token, scraping, notebooklm |
| NotebookLM page auth probe is not on a trusted HTTPS Noteboo | exception | error | security, origin-validation, auth, notebooklm |
| NotebookLM page auth probe returned malformed fields | exception | error | schema-validation, browser-bridge, notebooklm |
| NotebookLM page auth probe returned an invalid path or authu | exception | error | validation, race-condition, auth, notebooklm |
| NotebookLM RPC returned auth error (${errorCode}) | exception | error | auth, http-401, http-403, rpc, notebooklm |
NOTEBOOKLM_RPC NotebookLM RPC failed${errorCode ? ` (code=${errorCode})` : ''} | error_code | error | rpc, server-error, protocol, notebooklm |
NOTEBOOKLM_RPC_SCHEMA NotebookLM RPC ${rpcId} returned malformed JSON | error_code | error | rpc, json, schema, notebooklm |
| NotebookLM RPC transport returned malformed response fields | exception | error | rpc, malformed-response, notebooklm, browser-automation |
| NotebookLM RPC request resolved outside the active trusted o | exception | error | rpc, origin-validation, redirect, security, notebooklm |
| NotebookLM RPC redirected to the login page | exception | error | authentication, session-expired, redirect, notebooklm |
| NotebookLM RPC response redirected outside the active truste | exception | error | rpc, redirect, origin-validation, security, notebooklm |
| NotebookLM RPC returned auth error (${response.status}) | exception | error | authentication, http-401, http-403, forbidden, notebooklm |
| No NotebookLM notebook is open in the adapter session. Run ` | exception | error | empty-result, session-state, notebooklm, cli-usage |
| No NotebookLM sources were found on the current page. | exception | error | empty-result, empty-notebook, notebooklm, race-condition |
| Source "${query}" was not found in the current notebook. | exception | error | empty-result, lookup-failed, not-found, notebooklm |
| NotebookLM fulltext was not available for source "${matched. | exception | error | empty-result, fulltext, rpc, notebooklm, swallowed-error |
| No NotebookLM notebook is open in the adapter session. Run ` | exception | error | notebooklm, prerequisite-not-met, browser-adapter |
| No NotebookLM sources were found on the current page. | exception | error | notebooklm, empty-result, browser-scraping |
| Source "${query}" was not found in the current notebook. | exception | error | notebooklm, lookup-failed, empty-result |
| No NotebookLM notebook is open in the adapter session. Run ` | exception | error | notebooklm, prerequisite-not-met, browser-adapter |
| No NotebookLM sources were found on the current page. | exception | error | notebooklm, empty-result, browser-scraping |
| Source "${query}" was not found in the current notebook. | exception | error | notebooklm, lookup-failed, empty-result |
| NotebookLM guide was not available for source "${matched.tit | exception | error | notebooklm, rpc-failure, empty-result |
| No NotebookLM notebook is open in the adapter session. Run ` | exception | error | notebooklm, prerequisite-not-met, browser-adapter |
| No NotebookLM sources were found on the current page. | exception | error | notebooklm, empty-result, browser-scraping |
| No NotebookLM notebook is open in the adapter session. Run ` | exception | error | notebooklm, prerequisite-not-met, browser-adapter |
| Refusing to ${action}: pass --execute to perform this Notebo | validation | error | safety-guard, confirmation-flag, cli-usage, write-protection |
NOTEBOOKLM_RPC_SCHEMA NotebookLM list RPC returned a non-array payload | error_code | error | schema-changed, rpc, upstream-api, notebooklm |
| NotebookLM ${action} succeeded but the notebook ${notebookId | exception | error | notebooklm, verification, state-consistency, scraping |
| NotebookLM ${action} post-write verification failed: ${error | exception | error | notebooklm, verification, wrapped-error, scraping |
| NotebookLM ${action} succeeded but source ${sourceId} did no | exception | error | notebooklm, verification, eventual-consistency, scraping |
| Failed to open NotebookLM home: ${error?.message || error} | exception | error | notebooklm, navigation, browser-bridge, network |
| NotebookLM page-state probe returned malformed Browser Bridg | exception | error | notebooklm, page-state, browser-bridge, schema-validation |
| NotebookLM page-state probe returned an invalid URL | exception | error | notebooklm, page-state, url-parsing, browser-bridge |
| NotebookLM page-state probe returned inconsistent URL and ho | exception | error | notebooklm, page-state, url-parsing, consistency-check |
| NotebookLM current-page probe returned malformed Browser Bri | exception | error | browser-bridge, notebooklm, schema-validation-failed, probe |
| NotebookLM current-page probe returned an untrusted or misma | exception | error | notebooklm, url-validation, untrusted-url, browser-bridge |
| NotebookLM home-link probe returned malformed Browser Bridge | exception | error | browser-bridge, notebooklm, probe, schema-validation-failed |
| NotebookLM home-link probe returned a malformed row | exception | error | notebooklm, schema-validation-failed, probe, browser-bridge |
| NotebookLM home-link probe returned an untrusted or mismatch | exception | error | notebooklm, url-validation, untrusted-url, probe |
NOTEBOOKLM_UNAVAILABLE NotebookLM page is not available in the current browser session | error_code | error | notebooklm, browser-session, unavailable, browser-bridge |
| NotebookLM requires a logged-in Google session | exception | error | authentication, google-session, notebooklm, auth-required |
| --title is required | validation | error | argument-validation, cli, missing-argument, notebooklm |
| --title must be at most ${MAX_TITLE_LEN} characters (got ${t | validation | error | argument-validation, cli, length-limit, notebooklm |
| --content is required | validation | error | argument-validation, cli, missing-argument, notebooklm |
| --content exceeds ${MAX_CONTENT_LEN} characters; split into | validation | error | argument-validation, input-size-limit, notebooklm |
| NotebookLM CreateNote RPC returned no note id | exception | error | rpc, parse-failure, notebooklm, upstream-api |
| Nowcoder t cookie missing (anonymous) | exception | error | auth, cookies, session-missing, nowcoder |
| HTTP ${probe.httpStatus} from nowcoder profile API | exception | error | http-error, network, rate-limit, nowcoder |
| Nowcoder whoami failed: ${probe.detail} | exception | error | network, page-evaluate, in-page-exception, nowcoder |
| Unexpected nowcoder probe: ${JSON.stringify(probe)} | exception | warning | defensive-check, contract-mismatch, page-evaluate, nowcoder |
| Waiting for Nowcoder login | exception | warning | auth, login-flow, polling, cookies, nowcoder |
| ${d.msg || 'API failed'} | exception | error | api-error, auth, network, nowcoder |
| ${d.msg || 'API failed'} | exception | error | api-error, post, auth, rate-limit, nowcoder |
| Nowcoder returned a malformed ${label} | exception | error | nowcoder, api-schema, validation, scraping |
| Nowcoder returned a malformed frequencyData.${key} | exception | error | nowcoder, api-schema, metrics, validation |
| Nowcoder returned malformed ${label} authorship | exception | error | nowcoder, api-schema, author, validation |
| Nowcoder returned mismatched ${label} authorship | exception | error | nowcoder, api-schema, consistency, author |
| Nowcoder returned malformed ${postType} frequencyData | exception | error | nowcoder, api-schema, metrics, validation |
| Nowcoder returned a malformed feed row | exception | error | feed-parsing, api-response, validation |
| Nowcoder returned mismatched content feed data | exception | error | feed-parsing, api-response, validation |
| Nowcoder returned mismatched content feed identity | exception | error | feed-parsing, data-integrity, id-mismatch |
| Nowcoder returned mismatched moment feed data | exception | error | feed-parsing, api-response, validation |
| Nowcoder returned mismatched moment feed identity | exception | error | feed-parsing, data-integrity, id-mismatch |
| Nowcoder returned unsupported feed contentType ${String(data | exception | error | feed-parsing, unsupported-type, api-response |
| Nowcoder ${source} returned malformed records | exception | error | feed-parsing, argument-validation, api-response |
| nowcoder ${source} | exception | warning | empty-result, feed-parsing, expected-condition |
| nowcoder detail requires a numeric content ID, moment UUID, | validation | error | argument-validation, user-input, url-parsing |
| nowcoder detail only accepts canonical https://www.nowcoder. | validation | error | argument-validation, url-parsing, user-input |
| Unsupported Nowcoder URL; expected /discuss/<content-id> or | validation | error | argument-validation, url-parsing, input-validation |
| Nowcoder detail returned malformed post data | exception | error | api-response, schema-validation, network |
| Nowcoder detail returned a mismatched post entity type | exception | error | api-response, type-mismatch, schema-validation |
| Nowcoder detail returned a different post identity | exception | error | api-response, data-integrity, consistency-check |
| Nowcoder detail returned mismatched moment entity ids | exception | error | api-response, data-integrity, schema-validation |
| nowcoder --${name} must be an integer from 1 to ${maximum} | validation | error | argument-validation, cli-input, input-validation |
| nowcoder.com | exception | error | authentication, session-expired, network |
| ${label} failed: ${detail} | exception | error | network, http-error, request-failed |
| ${label} returned a malformed envelope | exception | error | api-response, schema-validation, anti-bot |
| ${label} failed: ${message} (${payload.code}) | exception | error | http-api, nowcoder, api-error |
| ${label} returned malformed data | exception | error | schema, nowcoder, response-shape |
| API failed | exception | error | nowcoder, in-page-script, api-error |
| API failed | exception | error | nowcoder, in-page-script, api-error |
| API failed | exception | error | nowcoder, in-page-script, api-error |
| nowcoder search requires a non-empty query | validation | error | argument-validation, cli, nowcoder |
| nowcoder search --type must be all or post | validation | error | argument-validation, cli, enum |
| suggest failed | exception | error | nowcoder, in-page-script, api-error |
| npm downloads period start ${start} is after end ${end} | validation | error | argument-validation, date-range, npm |
| npm downloads period "${value}" is invalid | validation | error | argument-validation, date-format, npm |
| npm downloads | exception | warning | npm, empty-result, downloads-api, no-data |
| npm package | exception | warning | npm, registry, empty-result, dist-tags |
| npm search | exception | warning | npm, search, empty-result, query |
| npm ${label} cannot be empty | validation | error | validation, argument-error, input-validation, npm |
| npm package name is required (e.g. "react", "@vercel/og") | validation | error | validation, argument-error, npm, package-name |
| npm package name "${value}" is too long (max 214 chars) | validation | error | validation, argument-error, npm, package-name-length |
| npm package name "${value}" is not a valid registry name | validation | error | validation, argument-error, npm, package-name-format, regex |
| npm ${label} must be a positive integer | validation | error | validation, argument-error, npm, integer-validation, pagination |
| npm ${label} must be <= ${maxValue} | validation | error | validation, argument-error, npm, bounds-check, pagination |
| ${label} request failed: ${err?.message ?? err} | exception | error | network, fetch, npm, registry-unreachable, command-execution-error |
| npm registry returned 404 for ${url}. | exception | warning | npm, http-404, registry, not-found |
| ${label} returned HTTP 429 (rate limited) | exception | warning | npm, rate-limit, http-429, retry |
| ${label} returned HTTP ${resp.status} | http | error | npm, http-error, server-error, registry |
| ${label} returned malformed JSON: ${err?.message ?? err} | exception | error | npm, json, malformed-response, network |
| nuget package registration page ${pageIndex + 1} is missing | exception | error | nuget, registration-api, missing-field, data-integrity |
| nuget package registration leaf ${pageUrl} did not include a | exception | error | nuget, api-schema, network, validation |
| nuget package registration page ${pageIndex + 1} contains a | exception | error | nuget, api-schema, data-corruption, validation |
nuget package No published versions found for NuGet package "${id}". | exception | warning | nuget, empty-result, package-not-found |
nuget search No NuGet packages matched "${query}". | exception | warning | nuget, empty-result, search, no-matches |
| nuget ${label} cannot be empty | validation | error | nuget, argument-validation, empty-input |
| nuget ${label} must be a positive integer | validation | error | validation, arguments, input-validation, nuget |
| nuget ${label} must be <= ${maxValue} | validation | error | validation, arguments, limits, nuget |
| nuget package id is required (e.g. "Newtonsoft.Json") | validation | error | validation, arguments, required-field, nuget |
| nuget package id "${value}" is not a valid NuGet identifier | validation | error | validation, arguments, regex, nuget |
| ${label} request failed: ${err?.message ?? err} | exception | error | network, fetch, connectivity, nuget |
| ${label} returned malformed JSON: ${err?.message ?? err} | exception | error | http, json, parsing, network, nuget |
| nvd CVE id is required (e.g. "CVE-2021-44228") | validation | error | validation, arguments, required-field, nvd, security |
| nvd CVE id "${value}" is not a valid CVE identifier | validation | error | validation, input-error, cve, argument-error |
| nvd cve request failed: ${err?.message ?? err} | exception | error | network, fetch-failed, nvd, http |
| nvd cve returned malformed JSON: ${err?.message ?? err} | exception | error | json, parse-error, nvd, proxy |
nvd cve NVD has no record for "${id}". | exception | warning | empty-result, not-found, cve, nvd |
oeis search No OEIS sequences matched "${query}". | exception | warning | empty-result, not-found, oeis, search |
oeis sequence OEIS sequence "${id}" not found. | exception | warning | empty-result, not-found, oeis, lookup |
| oeis ${label} cannot be empty | validation | error | validation, input-error, oeis, empty-argument |
| oeis ${label} must be a positive integer | validation | error | validation, input, cli |
| oeis ${label} must be <= ${maxValue} | validation | error | validation, input, limits |
| oeis sequence id is required (e.g. "A000045" for Fibonacci) | validation | error | validation, input, missing-argument |
| oeis sequence id "${value}" is not a valid A-number | validation | error | validation, format, input |
| ${label} request failed: ${err?.message ?? err} | exception | error | network, fetch, connectivity |
| ${label} returned HTTP ${resp.status} | exception | error | http, server-error, fetch |
| ${label} returned malformed JSON: ${err?.message ?? err} | exception | error | json, parse, http |
CONFIG Missing ONES_BASE_URL | error_code | error | config, env, missing-env-var |
FETCH_ERROR ONES ${apiPath}: ${detail} | error_code | error | ones, api, http-200-with-error-body, filter-query |
CONFIG Password required | error_code | error | config, cli, missing-argument, ones |
FETCH_ERROR ONES login response missing user.uuid or user.token | error_code | error | ones, api, response-shape, schema-mismatch, authentication |
FETCH_ERROR Unexpected users/me response | error_code | error | ones, api, response-shape, authentication |
CONFIG team UUID required | error_code | error | config, cli, missing-argument, ones |
FETCH_ERROR Unexpected filters/peek response (missing groups) | error_code | error | ones, api, response-shape, schema-mismatch |
CONFIG task id required | error_code | error | config, cli, missing-argument, ones |
FETCH_ERROR ONES task info: ${hint} | error_code | error | api, network, ones, response-parsing |
CONFIG team UUID required | error_code | error | config, cli, missing-argument, ones |
FETCH_ERROR Unexpected auth/token_info response | error_code | error | auth, api, network, ones, response-parsing |
CONFIG task uuid required | error_code | error | config, cli, missing-argument, ones |
FETCH_ERROR ONES worklog: all endpoints failed (last: ${lastDetail}) | error_code | error | api, network, auth, ones, endpoint |
| No OpenAlex works matched "${query}". | exception | info | openalex, empty-results, search |
| openalex ${label} cannot be empty | validation | error | openalex, argument-validation, empty-input |
| openalex ${label} must be a positive integer | validation | error | openalex, argument-validation, numeric-range |
| openalex ${label} must be <= ${maxValue} | validation | error | openalex, argument-validation, numeric-range |
| openalex work id is required (e.g. "W2741809807", "10.7717/p | validation | error | openalex, argument-validation, missing-identifier |
| openalex work id "${value}" must be a Work (W…) ID, got "${i | validation | error | openalex, argument-validation, wrong-entity-type |
| openalex work id "${value}" is not recognised | validation | error | openalex, argument-validation, invalid-identifier-format |
| ${label} request failed: ${err?.message ?? err} | exception | critical | openalex, network, fetch-error |
| OpenAlex returned 404 for ${url}. | exception | error | openalex, http-404, not-found |
| ${label} returned HTTP 429 (rate limited) | exception | warning | openalex, rate-limit, http-429 |
| ${label} returned HTTP ${resp.status}${detail} | http | error | http, api, openalex, network |
| ${label} returned malformed JSON: ${err?.message ?? err} | exception | error | json, network, proxy, openalex |
| openFDA returned no labels matching "${query}". | exception | warning | empty-results, openfda, api, query |
| openFDA returned no food recall records matching the filter. | exception | warning | empty-results, openfda, api, filter |
| --${name} is required | validation | error | argument-validation, cli, missing-argument, openfda |
| --${name} must be an integer between 1 and ${max} | validation | error | argument-validation, cli, bounds-check, openfda |
| ${label} request failed: ${err.message} | exception | critical | network, dns, fetch, openfda |
| ${label} returned 404 (no matches). | exception | info | http-404, empty-results, openfda, api |
| ${label} rate-limited (HTTP 429); back off and retry. | exception | warning | rate-limit, http-429, openfda, retry |
| ${label} returned HTTP ${resp.status}. | http | error | http, api, openfda, server-error |
| ${label} returned non-JSON body: ${err.message} | exception | error | http, json-parse, api-response, cli |
| No OpenReview submissions found for profile "${profile}". Co | exception | warning | empty-result, api-response, openreview, query |
| No paper found with id "${id}". Confirm the forum/note id fr | exception | warning | empty-result, openreview, lookup, api-response |
| openreview reviews max-length must be an integer >= 200 | validation | error | argument-validation, cli, input-validation |
| No forum found with id "${forum}". Confirm the forum id from | exception | warning | empty-result, openreview, lookup, api-response |
| openreview search query cannot be empty | validation | error | argument-validation, cli, input-validation |
| No papers found for "${term}". Try a different keyword. | exception | warning | empty-result, search, openreview, api-response |
| openreview ${label} must be a positive integer | validation | error | argument-validation, pagination, cli, input-validation |
| openreview ${label} must be <= ${maxValue} | validation | error | argument-validation, pagination, cli, input-validation |
| openreview ${label} must be a non-negative integer | validation | error | argument-validation, pagination, cli, input-validation |
| openreview ${label} is required | validation | error | validation, argument-error, missing-argument |
| openreview ${label} "${value}" is not a valid forum id (expe | validation | error | validation, argument-error, format-validation |
| openreview ${label} "${value}" is not a valid profile id (ex | validation | error | validation, argument-error, format-validation |
| Network failure fetching ${label}: ${e?.message ?? e} | exception | error | network, fetch, connectivity |
| OpenReview API HTTP ${resp.status} for ${label}${body ? ` ($ | exception | error | http, api-error, rate-limit |
| Malformed JSON from OpenReview for ${label}: ${e?.message ?? | exception | error | json, parse-error, api-response |
| OpenReview API error for ${label}: ${detail} | exception | error | api-error, openreview, envelope-error |
| openreview venue cannot be empty | validation | error | validation, argument-error, missing-argument |
| No papers found at venue "${value}". ${hint} | exception | warning | empty-result, openreview, no-results |
| OSV.dev returned no vulnerabilities for ${ecosystem}:${name} | exception | info | empty-result, osv, api |
| osv ${label} cannot be empty | validation | error | argument-validation, input-validation, osv |
| osv vulnerability id is required (e.g. "GHSA-29mw-wpgm-hmr9" | validation | error | argument-validation, input-validation, osv |
| osv vulnerability id "${value}" is not a valid OSV id | validation | error | input-validation, format-validation, osv |
| osv --ecosystem is required when querying by package | validation | error | argument-validation, missing-flag, osv |
| osv --ecosystem "${value}" is not a recognised OSV ecosystem | validation | error | enum-validation, input-validation, osv |
| osv ${label} must be a positive integer | validation | error | argument-validation, numeric-validation, osv |
| osv ${label} must be <= ${maxValue} | validation | error | argument-validation, numeric-validation, bounds, osv |
| ${label} returned malformed JSON: ${err?.message ?? err} | exception | error | network, json-parsing, http, proxy |
| ${label} request failed: ${err?.message ?? err} | exception | critical | network, dns, connection, http |
| OSV.dev returned 404 for ${url}. | exception | warning | http-404, api, osv |
| ${label} returned HTTP 429 (rate limited) | exception | warning | rate-limit, http-429, osv |
| ${label} returned HTTP ${resp.status} | exception | error | http-error, network, osv |
| ${label} returned HTTP ${resp.status}${text ? `: ${text.slic | exception | error | http-error, api, osv |
| OSV.dev returned no record for "${id}". | exception | warning | empty-result, api, osv |
| packagist package returned no "package" object for ${full}. | exception | error | api, schema, packagist |
| No Packagist packages matched "${query}". | exception | info | empty-result, search, packagist |
| packagist ${label} cannot be empty | validation | error | argument-validation, empty-input, packagist, cli |
| packagist ${label} must be a positive integer | validation | error | argument-validation, type-mismatch, integer, packagist |
| packagist ${label} must be <= ${maxValue} | validation | error | argument-validation, out-of-range, limit, packagist |
| packagist package name is required (e.g. "symfony/console", | validation | error | argument-validation, missing-argument, composer, packagist |
| packagist package "${value}" must be "<vendor>/<package>" | validation | error | argument-validation, composer, naming, format, packagist |
| packagist package "${value}" is not a valid Composer name | validation | error | argument-validation, regex, composer, naming, packagist |
| ${label} request failed: ${err?.message ?? err} | exception | critical | network, fetch, dns, connectivity, packagist |
| ${label} returned HTTP ${resp.status} | http | error | http, network, packagist |
| ${label} returned malformed JSON: ${err?.message ?? err} | exception | error | json, network, packagist |
ARGUMENT A review token is required. | validation | error | cli, validation, missing-argument |
ARGUMENT A review token is required. | validation | error | cli, validation, missing-argument |
ARGUMENT An email address is required. | validation | error | cli, validation, missing-argument |
ARGUMENT "${name}" must be either "yes" or "no". | validation | error | cli, validation, argument-parsing |
FILE_NOT_FOUND File not found: ${resolvedPath} | error_code | error | file, filesystem, not-found |
FILE_READ_ERROR Unable to inspect file: ${resolvedPath} | error_code | error | filesystem, permissions, stat, cli |
FILE_TOO_LARGE The PDF is larger than paperreview.ai's 10MB limit. | error_code | error | validation, file-size, pdf, limit |
FETCH_ERROR Unable to reach paperreview.ai: ${getErrorMessage(error)} | error_code | critical | network, fetch, dns, connectivity |
API_ERROR toErrorMessage(payload, fallback) | error_code | error | api, validation, response-shape, error-handling |
UPLOAD_ERROR S3 upload failed: ${getErrorMessage(error)} | error_code | error | network, upload, s3, presigned-url |
| no pins found in board "${username}/${slug}" | exception | warning | pinterest, empty-result, no-data |
| section title is required | validation | error | pinterest, missing-argument, validation |
| Section creation did not return a section id | exception | error | pinterest, api-response, unexpected-payload |
| section is required | validation | error | pinterest, missing-argument, validation |
| Refusing to delete section "${title || sectionId}" without - | validation | warning | pinterest, safety-gate, confirmation-required, destructive-operation |
| Could not resolve board "${username}/${slug}" (does it exist | exception | error | pinterest, board-not-found, slug-resolution, cli |
| board "${username}/${slug}" has no sections | exception | warning | pinterest, empty-result, board-sections, cli |
| Unknown privacy "${privacy}". Valid: ${PRIVACY.join(', ')} | validation | error | pinterest, invalid-argument, validation, cli |
| nothing to update | validation | error | pinterest, invalid-argument, missing-parameter, cli |
| pin "${id}" not found | exception | error | pinterest, pin-not-found, empty-result, cli |
| Pin ${id} has no downloadable image (it may be a video or st | exception | error | pinterest, video-pin, unsupported-content, cli |
| Failed to download pin ${id}: ${getErrorMessage(err)} | exception | error | pinterest, network, download-failed, timeout |
| Failed to download pin ${id}: ${result.error || 'unknown err | exception | error | pinterest, http-error, download-failed, cdn |
| image is required (a remote image URL) | validation | error | pinterest, missing-parameter, invalid-argument, cli |
| image must be a remote image URL (got "${raw}") | validation | error | pinterest, invalid-url, invalid-argument, cli |
| image URL must be http(s): ${value} | validation | error | validation, argument-error, url-protocol, pinterest |
| Pin creation did not return a pin id | exception | error | network, pinterest, api-response, session |
| Could not resolve pin "${id}" (does it exist and do you own | exception | error | pinterest, lookup-failed, not-found, api-response |
| Refusing to delete pin ${row.pinId}${row.title ? ` "${row.ti | validation | error | confirmation, argument-error, safety-guard, destructive-operation |
| nothing to update | validation | error | validation, argument-error, no-op, pinterest |
| --section requires --board | validation | error | validation, argument-error, pinterest, dependent-flags |
| Pin update did not return the updated pin | exception | error | network, pinterest, api-response, session |
| pinterest pin | exception | warning | pinterest, empty-result, not-found, lookup |
| --section requires --board | validation | error | validation, argument-error, pinterest, dependent-flags |
| Repin did not return a pin id | exception | error | network, pinterest, api-response, session |
| query is required | validation | error | cli, argument-validation, missing-argument |
| pinterest search-boards | exception | warning | empty-results, scraping, no-data |
| query is required | validation | error | cli, argument-validation, missing-argument |
| pinterest search-pins | exception | warning | empty-results, scraping, no-data |
| query is required | validation | error | cli, argument-validation, missing-argument |
| pinterest search-users | exception | warning | empty-results, scraping, no-data |
| Unknown sort "${sort}". Valid: ${SORTS.join(', ')} | validation | error | cli, argument-validation, invalid-enum-value |
| pinterest user-boards | exception | warning | empty-results, scraping, user-profile |
| pinterest user-pins | exception | warning | empty-results, scraping, user-profile |
| pinterest user | exception | error | empty-results, user-profile, scraping |
| ${name} must be a positive integer | validation | error | validation, argument-error, cli-input, positive-integer |
| ${name} must be <= ${max} | validation | error | validation, argument-error, limit-exceeded, pagination |
| Invalid board URL: ${trimmed} | validation | error | url-parsing, argument-error, malformed-url, input-validation |
| "${raw}" is a Pinterest /${username}/ URL, not a board | validation | error | url-parsing, argument-error, wrong-resource-type, pinterest |
| username is required | validation | error | validation, argument-error, missing-argument, username |
| Invalid profile URL: ${raw} | validation | error | url-parsing, argument-error, malformed-url, username |
| Not a username: "${raw}" | validation | error | validation, argument-error, empty-input, username |
| Pinterest usernames have no "@": "${raw}" | validation | error | validation, argument-error, username, format-mismatch |
| pin id is required | validation | error | validation, argument-error, missing-argument, pin-id |
| Not a pin id or pin URL: "${raw}" | validation | error | argument-validation, input-parsing, pinterest |
| Pinterest request failed: ${raw.__fetchError} | exception | error | network, fetch, pinterest, chrome |
| Pinterest did not set a csrftoken cookie for this page | exception | error | csrf, auth, cookies, pinterest |
| This action requires being logged in to Pinterest in Chrome | exception | error | auth, http-401, http-403, pinterest, login |
| Pinterest request failed (HTTP ${status})${detail}${hint} | http | error | http-error, rate-limit, csrf, pinterest |
| Pinterest request returned malformed JSON payload | exception | error | json, malformed-response, pinterest, chrome |
| Pinterest request returned malformed API payload | exception | error | api-contract, response-shape, pinterest |
| Could not resolve board "${username}/${slug}" (does it exist | exception | error | board-resolution, not-found, pinterest |
| board is required | validation | error | argument-validation, missing-argument, pinterest |
| Not a board reference: "${trimmed}" | validation | error | argument-validation, input-parsing, pinterest |
| No board with id "${trimmed}" | validation | error | pinterest, not-found, argument, board |
| Board ${trimmed} returned an unusable url: ${url} | exception | error | pinterest, api-schema, parsing, board |
| Board has no sections, so --section "${wanted}" cannot be us | validation | error | pinterest, argument, section, empty-list |
| No section matching "${wanted}" on this board | validation | error | pinterest, argument, section, not-found |
| Pin ${pinId} was created but could not be moved into section | exception | error | pinterest, pin, section, partial-failure, move |
| Pixiv PHPSESSID cookie missing | exception | error | pixiv, auth, cookie, session |
| Pixiv PHPSESSID prefix unparseable | exception | error | pixiv, auth, cookie, parsing |
| HTTP ${probe.httpStatus} from Pixiv ajax | exception | error | pixiv, http, network, rate-limit |
| Pixiv whoami failed: ${probe.detail} | exception | error | pixiv, probe, javascript, parsing |
| Unexpected Pixiv probe: ${JSON.stringify(probe)} | exception | error | pixiv, probe, unexpected-response |
| Waiting for Pixiv PHPSESSID cookie | exception | warning | auth, cookie, pixiv, login-flow |
| Refusing to write local Pixiv downloads: pass --execute | validation | error | cli, dry-run, missing-flag, pixiv |
| ${label} returned a missing image URL | exception | error | pixiv, api-response, url-parsing, data-shape |
| ${label} returned a malformed image URL | exception | error | pixiv, url-parsing, api-response, malformed-data |
| ${label} returned an untrusted Pixiv image URL | exception | error | pixiv, security, ssrf, url-validation, allowlist |
| Pixiv pages API returned malformed payload | exception | error | api, validation, network |
| No images found for illustration ${row.illust_id}. | exception | warning | empty-result, pixiv, expected-condition |
| Pixiv illustration ${row.illust_id} returned malformed page | exception | error | api, validation, schema |
| Refusing to overwrite existing Pixiv download: ${finalPath} | exception | error | filesystem, conflict, idempotency |
| Pixiv image download failed: ${result?.error || 'invalid dow | exception | error | network, download, retry |
| Pixiv image download returned unexpected content type for ${ | exception | error | pixiv, download, content-type, validation |
| Pixiv image download did not create a valid file: ${file.fil | exception | error | pixiv, download, filesystem, integrity |
| Refusing to overwrite existing Pixiv download: ${plan.finalP | exception | error | pixiv, download, filesystem, collision, overwrite-protection |
| Pixiv illustration ${plan.illustId} download failed: ${error | exception | error | pixiv, download, wrapper-error, filesystem |
| No Pixiv bookmarks matched the requested page. | exception | warning | pixiv, bookmarks, empty-result, pagination |
| Pixiv bookmark archive contains a duplicate download target: | exception | error | pixiv, bookmarks, collision, deduplication |
| Pixiv cookie lookup failed: ${error?.message || error} | exception | error | pixiv, cookies, browser-session, automation |
| Pixiv cookie lookup returned malformed data | exception | error | pixiv, cookies, shape-validation, driver-compat |
| Pixiv cookie lookup returned malformed entries: ${error?.mes | exception | error | pixiv, cookies, formatting, validation |
| Pixiv bookmark archive failed: ${error?.message || error} | exception | error | pixiv, bookmarks, wrapper-error, rollback |
| Invalid bookmark type: ${type}. Expected "illust" or "novel" | validation | error | cli, validation, argument-error, pixiv |
| Pixiv bookmark item returned malformed creation date | exception | error | pixiv, data-parsing, date-validation, api-response |
| Pixiv item returned malformed tags payload | exception | error | pixiv, data-parsing, tags, api-response |
| Pixiv item returned malformed tag | exception | error | pixiv, data-parsing, tags, api-response |
| Pixiv bookmark item returned malformed ${label} | exception | error | pixiv, data-parsing, numeric-validation, api-response |
| Pixiv bookmarks returned malformed payload | exception | error | pixiv, payload-validation, api-schema, scraping |
| Invalid bookmark visibility: ${visibility}. Expected "show" | validation | warning | pixiv, argument-validation, cli-input |
| Pixiv illustration ${id} returned malformed detail payload | exception | error | pixiv, payload-validation, api-schema |
| Invalid illustration ID: ${id} | validation | warning | pixiv, argument-validation, cli-input, invalid-id |
| Invalid illustration ID: ${illustId} | validation | error | validation, cli, input |
| Pixiv pages API returned malformed payload | exception | error | network, api, malformed-response |
| No images found for illustration ${illustId}. | exception | warning | empty-result, pixiv, content-restricted |
| Invalid user ID: ${userId} | validation | error | validation, cli, input |
| Pixiv novel ${label} returned malformed data | exception | error | validation, api, malformed-response |
| Pixiv novel ${id} returned malformed detail payload | exception | error | api, malformed-response, pixiv |
| Pixiv novel ${id} returned malformed content payload | exception | error | api, validation, malformed-response |
| Novel download format must be txt or md | validation | error | validation, cli, argument |
| Unsupported novel download format: ${format}. Supported form | validation | error | validation, cli, argument |
| output must be a directory path | validation | error | argument-validation, type-error, filesystem, path |
| output must be a non-empty directory path | validation | error | argument-validation, path, empty-value |
| output path is not a safe directory: ${ancestor} | validation | error | filesystem, permissions, path, symlink |
| output path is not a safe directory: ${resolved} | validation | error | filesystem, path, race-condition |
| output path must not be a symbolic link: ${resolved} | validation | error | filesystem, symlink, security, path-traversal |
| Failed to inspect Pixiv download target ${target}: ${error?. | exception | error | filesystem, permissions, lstat, path |
| Refusing to overwrite existing Pixiv download: ${destPath} | exception | error | filesystem, file-exists, no-overwrite, idempotency |
| Failed to write Pixiv novel ${path.basename(plan.destPath)}: | exception | error | filesystem, disk-space, permissions, file-write, race-condition |
| Refusing to write a local Pixiv novel: pass --execute | validation | info | cli, argument-error, safety-guard, dry-run |
| Invalid novel ID: ${id} | validation | error | cli, argument-error, input-validation |
| Pixiv novel returned malformed ${label} | exception | error | pixiv, scraping, schema-validation, response-shape |
| Pixiv novel ${id} returned malformed detail payload | exception | error | pixiv, scraping, malformed-response, not-found |
| Pixiv novel returned malformed series metadata | exception | error | pixiv, api-schema, validation, series-metadata |
| Pixiv novel returned malformed series ID | exception | error | pixiv, validation, series-id, api-schema |
| Pixiv novel returned malformed series title | exception | error | pixiv, validation, series-title, type-error |
| Pixiv novel returned malformed series order | exception | error | pixiv, validation, series-order, type-error |
| Invalid novel ID: ${id} | validation | error | argument-error, validation, cli-input, pixiv |
| Pixiv user novel item returned malformed ${label} | exception | error | pixiv, cli, validation, api-payload |
| Pixiv user novels returned mismatched novel detail payload f | exception | error | pixiv, cli, id-mismatch, api-payload |
| Pixiv user profile returned malformed novels payload | exception | error | pixiv, cli, schema-validation, api-payload |
| Pixiv user profile returned malformed novel ID: ${invalid} | exception | error | pixiv, cli, validation, id-format |
| Pixiv user novel details returned malformed works payload | exception | error | pixiv, cli, schema-validation, api-payload |
| [taxonomy=relay_unavailable] site=powerchina command=search | exception | error | browser-context, relay, retryable, scraping, headless-browser |
| powerchina search | exception | error | empty-result, scraping, selector-drift, dom-extraction |
| [taxonomy=selector_drift] site=powerchina command=search log | exception | error | auth, captcha, login-required, anti-bot, scraping |
NO_DATA No products found for category "${slug}" | error_code | error | no-data, scraping, invalid-argument, producthunt, dom-extraction |
NO_DATA Could not retrieve Product Hunt top posts | error_code | error | scraping, dom, no-data, cli |
| pubmed article | exception | error | api, pubmed, empty-result, input-validation |
| pubmed article ${pmid} did not include a title | exception | error | api, pubmed, schema-change, parsing |
| pubmed year-from must be <= year-to | validation | warning | cli, validation, argument-error, pubmed |
| pubmed author did not return an id list | exception | error | api, pubmed, schema-change, rate-limit |
| pubmed author | exception | info | api, pubmed, empty-result, search |
| pubmed citations | exception | info | api, pubmed, empty-result, citations |
| pubmed clinical-trial did not return an id list | exception | error | api, pubmed, schema-change, rate-limit |
| pubmed clinical-trial | exception | info | api, pubmed, empty-result, search |
| pubmed year-from must be <= year-to | validation | warning | validation, input-error, pubmed, date-range |
| pubmed journal did not return an id list | exception | error | network, api-response, pubmed, schema-change |
| pubmed journal | exception | info | empty-result, search, pubmed, query |
| pubmed mesh did not return an id list | exception | error | network, api-response, pubmed, schema-change |
| pubmed mesh | exception | info | empty-result, search, pubmed, mesh |
| pubmed related | exception | info | empty-result, elink, pubmed, pmid |
| pubmed review did not return an id list | exception | error | network, api-response, pubmed, schema-change |
| pubmed review | exception | info | empty-result, search, pubmed, review |
| pubmed search did not return an id list | exception | error | network, api-response, pubmed, schema-change |
| pubmed search | exception | error | pubmed, api-response-shape, empty-results, ncbi |
| pubmed ${label} cannot be empty | validation | error | validation, argument-error, empty-input, pubmed |
| pubmed ${label} must be a numeric PMID | validation | error | validation, argument-error, pmid, pubmed |
| pubmed ${label} must be a positive integer | validation | error | validation, argument-error, integer-parsing, cli-options |
| pubmed ${label} must be <= ${maxValue} | validation | error | validation, argument-error, limit-exceeded, cli-options |
| pubmed ${label} must be >= 1800 | validation | error | validation, argument-error, date-range, pubmed |
| pubmed ${label} must be one of: ${choices.join(', ')} | validation | error | validation, argument-error, enum-values, cli-options |
| ${label} request failed | exception | error | network, http-request, ncbi, eutils |
| ${label} HTTP ${response.status} | exception | error | http-status, rate-limit, ncbi, eutils |
| ${label} returned invalid JSON | exception | error | network, json-parsing, pubmed, eutils |
| ${label} returned an error | exception | error | pubmed, eutils, api-error, query-validation |
| ${commandLabel} returned an unreadable summary payload | exception | error | pubmed, eutils, schema-mismatch, response-shape |
| ${commandLabel} omitted summaries for one or more PMIDs | exception | error | pubmed, eutils, data-integrity, missing-data |
| pubmed year-from must be <= year-to | validation | error | validation, argument-error, pubmed, date-range |
| pubmed article response did not include a PMID | exception | error | pubmed, efetch, xml-parsing, schema-mismatch |
| pubmed article response PMID ${returnedPmid} did not match r | exception | error | pubmed, efetch, data-integrity, pmid-mismatch |
| pypi downloads period "${value}" is invalid | validation | error | validation, argument-error, pypi, cli-input |
| pypi downloads | exception | warning | pypi, empty-result, no-data, pypistats |
| pypi package | exception | error | pypi, network, empty-response |
| pypi package name is required (e.g. "requests", "pandas") | validation | error | pypi, validation, missing-argument |
| pypi package name "${value}" is not a valid distribution nam | validation | error | pypi, validation, invalid-name |
| ${label} request failed: ${err?.message ?? err} | exception | error | pypi, network, fetch |
| ${label} returned HTTP ${resp.status} | exception | error | pypi, http, server-error |
| ${label} returned malformed JSON: ${err?.message ?? err} | exception | error | pypi, json, malformed-response |
| ${label}: unexpected evaluate result shape | exception | error | qoder, browser-automation, unexpected-shape |
| ${label} must be a positive integer | validation | error | qoder, validation, argument |
| Prompt Enhance button not found | exception | error | ui-automation, dom-click, browser, qoder |
| Open Editor button not found | exception | error | ui-automation, dom-click, browser, qoder |
| qoder history | exception | warning | empty-result, ui-automation, scraping, qoder |
| New Quest button not found | exception | error | ui-automation, dom-click, browser, qoder |
| text is required | validation | warning | argument-validation, cli, input-validation |
| composer type failed | exception | error | ui-automation, dom-injection, browser, qoder |
| Send button not found | exception | error | ui-automation, dom-click, browser, qoder |
| Qoder send did not create a new visible message row | exception | error | ui-automation, verification, browser, qoder |
| Qoder response | exception | error | timeout, llm-response, polling |
| qoder read | exception | error | dom-extraction, scraping, invalid-result |
| sidebar-toggle failed | exception | error | ui-automation, dom-selector, click-failed |
| open-panel failed | exception | error | ui-automation, dom-selector, click-failed |
| query | validation | error | argument-validation, input-error, cli |
| search open failed | exception | error | ui-automation, dom-selector, click-failed |
| search type failed | exception | error | ui-automation, dom-selector, input-fill |
| qoder search | exception | warning | empty-result, search, scraping |
| Settings button not found | exception | error | ui-automation, dom-selector, click-failed |
| Knowledge button not found | exception | error | ui-automation, electron, cdp, selector-not-found |
| Marketplace button not found | exception | error | ui-automation, electron, cdp, selector-not-found |
| Credits Usage not visible | exception | error | ui-automation, electron, cdp, selector-not-found |
| View all button not visible | exception | error | ui-automation, electron, cdp, selector-not-found |
| Add Workspace button not found | exception | error | ui-automation, electron, cdp, selector-not-found |
| No account button detected. Pass --username <name> explicitl | exception | error | ui-automation, electron, auto-detection, missing-argument |
| Click on account button "${label}" failed | exception | error | ui-automation, electron, exact-match, selector-not-found |
| More Actions button not found | exception | error | ui-automation, electron, cdp, selector-not-found |
| qoder more-actions | exception | error | ui-automation, cdp, unexpected-result-shape |
| quark.cn | exception | error | auth, session-expired, cookies, quark |
| HTTP ${probe.httpStatus} from Quark account/info | exception | error | http, quark, network, probe |
| ${probe.detail} | exception | error | quark, render, browser-automation, probe |
| Quark whoami failed: ${probe.detail} | exception | error | quark, exception, browser-automation, probe |
| Unexpected Quark probe: ${JSON.stringify(probe)} | exception | error | quark, probe, unexpected-state, browser-automation |
| Folder name cannot be empty | validation | error | argument-validation, quark, mkdir, cli |
| Cannot use both --parent and --parent-fid | validation | error | argument-validation, quark, mkdir, cli, mutually-exclusive-flags |
| No fids provided | validation | error | argument-validation, quark, mv, cli, empty-input |
| Either --to or --to-fid is required | validation | error | argument-validation, quark, mv, cli, missing-flag |
| Cannot use both --to and --to-fid | validation | error | argument-validation, quark, mv, cli, mutually-exclusive-flags |
| quark: Move task timed out | exception | error | timeout, async-task, polling, quark |
| New name cannot be empty | validation | error | validation, argument-error, quark |
| No fids provided | validation | error | validation, argument-error, quark |
| Either --to or --to-fid is required | validation | error | validation, argument-error, quark |
| Cannot use both --to and --to-fid | validation | error | validation, argument-error, conflicting-flags, quark |
| --stoken is required when using --fids | validation | error | validation, argument-error, auth-token, quark |
| quark: Save task timed out | exception | error | timeout, async-task, polling, quark |
| AUTH_HINT | exception | critical | authentication, session-expired, quark |
| quark: ${action}: ${resp.message} | exception | error | api-error, quark, business-logic |
| Invalid Quark share URL: ${url} | validation | error | validation, argument-error, url-parsing, quark |
| quark: Folder "${part}" not found in "${path}" | exception | error | filesystem, not-found, path |
| prompt is required | validation | error | validation, arguments, cli |
| timeout must be a positive integer | validation | error | validation, arguments, timeout |
| Failed to send Qianwen prompt | exception | error | browser-automation, dom, send-failed |
| qianwen ask | exception | warning | timeout, browser-automation, polling |
| No assistant reply found in Qianwen chat. | exception | error | dom, parsing, browser-automation |
| qwen.ai | exception | error | auth, cookies, session |
| HTTP ${result.httpStatus} from /api/v1/auths/ | exception | error | http, network, api |
| Qwen whoami failed: ${result.detail} | exception | error | network, auth, browser-automation, qwen |
| Unexpected Qwen probe: ${JSON.stringify(result)} | exception | error | auth, contract-violation, qwen, browser-automation |
| qwen detail | exception | error | scraping, empty-result, qwen, dom |
| limit must be a positive integer | validation | error | validation, argument-error, cli, qwen |
| limit must be <= 100 | validation | error | validation, argument-error, cli, limits |
| Qianwen history API failed (status=${result.status}) ${resul | exception | error | network, http, api, qwen |
qwen history No Qianwen conversations found. | exception | warning | empty-result, qwen, cli, no-data |
| prompt is required | validation | error | validation, argument-error, cli, qwen |
| timeout must be a positive integer | validation | error | validation, arguments, timeout |
| Failed to send Qianwen image prompt | exception | error | browser-automation, dom, send-failure |
qianwen image No generated images observed before timeout. | exception | error | timeout, browser-automation, image-generation |
| Failed to fetch generated Qianwen image ${i + 1}: status=${a | exception | error | network, http, image-download |
| prompt is required | validation | error | validation, arguments, missing-parameter |
| Failed to send Qianwen prompt | exception | error | browser-automation, dom, send-failure |
id must be a non-empty session ID or qianwen.com chat URL | validation | error | validation, arguments, session-id |
| Qianwen history page_size must be an integer between 1 and 1 | exception | error | validation, pagination, api-limits |
reddit.com Reddit reddit_session cookie missing | exception | error | auth, reddit, cookie, session |
| HTTP ${result.httpStatus} from /api/me.json | exception | error | reddit, http, network, rate-limit |
| Reddit whoami failed: ${result.detail} | exception | error | reddit, browser, fetch, json |
| Unexpected Reddit probe: ${JSON.stringify(result)} | exception | error | reddit, unexpected-state, browser |
| Browser session required | exception | error | auth, reddit, browser, prerequisite |
| limit must be an integer in [1, ${REDDIT_HOME_MAX_LIMIT}]. | validation | error | validation, arguments, reddit, input |
reddit.com reddit.com: ${result.detail} | exception | error | auth, reddit, session-expired, home-feed |
| HTTP ${result.httpStatus} from ${result.where} | exception | error | reddit, http, rate-limit, api-shape |
| expand-rounds must be an integer in [${REDDIT_EXPAND_ROUNDS_ | validation | error | argument-validation, range-check, cli-options |
| Reddit /comments fetch returned no result envelope. | exception | error | browser-automation, reddit, unexpected-null |
| ${result.detail} | exception | warning | empty-result, access-control, reddit |
reddit.com reddit.com: ${result.detail} | exception | error | authentication, cookies, reddit |
| HTTP ${result.httpStatus} from ${result.where} | exception | error | http, network, rate-limit |
| Unexpected result from reddit read: ${JSON.stringify(result) | exception | error | unexpected-state, envelope, reddit |
| Reddit rejected reply: ${result.detail} | exception | error | reddit, api-rejection, browser-automation |
| ${result.detail} | exception | error | reddit, postcondition, verification |
| Reply failed: ${result.detail} | exception | error | reddit, browser-automation, page-evaluate |
| Unexpected result from reddit reply: ${JSON.stringify(result | exception | error | reddit, contract-mismatch, defensive |
| Browser session required | exception | error | browser-session, reddit, prerequisite |
| Browser session required | exception | error | browser-session, reddit, prerequisite |
| reddit.com: ${result.error} | error_code | error | reddit, scraping, in-page-error |
| ${result.error} | exception | error | reddit, scraping, in-page-error |
| Subreddit name is required. | validation | error | argument-validation, reddit, cli-input |
| Invalid subreddit name. | validation | error | argument-validation, regex, reddit |
| ${result.detail} | exception | error | reddit, empty-result, http-404, authentication |
| HTTP ${result.httpStatus} from ${result.where} | http | error | reddit, http-error, rate-limit, network |
| subreddit-info failed: ${result.detail} | exception | error | reddit, browser, exception, network |
| Unexpected result from reddit subreddit-info: ${JSON.stringi | exception | error | reddit, internal-error, unexpected-result, browser |
| Browser session required | exception | error | reddit, browser-session, authentication, write-operation |
| limit must be an integer in [1, ${REDDIT_SUBSCRIBED_MAX_LIMI | validation | warning | reddit, argument-validation, input-validation |
| Reddit subscriptions row ${index + 1} was missing data. | exception | error | reddit, malformed-response, schema-change |
| Reddit subscriptions row ${index + 1} was missing subreddit | exception | error | reddit, malformed-response, schema-change, data-integrity |
| Browser session required | exception | error | reddit, browser-session, authentication |
| reddit.com: ${result.detail} | error_code | error | authentication, reddit, browser-session |
| HTTP ${result.httpStatus} from ${result.where} | http | error | http, reddit, rate-limit |
| ${result.detail} | exception | error | parsing, reddit, malformed-response |
| subscribed failed: ${result.detail} | exception | error | javascript, reddit, runtime-error |
| Unexpected result from reddit subscribed: ${JSON.stringify(r | exception | error | contract-mismatch, reddit, unexpected-response |
| Reddit returned no subscribed subreddits for the logged-in a | exception | warning | empty-result, reddit, no-data |
| Browser session required | exception | error | browser-session, prerequisite, reddit |
| Browser session required | exception | error | browser-session, prerequisite, reddit |
| reddit.com | exception | error | authentication, reddit, browser-session |
| reddit.com | exception | error | authentication, reddit, whoami |
| HTTP ${result.httpStatus} from ${result.where} | exception | error | http, http-status, reddit, cli, network |
| whoami failed: ${result.detail} | exception | error | runtime-exception, reddit, cli, script-error |
| Unexpected result from reddit whoami: ${JSON.stringify(resul | exception | error | unexpected-shape, invariant-violation, reddit, cli |
| rednote.com | exception | error | auth, missing-cookie, rednote, session |
| auth | exception | error | auth, stale-session, rednote, session-expired |
| Unexpected Rednote probe: ${JSON.stringify(probe)} | exception | error | command-execution, browser-automation, rednote, unexpected-state |
| --limit must be an integer between 1 and 50, got ${JSON.stri | validation | error | argument-validation, cli, rednote, limit |
| --limit must be between 1 and 50, got ${parsed} | validation | error | argument-validation, cli, rednote, limit-range |
| rednote/comments | exception | warning | empty-result, browser-automation, rednote, dom-extraction |
| --limit must be a positive integer, got ${JSON.stringify(raw | validation | error | cli, argument-validation, input |
| --limit must be a positive integer, got ${parsed} | validation | error | cli, argument-validation, range-check |
| rednote notifications: unexpected evaluate response | exception | error | browser-automation, evaluate, spa |
| rednote notifications: ${data.error}${data.detail ? ' (' + d | exception | error | browser-automation, spa, hydration, retry |
| --limit must be an integer between 1 and 100, got ${JSON.str | validation | error | cli, argument-validation, range-check |
| --limit must be between 1 and 100, got ${parsed} | validation | error | cli, argument-validation, range-check |
| Unexpected Rednote search extraction payload shape; expected | exception | error | browser-automation, evaluate, payload-shape |
| www.rednote.com | exception | error | authentication, login-wall, browser-automation |
| --limit must be a positive integer, got ${JSON.stringify(raw | validation | error | cli, argument-validation, input |
| --limit must be a positive integer, got ${parsed} | validation | error | cli, argument-validation, range-check |
| rednote/user | exception | warning | empty-result, scraping, pagination, cli |
| rest-countries country | exception | warning | empty-result, rest-countries, api, validation |
| rest-countries region | exception | warning | empty-result, rest-countries, api |
| rest-countries ${label} cannot be empty | validation | error | argument-error, validation, cli, rest-countries |
| rest-countries ${label} must be a positive integer | validation | error | argument-error, validation, type-error, cli |
| rest-countries ${label} must be <= ${maxValue} | validation | error | argument-error, validation, bounds, cli |
| rest-countries region is required (e.g. "europe", "asia") | validation | error | argument-error, validation, cli, rest-countries |
| rest-countries region "${value}" is not recognised | validation | error | argument-error, validation, enum, rest-countries |
| ${label} request failed: ${err?.message ?? err} | exception | critical | network, fetch, dns, rest-countries |
| REST Countries returned 404 for ${url}. | exception | error | http-404, rest-countries, not-found, api |
| ${label} returned HTTP 429 (rate limited) | exception | warning | http, rate-limit, network |
| ${label} returned HTTP ${resp.status} | exception | error | http, network, http-5xx |
| ${label} returned malformed JSON: ${err?.message ?? err} | exception | error | json, network, response-parsing |
| Article URL cannot be empty | validation | error | validation, argument-error, cli |
| URL must be on reuters.com, got ${url} | validation | error | validation, argument-error, url |
| Reuters article-detail failed inside the page: ${result.erro | exception | error | scraping, browser, dom |
| www.reuters.com | exception | error | auth, paywall, scraping |
| Reuters article-detail returned no payload | exception | error | scraping, browser, empty-result |
| reuters article-detail | exception | error | scraping, empty-result, paywall |
| reuters.com | exception | error | auth, session, login |
| Reuters whoami failed: ${probe.detail} | exception | error | command-execution, page-evaluate, browser-automation, reuters |
| Unexpected Reuters probe: ${JSON.stringify(probe)} | exception | error | command-execution, unexpected-response, browser-automation, reuters |
| Search query cannot be empty | validation | error | argument-error, validation, missing-argument, reuters |
| Reuters search failed inside the page: ${result.error} | exception | error | command-execution, in-page-script, network, reuters |
| Reuters search API returned an unreadable response | exception | error | browser-automation, network, serialization |
| www.reuters.com | exception | error | auth, anti-bot, cookies, network |
| Reuters search API failed (${status}) | exception | error | network, http-status, api, anti-bot |
| Reuters search returned a non-JSON body${detail} | exception | error | json, parsing, anti-bot, network |
| reuters search | exception | warning | empty-results, search, query |
| --limit must be an integer between ${MIN_LIMIT} and ${MAX_LI | validation | error | cli, argument-validation, input-validation |
| --limit must be between ${MIN_LIMIT} and ${MAX_LIMIT}, got $ | validation | error | cli, argument-validation, range-check |
| rfc rfc | exception | error | empty-result, api-response, ietf-datatracker |
| rfc number is required (e.g. 9000, 791, 2616) | validation | error | cli, missing-argument, argument-validation |
| rfc number "${value}" is not a valid RFC number | validation | error | cli, argument-validation, input-validation |
| rfc number must be <= 999999 | validation | error | cli, argument-validation, range-check |
| ${label} request failed: ${err?.message ?? err} | exception | error | network, fetch, connectivity |
| IETF datatracker returned 404 for ${url}. | exception | error | http-404, not-found, ietf-datatracker |
| ${label} returned HTTP 429 (rate limited) | exception | warning | rate-limit, http-429, throttling |
| ${label} returned HTTP ${resp.status} | exception | error | http-error, server-error, ietf-datatracker |
| ${label} returned malformed JSON: ${err?.message ?? err} | exception | error | network, json, http, datatracker, proxy |
| rubygems search | exception | warning | rubygems, empty-results, network, cli |
| rubygems ${label} cannot be empty | validation | error | validation, argument-error, cli-input, rubygems |
| rubygems ${label} must be a positive integer | validation | error | validation, argument-error, cli-input, numeric |
| rubygems ${label} must be <= ${maxValue} | validation | error | validation, argument-error, cli-input, numeric |
| rubygems gem name is required (e.g. "rails", "sidekiq") | validation | error | validation, argument-error, cli-input, rubygems |
| rubygems gem "${value}" is not a valid gem name | validation | error | validation, argument-error, rubygems, cli-input |
| ${label} request failed: ${err?.message ?? err} | exception | error | network, fetch, dns, proxy, rubygems |
| ${label} returned HTTP ${resp.status} | http | error | network, http, api, rubygems, server-error |
| ${label} returned malformed JSON: ${err?.message ?? err} | exception | error | network, json, parsing, rubygems, api |
| semanticscholar citations offset must be a non-negative inte | validation | error | validation, arguments, pagination, semanticscholar |
| semanticscholar citations offset must be <= 9999 | validation | error | validation, pagination, limits, semanticscholar |
| semanticscholar citations returned an unexpected payload sha | exception | error | api, schema, semanticscholar, response-shape |
| No Semantic Scholar citations for "${args.id}" at offset ${o | exception | info | empty-result, pagination, semanticscholar, expected-condition |
| semanticscholar citations row is missing citingPaper | exception | error | api, schema, semanticscholar, data-integrity |
| semanticscholar paper returned an unexpected payload shape | exception | error | api, schema, semanticscholar, response-shape |
| semanticscholar recommendations returned an unexpected paylo | exception | error | api, schema, semanticscholar, response-shape, rate-limit |
| No Semantic Scholar recommendations for "${args.id}". | exception | info | empty-result, semanticscholar, expected-condition, recommendations |
| semanticscholar search returned an unexpected payload shape | exception | error | api, schema-validation, network |
| No Semantic Scholar papers matched "${query}". | exception | info | empty-results, search, api |
| semanticscholar ${label} cannot be empty | validation | error | argument-validation, cli, input |
| semanticscholar ${label} must be a positive integer | validation | error | argument-validation, cli, input |
| semanticscholar ${label} must be <= ${maxValue} | validation | error | argument-validation, cli, pagination |
| semanticscholar paper id cannot be empty | validation | error | argument-validation, cli, input |
| semanticscholar paper id "${value}" is not recognised | validation | error | argument-validation, cli, input-format |
| ${label} request failed: ${err?.message ?? err} | exception | error | network, dns, connectivity |
| Semantic Scholar returned 404 for ${url}. | exception | warning | http-404, empty-results, api |
| ${label} returned HTTP 429 (rate limited) | exception | error | rate-limit, http-429, api |
| ${label} returned HTTP ${resp.status} | http | error | http, api, network, semantic-scholar |
| ${label} returned malformed JSON: ${err?.message ?? err} | exception | error | json, parse-error, network, semantic-scholar |
| ${label} returned an error: ${body.error} | exception | error | api, semantic-scholar, error-response |
| semanticscholar ${label} must be a number when present | exception | error | validation, type-error, schema, semantic-scholar |
| semanticscholar ${label} row is not an object | exception | error | validation, type-error, data-shape, semantic-scholar |
| semanticscholar ${label} row is missing paperId | exception | error | validation, missing-field, data-shape, semantic-scholar |
| semanticscholar ${label} row is missing title | exception | error | validation, missing-field, data-shape, semantic-scholar |
| semanticscholar ${label} row has malformed authors | exception | error | validation, type-error, data-shape, semantic-scholar |
| Sina blog search failed: HTTP ${resp.status} | http | error | http, network, scraping, sina |
FETCH_ERROR Sina Finance API HTTP ${res.status} | error_code | error | http, network, api, sina, fetch-error |
NOT_FOUND No news found | error_code | warning | empty-result, not-found, api |
| Sina Finance rolling news API failed: ${payload?.result?.sta | exception | error | api, upstream, sina |
| Sina Finance rolling news API returned malformed data | exception | error | schema-change, api, malformed-response |
| sinafinance rolling-news | exception | info | empty-result, no-data |
| Sina Finance rolling news API returned malformed row ${index | exception | error | data-validation, malformed-row, api |
| Sina Finance rolling news request failed: ${error instanceof | exception | error | network, fetch, connection |
| Sina Finance rolling news API returned HTTP ${response.statu | http | error | http-status, api, rate-limit |
| Sina Finance rolling news API returned invalid JSON: ${error | exception | error | json, parse-error, malformed-response |
FETCH_ERROR Sina API HTTP ${res.status} | error_code | error | http-status, sina, rate-limit |
INPUT_ERROR Invalid market: "${market}" | error_code | error | input-validation, invalid-argument, cli |
NOT_FOUND No stock found for "${key}" | error_code | warning | cli, http, search, not-found |
| attachmentId "${id}" is not a UUID | validation | error | cli, validation, arguments, uuid |
| no signed url returned for attachment ${id} | exception | error | browser-automation, http, auth, signed-url |
| network error fetching signed URL: ${e.message} | exception | error | network, http, fetch, dns |
| HTTP ${res.status} from signed CDN URL while downloading ${i | http | error | http-error, cdn, signed-url, download, expired-url |
| file path required | validation | error | argument-error, missing-argument, cli, validation |
| channel required (UUID or #name); server rejects uploads wit | validation | error | argument-error, missing-argument, channel, validation |
| file not readable: ${abs} (${e.message}) | validation | error | argument-error, file-not-found, filesystem, permissions |
| not a regular file: ${abs} | validation | error | argument-error, not-a-file, filesystem, validation |
| file is empty: ${abs} | validation | error | file-upload, validation, argument-error, filesystem |
| file is ${stat.size} bytes, exceeds server limit ${MAX_BYTES | validation | error | file-upload, size-limit, validation, argument-error |
| attachmentId "${id}" is not a UUID | validation | error | validation, uuid, argument-error, input-validation |
| no signed url returned for attachment ${id} | exception | error | network, api-contract, signed-url, response-shape |
| ${r.detail} | exception | error | authentication, session-expired, cookies, auth-required |
| unexpected /auth/me result: ${JSON.stringify(r)} | exception | error | api-contract, network, version-mismatch, unexpected-response |
| ${e.message} | validation | error | validation, input-validation, argument-error, message-id |
| expected array of rows from server, got ${typeof rows} (cont | exception | error | api-contract, response-shape, version-mismatch, pagination |
| ${e.message} | validation | error | validation, input-validation, argument-error, message-id |
| channel required | validation | error | validation, missing-argument, argument-error, channel |
| ${e.message}. Archived channels are excluded from the name l | validation | warning | argument-error, cli, channel-resolution, archived-channel |
| name required | validation | error | argument-error, cli, validation, missing-argument |
| --description must be at most 500 characters | validation | error | argument-error, cli, validation, input-length |
| channel required | validation | error | argument-error, cli, validation, missing-argument |
| expected files array, got ${typeof files} (contract drift?) | exception | error | contract-drift, response-shape, cli, runtime-error |
| channel required | validation | error | argument-error, cli, validation, missing-argument |
| expected array of rows from server, got ${typeof rows} (cont | exception | error | contract-drift, response-shape, cli, runtime-error |
| channel required | validation | error | argument-error, cli, validation, missing-argument |
| --unread and --seq are mutually exclusive | validation | error | argument-error, cli, conflicting-options, validation |
| --seq must be a positive integer (got "${kwargs.seq}") | validation | error | argument-error, cli, validation, integer-parse |
| channel required | validation | error | cli, argument-error, input-validation |
| expected array of DM channels, got ${typeof rows} (contract | exception | error | contract-drift, cli, type-error |
| ${r.detail} | exception | error | auth, session-expired, cli |
| HTTP ${r.status} from ${r.where} | http | error | http, api-error, network |
| Run `opencli slock server-use <slug>` to set the active serv | exception | error | config, cli, missing-config |
| no-thread should be handled by caller, not dispatcher: ${r.p | exception | error | contract-drift, internal-bug, cli |
| unexpected evaluate envelope: ${JSON.stringify(r)} | exception | error | contract-drift, cli, internal-bug |
| channel required | validation | error | cli, argument-error, input-validation |
| --filter must be one of ${FILTERS.join(' | ')} (got "${filte | validation | error | cli, argument-error, input-validation |
| expected inbox items array, got ${typeof items} (contract dr | exception | error | contract-drift, response-shape, cli |
| channel required | validation | error | missing-argument, cli, validation |
| --after must be a seq number or messageId UUID (got "${after | validation | error | invalid-argument, validation, cli |
| --before must be a seq number (got "${before}") | validation | error | invalid-argument, validation, cli |
| expected array of rows from server, got ${typeof list} (cont | exception | error | contract-drift, response-shape, cli |
| query required | validation | error | missing-argument, cli, validation |
| expected array of rows from server, got ${typeof rows} (cont | exception | error | contract-drift, response-shape, cli |
| target required | validation | error | missing-argument, cli, validation |
| --attach expects attachmentId UUIDs; "${aid}" is not a UUID | validation | error | invalid-argument, uuid, validation |
| ${e.message} (rethrown from classifyTarget; e.g. target requ | validation | error | invalid-argument, target-resolution, cli |
| Slock message-send succeeded without returning a message id; | exception | error | browser-automation, api-response-shape, invariant-violation |
| ${e.message} (rethrown from assertMessageIdShape; e.g. messa | validation | error | argument-validation, uuid, input-validation |
| emoji required (a single unicode emoji) | validation | error | argument-validation, missing-argument, input-validation |
| ${e.message} (rethrown from assertMessageIdShape; e.g. messa | validation | error | argument-validation, uuid, input-validation |
| emoji required (the unicode emoji to remove) | validation | error | argument-validation, missing-argument, input-validation |
| target required: "#channel", "#channel:threadShortId", "dm:@ | validation | error | argument-validation, missing-argument, target-parsing |
| dm target must be "dm:<userId>" or "dm:@name". | validation | error | argument-validation, target-parsing, dm |
| dm target must be "dm:<userId-uuid>" or "dm:@name". | validation | error | argument-validation, target-parsing, dm |
| messageId required | validation | error | argument-validation, missing-argument, input-validation |
| messageId "${v}" is not a full UUID. ${SHORT_ID_HINT} | validation | error | argument-validation, uuid, input-validation |
| ${name} must be${suffix} (got "${raw}") | validation | error | cli, argument-validation, input-parsing |
| ${name} must be a non-negative integer (got "${raw}") | validation | error | cli, argument-validation, pagination |
| input required: slug or UUID | validation | error | cli, missing-argument, input-validation |
| ${e.message} (rethrown from assertMessageIdShape; e.g. taskI | validation | error | cli, uuid, argument-validation |
| messageId required | validation | error | cli, missing-argument, input-validation |
| messageId "${raw}" is not a UUID or a "#channel:shortId" for | validation | error | cli, argument-format, input-validation |
| channel required | validation | error | cli, missing-argument, input-validation |
| title required (non-empty) | validation | error | cli, missing-argument, input-validation |
| ${e.message} (rethrown from assertMessageIdShape; e.g. taskI | validation | error | cli, uuid, argument-validation |
| channel required | validation | error | cli, missing-argument, input-validation |
| number "${numRaw}" is not a positive integer | validation | error | argument-validation, cli-input, fail-fast |
| Slock ${commandName} succeeded without returning task id ${e | exception | error | contract-drift, api-response, defensive-check |
| Slock ${commandName} returned task id ${taskId}, expected ${ | exception | error | identity-mismatch, data-integrity, defensive-check |
| status "${status}" not in {${TASK_STATUSES.join('|')}} | validation | error | argument-validation, enum-validation, cli-input |
| expected array of rows from server, got ${typeof rows} (cont | exception | error | contract-drift, api-response, shape-mismatch |
| channel required | validation | error | missing-argument, cli-input, argument-validation |
| status "${status}" not in {${TASK_STATUSES.join('|')}} | validation | error | argument-validation, enum-validation, cli-input |
| expected array of rows from server, got ${typeof rows} (cont | exception | error | contract-drift, api-response, shape-mismatch |
| ${e.message} (rethrown as ArgumentError) | validation | error | argument-validation, id-shape, cli-input |
| status "${status}" not in {${TASK_STATUSES.join('|')}} — pre | validation | error | argument-validation, enum-validation, fail-fast |
| Slock task-status succeeded without returning task id ${expe | exception | error | contract-drift, missing-field, api-response |
| Slock task-status returned task id ${taskId}, expected ${exp | exception | error | identity-mismatch, api-response, task-id |
| Slock task-status returned task ${expectedId} without taskSt | exception | error | contract-drift, missing-field, task-status |
| Slock task-status returned status ${taskStatus}, expected ${ | exception | error | state-mismatch, concurrency, task-status |
| ${e.message} (rethrown as ArgumentError) | validation | error | argument-validation, input-shape, cli |
| ${e.message} (rethrown as ArgumentError) | validation | error | argument-validation, input-shape, cli |
| Slock thread-follow succeeded without returning a thread cha | exception | error | contract-drift, missing-field, threads |
| expected threads array, got ${typeof threads} (contract drif | exception | error | contract-drift, type-mismatch, threads |
| threadChannelId must be a full UUID (got "${id}"). Get it fr | validation | error | argument-validation, uuid, input-shape |
| expected array of summary rows, got ${typeof rows} (contract | exception | error | contract-drift, type-mismatch, api-response |
| Unexpected SMZDM search extraction payload shape; expected a | exception | error | cli, payload-shape, web-scraping, validation |
| --limit must be an integer between 1 and 100, got ${JSON.str | validation | error | cli, argument-validation, input-validation |
| --limit must be between 1 and 100, got ${parsed} | validation | error | cli, argument-validation, range-check |
REFRESH_FAILED ${err?.error_description || `Token refresh failed (${res.status})`} | error_code | error | oauth, spotify, token-refresh, network |
AUTH_REQUIRED Not authenticated. Run: opencli spotify auth | error_code | error | authentication, spotify, oauth, missing-credentials |
AUTH_CORRUPTED Token file is corrupted. Run: opencli spotify auth | error_code | error | authentication, spotify, corrupted-state, oauth |
API_ERROR ${err?.error?.message || `Spotify API error ${res.status}`} | error_code | error | spotify, api, http-error, network |
EMPTY_RESULT No track found for: ${query} | error_code | warning | spotify, search, empty-result |
INVALID_ARGS Volume must be between 0 and 100 | error_code | error | spotify, argument-validation, range-check |
CONFIG Missing Spotify credentials.
1. Go to https://developer.spotify.com/dashboard a | error_code | error | config, spotify, oauth, missing-credentials, env-file |
| Network failure fetching ${label}: ${detail} | exception | error | network, fetch, stackexchange-api, connectivity, dns |
| ${label} not found | exception | warning | http-404, not-found, stackexchange-api, bad-input |
| Stack Exchange API HTTP ${res.status} for ${label} | exception | error | http-error, rate-limit, stackexchange-api, quota |
| Malformed JSON from Stack Exchange API for ${label}: ${detai | exception | error | json, parse-error, stackexchange-api, network, proxy |
| Stack Exchange API error ${json.error_id} (${json.error_name | exception | error | api, rate-limit, quota, stack-exchange |
| ${label} must be an integer >= ${min}, got ${JSON.stringify( | validation | error | validation, argument-error, cli-input |
| ${label} must be an integer between ${min} and ${max}, got $ | validation | error | validation, argument-error, cli-input |
| Stack Exchange answer comments for ${label} exceed one API p | exception | error | pagination, api-limit, partial-data |
| Invalid Stack Overflow question id: ${args.id} | validation | error | validation, argument-error, cli-input |
| Question not found | exception | warning | empty-result, stack-overflow, http-404, cli |
| stackoverflow related id must be a numeric question id, got | validation | error | argument-validation, cli, input-validation |
| stackoverflow related sort must be one of ${SORT_OPTIONS.joi | validation | error | argument-validation, cli, invalid-option |
| sort must be one of ${SORT_OPTIONS.join(', ')} | validation | error | argument-validation, cli, invalid-option |
| ${label} must be a positive integer | validation | error | argument-validation, input-validation, cli |
| ${label} must be <= ${maxValue} | validation | error | argument-validation, rate-limit, cli |
| ${label} cannot be empty | validation | error | argument-validation, input-validation, cli |
| stack exchange request failed: ${error?.message || error} | exception | critical | network, fetch-failed, dns, stack-exchange-api |
| stack exchange returned HTTP 429 (rate limited) | exception | error | rate-limit, http-429, stack-exchange-api, throttling |
| stack exchange HTTP ${resp.status}: ${body || resp.statusTex | exception | error | http-error, stack-exchange-api, api-response |
| stack exchange returned malformed JSON: ${error?.message || | exception | error | network, json, http, proxy |
| stack exchange API error: ${data.error_message || data.error | exception | error | api, http, stack-exchange, rate-limit |
| ${label} returned no items. | exception | warning | empty-result, api, validation |
| Steam app id ${appId} returned no data (may be region-locked | exception | error | steam, api, empty-result, region-lock |
| No Steam results matched "${query}". | exception | warning | steam, search, empty-result |
| steam ${label} cannot be empty | validation | error | validation, argument, steam |
| steam currency must be a two-letter storefront country code | validation | error | validation, argument, steam, i18n |
| steam ${label} must be a positive integer | validation | error | validation, argument, steam |
| steam ${label} must be <= ${maxValue} | validation | error | validation, argument, steam, limits |
| steam app id is required (e.g. "620" for Portal 2) | validation | error | validation, argument, steam, missing-argument |
| steam app id "${value}" must be a positive integer | validation | error | validation, cli-argument, steam |
| ${label} request failed: ${err?.message ?? err} | exception | error | network, http, steam |
| ${label} returned HTTP 429 (rate limited) | exception | warning | http, rate-limit, steam |
| ${label} returned HTTP ${resp.status} | exception | error | http, server-error, steam |
| ${label} returned malformed JSON: ${err?.message ?? err} | exception | error | json, http, steam |
| Substack post search failed: HTTP ${resp.status} | exception | error | http, search, substack |
| Substack publication search failed: HTTP ${resp.status} | exception | error | http, search, substack |
| Browser session required for substack feed | exception | error | browser-session, substack, precondition |
| Browser session required for substack archive | exception | error | browser-session, substack, precondition |
| Suno Clerk __session/__client cookie missing | exception | error | auth, cookie, clerk, suno |
| ${probe.detail} | exception | error | auth, clerk, session-expired, suno |
| HTTP ${probe.httpStatus} from clerk.suno.com | exception | error | network, http, clerk, rate-limit |
| Suno whoami failed: ${probe.detail} | exception | error | network, browser, clerk, suno |
| Unexpected Suno probe: ${JSON.stringify(probe)} | exception | error | api-change, clerk, suno, browser |
| Waiting for Suno Clerk __session/__client cookie | exception | warning | auth, login-flow, clerk, polling |
| clip-id required (UUID or /song/<id> URL) | validation | error | validation, argument, cli, suno |
| Invalid clip-id: ${raw} | validation | error | validation, argument, url, suno |
| All requested formats require --confirm-paid true | validation | error | validation, billing, paid-content, cli |
| Suno feed lookup failed: ${feedRes?.error || 'unknown'} | exception | error | network, api, suno, feed |
| Suno feed lookup returned malformed clips payload | exception | error | suno, api-schema, network, response-validation |
| Clip ${clipId} not found in your account. Confirm at ${SUNO_ | exception | error | suno, not-found, clip-id, account-mismatch |
| Clip ${clipId} status is "${clip.status}" — not complete yet | exception | warning | suno, async, polling, race-condition |
| Suno download wrote no files for clip ${clipId} | exception | error | suno, download-failed, filesystem, browser-automation |
| Unsupported --model "${model}" | validation | error | suno, cli, argument-validation, invalid-model |
| Either provide a Simple-mode prompt as the positional argume | validation | error | suno, cli, argument-validation, missing-argument |
| --tags and --negative-tags only apply in Custom mode (alongs | validation | error | suno, cli, argument-validation, incompatible-flags |
| All requested formats require --confirm-paid true | validation | error | suno, cli, billing, argument-validation |
| Suno generation needs a resolved plan id for the user_tier f | exception | error | suno, session, billing, account-state |
| Suno captcha pre-flight failed${captcha?.status ? ` (HTTP ${ | exception | error | suno, captcha, anti-bot, network |
| Suno requires a CAPTCHA challenge for this account/IP right | exception | error | captcha, browser-automation, anti-bot |
| Suno generation needs ~10 credits; you have ${session.totalC | exception | error | quota, credits, billing |
| Suno generation returned malformed clips payload. | exception | error | api-contract, schema-validation, browser-automation |
| Suno generation returned malformed clip identity. | exception | error | api-contract, schema-validation, data-integrity |
| Suno accepted the request but returned no clip ids. | exception | error | api-contract, empty-response, content-moderation |
| All Suno clips failed (${errors}). Open ${SUNO_URL}/song/${c | exception | error | generation-failed, timeout, content-moderation |
| Suno download wrote no files for clip ${clip.id} | exception | error | download, filesystem, auth |
| Suno feed lookup failed (HTTP ${result?.status || '?'}). | exception | error | http, auth, rate-limit |
| Suno feed lookup returned malformed clips payload | exception | error | schema-validation, api-contract, defensive-check |
| No Suno clips found in your library. | exception | warning | empty-result, pagination, account-state |
| Suno feed lookup returned malformed clip identity | exception | error | suno, api-schema, cli, data-validation |
| Unsupported --formats value(s): ${unknown.join(', ')} | validation | error | cli, argument-validation, suno, formats |
| ${label} must be a positive integer | validation | error | cli, argument-validation, input-validation |
| ${label} must be a non-negative integer | validation | error | cli, argument-validation, pagination |
| ${label} must be a number between 0 and 1 | validation | error | cli, argument-validation, suno |
| Suno session check failed (${detail}). Open https://suno.com | exception | error | auth, suno, session-expired, browser-automation |
| Suno session check failed (${detail}). | exception | error | network, suno, browser-automation, session |
| Suno API rejected request (HTTP ${status}). Re-login on suno | exception | error | auth, suno, http-401, http-403, jwt |
| Suno API: insufficient credits (HTTP 402). ${detail} | exception | error | suno, credits, billing, http-402 |
| Suno generate failed (HTTP ${status}): ${detail} | exception | error | suno, http-error, api, rate-limit |
| Suno generate returned malformed JSON payload. | exception | error | api, json, suno, response-shape |
| Submission accepted but Suno returned no clip ids. Raw: ${JS | exception | error | api, empty-result, suno, response-shape |
| Suno feed API rejected (HTTP ${result.status}). Re-login. | exception | error | auth, session-expired, http-401, suno |
| Suno feed API failed while polling clips (HTTP ${result.stat | exception | error | network, http-error, suno, rate-limit |
| Suno feed API returned malformed JSON while polling clips | exception | error | api, json, suno, polling |
| Suno feed API returned malformed clips payload | exception | error | api, schema-change, suno, response-shape |
| Suno generation did not complete within ${timeoutSeconds}s. | exception | error | timeout, suno, polling, async |
| taobao add-cart requires a logged-in Taobao session | exception | error | auth, taobao, session-required, login |
| Taobao tracknick cookie missing — anonymous | exception | error | auth, taobao, cookies, session-expired |
| Taobao my_itaobao redirected to login: ${finalUrl} | exception | error | auth, taobao, redirect, session-expired |
| Taobao tracknick cookie absent after navigation | exception | error | auth, cookies, taobao, session-expired |
| Taobao my_itaobao rendered but no user_id extractable — stal | exception | error | scraping, dom-parse, taobao, stale-session |
| Waiting for Taobao tracknick cookie | exception | info | auth, polling, taobao, login-flow |
| taobao cart requires a logged-in Taobao session | exception | error | auth, taobao, cart, scraping |
| taobao search requires a logged-in Taobao session | exception | error | auth, taobao, search, scraping |
INVALID_ARGUMENT --limit must be a positive integer no greater than 100 | validation | warning | cli, validation, argument-error, ths |
HTTP_ERROR ths hot-rank failed: HTTP ${resp.status} | http | error | http, network, ths, api |
NO_DATA ths hot-rank API returned no stock data | error_code | warning | no-data, ths, api, empty-response |
| Tieba may have blocked the hot page, or the DOM structure ma | exception | error | scraping, dom-parse, tieba, empty-result |
| Tieba may have blocked the forum page, or the DOM structure | exception | error | scraping, tieba, empty-result, forum |
| Tieba did not land on the requested thread page | exception | error | tieba, scraping, wrong-page, redirect |
| Tieba did not land on the requested page | exception | error | tieba, scraping, pagination |
| Tieba may have blocked the thread page, or the DOM structure | exception | error | tieba, scraping, empty-result, anti-bot |
| tieba search currently only supports --page ${MAX_SUPPORTED_ | validation | error | tieba, search, unsupported-parameter, pagination |
| Tieba may have blocked the result page, or the DOM structure | exception | error | tieba, search, empty-result, anti-bot |
| TikTok session cookies (sessionid/sid_tt/uid_tt) missing | exception | error | tiktok, auth, cookies, session |
| TikTok universal data has no owner user — identity not rehyd | exception | error | tiktok, auth, session, rehydration |
| Waiting for TikTok session cookies | exception | warning | tiktok, auth, login-polling, cookies |
| BUTTON_NOT_FOUND: comment input not found (page not rendered | exception | error | tiktok, comment, selector, dom |
| BUTTON_NOT_FOUND: Post button never became enabled (text not | exception | error | tiktok, comment, selector, rate-limit |
| STATE_VERIFY_FAIL: comment count did not increase within 8s; | exception | error | tiktok, timeout, dom-verification, browser-automation |
| ${label} must be a positive integer | validation | error | argument-validation, cli, tiktok |
| ${label} must be <= ${maxValue} | validation | error | argument-validation, cli, pagination, tiktok |
| cursor must be a non-negative integer string | validation | error | argument-validation, pagination, cli, tiktok |
| cursor must be a safe integer | validation | error | argument-validation, pagination, javascript, tiktok |
| TikTok Studio item_list returned an empty response | exception | error | network, empty-response, tiktok, api |
| TikTok Studio item_list requires login: ${statusMsg || statu | exception | error | authentication, tiktok, session-expired, api |
| TikTok Studio item_list failed: ${statusMsg || statusCode} | exception | error | api, tiktok, server-error, rate-limit |
| TikTok Studio item_list requires login: ${statusMsg} | exception | error | authentication, tiktok, session-expired, cookies |
| TikTok Studio item_list failed: ${statusMsg} | exception | error | api, tiktok, server-error, status-message |
| Failed to fetch TikTok Studio item_list: ${getErrorMessage(e | exception | error | tiktok, puppeteer, network, command-execution |
| TikTok Studio item_list returned an unreadable response | exception | error | tiktok, serialization, response-shape, command-execution |
| TikTok Studio item_list network failure: ${result.networkErr | exception | error | tiktok, network, fetch-failed, connectivity |
| TikTok Studio item_list requires login (HTTP ${result.status | exception | error | tiktok, auth, http-401, http-403, session-expired |
| TikTok Studio item_list failed: ${detail} | exception | error | tiktok, http-error, rate-limit, api |
| TikTok Studio item_list returned videos without stable video | exception | error | tiktok, schema-change, missing-field, api |
| No creator videos were returned. Confirm the current Chrome | exception | warning | tiktok, empty-result, no-data, auth |
| No videos found on /explore + suffix | exception | error | tiktok, scraping, selectors, empty-result, dom-change |
| TikTok returned an empty recommend feed | exception | warning | tiktok, empty-result, recommend-feed, scraping |
| BUTTON_NOT_FOUND: Follow button not on profile page (logged | exception | error | tiktok, dom, selectors, auth, scraping |
| STATE_VERIFY_FAIL: follow button did not flip to Following w | exception | error | tiktok, browser-automation, rate-limit, state-verification |
| AUTH_REQUIRED: cannot resolve viewer secUid (login required) | exception | error | tiktok, authentication, cookies, login-required |
| No following entries returned + suffix | exception | error | tiktok, empty-result, api, pagination |
| TikTok returned no following entries | exception | warning | tiktok, empty-result, emptyresulterror |
| No friend suggestions returned by TikTok + suffix | exception | error | tiktok, empty-result, recommendations, api |
| TikTok returned no friend suggestions | exception | warning | tiktok, empty-result, emptyresulterror |
| Like button not found - make sure you are logged in | exception | error | tiktok, dom-selector, authentication, browser-automation |
| No live streams returned${suffix} | exception | error | tiktok, live, empty-result, api |
| TikTok returned no live streams | exception | warning | tiktok, live, empty-result, emptyresulterror |
| No notifications returned for ${noticeLabel}${suffix} | exception | error | tiktok, notifications, empty-result, api |
| TikTok returned no notifications | exception | warning | tiktok, scraping, empty-result, auth |
| Could not parse profile data | exception | error | tiktok, scraping, parse-error, dom-change, bot-detection |
| Favorites button not found - make sure you are logged in | exception | error | tiktok, scraping, selector-not-found, auth, dom |
| Search failed: HTTP ${res.status} | exception | error | tiktok, http, rate-limit, scraping, auth |
BUTTON_NOT_FOUND BUTTON_NOT_FOUND: neither Follow nor Following button found (page not rendered, | error_code | error | tiktok, automation, selector-not-found, dom, auth |
STATE_VERIFY_FAIL STATE_VERIFY_FAIL: relation did not flip back to Follow within 5s; unfollow may | error_code | error | tiktok, automation, state-verification, rate-limit, retry |
| Like button not found - make sure you are logged in | exception | error | tiktok, scraping, selector-not-found, auth, dom |
| Favorites button not found - make sure you are logged in | exception | error | dom-selector, authentication, browser-automation, tiktok |
| No videos found for @${username} | exception | error | tiktok, api, empty-result, authentication |
| No videos found for @${username}${suffix} | exception | error | tiktok, empty-result, api, rate-limit |
| ${name} must be a positive integer | validation | error | validation, argument-error, cli, input-validation |
| ${name} must be <= ${max} | validation | error | validation, argument-error, cli, input-validation |
| username is required | validation | error | validation, argument-error, cli, missing-argument |
| username contains unsupported characters | validation | error | validation, argument-error, cli, input-validation |
| unsupported notification type: ${value} | validation | error | validation, argument-error, cli, enum |
| comment text is required | validation | error | validation, argument-error, cli, missing-argument |
| comment text must be <= ${COMMENT_TEXT_MAX} characters (got | validation | error | validation, input-length, argument-error |
| video URL is required | validation | error | validation, missing-argument, argument-error |
| invalid video URL: ${raw} | validation | error | validation, url-parsing, argument-error |
| URL must be on tiktok.com (got ${parsed.hostname}) | validation | error | validation, url-parsing, domain-validation |
| URL must follow /@<username>/video/<id> format | validation | error | validation, url-format, argument-error |
| ${authMessage} | exception | error | auth, session-expired, scraping |
| ${failureMessage}: ${message} | exception | error | network, upstream-failure, scraping |
| ${message} | exception | error | scraping, unexpected-response, command-execution |
| HTTP ${res.status} from ${requestUrl}: ${text.slice(0, 160)} | http | error | http, network, tiktok, api |
| invalid JSON from ${requestUrl}: ${error.message} | exception | error | json, parsing, network, tiktok |
AUTH_REQUIRED AUTH_REQUIRED: ${label} API failed: ${message} | error_code | error | auth, tiktok, api, session |
| API failed: | exception | error | api, tiktok, business-error |
RATE_LIMITED RATE_LIMITED: TikTok rate limit / captcha detected | error_code | warning | rate-limit, captcha, tiktok, throttling |
| toutiao articles render failed: ${error?.message || error} | exception | error | browser-automation, toutiao, render, command-execution |
| Toutiao creator articles require a logged-in mp.toutiao.com | exception | error | auth, toutiao, session, login |
| 未抓取到创作者后台文章 (page=${articlePage})。可能页面尚未完成渲染或无文章。 | exception | error | scraping, empty-result, browser-automation, toutiao |
| Toutiao sessionid cookie missing | exception | error | auth, session, cookie, toutiao |
| ${probe.detail} | exception | error | auth, stale-session, browser-automation, toutiao |
| Unexpected Toutiao probe: ${JSON.stringify(probe)} | exception | error | browser-automation, unexpected-state, probe, toutiao |
| Waiting for Toutiao sessionid cookie | exception | warning | auth, login-flow, polling, cookie, toutiao |
| toutiao hot-board request failed: ${error?.message || error} | exception | error | network, fetch, http-request, cli |
| toutiao hot-board failed: HTTP ${resp.status} | exception | error | http, http-status, rate-limit, anti-bot |
| toutiao hot-board returned malformed JSON: ${error?.message | exception | error | json, parse-error, anti-bot, http |
| toutiao hot-board returned status=${payload.status} | exception | error | api, response-contract, upstream, cli |
| toutiao hot-board returned error: ${payload.error || payload | exception | error | api, upstream, rate-limit, response-contract |
| 上游 hot-board 返回空列表。 | exception | warning | empty-result, upstream-api, cli, no-data |
| toutiao recommend request failed: ${error?.message || error} | exception | error | network, http, fetch-failure, cli |
| toutiao recommend failed: HTTP ${resp.status} | exception | error | http, http-status, upstream-api, rate-limit |
| toutiao recommend returned malformed JSON: ${error?.message | exception | error | json, parsing, upstream-api, anti-bot |
| toutiao recommend returned message=${payload.message} | exception | error | upstream-api, business-error, api-contract |
| toutiao recommend returned a non-array data field | exception | error | schema, api-contract, upstream-api, type-error |
| 频道 ${category} 返回空列表。 | exception | warning | empty-result, upstream-api, cli, no-data |
| --page must be an integer between ${ARTICLES_MIN_PAGE} and $ | validation | error | argument-validation, cli, input-error |
| --page must be between ${ARTICLES_MIN_PAGE} and ${ARTICLES_M | validation | error | argument-validation, cli, range-check |
| --limit must be an integer between ${RECOMMEND_MIN_LIMIT} an | validation | error | argument-validation, cli, input-error |
| --limit must be between ${RECOMMEND_MIN_LIMIT} and ${RECOMME | validation | warning | cli, argument-validation, toutiao |
| --category must be one of ${RECOMMEND_CATEGORIES.join(', ')} | validation | warning | cli, argument-validation, enum-value, toutiao |
| --limit must be an integer between ${HOT_MIN_LIMIT} and ${HO | validation | warning | cli, argument-validation, type-error, toutiao |
| --limit must be between ${HOT_MIN_LIMIT} and ${HOT_MAX_LIMIT | validation | warning | cli, argument-validation, toutiao |
| Malformed toutiao recommend row: off-domain source_url ${JSO | exception | error | url-validation, data-integrity, toutiao |
| Malformed toutiao recommend row: invalid source_url ${JSON.s | exception | error | url-validation, data-integrity, toutiao |
| Malformed toutiao recommend row: missing group_id and articl | exception | error | data-integrity, missing-field, toutiao |
| Malformed toutiao recommend row: invalid group_id ${JSON.str | exception | error | data-integrity, format-validation, toutiao |
| Malformed toutiao recommend row: group_id/source_url mismatc | exception | error | data-integrity, consistency-check, toutiao |
| Trae CN approval click failed: ${failed?.Action || 'unknown | exception | error | automation, ui-click, trae-cn, approval-flow |
| Current status=${latestActivity?.Status ?? ''}, approvalPend | exception | error | timeout, approval-pending, cdp, automation |
| No Trae CN response was visible before the timeout. The agen | exception | error | timeout, no-response, cdp, automation |
| Clicked Trae CN new task via ${clicked.method}; fresh empty | exception | error | ui-automation, cdp, selector-stale, trae-cn |
| Set OPENCLI_CDP_ENDPOINT, for example http://127.0.0.1:39240 | validation | error | argument-validation, env-var, cli |
| Failed to fetch CDP targets: HTTP ${response.status} | exception | error | network, cdp, http, debugger-protocol |
| --timeout must be a positive integer (seconds) | validation | error | argument-validation, cli, input-validation |
| --limit must be an integer between 1 and 200 | validation | error | argument-validation, cli, input-validation |
| --max-chars must be an integer between 0 and 1000000 | validation | error | argument-validation, cli, input-validation |
| --duration must be an integer between 1 and 3600 seconds | validation | error | argument-validation, cli, input-validation |
| --interval must be an integer between 1 and 300 seconds | validation | error | argument-validation, cli, input-validation |
| --approve-kinds must contain only terminal, delete, keep, or | validation | error | cli, argument-validation, input-whitelist |
| --approve-kinds must contain at least one approval kind | validation | error | cli, argument-validation, empty-input |
| --limit must be an integer between 1 and 20 | validation | error | cli, argument-validation, range-check |
| text must not be empty | validation | error | cli, argument-validation, empty-string |
| No conversation history found in Trae CN. | exception | error | automation, empty-result, dom-scraping |
| Trae CN prompt submission was not verified | exception | error | automation, verification-timeout, ui-automation |
| Model "${wanted}" is ambiguous in Trae CN model menu: ${cont | validation | error | automation, ambiguity, argument-validation |
| Model "${wanted}" not found in Trae CN model menu | validation | error | automation, argument-validation, model-not-found |
| Trae CN model switch did not verify the requested model: req | exception | error | automation, ui-verification, timing |
| ${result?.reason || `Could not switch to ${panelName} panel. | exception | error | automation, ui-automation, panel-switch |
| ${label} not found: ${p} | exception | error | filesystem, missing-file, trae-solo, prerequisite |
| Trae is actively writing (database.db-wal touched ${(ageMs / | exception | warning | sqlite, concurrency, locked-database, trae-solo |
| state.vscdb not found: ${db} | exception | error | sqlite, missing-file, trae-solo, prerequisite |
| sqlite3 failed on ${path.basename(db)}: ${e.message} | exception | error | sqlite, locked-database, subprocess, trae-solo |
| tab must be configured / run-history / task-template | validation | error | argument-validation, cli, trae-solo |
| No items in tab '${tabLabel}'. | exception | warning | empty-result, ui-automation, trae-solo |
| No projects matched "${kwargs.project}". Try without --proje | exception | warning | empty-result, filter-mismatch, trae-solo |
| target must be "code" or "work" | validation | error | argument-validation, cli, trae-solo |
| Mode toggle did not reach requested state "${want}". | exception | error | ui-automation, dom-selector, toggle-failed, trae-solo |
| ${stage1.reason} | exception | error | ui-automation, dom-selector, trae-solo |
| No model matched: '${name}' | exception | error | ui-automation, selector, trae, model-selection |
| Click on model option failed. | exception | error | ui-automation, click-failure, trae, flaky |
| Model click did not verify selected model "${chosenLabel}". | exception | error | ui-automation, verification, trae, model-selection |
| storage | validation | error | argument-validation, storage, trae |
| No keys match "${flt}". | exception | warning | empty-result, storage, filter, trae |
| is required | validation | error | argument-validation, missing-argument, storage, trae |
| Key not found in ${store}: ${key} | exception | error | key-not-found, storage, trae |
| document.cookie is empty (Trae uses Electron session cookies | exception | info | cookies, httponly, electron, trae |
| No IndexedDB databases. | exception | info | indexeddb, empty-result, electron, trae |
| settings.json not found: ${TRAE_SETTINGS_JSON} | exception | warning | file-not-found, settings, trae, config |
| Failed to parse settings.json: ${e.message} | exception | error | json, parsing, config |
| settings.json is empty (or contains only defaults). | exception | warning | empty-result, config, json |
| No skills found under ~/.trae/skills/. | exception | warning | empty-result, filesystem, skills |
| No installed skills. | exception | warning | empty-result, config, skills |
| name required | validation | error | argument, validation, cli |
| Skill "${name}" not found. | exception | error | filesystem, not-found, skills |
| No installed skills visible. | exception | warning | empty-result, ui-automation, skills |
| keyword cannot be empty | validation | error | argument, validation, search |
| No skills matched "${keyword}". | exception | warning | empty-result, search, ui-automation |
| name required (or pass --list) | validation | error | argument, validation, cli |
| Category click failed. | exception | error | browser-automation, dom-selector, puppeteer |
| Workspace state.vscdb not found: ${db} | exception | error | filesystem, bad-argument, cli |
| No keys match "${flt}". | exception | warning | empty-result, filter, cli |
| key required | validation | error | argument-validation, cli, missing-argument |
| Key not found: ${key} | exception | error | key-lookup, cli, state-db |
| state.vscdb not found: ${TRAE_GLOBAL_STATE_DB} | exception | error | filesystem, missing-file, environment |
| No recent workspaces recorded. | exception | warning | empty-result, state-db, cli |
| history.recentlyOpenedPathsList has no entries. | exception | info | empty-result, state-db |
| No tasks on disk. | exception | warning | empty-result, filesystem, cli |
| task-id required | validation | error | argument-validation, missing-argument, cli |
| No snapshot repo for task ${tid}. | exception | error | filesystem, git, missing-snapshot |
| No chat-turn refs in ${repo}. | exception | warning | git, empty-result, tags |
| No tag matched turn "${t}". | exception | error | git, tags, lookup-failed |
| No after-chat-turn tags found. | exception | error | git, tags, empty-result |
| workspaceStorage not found: ${TRAE_WORKSPACE_STORAGE} | exception | error | filesystem, environment, missing-directory |
| No workspace storage entries. | exception | info | empty-result, filesystem |
| extensions.json not found: ${TRAE_EXTENSIONS_JSON} | exception | info | filesystem, extensions, missing-file |
| Failed to parse extensions.json: ${e.message} | exception | error | json, parse-error, corruption |
| No extensions installed. | exception | info | empty-result, trae-solo, local-state, no-data |
| Trip.com is asking for a verification; complete it in your b | exception | warning | captcha, anti-bot, auth-required, scraping, trip-com |
| No attractions for "${query}" | exception | info | empty-result, no-data, scraping, trip-com |
| Trip.com things-to-do page did not render product cards (sta | exception | error | render-timeout, spa-hydration, scraping, trip-com |
| Trip.com attraction DOM extraction returned malformed rows | exception | error | dom-parsing, selector-drift, scraping, trip-com |
| Trip.com attraction cards rendered but parser did not find r | exception | error | dom-parsing, selector-drift, empty-result, trip-com |
| Trip.com is asking for a verification; complete it in your b | exception | warning | captcha, anti-bot, auth-required, scraping, trip-com |
| No car rentals for city id ${cityId} | exception | info | empty-result, no-data, bad-parameter, trip-com |
| Trip.com car listing did not render (state=${String(waitResu | exception | error | render-timeout, spa-hydration, bad-parameter, trip-com |
| Trip.com car DOM extraction returned malformed rows | exception | error | dom-parsing, selector-drift, scraping, trip-com |
| Trip.com car cards rendered but parser did not find required | exception | error | scraping, dom-parsing, markup-drift, trip-com |
| Trip.com is asking for a verification; complete it in your b | exception | error | captcha, auth-required, bot-detection, trip-com |
| Trip.com deals page did not render deal tiles (state=${Strin | exception | error | scraping, page-load-timeout, dom-parsing, trip-com |
| Trip.com deals DOM extraction returned malformed rows | exception | error | scraping, serialization, dom-parsing, trip-com |
| Trip.com deals hub rendered but no promotion tiles parsed (t | exception | error | scraping, markup-drift, dom-parsing, trip-com |
| --from and --to must differ (got ${fromCode}) | validation | error | argument-validation, input-error, cli, trip-com |
| --depart must be before --return (got ${depart} .. ${ret}) | validation | error | argument-validation, date-validation, input-error, trip-com |
| Trip.com is asking for a verification; complete it in your b | exception | error | captcha, auth-required, bot-detection, trip-com |
| Trip.com flight page did not render flight cards (state=${St | exception | error | scraping, page-load-timeout, dom-parsing, trip-com |
| Trip.com flight DOM extraction returned malformed rows${reas | exception | error | scraping, dom-parsing, markup-drift, trip-com |
| No round-trip flights for ${fromCode} to ${toCode} on ${depa | exception | warning | empty-result, scraping, trip-com, flights |
| --from and --to must differ (got ${fromCode}) | validation | error | argument-validation, input-error, flights, trip-com |
| Trip.com is asking for a verification; complete it in your b | exception | error | captcha, anti-bot, auth-required, trip-com, scraping |
| Trip.com flight page did not render flight cards (state=${St | exception | error | scraping, timeout, dom-render, trip-com, flights |
| Trip.com flight DOM extraction returned malformed rows${reas | exception | error | scraping, dom-parsing, trip-com, flights |
| No flights for ${fromCode} to ${toCode} on ${date} | exception | warning | empty-result, scraping, flights, trip-com |
| --checkin must be before --checkout (got ${checkin} .. ${che | validation | error | argument-validation, dates, input-error, trip-com |
| Trip.com is asking for a verification; complete it in your b | exception | error | captcha, anti-bot, auth-required, trip-com, hotels |
| Trip.com hotel page did not render hotel cards (state=${Stri | exception | error | scraping, timeout, dom-render, trip-com, hotels |
| Trip.com hotel DOM extraction returned malformed rows | exception | error | scraping, dom-parsing, trip-com, hotels |
| No hotels for city ${cityId} on ${checkin} .. ${checkout} | exception | warning | scraping, empty-results, trip-com, hotels |
| Trip.com is asking for a verification; complete it in your b | exception | error | captcha, auth, scraping, trip-com, anti-bot |
| Trip.com hotel detail page did not expose SSR hotel data (st | exception | error | scraping, ssr, dom, trip-com, page-structure |
| Trip.com hotel detail SSR extraction returned malformed data | exception | error | scraping, ssr, extraction, trip-com, schema-changed |
| No detail exposed for hotel id ${hotelId} | exception | warning | scraping, empty-results, ssr, trip-com, hotels |
| --adults must be an integer between 1 and 9, got ${JSON.stri | validation | error | validation, cli, arguments, input-validation |
| --depart must be before --return (got ${depart} .. ${ret}) | validation | error | validation, cli, dates, arguments |
| Could not resolve origin "${from}" to a Trip.com city; run ' | validation | error | validation, cli, city-resolution, trip-com, arguments |
| Could not resolve destination "${to}" to a Trip.com city; ru | validation | error | validation, cli, city-resolution, trip-com, arguments |
| --from and --to must differ (both resolved to ${dest.name}) | validation | error | validation, cli, city-resolution, arguments, trip-com |
| No flight+hotel packages for ${origin.name} to ${dest.name} | exception | info | empty-result, travel-api, trip-com |
| Trip.com package search returned ${groups.length} group(s) b | exception | error | schema-drift, parsing, trip-com |
| No destinations for "${query}" | exception | info | empty-result, search, trip-com |
| --type must be private or group, got ${JSON.stringify(raw)} | validation | warning | argument-validation, cli, bad-argument |
| Trip.com tour search returned malformed data | exception | error | scraping, browser-automation, trip-com |
| Trip.com is asking for a verification; complete it in your b | exception | warning | captcha, bot-detection, authentication |
| No ${kwargs.type || 'private'} tours for "${query}" | exception | info | empty-result, tours, trip-com |
| Trip.com tour search did not return results (state=${String( | exception | error | scraping, unexpected-state, trip-com |
| Trip.com tour search captured products but none carried a na | exception | error | schema-drift, scraping, markup-change |
| Trip.com is asking for a verification; complete it in your b | exception | warning | captcha, bot-detection, trains |
| Trip.com train timetable did not render (state=${String(wait | exception | error | scraping, dom-render, trip-com, puppeteer |
| Trip.com train DOM extraction returned malformed rows | exception | error | scraping, dom-parsing, trip-com, schema-drift |
| No timetable for ${from} to ${to} (${country}) | exception | warning | empty-result, scraping, trip-com, no-data |
| Trip.com is asking for a verification; complete it in your b | exception | error | captcha, anti-bot, auth-required, scraping |
| No airport transfers for ${city} (${airport}) | exception | warning | empty-result, trip-com, scraping, no-data |
| Trip.com transfer listing did not render (state=${String(wai | exception | error | scraping, dom-render, trip-com, timeout |
| Trip.com bounced ${city} / ${airport} to the transfer landin | exception | error | scraping, redirect, trip-com, url-validation |
| Trip.com transfer DOM extraction returned malformed rows | exception | error | scraping, dom-parsing, trip-com, schema-drift |
| Trip.com transfer cards rendered but parser did not find req | exception | error | scraping, dom-parsing, trip-com, selector-drift |
| --${name} is required (3-letter IATA code, e.g. LON, NYC) | validation | error | argument-error, validation, cli, missing-argument |
| --${name} must be a 3-letter IATA code, got ${JSON.stringify | validation | error | cli, argument-validation, iata-code |
| --${name} is required (YYYY-MM-DD) | validation | error | cli, missing-argument, date |
| --${name} must be YYYY-MM-DD, got ${JSON.stringify(raw)} | validation | error | cli, argument-validation, date-format |
| --${name} has invalid month/day: ${value} | validation | error | cli, argument-validation, date |
| --${name} is not a real calendar date: ${value} | validation | error | cli, argument-validation, calendar-date |
| --limit must be an integer between ${MIN_LIMIT} and ${MAX_LI | validation | error | cli, argument-validation, integer |
| --limit must be between ${MIN_LIMIT} and ${MAX_LIMIT}, got $ | validation | error | cli, argument-validation, range |
| --${name} is required (numeric Trip.com city id, e.g. 338 fo | validation | error | cli, missing-argument, trip-com |
| --${name} must be a numeric Trip.com city id, got ${JSON.str | validation | error | cli, argument-validation, trip-com |
| --${name} is required (numeric Trip.com hotel id, discover v | validation | error | cli, missing-argument, trip-com |
| --${name} must be a numeric Trip.com hotel id, got ${JSON.st | validation | error | cli, argument-validation, input-format |
| --${name} is required (a destination or attraction keyword) | validation | error | cli, missing-argument, argument-validation |
| --${name} is too long (max 60 chars): ${JSON.stringify(raw)} | validation | error | cli, argument-validation, input-length |
| Trip.com poiSearch fetch failed: ${err instanceof Error ? er | exception | error | network, fetch, http |
| Trip.com poiSearch failed with status ${response.status} | exception | error | http, api, status-code, rate-limit |
| Trip.com poiSearch returned invalid JSON: ${err instanceof E | exception | error | http, json-parsing, api-response |
| Trip.com poiSearch returned malformed payload: missing resul | exception | error | api-response, schema-validation, contract |
| Trip.com package search fetch failed: ${err instanceof Error | exception | error | network, fetch, http |
| Trip.com package search failed with status ${response.status | exception | error | http, api, status-code, rate-limit |
| Trip.com package search returned invalid JSON: ${err instanc | exception | error | http, json-parsing, api-response |
| Trip.com package search returned malformed payload: missing | exception | error | api, schema-validation, upstream, trip-com |
| TVmaze returned no shows matching "${query}". | exception | info | empty-results, search, api, tvmaze |
| TVmaze returned no show for id ${id}. | exception | info | empty-results, api, tvmaze, lookup |
| tvmaze ${label} cannot be empty | validation | error | validation, argument-error, input, tvmaze |
| tvmaze show id is required and must be a positive integer | validation | error | validation, argument-error, input, tvmaze |
| tvmaze ${label} must be a positive integer | validation | error | validation, cli, arguments, input-validation |
| tvmaze ${label} must be <= ${maxValue} | validation | error | validation, cli, arguments, rate-limits |
| ${label} request failed: ${err?.message ?? err} | exception | error | network, fetch, dns, connectivity |
| ${label} returned HTTP ${resp.status} | exception | error | http, api, network |
| ${label} returned malformed JSON: ${err?.message ?? err} | exception | error | json, parsing, network |
| Browser session required for twitter accept | exception | error | browser, playwright, session |
| ${label} cannot be empty | validation | warning | arguments, validation, cli |
| Invalid JSONL record in ${filePath} at line ${index + 1}: ${ | exception | error | json, jsonl, parsing, state |
| --max-pages must be an integer between 1 and ${HARD_MAX_PAGI | validation | warning | arguments, validation, pagination |
| Could not resolve article ${tweetId} to a tweet ID. The arti | exception | error | browser, scraping, twitter |
| Not logged into x.com (no ct0 cookie) | exception | error | auth, cookies, twitter |
| Twitter article response payload is malformed | exception | error | browser, api, payload |
| message (describeTwitterApiError('TweetResultByRestId', rawR | exception | error | api, http, auth, twitter |
| rawResult.error + (rawResult.hint ? ` (${rawResult.hint})` : | exception | error | twitter-api, in-page-error, authentication |
| Twitter/X ${label} returned a malformed Browser Bridge envel | exception | error | browser-bridge, envelope, contract-violation |
| Twitter/X profile link probe returned a malformed href | exception | error | dom-probe, type-mismatch, browser-bridge |
| Twitter/X auth cookies are missing | exception | error | authentication, cookies, x-com |
| Could not detect the logged-in Twitter/X profile link | exception | error | authentication, dom-probe, screen-name |
| Waiting for Twitter/X auth cookies | exception | warning | authentication, polling, login-flow |
| Browser session required for twitter block | exception | error | browser-session, prerequisite, setup |
| ${result.message} Check the profile before retrying; the blo | exception | error | ui-automation, block-action, retry-safe |
| Could not parse Twitter bookmarks resume file ${filePath}: $ | exception | error | json-parse, resume-file, cli |
| Twitter bookmarks resume file ${filePath} has an invalid sha | exception | error | schema-validation, resume-file, cli |
| Resume file source mismatch: expected ${expected.source}, fo | validation | error | argument-error, resume-file, mismatch |
| Resume file output mismatch: expected ${expected.outputFile | validation | error | argument-error, resume-file, mismatch |
| Twitter bookmarks resume file ${filePath} is missing in-memo | exception | error | resume-file, in-memory, cli |
| Twitter bookmarks resume file ${filePath} count does not mat | exception | error | resume-file, consistency, cli |
| Twitter bookmarks resume file ${filePath} is already marked | exception | error | resume-file, already-complete, cli |
| Could not persist Twitter bookmarks resume state: ${error in | exception | error | filesystem, io-error, resume-file |
| --top-by-engagement cannot be combined with --output-file | validation | error | argument-error, cli, incompatible-flags |
| --output-file requires --all | validation | error | argument-error, cli, missing-flag |
| --resume-file requires --all | validation | error | cli, argument-validation, twitter |
| --output-file requires --resume-file so partial archives rem | validation | error | cli, argument-validation, resumability |
| Not logged into x.com (no ct0 cookie) | exception | error | auth, twitter, cookies, session-expired |
| Twitter bookmarks output file is missing for resume state: $ | exception | error | filesystem, resume-state, consistency |
| Refusing to overwrite existing Twitter bookmarks output file | validation | error | cli, filesystem, data-loss-prevention |
| Twitter bookmarks output file has ${jsonlState.count} record | exception | error | resume-state, consistency, data-integrity |
| Bookmarks | exception | error | twitter, api, rate-limit, auth |
twitter_bookmarks_protocol_error twitter_bookmarks_protocol_error: missing Bookmarks timeline instructions | error_code | error | twitter, protocol, schema-change, api |
twitter_bookmarks_repeated_cursor twitter_bookmarks_repeated_cursor: archive completion cannot be proven; resume s | error_code | error | pagination, twitter, cursor, protocol |
| No bookmarks found for the logged-in account | exception | warning | empty-result, twitter, bookmarks |
twitter_bookmarks_archive_incomplete twitter_bookmarks_archive_incomplete: stopped after ${pages} page(s); completion | error_code | error | twitter, pagination, archive, resume |
| twitter collection --until must be an RFC3339 timestamp | validation | error | twitter, cli, validation, rfc3339, timestamp |
| twitter collection --limit must be an integer between 1 and | validation | error | twitter, cli, validation, limit |
| twitter collection --page-delay must be an integer between 0 | validation | error | twitter, cli, validation, rate-limit, delay |
twitter_collection_unresolved_relationship twitter_collection_unresolved_relationship: repost target is unavailable | error_code | error | twitter, repost, data-integrity, protocol |
twitter_collection_protocol_error twitter_collection_protocol_error: timeline post is missing a stable ID | error_code | error | twitter, protocol, schema-change, timeline |
| Timeline is private or unavailable to the current X account; | exception | warning | twitter, privacy, auth, empty-result |
twitter_collection_invalid_timestamp twitter_collection_invalid_timestamp: post ${post.id} | error_code | error | twitter, validation, timestamp, pagination |
twitter_collection_request_error twitter_collection_request_error: UserTweets returned ${payload.error} | error_code | error | twitter, graphql, api-error, rate-limit |
twitter_collection_limit_reached twitter_collection_limit_reached: pagination cannot prove completion | error_code | error | twitter, pagination, limit, completeness |
twitter_collection_repeated_cursor twitter_collection_repeated_cursor: pagination cannot prove completion | error_code | error | twitter, pagination, cursor, loop |
twitter_collection_page_guard_hit twitter_collection_page_guard_hit: pagination cannot prove completion | error_code | error | twitter, pagination, max-pages, completeness |
| Browser session required for twitter delete | exception | error | twitter, browser-session, authentication, prerequisite |
| Nothing changed. Open the tweet in the browser and retry. | exception | error | twitter, delete, browser, mutation-failed |
| --limit must be an integer between 1 and ${MAX_LIMIT} | validation | error | argument-validation, cli, input-validation |
| Not logged into x.com (no ct0 cookie) | exception | error | auth, cookies, session, browser |
| Twitter device-follow returned non-JSON response: ${data.det | exception | error | network, json, scraping, rate-limit |
| Twitter device-follow fetch failed: ${data.detail || 'unknow | exception | error | network, browser, fetch, exception |
| Twitter device-follow returned HTTP ${data.error} | exception | error | auth, http-401, http-403, session |
| device_follow | exception | error | api, rate-limit, graphql, twitter |
| Twitter device-follow response was missing the expected time | exception | error | schema, parsing, twitter, api-change |
| Twitter device-follow entries could not be joined to tweet/u | exception | error | parsing, data-integrity, twitter, schema |
| No device-follow notification tweets found. | exception | warning | empty-result, twitter, no-data |
| --limit must be an integer between 1 and 1000 | validation | error | argument-validation, cli, input-validation |
| Twitter UserMedia returned GraphQL errors: ${JSON.stringify( | exception | error | twitter, graphql, api-response, scraping |
| Twitter UserMedia returned malformed user result | exception | error | twitter, graphql, api-response, schema-change |
| Twitter UserMedia returned malformed timeline instructions | exception | error | twitter, graphql, schema-change, api-response |
| Twitter UserMedia returned a tweet without rest_id | exception | error | twitter, graphql, parsing, scraping |
| twitter download requires either <username> or --tweet-url | validation | warning | cli, argument-validation, usage, twitter |
| Use either <username> or --tweet-url, not both | validation | error | cli, argument-validation, twitter |
| twitter download username must be a valid Twitter/X handle | validation | error | cli, argument-validation, twitter |
| twitter download failed: ${err?.message ?? String(err)} | exception | error | cli, error-wrapping, runtime-failure, twitter |
| Not logged into x.com (no ct0 cookie) | exception | error | auth, cookies, twitter |
| Twitter UserByScreenName returned GraphQL errors: ${JSON.str | exception | error | graphql, api-error, twitter |
| twitter download @${username} | exception | error | graphql, empty-result, twitter |
| Twitter UserMedia pagination returned the same cursor twice | exception | error | pagination, graphql, twitter |
| @${username} has no media | exception | warning | empty-result, twitter, media |
| Twitter UserMedia pagination reached the ${MAX_PAGINATION_PA | exception | error | pagination, limits, twitter |
| Twitter tweet media extraction returned malformed payload | exception | error | dom-scraping, twitter, malformed-response |
| twitter download ${target.id} | exception | warning | twitter, empty-result, media-extraction, scraping |
| At least one Twitter/X username is required | validation | error | argument-validation, twitter, cli-usage, empty-input |
| Invalid Twitter/X username: ${JSON.stringify(part.trim())} | validation | error | argument-validation, twitter, input-validation, regex |
| delay-ms must be an integer between 0 and ${MAX_DELAY_MS} | validation | error | argument-validation, twitter, cli-usage, range-validation |
| Browser session required for twitter follow-batch | exception | error | browser-session, twitter, command-execution, setup |
| Not logged into x.com (no ct0 cookie) | exception | error | auth, twitter, cookies, login-required |
| Browser session required for twitter follow | exception | error | browser-session, twitter, command-execution, setup |
| twitter follow confirmation | exception | warning | timeout, twitter, ui-automation, unconfirmed-write |
| Nothing changed. Open the profile in the browser and retry. | exception | error | twitter, command-execution, ui-automation, follow-failed |
| Malformed Twitter follower: missing screen_name | exception | error | twitter, graphql, schema-change, parsing |
| limit must be a positive integer | validation | error | validation, arguments, cli |
| twitter followers user must be a valid Twitter/X handle | validation | error | validation, arguments, twitter-handle |
| Not logged into x.com (no ct0 cookie) | exception | critical | auth, twitter, cookies, login |
| Could not find logged-in user profile link. Are you logged i | exception | error | auth, twitter, dom-selector, scraping |
| twitter followers user cannot be empty | validation | error | validation, arguments, twitter |
| twitter followers API capture | exception | error | timeout, twitter, network, interception |
| SPA navigation to Twitter followers failed | exception | error | twitter, spa, navigation, scraping |
| Twitter followers interceptor returned malformed responses | exception | error | interception, twitter, bridge, contract-violation |
| twitter followers pagination | exception | error | timeout, pagination, network, browser-automation |
| Twitter followers pagination repeated a cursor without retur | exception | error | pagination, infinite-loop, api-change, twitter |
| Twitter followers pagination exceeded ${MAX_PAGINATION_PAGES | exception | error | pagination, limit, rate-limiting, twitter |
| twitter followers | exception | error | empty-result, privacy, twitter, scraping |
| Malformed Twitter following user: missing screen_name | exception | error | schema-validation, api-change, twitter, data-integrity |
| twitter following --limit must be a positive integer | validation | error | argument-validation, cli, input-validation |
| twitter following user must be a valid Twitter/X handle | validation | error | argument-validation, cli, input-validation |
| x.com | exception | error | authentication, cookies, browser-automation, twitter |
| twitter following user cannot be empty | validation | error | arguments, usage, twitter |
| HTTP ${userLookup.error}: Failed to resolve Twitter user @${ | exception | error | http, twitter-api, rate-limit |
| Could not find user @${targetUser} | exception | error | twitter, user-lookup, not-found |
| Following | exception | error | http, rate-limit, twitter-api |
| twitter following | exception | warning | privacy, empty-result, twitter |
| Browser session required for twitter hide-reply | exception | error | browser-session, twitter, precondition |
| Nothing changed. Open the tweet in the browser and retry. | exception | error | twitter, browser-automation, command-execution |
| Browser session required for twitter like | exception | error | twitter, browser-session, precondition |
| twitter like confirmation | exception | warning | twitter, timeout, side-effects-uncertain |
| Nothing changed. Open the tweet in the browser and retry. | exception | error | twitter, browser-automation, command-execution |
| Could not parse Twitter likes resume file ${filePath}: ${err | exception | error | twitter, resume-file, json-parse, validation |
| Twitter likes resume file ${filePath} has an invalid shape | exception | error | twitter, resume-file, schema-validation, validation |
| Resume file source mismatch: expected ${expected.source}, fo | validation | error | twitter, resume-file, argument-error, mismatch |
| Resume file username mismatch: expected @${expected.username | validation | error | twitter, resume-file, argument-error, mismatch |
| Resume file output mismatch: expected ${expected.outputFile | validation | error | twitter, resume-file, argument-error, mismatch |
| Twitter likes resume file ${filePath} is missing in-memory t | exception | error | twitter, resume-file, schema-validation, validation |
| Twitter likes resume file ${filePath} count does not match i | exception | error | twitter, resume-file, state-mismatch, cli |
| Twitter likes resume file ${filePath} is already marked comp | exception | error | twitter, resume-file, idempotency, cli |
| Could not persist Twitter likes resume state: ${error instan | exception | error | filesystem, io, resume-file, persistence |
| --top-by-engagement cannot be combined with --output-file | validation | error | cli, argument-validation, twitter, flag-conflict |
| --output-file requires --all | validation | error | cli, argument-validation, twitter, missing-flag |
| --resume-file requires --all | validation | error | cli, argument-validation, twitter, missing-flag |
| --output-file requires --resume-file so partial archives rem | validation | error | cli, argument-validation, twitter, resume-file |
| twitter likes username must be a valid Twitter/X handle | validation | error | cli, argument-validation, twitter, username |
| x.com | exception | error | authentication, twitter, cookies, login |
| Could not find user @${username} | exception | error | api, not-found, twitter |
| Twitter likes output file is missing for resume state: ${out | exception | error | resume, filesystem, state |
| Refusing to overwrite existing Twitter likes output file: ${ | validation | error | argument, filesystem, overwrite-protection |
| Twitter likes output file has ${jsonlState.count} record(s), | exception | error | resume, data-integrity, archive |
| Likes | exception | error | api, http-error, twitter, rate-limit |
| twitter likes | exception | warning | privacy, empty-result, twitter |
twitter_likes_protocol_error twitter_likes_protocol_error: missing Likes timeline instructions | error_code | error | protocol, schema-change, scraping |
twitter_likes_repeated_cursor twitter_likes_repeated_cursor: archive completion cannot be proven; resume state | error_code | error | pagination, resume, api |
twitter_likes_archive_incomplete twitter_likes_archive_incomplete: stopped after ${pages} page(s); completion can | error_code | error | twitter, pagination, incomplete-data, cli |
| Failed to add @${username} to list ${listId}: HTTP ${addResu | exception | error | twitter, http, auth, network |
| Failed to add @${username} to list ${listId}: ${msg.slice(0, | exception | error | twitter, graphql, api-error, cli |
| Failed to add @${username} to list ${listId}: no member_coun | exception | error | twitter, graphql, schema-drift, cli |
| Failed to add @${username} to list ${listId}: invalid member | exception | error | twitter, graphql, malformed-response, cli |
| Failed to add @${username} to list ${listId}: member_count d | exception | error | twitter, state-mismatch, race-condition, cli |
| Failed to add @${username} to list ${listId}: member_count u | exception | error | twitter, graphql, verification-failed, cli |
| Invalid listId: ${JSON.stringify(kwargs.listId)}. Expected n | validation | error | twitter, argument-validation, cli, input-validation |
| twitter list-add username is required | validation | error | twitter, argument-validation, cli, input-validation |
| Not logged into x.com (no ct0 cookie) | exception | error | auth, cookies, csrf, twitter |
| Could not resolve user @${username} | exception | error | twitter, graphql, user-lookup, input-validation |
| Could not fetch lists: ${listsData.__error} | exception | error | twitter, graphql, http, network |
| List ${listId} not found among your lists (${parsedLists.len | exception | error | twitter, input-validation, graphql |
| Failed to add @${username} to list ${listId}: malformed muta | exception | error | serialization, browser-automation, twitter |
| At least one username is required | validation | error | argument-validation, cli, input |
| Invalid Twitter/X username: ${JSON.stringify(username)} | validation | error | argument-validation, regex, cli, input |
| Invalid interval: ${JSON.stringify(rawValue)}. Expected an i | validation | error | argument-validation, cli, range-check |
| List name is required | validation | error | argument-validation, cli, input |
| List name too long: ${name.length} chars (max ${NAME_MAX}) | validation | error | argument-validation, input-length, twitter |
| Description too long: ${description.length} chars (max ${DES | validation | error | argument-validation, input-length, twitter |
| Invalid mode: ${JSON.stringify(kwargs.mode)}. Expected "publ | validation | error | argument-validation, enum-value, twitter |
| Unexpected result from twitter list-create: ${JSON.stringify | exception | error | unexpected-response, browser-automation, internal-error |
| Twitter CreateList returned HTTP ${result.httpStatus} | exception | error | auth, http-401, http-403, twitter |
| HTTP ${result.httpStatus} from CreateList: ${snippet} | http | error | http, twitter, api-error, graphql |
| CreateList returned malformed JSON payload. Body: ${String(r | exception | error | json, twitter, response-parsing, graphql |
| CreateList failed: ${errors[0].message || JSON.stringify(err | exception | error | graphql, twitter, api-error, response-parsing |
| CreateList returned no list payload. Body: ${String(result.b | exception | error | graphql, twitter, response-parsing, schema-change |
| CreateList returned a list payload without a numeric list id | exception | error | twitter, schema-change, validation, graphql |
| CreateList returned a list payload without a list name. | exception | error | api-response, validation, twitter-graphql |
| CreateList returned name ${JSON.stringify(list.name)}, expec | exception | error | api-response, name-mismatch, validation |
| CreateList returned a list payload without list mode. | exception | error | api-response, validation, twitter-graphql |
| CreateList returned mode ${mode}, expected ${expectedMode}. | exception | critical | privacy, mode-mismatch, twitter-graphql |
| Not logged into x.com (no ct0 cookie) | exception | error | auth, cookie, csrf, twitter |
| Could not fetch lists: ${listsData.__error} | exception | error | http, network, twitter-graphql |
| Invalid listId: ${JSON.stringify(kwargs.listId)}. Expected n | validation | error | argument-validation, input-error, cli |
| Refusing to delete list without --confirm true | validation | warning | safety-guard, confirmation, cli |
| Not logged into x.com (no ct0 cookie) | exception | error | auth, cookie, csrf, twitter |
| List ${listId} not found among your lists (${listsBefore.len | exception | error | not-found, id-mismatch, twitter |
| Failed to delete list ${listId}: ${deleteResult?.message || | exception | error | browser-automation, ui-selector, command-execution, twitter |
| Failed to delete list ${listId}: list still appears in manag | exception | error | browser-automation, verification, eventual-consistency, twitter |
| Invalid listId: ${JSON.stringify(kwargs.listId)}. Expected n | validation | error | argument-validation, input-format, twitter, lists |
| twitter list-remove username is required | validation | error | argument-validation, missing-argument, twitter, lists |
| Not logged into x.com (no ct0 cookie) | exception | error | authentication, cookies, session, twitter |
| Could not resolve user @${username} | exception | error | twitter, user-lookup, graphql, authentication, browser-automation |
| Could not fetch lists: ${listsData.__error} | exception | error | twitter, graphql, http-error, authentication, rate-limit |
| List ${listId} not found among your lists. | exception | error | twitter, lists, invalid-argument, pagination |
| Failed to remove @${username} from list ${listId}: ${uiResul | exception | error | twitter, ui-automation, dom-selector, browser-automation |
| Requires up-to-date Chrome extension (nativeClick). | exception | error | chrome-extension, browser-automation, version-mismatch, native-click |
| Save button not found in dialog. | exception | error | dom-automation, selector-mismatch, twitter-ui |
| Could not verify list removal: ${listsAfter.__error} | exception | error | http-error, verification-failed, auth |
| Could not verify list removal: unexpected lists payload shap | exception | error | schema-change, payload-shape, twitter-api |
| Could not verify list removal: list ${listId} missing from p | exception | warning | verification-failed, pagination, twitter-api |
| Failed to remove @${username} from list ${listId}: member_co | exception | error | ui-automation, click-coordinates, verification-failed |
| Invalid listId: ${JSON.stringify(kwargs.listId)}. Expected a | validation | error | validation, input-error, cli |
| Not logged into x.com (no ct0 cookie) | exception | error | auth, cookies, csrf |
| describeTwitterApiError('ListLatestTweetsTimeline', data.err | exception | error | twitter-api, graphql-error, permissions |
| Not logged into x.com (no ct0 cookie) | exception | error | auth, cookies, csrf |
| describeTwitterApiError('ListsManagementPageTimeline', data. | exception | error | twitter-api, graphql-error, http-error |
| Twitter lists returned an unexpected payload shape | exception | error | twitter, payload-shape, schema-change, browser-automation |
| No owned or subscribed lists found | exception | info | twitter, empty-result, lists, no-data |
| twitter mute-word keyword cannot be empty | validation | error | argument-validation, cli, twitter, empty-input |
| Browser session required for twitter mute-word | exception | error | browser-automation, twitter, session-required, cli |
| ${result.message} Check muted words before retrying; the wor | exception | warning | timeout, twitter, browser-automation, idempotency |
| ${result?.message || 'Could not add muted word.'} | exception | error | twitter, browser-automation, ui-change, manual-fallback |
| SPA navigation to notifications failed. Twitter may have cha | exception | error | twitter, spa-navigation, routing, browser-automation |
| Too many images: ${paths.length} (max ${MAX_IMAGES}) | validation | error | validation, twitter, image-upload, limit-exceeded |
| Unsupported image format "${ext}". Supported: jpg, png, gif, | validation | error | validation, twitter, file-format, image-upload |
| Not a valid file: ${absPath} | validation | error | validation, file-not-found, twitter, path-resolution |
| ${context} returned a malformed result. | exception | error | browser-automation, type-validation, x-twitter |
| ${context} returned a malformed message. | exception | error | browser-automation, type-validation, x-twitter |
| ${context} returned a malformed error. | exception | error | browser-automation, type-validation, x-twitter |
| Twitter post completion returned only one of id/url. | exception | error | browser-automation, data-integrity, x-twitter |
| Twitter post completion returned a malformed status id. | exception | error | browser-automation, data-integrity, x-twitter |
| Twitter post completion returned a malformed status url. | exception | error | browser-automation, url-validation, x-twitter |
| Image upload failed (base64 fallback): ${upload?.error ?? 'u | exception | error | browser-automation, image-upload, x-twitter |
| Browser session required for twitter post | exception | error | browser-automation, session-required, x-twitter |
| twitter image upload | exception | error | timeout, image-upload, twitter |
| Could not type tweet text. | exception | error | twitter, auth, dom |
| twitter post | exception | warning | timeout, twitter, duplicate-prevention |
| Tweet failed to post. | exception | error | twitter, post-failure |
| Twitter profile response for @${screenName} is malformed | exception | error | twitter, api-response, schema |
| Twitter profile response for @${screenName} is missing profi | exception | error | twitter, api-response, schema |
| Twitter profile response for @${screenName} is missing profi | exception | error | twitter, api-response, schema |
| twitter profile username must be a valid Twitter/X handle | validation | error | validation, argument, twitter |
| x.com | exception | error | auth, twitter, session |
| Twitter profile response payload is malformed | exception | error | malformed-response, graphql, browser-automation |
| twitter profile | exception | warning | not-found, user-lookup, twitter-api |
| Browser session required for twitter quote | exception | error | browser-session, prerequisite, state |
| Use either --image or --image-url, not both. | exception | error | argument-validation, mutually-exclusive-options, cli |
| twitter quote | exception | error | timeout, unconfirmed-state, twitter-api, idempotency |
| Nothing was posted. Open the tweet in the browser and retry. | exception | error | post-failure, twitter-api, submission |
| Browser session required for twitter reply-dm | exception | error | browser-session, prerequisite, batch-operation |
| ${context} returned a malformed result. | exception | error | malformed-response, shape-validation, browser-automation, reply-flow |
| ${context} returned a malformed message. | exception | error | browser-automation, type-validation, twitter |
| ${context} returned a malformed status url. | exception | error | browser-automation, type-validation, twitter |
| Twitter reply completion returned a malformed status url. | exception | error | url-parsing, twitter, browser-automation |
| Browser session required for twitter reply | exception | error | browser-session, prerequisite, twitter |
| Use either --image or --image-url, not both. | exception | error | argument-conflict, cli-usage, twitter |
| Could not open the reply composer. | exception | error | browser-automation, twitter, ui-selector, dom-change |
| twitter reply | exception | error | timeout, twitter, browser-automation |
| Nothing was posted. Open the tweet in the browser and retry. | exception | error | twitter, browser-automation, submit-failure |
| Browser session required for twitter retweet | exception | error | browser-session, prerequisite, twitter |
| twitter retweet confirmation | exception | error | timeout, twitter, retweet, confirmation |
| Nothing changed. Open the tweet in the browser and retry. | exception | error | twitter, retweet, command-failed |
| Invalid --from username: ${JSON.stringify(kwargs.from)} | validation | error | validation, argument, twitter, search |
| twitter search query is empty | validation | error | validation, argument, twitter, search, empty-input |
| twitter search --limit must be a positive integer | validation | error | validation, argument, twitter, limit |
| Not logged into x.com (no ct0 cookie) | exception | error | auth, twitter, cookies, csrf, login |
| ${describeTwitterApiError('SearchTimeline', data.error)} | exception | error | twitter, api-error, graphql, rate-limit |
| twitter tweet URL cannot be empty | validation | error | validation, argument, twitter, empty-input |
| Invalid tweet URL: ${value} | validation | error | validation, argument, twitter, url |
| Invalid tweet URL host: ${value} | validation | error | validation, argument, twitter, url, host |
| Could not extract tweet ID from URL: ${value} | validation | error | argument-validation, url-parsing, twitter |
| Not logged into x.com (no ct0 cookie) | exception | error | authentication, cookies, csrf, twitter |
| ${describeTwitterApiError('TweetDetail', data.error)} | exception | error | api-error, rate-limit, twitter, graphql |
| Not logged into x.com (no ct0 cookie) | exception | error | authentication, cookies, csrf, twitter |
| ${describeTwitterApiError(endpoint, data.error)} | exception | error | api-error, rate-limit, twitter, graphql |
| Not logged into x.com (no ct0 cookie) | exception | error | authentication, cookies, csrf, twitter |
| twitter trending | exception | error | scraping, empty-result, dom-structure, twitter |
| twitter tweets --limit must be an integer between 1 and ${MA | validation | error | argument-validation, cli-flag, input-validation, twitter |
| twitter tweets --page-delay must be an integer between 0 and | validation | error | argument-validation, cli-flag, input-validation, twitter |
| ${describeTwitterApiError('UserTweets', data.error)} | exception | error | api-error, rate-limit, twitter, graphql |
| @${username} has no recent tweets | exception | warning | twitter, empty-result, scraping, authentication |
| Browser session required for twitter unblock | exception | error | twitter, browser-session, precondition, write-command |
| twitter unblock confirmation | exception | warning | twitter, timeout, confirmation, browser-write |
| Nothing changed. Open the profile in the browser and retry. | exception | error | twitter, command-execution, browser-write, selector |
| Browser session required for twitter unbookmark | exception | error | twitter, browser-session, precondition, write-command |
| twitter unbookmark confirmation | exception | warning | twitter, timeout, confirmation, browser-write |
| Nothing changed. Open the tweet in the browser and retry. | exception | error | twitter, command-execution, browser-write, selector |
| Browser session required for twitter unfollow | exception | error | twitter, browser-session, precondition, write-command |
| twitter unfollow confirmation | exception | warning | twitter, timeout, confirmation, browser-write |
| Nothing changed. Open the profile in the browser and retry. | exception | error | twitter, command-execution, browser-write, selector |
| Browser session required for twitter unlike | exception | error | browser, precondition, twitter, session |
| twitter unlike confirmation | exception | warning | timeout, ui-verification, twitter, ambiguous-state |
| Nothing changed. Open the tweet in the browser and retry. | exception | error | twitter, dom, authentication, ui-automation |
| Browser session required for twitter unretweet | exception | error | browser, precondition, twitter, session |
| twitter unretweet confirmation | exception | warning | timeout, ui-verification, twitter, ambiguous-state |
| Nothing changed. Open the tweet in the browser and retry. | exception | error | twitter, dom, authentication, ui-automation |
| twitter ${commandName} username must be a valid Twitter/X ha | validation | error | argument-validation, twitter, username |
| twitter collection username must be a valid Twitter/X handle | validation | error | argument-validation, twitter, missing-argument |
| Could not detect logged-in user. Are you logged in? | exception | error | authentication, twitter, session, logged-in-detection |
| Not logged into x.com (no ct0 cookie) | exception | error | authentication, cookies, browser-automation, csrf |
| Could not resolve @${username} | exception | error | api, username-resolution, graphql, twitter |
| Image file not found: ${absPath} | validation | error | filesystem, input-validation, arguments |
| Unsupported image format "${ext}". Supported: jpg, jpeg, png | validation | error | input-validation, file-format, arguments |
| Image too large: ${(stat.size / 1024 / 1024).toFixed(1)} MB | validation | error | file-size, input-validation, upload-limits |
| Unsupported remote image format "${normalizedContentType || | validation | error | content-type, input-validation, http, file-format |
| Invalid image URL: ${imageUrl} | validation | error | url-parsing, input-validation, arguments |
| Unsupported image URL protocol: ${parsed.protocol} | validation | error | url-parsing, security, input-validation |
| Image download failed: HTTP ${response.status} | exception | error | http, network, download-failure |
| Image too large: ${(contentLength / 1024 / 1024).toFixed(1)} | validation | error | file-size, http, upload-limits |
| Image too large: ${(buffer.byteLength / 1024 / 1024).toFixed | validation | error | image, file-size, validation, twitter-cli |
| Image upload failed: ${msg} | exception | error | image-upload, browser-automation, cdp, twitter-cli |
| Image upload failed: ${upload?.error ?? 'unknown error'} | exception | error | image-upload, browser-automation, dom, twitter-cli |
| Image upload failed: preview did not appear. | exception | error | image-upload, browser-automation, timeout, twitter-cli |
| limit must be a positive integer | validation | error | argument-validation, cli, input-validation, uisdc |
| limit must be <= ${MAX_LIMIT} | validation | error | cli, validation, argument-error, limit |
| UISDC news page returned an unreadable payload | exception | error | scraping, payload, command-execution-error |
| UISDC news selector drift: ${reason} | exception | error | scraping, selector-drift, dom, command-execution-error |
| UISDC news page loaded, but no news rows with title and URL | exception | warning | scraping, empty-result, dom |
| Failed to extract UISDC news: ${getErrorMessage(error)} | exception | error | scraping, page-evaluate, execution-context, command-execution-error |
| Missing component input. Pass a full Uiverse URL or an autho | validation | error | input-validation, argument-parsing, cli |
| Unsupported non-Uiverse URL: ${raw} | validation | error | input-validation, url-parsing, domain-restriction |
| Could not parse author/slug from input: ${raw} | validation | error | input-validation, url-parsing, argument-parsing |
| Invalid component identifier: ${raw}. Expected author/slug. | validation | error | input-validation, argument-parsing |
| Request failed: ${result?.status} ${result?.statusText} (${r | http | error | network, http, scraping |
| Response was not valid JSON: ${url} | exception | error | network, json, scraping, site-change |
| Could not resolve post.id from the component page: ${normali | exception | error | scraping, site-change, dom-extraction |
| Unexpected code payload shape: ${codeUrl} | exception | error | schema-validation, scraping, site-change |
| Failed to extract ${targetLabel} export code. | exception | error | dom-extraction, scraping, ui-automation, timeout |
| Could not locate a Uiverse preview element. Candidate data: | exception | error | dom-extraction, scraping, layout |
| CDP screenshot failed: no image data was returned. | exception | error | cdp, screenshot, browser-automation |
| Upwork session cookies missing | exception | error | auth, cookies, upwork |
| ${probe.detail} | exception | error | auth, session-expired, upwork |
| Unexpected Upwork probe: ${JSON.stringify(probe)} | exception | error | upwork, browser-automation, unexpected-response |
| Waiting for Upwork session cookies | exception | warning | auth, login-flow, polling, upwork |
| Failed to read Upwork job-detail store: ${e?.message ?? e} | exception | error | upwork, vuex, browser-bridge, scraping |
| Upwork redirected to login. Open https://www.upwork.com in t | exception | error | auth, upwork, login-redirect |
| Upwork served a Cloudflare challenge page | exception | error | cloudflare, bot-detection, upwork, anti-bot |
| Upwork detail returned an unexpected Browser Bridge payload | exception | error | upwork, payload-shape, browser-bridge, validation |
| No Upwork job posting found for id "${id}" (may be closed, e | exception | warning | upwork, empty-result, scraping, job-detail |
| Upwork job-detail store had an unexpected job shape; expecte | exception | error | upwork, schema-validation-failed, browser-automation, command-execution-error |
| Upwork job-detail store returned ciphertext "${returnedCiphe | exception | error | upwork, id-mismatch, stale-state, command-execution-error |
| Failed to read Upwork feed state: ${e?.message ?? e} | exception | error | upwork, browser-automation, page-evaluation-failed, nuxt-state, retryable |
| Upwork redirected to login. Open https://www.upwork.com in t | exception | error | upwork, authentication, auth-required, session-expired |
| Upwork served a Cloudflare challenge page | exception | error | upwork, cloudflare, bot-detection, rate-limiting, browser-automation |
| Upwork feed state (window.__NUXT__.state.${stateKey}) was no | exception | error | upwork, timeout, nuxt-state, hydration, browser-automation |
| Upwork feed returned an unexpected Browser Bridge payload sh | exception | error | upwork, browser-bridge, payload-shape, serialization, command-execution-error |
| Upwork feed state had an unexpected jobs shape; expected win | exception | error | upwork, schema-validation-failed, nuxt-state, upstream-schema-change |
| Upwork ${tab} feed is empty for the current account | exception | warning | upwork, empty-result, no-data, feed |
| Upwork feed results did not include any job with a valid cip | exception | error | upwork, missing-identifier, schema-validation-failed, feed |
| Failed to read Upwork search state: ${e?.message ?? e} | exception | error | browser-automation, scraping, upwork, state-read |
| Upwork redirected to login. Open https://www.upwork.com in t | exception | error | authentication, upwork, browser-automation, session-expired |
| Upwork served a Cloudflare challenge page | exception | error | cloudflare, bot-detection, upwork, scraping |
| Upwork search state (window.__NUXT__.state.jobsSearch) was n | exception | error | timeout, hydration, upwork, scraping |
| Upwork search returned an unexpected Browser Bridge payload | exception | error | contract-violation, browser-bridge, upwork, payload-shape |
| Upwork search state had an unexpected jobs shape; expected w | exception | error | schema-change, upwork, scraping, state-shape |
| No Upwork jobs matched "${query}"${location ? ` in ${locatio | exception | warning | empty-results, search, upwork, query |
| Upwork search results did not include any job with a valid c | exception | error | schema-change, upwork, id-extraction, round-trip |
| upwork ${label} cannot be empty | validation | error | argument-validation, input-validation, upwork, cli |
| upwork ${label} must be a positive integer | validation | error | argument-validation, pagination, input-validation, upwork |
| upwork ${label} must be >= ${min} | validation | error | validation, cli, argument-error, upwork |
| upwork ${label} must be <= ${max} | validation | error | validation, cli, argument-error, upwork |
| upwork job id is required | validation | error | validation, cli, missing-argument, upwork |
| upwork job id "${value}" is not a valid ciphertext (expected | validation | error | validation, format, upwork, argument-error |
| upwork tab must be one of ${Object.keys(FEED_TABS).join(' / | validation | error | validation, cli, enum, upwork |
| upwork sort must be one of ${Array.from(SORT_VALUES).join(' | validation | error | validation, cli, enum, upwork |
| unknown feed tab "${tab}" | validation | error | validation, upwork, internal-api, enum |
| Upwork result at rank ${rank} did not include a valid cipher | exception | error | upwork, scraping, data-integrity, command-execution-error |
| V2EX A2 session cookie missing — anonymous | exception | error | auth, v2ex, session, cookie |
| ${probe.detail} | exception | error | auth, browser-automation, session-expired |
| Unexpected V2EX probe: ${JSON.stringify(probe)} | exception | error | dom-parsing, browser-automation, unexpected-state |
| Waiting for V2EX A2 session cookie | exception | info | auth, cookies, login-flow, polling |
| Browser page required | exception | error | browser, environment, null-check |
| ${checkResult.error} | exception | error | browser-automation, scraping, dom-parsing |
| Browser page required | exception | error | browser, environment, null-check |
| ${data.error} | exception | error | browser-automation, scraping, dom-parsing |
| Browser page required | exception | error | browser, environment, null-check |
| Failed to parse notifications data | exception | error | scraping, dom-parsing, browser-automation |
| Invalid --wait-for selector "${kwargs['wait-for']}": ${waitR | exception | error | css-selector, cli-usage, browser-automation |
| Timed out waiting for selector "${kwargs['wait-for']}" in ma | exception | error | browser, timeout, selector, scraping |
| Network capture is unavailable, so --wait-until networkidle | exception | error | browser, network, configuration, unsupported-feature |
| Timed out waiting for network idle after ${waitSeconds}s | exception | error | browser, network, timeout, scraping |
| WeChat Channels sessionid cookie missing | exception | error | auth, cookies, wechat, session |
| ${probe.detail} | exception | error | auth, wechat, session-expired, cookies |
| HTTP ${probe.httpStatus} from auth_data | exception | error | http, network, wechat, api-error |
| WeChat Channels whoami failed: ${probe.detail} | exception | error | exception, network, wechat, probe |
| Unexpected WeChat Channels probe: ${JSON.stringify(probe)} | exception | error | wechat, probe, unexpected-state, serialization |
| Waiting for WeChat Channels sessionid cookie | exception | warning | auth, login, polling, wechat, qr-code |
| ${label}文件不存在: ${resolved} | validation | error | filesystem, validation, argument-error, file-not-found |
| ${label}路径不是文件: ${resolved} | validation | error | cli, argument-validation, filesystem |
| 不支持的${label}格式: ${ext}(支持 ${Array.from(allowedExts).join('/' | validation | error | cli, argument-validation, video-format |
| --timeout must be an integer >= 30 seconds | validation | error | cli, argument-validation, timeout |
| 无法解析定时时间: ${raw} | validation | error | cli, argument-validation, date-parsing |
| 定时时间必须晚于当前时间 | validation | error | cli, argument-validation, schedule |
| ${label}超时,请增加 --timeout 后重试 | exception | error | timeout, cli, network |
| 视频文件注入失败: ${result?.error ?? 'unknown'} 截图已保存到 /tmp/wechat-c | exception | error | browser-automation, shadow-dom, upload |
| 视频上传失败,请检查文件格式和网络连接 | exception | error | upload, network, video-format |
| 视频上传/转码超时(${Math.ceil(maxMs / 1000)}秒),请检查网络或稍后重试 | exception | error | timeout, upload, network |
| 找不到 ${fieldName} 输入框,截图已保存到 /tmp/wechat-channels_publish_${f | exception | error | browser-automation, shadow-dom, selectors |
| 定时设置失败 (${reason}),截图: /tmp/wechat-channels_schedule_debug.p | exception | error | wechat-channels, scheduling, browser-automation |
| 定时设置未验证成功: expected=${expected} actual=${result.value || ''} | exception | error | wechat-channels, scheduling, verification |
| 找不到"${labels[0]}"按钮(按钮可能被禁用或表单未完成),截图已保存到 /tmp/wechat-channe | exception | error | wechat-channels, button-click, browser-automation |
| 需要浏览器页面 | exception | error | wechat-channels, missing-page, browser-automation |
| 登录超时(2分钟),请手动登录后重试 | exception | error | auth, login-timeout, wechat-channels |
| 未能验证${isDraft ? '草稿保存' : '发布'}成功,截图已保存到 /tmp/wechat-channels | exception | error | wechat-channels, publish-verification, browser-automation |
| Weibo SUB / SUBP cookies missing | exception | error | auth, cookies, weibo |
| Weibo uid resolver returned a malformed uid | exception | error | weibo, identity, parsing |
| ${result.detail} | exception | error | auth, weibo, api |
| HTTP ${result.httpStatus} from /ajax/profile/info | exception | error | http, weibo, rate-limit |
| Weibo whoami failed: ${result.detail} | exception | error | weibo, browser-automation, page-evaluation |
| Weibo whoami returned malformed probe payload | exception | error | weibo, browser-automation, payload-validation |
| Unexpected Weibo probe: ${JSON.stringify(result)} | exception | error | weibo, browser-automation, unexpected-response |
| Weibo whoami returned no user id | exception | error | weibo, authentication, session-validation |
| Waiting for Weibo SUB / SUBP cookies | exception | warning | weibo, authentication, login-polling |
| weibo delete: id cannot be empty | validation | error | weibo, argument-validation, cli |
| weibo delete: URL must use http or https | validation | error | weibo, argument-validation, url-parsing |
| weibo delete: URL must be a weibo.com or weibo.cn post URL | validation | error | weibo, argument-validation, url-validation |
| weibo delete: id must be a numeric idstr, mblogid, or Weibo | validation | error | weibo, argument-validation, format-validation |
| Browser session required for weibo delete | exception | error | weibo, browser-session, authentication |
| Cookie 已过期!请在当前 Chrome 浏览器中重新登录 Weibo。 | exception | error | auth, cookie-expired, weibo, browser-automation |
| weibo delete | exception | error | weibo, not-found, empty-result, delete |
| weibo delete: HTTP ${result.status} | exception | error | http, weibo, rate-limit, network |
| weibo delete: ${String(result.msg ?? result.error)} | exception | error | weibo, api, verification, command-execution |
| weibo delete returned an unexpected response | exception | error | weibo, contract-mismatch, command-execution, fallback |
| weibo favorites ${name} must be a positive integer | validation | warning | validation, argument-error, weibo, parameters |
| weibo favorites ${name} must be <= ${MAX_LIMIT} | validation | warning | validation, limit, weibo, parameters |
| weibo favorites | exception | info | weibo, empty-result, scraping, no-data |
| Failed to parse visible Weibo favorites | exception | error | weibo, parsing, scraping, markup-change |
| String(data.error) | exception | error | weibo, api, auth, command-execution |
| String(data.error) | exception | error | browser-automation, weibo, page-evaluate |
| weibo publish text cannot be empty | validation | error | validation, argument-error, weibo |
| weibo publish text exceeds 2000 characters | validation | error | validation, argument-error, length-limit |
| Too many images: ${paths.length} (max ${MAX_IMAGES}) | validation | error | validation, argument-error, image-upload |
| Unsupported image format "${ext}". Supported: jpg, png, gif, | validation | error | validation, argument-error, file-format |
| Not a valid file: ${absPath} | validation | error | validation, argument-error, filesystem |
| Browser session required for weibo publish | exception | error | browser-automation, session, weibo |
| Not logged into Weibo. Please login at weibo.com in your Chr | exception | error | authentication, weibo, login |
| Could not open compose editor. | exception | error | browser-automation, weibo, dom-selector |
| Weibo compose editor did not appear | exception | error | browser-automation, weibo, timeout |
| Browser extension does not support file upload. Please updat | exception | error | browser-extension, file-upload, outdated-version |
| Could not find image file input on Weibo compose page. UI ma | exception | error | dom-selector, ui-drift, weibo, scraping |
| Image upload did not complete before timeout | exception | error | upload-timeout, network, weibo |
| Could not insert text. | exception | error | dom-selector, ui-drift, weibo |
| Could not click publish. | exception | error | dom-selector, ui-drift, weibo |
| Publish button clicked but result was unclear. Check Weibo m | exception | error | ambiguous-state, weibo, automation |
| Weibo publish failed | exception | error | weibo, publish-rejected, moderation |
NOT_FOUND NOT_FOUND | error_code | warning | empty-results, weibo, search, not-found |
| weibo user-posts id cannot be empty | validation | error | argument-validation, missing-argument, cli |
| weibo user-posts limit must be an integer between 1 and ${MA | validation | error | argument-validation, range-validation, cli |
| weibo user-posts ${name} must use YYYY-MM-DD | validation | error | argument-validation, date-format, cli |
| weibo user-posts ${name} must be a valid calendar date | validation | error | argument-validation, calendar-date, cli |
| weibo user-posts start must be <= end | validation | error | argument-validation, date-range, cli |
| weibo user-posts failed without an error message | exception | error | command-execution, unknown-error, diagnostics |
| weibo.com | exception | error | authentication, weibo, cookies |
| message | exception | error | command-execution, weibo, extraction |
| weibo user-posts returned malformed extraction payload | exception | error | contract-mismatch, weibo, extraction |
| weibo user-posts did not observe a valid posts list | exception | error | weibo, empty-page, extraction |
| weibo user-posts found post candidates but could not extract | exception | error | weibo, selector-mismatch, extraction |
| weibo user-posts | exception | warning | empty-result, weibo, date-range |
| String(data.error) | exception | error | weibo, scraping, command-execution, dom-extraction |
| ${label}: ${String(payload.error)} | exception | error | weibo, validation, payload-shape, command-execution |
| ${label} returned malformed extraction payload | exception | error | weibo, validation, payload-shape, type-mismatch |
| weibo.com | exception | error | weibo, auth, login-required, session-expired |
| weixin create-draft cover-image cannot be empty | validation | error | weixin, argument-error, validation, missing-argument |
| weixin create-draft cover-image does not exist: ${absPath} | validation | error | weixin, argument-error, filesystem, file-not-found |
| weixin create-draft cover-image is not a file: ${absPath} | validation | error | weixin, argument-error, filesystem, not-a-file |
| weixin create-draft cover-image must be JPEG, PNG, GIF, or W | validation | error | weixin, argument-error, image-format, validation |
| Please log in to the WeChat Official Account platform and re | exception | error | weixin, auth, login-required, session-expired |
| WeChat article editor did not load. The session may have exp | exception | error | wechat, session-expired, authentication, scraping |
| WeChat image upload returned a malformed editor image payloa | exception | error | wechat, dom-parsing, payload-validation, scraping |
| WeChat image upload failed: ${message} | exception | error | wechat, file-upload, automation, image |
| WeChat image upload fallback failed: ${fallback?.reason || ' | exception | error | wechat, file-upload, base64, image |
| Could not open WeChat image upload: ${opened?.reason || 'unk | exception | error | wechat, dom-parsing, editor-ui, scraping |
| Could not select WeChat image upload: ${selected?.reason || | exception | error | wechat, dom-parsing, editor-ui, timing |
| WeChat image upload failed: ${state.errorText} | exception | error | wechat, image, upload-limit, rate-limit |
| WeChat image upload timed out before a new CDN image appeare | exception | error | wechat, timeout, image, upload |
| WeChat save-draft button was not found. | exception | error | wechat, dom-parsing, editor-ui, scraping |
| WeChat draft save was not confirmed by a fresh success statu | exception | error | wechat, timeout, confirmation, draft-save |
| Failed to fill title | exception | error | puppeteer, dom-selector, wechat, automation |
| Failed to fill author | exception | error | puppeteer, dom-selector, wechat, automation |
| Failed to fill content | exception | error | puppeteer, contenteditable, wechat, automation |
| WeChat uploaded the image but did not confirm it as the draf | exception | error | puppeteer, wechat, image-upload, ui-automation |
| Failed to fill summary | exception | error | puppeteer, dom-selector, wechat, automation |
| WeChat create-draft failed: ${message} | exception | error | browser-automation, weixin, command-execution |
| 微信公众号草稿箱需要已登录的 mp.weixin.qq.com 会话 | exception | error | auth, weixin, session-expired |
| weixin drafts | exception | warning | empty-result, weixin, scraping |
| weixin search --${name} must be a positive integer | validation | error | argument-validation, cli-usage, weixin |
| weixin search --${name} is out of range | validation | error | argument-validation, cli-usage, weixin |
| A search query is required. | validation | warning | argument-validation, cli, input-validation |
| weixin search failed while loading Sogou results | exception | error | browser-automation, network, scraping, timeout |
| weixin search returned an unreadable browser payload | exception | error | scraping, page-structure, anti-bot, data-integrity |
| Sogou Weixin blocked this search request | exception | error | anti-bot, captcha, rate-limit, scraping |
| Sogou Weixin returned article cards without required title o | exception | error | scraping, page-structure, data-integrity |
| weixin search | exception | info | empty-result, scraping, expected-condition |
| weixin search did not expose article result cards | exception | error | scraping, selectors, page-structure, transient |
| weread-official: type must be one of: ${Object.keys(TYPE_ALI | validation | warning | argument-validation, enum, cli |
| weread-official: scope must be one of: ${Object.keys(SEARCH_ | validation | warning | argument-validation, enum, cli |
| WEREAD_API_KEY is not set. Export it with `export WEREAD_API | exception | critical | authentication, missing-env-var, configuration |
| weread-official: api_name is required | validation | error | argument-validation, api-request |
| weread-official ${apiName} | exception | error | network, timeout, http |
| weread-official ${apiName} request failed | exception | error | network, fetch, http |
| weread-official ${apiName} HTTP ${response.status} | exception | error | http, auth, api-gateway |
| weread-official ${apiName} returned invalid JSON | exception | error | json, http, response-parsing |
| WeRead skill 需升级: ${message}. Required skill_version=${requi | exception | error | versioning, upgrade, api-gateway |
| WEREAD_API_KEY rejected (errcode=${errcode}, ${errmsg}). Reg | exception | critical | auth, api-key, credentials |
| weread-official ${apiName} returned errcode=${errcode} | exception | error | api-gateway, business-error, errcode |
| weread-official: ${label} cannot be empty | validation | error | argument-validation, empty-input |
| weread-official: ${label} contains invalid characters | validation | error | argument-validation, input-format, bookid |
| weread-official: ${label} is required | validation | error | argument-validation, cli, missing-parameter |
| weread-official: ${label} must be a positive integer | validation | error | argument-validation, cli, type-mismatch |
| weread-official: ${label} must be <= ${max} | validation | error | argument-validation, cli, range-check |
| weread-official: ${label} must be one of: ${choices.join(', | validation | error | argument-validation, cli, enum |
| weread-official ${command} | exception | warning | empty-result, cli, expected-condition |
AUTH_REQUIRED Not logged in to WeRead | exception | error | authentication, cookies, network |
PARSE_ERROR Invalid JSON response for ${path} | exception | error | parse-error, network, html-response |
FETCH_ERROR HTTP ${resp.status} for ${path} | exception | error | network, http-error, api-unavailable |
NOT_FOUND No chapters found for this book | exception | error | not-found, weread, input-validation |
| WeRead wr_vid cookie missing | exception | error | auth, cookies, weread, login |
| ${result.detail} | exception | error | auth, cookies, session-expired, weread |
| HTTP ${result.httpStatus} from /web/user | exception | error | network, http, weread, whoami |
| WeRead whoami failed: ${result.detail} | exception | error | javascript, browser, weread, whoami |
| Unexpected WeRead probe: ${JSON.stringify(result)} | exception | warning | javascript, browser, weread, unexpected-state |
| Waiting for WeRead wr_vid cookie | exception | info | auth, login, polling, weread |
| ${label} must be a positive integer | validation | error | validation, cli-arguments, argument-error |
| ${label} must be <= ${maxValue} | validation | error | validation, cli-arguments, argument-error |
| ${label} is required | validation | error | validation, cli-arguments, missing-required-argument |
| ${label} request failed: ${error instanceof Error ? error.me | exception | error | network, http, command-execution-error |
| ${label} request failed: HTTP ${resp.status} | exception | error | network, http-status, rate-limiting |
| ${label} returned invalid JSON | exception | error | network, json-parsing, api-change |
| WeRead book search returned malformed books | exception | error | api-change, schema-validation, response-parsing |
| No WeRead books found for "${bookQuery}" | exception | warning | empty-results, search, user-input |
| book-rank must be <= ${books.length} | validation | error | argument-validation, search, weread |
| WeRead book search result ${bookRank} is missing bookId | exception | error | api-schema, search, weread |
| book URL must be a https://weread.qq.com/web/reader/<id> URL | validation | error | argument-validation, url-parsing, weread |
| Could not parse a bookId from the reader URL | exception | error | scraping, auth, weread |
| WeRead in-book search returned malformed result | exception | error | api-schema, search, weread |
| WeRead in-book search returned malformed match | exception | error | api-schema, search, weread |
| WeRead in-book search returned non-advancing searchIdx | exception | error | pagination, search, infinite-loop-guard |
| WeRead in-book search returned malformed pagination state | exception | error | pagination, api-schema, search |
| weread book-search: No matches for "${query}" in book ${book | exception | warning | empty-result, search, weread |
| Failed to fetch WeRead search page: ${error instanceof Error | exception | error | network, fetch, weread, dns, connectivity |
| WeRead search page request failed: HTTP ${resp.status} | exception | error | http, weread, http-status, scraping, rate-limit |
| WeRead search API returned an unreadable books payload | exception | error | schema, api-contract, weread, json, type-guard |
| weread search: No books were returned for query ${args.query | exception | warning | empty-result, search, weread, no-results |
FETCH_ERROR FETCH_ERROR: HTTP ${resp.status} for ${path} | error_code | error | http, weread, api, rate-limit, http-status |
PARSE_ERROR PARSE_ERROR: Invalid JSON response for ${path} | error_code | error | json, parse-error, weread, html-response, anti-bot |
AUTH_REQUIRED AUTH_REQUIRED: Not logged in to WeRead | error_code | error | auth, cookies, weread, login, session-expired |
API_ERROR API_ERROR: ${data.errmsg ?? `WeRead API error ${data.errcode}`} | error_code | error | api, http, remote-api |
| wikidata entity: Wikidata entity ${qid} returned no payload. | exception | warning | empty-result, remote-api, wikidata |
| wikidata search: No Wikidata items matched "${query}" in lan | exception | warning | empty-result, search, wikidata |
| wikidata ${label} cannot be empty | validation | error | validation, arguments, input-validation |
| wikidata ${label} must be a positive integer | validation | error | validation, arguments, input-validation |
| wikidata ${label} must be <= ${maxValue} | validation | error | validation, arguments, input-validation |
| wikidata entity id is required (e.g. "Q937") | validation | error | validation, arguments, missing-argument |
| wikidata entity id "${value}" is not a valid Q/P/L identifie | validation | error | validation, arguments, format |
| wikidata language "${value}" is not a valid language code | validation | error | validation, arguments, i18n |
| ${label} request failed: ${err?.message ?? err} | exception | error | network, connectivity, fetch |
| Wikidata returned 404 for ${url}. | exception | warning | http-404, wikidata, empty-result, network |
| ${label} returned HTTP 429 (rate limited) | exception | error | rate-limit, http-429, wikidata, network |
| ${label} returned HTTP ${resp.status} | exception | error | http-error, wikidata, network, server-error |
| ${label} returned malformed JSON: ${err?.message ?? err} | exception | error | json, parse-error, wikidata, network |
| wikipedia page title cannot be empty | validation | error | argument-error, validation, wikipedia, input-validation |
| wikipedia lang must be a language code like en, zh, ja (got | validation | error | argument-error, validation, wikipedia, language-code |
| paragraphs must be a non-negative integer (0 = full article) | validation | error | argument-error, validation, wikipedia, input-validation |
| wikipedia page request failed: ${error?.message || error} | exception | error | network, fetch-error, wikipedia, dns |
| wikipedia page failed: HTTP ${resp.status} | exception | error | http-error, wikipedia, network, rate-limit |
| wikipedia returned malformed JSON: ${error?.message || error | exception | error | json, parse-error, wikipedia, network |
| wikipedia API error: ${data.error.info || data.error.code} | exception | error | network, api, wikipedia |
| wikipedia page | error_code | warning | empty-result, wikipedia, content |
NOT_FOUND No random article returned | error_code | error | not-found, wikipedia, rest-api |
NOT_FOUND No articles found | error_code | warning | not-found, search, wikipedia |
NOT_FOUND Article "${args.title}" not found | error_code | warning | not-found, wikipedia, rest-api |
NOT_FOUND No trending articles available | error_code | error | not-found, wikipedia, trending |
PARSE_ERROR Wikipedia trending returned an article without title | error_code | error | parse-error, wikipedia, trending |
FETCH_ERROR Wikipedia API HTTP ${resp.status} | error_code | error | network, http, wikipedia |
| wttr.in returned no current conditions for "${location}". | error_code | warning | empty-result, weather, wttr |
| --days must be an integer between 1 and 3 (wttr.in caps the | validation | error | argument-validation, cli, forecast |
| wttr.in returned no forecast for "${location}". | error_code | error | empty-result, api-response, forecast |
| --${name} is required | validation | error | argument-validation, cli, missing-argument |
| ${label} request failed: ${err.message} | exception | critical | network, fetch, request-failed |
| ${label} could not find location "${location}". | error_code | error | http-404, geocoding, empty-result |
| ${label} returned HTTP ${resp.status}. | http | error | network, http-error, rate-limit, wttr-in |
| ${label} returned non-JSON body (likely unknown location). | error_code | warning | empty-result, bad-input, json-parse, wttr-in |
| Xianyu unb/tracknick cookie missing — anonymous | error_code | error | authentication, cookies, goofish, xianyu |
| Xianyu /personal redirected to login: ${finalUrl} | error_code | error | authentication, session-expired, redirect, goofish |
| Xianyu blocked by verification / risk control | error_code | error | anti-bot, risk-control, captcha, goofish, xianyu |
| Xianyu /personal shows login prompt — anonymous | error_code | error | auth, xianyu, session-expired |
| Xianyu /personal rendered but no user identity extractable — | exception | error | xianyu, layout-drift, dom-scraping |
| Waiting for Xianyu unb/tracknick cookie | error_code | warning | auth, xianyu, polling, cookies |
| Xianyu chat requires a logged-in browser session | error_code | error | auth, xianyu, chat |
| Xianyu chat did not observe the sent message: ${sent?.reason | exception | error | xianyu, chat, send-failure |
| xianyu ${label} must be an integer between 1 and ${maxValue} | validation | warning | validation, argument-error, xianyu |
| xianyu rank must be a positive integer from xianyu inbox | validation | warning | validation, argument-error, xianyu |
| ${label} cannot be empty | validation | warning | validation, argument-error, xianyu |
| Xianyu ${label} returned malformed browser payload | exception | error | browser-automation, payload-validation, command-execution |
| Xianyu ${label} failed: ${result.reason || 'unknown-reason'} | exception | error | browser-automation, dom-click, command-execution |
| Xianyu inbox requires a logged-in browser session | error_code | error | auth, cookies, session-expired, scraping |
| Xianyu inbox is blocked by verification or risk control | error_code | error | risk-control, captcha, rate-limiting, scraping |
| Xianyu inbox returned malformed conversation list | exception | error | payload-validation, browser-automation, schema-mismatch |
| No Xianyu inbox conversations were found | error_code | info | empty-result, xianyu, inbox, no-data |
| Xianyu item detail requires a logged-in browser session | error_code | error | auth, xianyu, session, login-required |
| Xianyu item detail is blocked by verification or risk contro | error_code | error | risk-control, blocked, xianyu, anti-bot |
| 闲鱼商品详情接口未返回有效数据 | error_code | error | xianyu, mtop, invalid-response, empty-result |
| errorMessage || `Xianyu item detail request failed: ${result | error_code | error | xianyu, api-error, empty-result, scraping |
| No item detail was returned for the specified item_id | exception | error | xianyu, empty-result, missing-data, scraping |
| xianyu messages accepts either item_id/user_id or --rank, no | validation | error | argument-validation, cli-usage, xianyu |
| xianyu messages requires both item_id and user_id, or --rank | validation | error | argument-validation, cli-usage, xianyu |
| xianyu messages requires item_id/user_id or --rank from xian | validation | error | argument-validation, cli-usage, xianyu |
| Xianyu messages requires a logged-in browser session | exception | error | authentication, session-expired, xianyu, browser-automation |
| Xianyu messages returned malformed message list | exception | error | browser-automation, dom-extraction, xianyu, scraping |
| No visible messages were found in this Xianyu conversation | exception | warning | empty-result, xianyu, lazy-loading |
| xianyu publish ${label} cannot be empty | validation | error | argument-validation, xianyu, input-validation |
| xianyu publish ${label} must be a positive price with at mos | validation | error | argument-validation, xianyu, input-validation, price-format |
| xianyu publish ${label} must be a positive price | validation | error | validation, argument-error, price |
| xianyu publish condition must be one of: ${CONDITION_CHOICES | validation | error | validation, argument-error, enum |
| xianyu publish images supports at most ${MAX_IMAGES} files | validation | error | validation, argument-error, images, limit |
| Unsupported image format "${ext}". Supported: jpg, jpeg, png | validation | error | validation, argument-error, images, file-format |
| Not a valid image file: ${absPath} | validation | error | validation, argument-error, filesystem, images |
| xianyu publish price cannot be empty | validation | error | validation, argument-error, missing-field, price |
| 发布闲鱼需要先登录,请在 Chrome 中打开 goofish.com 并完成登录 | exception | error | auth, session, browser-automation |
| Xianyu publish form was not detected | exception | error | browser-automation, dom, page-load |
| Xianyu category selection failed: ${categoryResult?.reason | | exception | error | browser-automation, dom, category |
| Xianyu publish form fill failed; missing fields: ${missing} | exception | error | browser-automation, dom, form-fill |
| Xianyu publish requires Browser Bridge file upload support | exception | error | browser-automation, file-upload, capability-check, xianyu |
| Xianyu image upload input was not found: ${fileInput?.reason | exception | error | dom-selector, browser-automation, xianyu, file-upload |
| Xianyu image upload failed: ${err?.message || err} | exception | error | file-upload, filesystem, browser-automation, xianyu |
| Xianyu publish submit failed: ${submitResult?.reason || 'unk | exception | error | dom-selector, form-submit, browser-automation, xianyu |
| Xianyu publish result was not confirmed before timeout | exception | error | timeout, polling, browser-automation, xianyu |
| xianyu reply accepts either item_id/user_id or --rank, not b | validation | error | argument-validation, cli-usage, xianyu |
| xianyu reply requires both item_id and user_id, or --rank fr | validation | error | argument-validation, cli-usage, xianyu |
| xianyu reply requires item_id/user_id or --rank from xianyu | validation | error | argument-validation, cli-usage, xianyu |
| Xianyu reply requires a logged-in browser session | exception | error | authentication, session-expired, cookies, xianyu |
| Xianyu reply did not observe the sent message: ${sent?.reaso | exception | error | message-send, dom-verification, browser-automation, xianyu |
| xianyu search ${label} must be a non-negative number | validation | error | argument-validation, cli, price-filter |
| xianyu search min-price cannot be greater than max-price | validation | error | argument-validation, cli, price-filter |
| Xianyu search requires a logged-in browser session | exception | error | authentication, session, browser, xianyu |
| Xianyu returned a verification page or blocked the current b | exception | error | anti-bot, rate-limit, verification, browser |
| Xianyu search returned a malformed response | exception | error | malformed-response, browser, xianyu |
| Xianyu search request failed: ${result.error} | exception | error | api-error, mtop, xianyu |
| Xianyu search response did not include an items array | exception | error | schema-mismatch, parsing, xianyu |
| 没有匹配的商品(筛选条件可能过窄,或当前关键词无结果) | exception | warning | empty-result, search, filtering |
| ${label} must be a numeric ID | validation | error | argument-validation, cli, id-parsing |
| Xiaoe XIAOEID/b_user_token cookie missing — anonymous | exception | error | auth, cookies, xiaoe, browser-automation |
| Xiaoe admin page redirected to login: ${finalUrl} | exception | error | auth, session-expired, redirect, xiaoe |
| Xiaoe admin page showed login UI — anonymous session | exception | error | auth, dom-probe, spa, xiaoe |
| Xiaoe admin page rendered but no user_id cookie extractable | exception | error | auth, cookies, stale-session, xiaoe |
| Waiting for Xiaoe XIAOEID/b_user_token cookie | exception | warning | auth, polling, cookies, xiaoe |
| Failed to read xiaoe catalog: ${message} | exception | error | scraping, page-evaluation, network, xiaoe |
| No catalog rows extracted — the URL may not be a course page | exception | warning | scraping, empty-result, url-validation, xiaoe |
| url is required (positional) | validation | error | argument-validation, cli, xiaoe |
| invalid xiaoe URL: ${raw} | validation | error | argument-validation, url-parsing, cli, xiaoe |
| xiaoe URL must use https (got ${parsed.protocol.replace(':', | validation | error | argument-validation, url-parsing, https, xiaoe |
| url must be on h5.xet.citv.cn or a shop subdomain (got ${par | validation | error | url-validation, argument-error, xiaoe |
| Failed to extract xiaoe content: ${message} | exception | error | browser-automation, page-navigation, xiaoe |
| No rows returned from page evaluator (page structure may hav | exception | error | empty-result, dom-selector, page-structure, xiaoe |
| No article content extracted — login session may have expire | exception | error | empty-result, auth-expired, cookie, xiaoe |
| Failed to list xiaoe courses: ${message} | exception | error | browser-automation, page-navigation, xiaoe |
| No purchased courses found — login session may have expired | exception | error | empty-result, auth-expired, xiaoe |
| ${label} must be an integer between ${min} and ${max}, got $ | validation | error | argument-validation, cli-option, xiaohongshu |
| query is required | validation | error | missing-argument, cli-option, xiaohongshu |
| 点点没有在超时时间内返回答案;可以重试或提高 --timeout。 | exception | warning | timeout, ai-assistant, xiaohongshu |
| Xiaohongshu 点点 did not accept the query. Check login status | exception | error | auth, xiaohongshu, session-expired, automation |
| xiaohongshu ask failed: ${error || 'unknown error'} | exception | error | xiaohongshu, automation, unmapped-error, page-scraping |
| xiaohongshu ask returned a malformed page payload | exception | error | xiaohongshu, page-scraping, malformed-payload, automation |
| xiaohongshu ask returned a malformed page payload: missing a | exception | error | xiaohongshu, page-scraping, empty-response, automation |
| xiaohongshu ask returned a malformed page payload: missing m | exception | error | xiaohongshu, page-scraping, malformed-payload, automation |
| Xiaohongshu creator profile requires login: ${detail} | exception | error | auth, xiaohongshu, session-expired, login |
| Xiaohongshu creator profile returned malformed personal_info | exception | error | xiaohongshu, schema-change, malformed-payload, api |
| Waiting for Xiaohongshu session cookies | exception | warning | auth, xiaohongshu, login-pending, cookies |
| --limit must be an integer between 1 and 100, got ${JSON.str | validation | error | validation, cli, argument-error, xiaohongshu |
| --limit must be between 1 and 100, got ${parsed} | validation | warning | cli, validation, argument-error, limit |
| xiaohongshu collection API returned a malformed payload | exception | error | scraping, malformed-response, network-interception, command-execution-error |
| xiaohongshu collection API returned malformed data | exception | error | scraping, malformed-response, api-schema, command-execution-error |
| xiaohongshu collection API returned malformed notes | exception | error | scraping, malformed-response, api-schema, command-execution-error |
| xiaohongshu collection API returned a note without stable id | exception | error | scraping, data-integrity, xsec-token, command-execution-error |
| Xiaohongshu collection page requires login; re-login to xiao | exception | error | auth, login-required, scraping, auth-required-error |
| xiaohongshu collection page returned malformed location | exception | error | scraping, page-navigation, command-execution-error |
| xiaohongshu collection page requires login | exception | error | auth, login-redirect, scraping, auth-required-error |
| xiaohongshu collection landed on unexpected page: ${toCleanS | exception | error | scraping, navigation, url-mismatch, command-execution-error |
| xiaohongshu collection interceptor returned malformed captur | exception | error | network-interception, scraping, command-execution-error, browser-automation |
| Not logged into Xiaohongshu (could not resolve current user | exception | error | auth, scraping, browser-automation |
| xiaohongshu collection DOM extraction returned malformed row | exception | error | scraping, dom, browser-automation |
| No ${emptyLabel} notes found. Ensure you are logged in and t | exception | warning | scraping, empty-result, auth |
| ${commandName}: malformed comment row ${field} | exception | error | validation, scraping, schema |
| ${commandName}: malformed comment row images | exception | error | validation, schema, scraping |
| ${commandName}: malformed comment row image URL | exception | error | validation, url, schema |
| ${commandName}: malformed comments payload | exception | error | validation, scraping, schema |
| ${commandName}: malformed comment row at index ${index} | exception | error | validation, schema, scraping |
| ${commandName}: malformed comment row text | exception | error | validation, scraping, dom-changes, data-shape |
| ${commandName}: malformed comment row likes | exception | error | validation, scraping, data-shape, type-coercion |
| ${commandName}: malformed comment row is_reply | exception | error | validation, scraping, data-shape, boolean |
| Unexpected evaluate response | exception | error | scraping, empty-result, dom-changes, puppeteer |
SECURITY_BLOCK Xiaohongshu security block: the note detail page was blocked by risk control. | error_code | error | anti-bot, rate-limit, scraping, security-block |
| Note comments require login | exception | error | auth, login-required, scraping, session |
| xiaohongshu creator-note-detail: signed API ${suffix} return | exception | error | validation, api-response, data-shape, signed-api |
| xiaohongshu creator-note-detail: signed API ${suffix} return | exception | error | validation, api-response, json, signed-api |
| xiaohongshu creator-note-detail: malformed capture for ${suf | exception | error | network-capture, scraping, signed-api, interception |
| xiaohongshu creator-note-detail: signed API ${suffix} return | exception | error | http-status, authentication, xiaohongshu, api-response |
| xiaohongshu creator-note-detail: signed API ${suffix} return | exception | error | capture-hook, browser-automation, xiaohongshu, corrupt-response |
| xiaohongshu creator-note-detail: signed API ${suffix} return | exception | error | json, schema-validation, xiaohongshu, session-expired |
| xiaohongshu creator-note-detail: failed to read signed datac | exception | error | browser-automation, execution-context, xiaohongshu, page-navigation |
| xiaohongshu creator-note-detail: malformed signed datacenter | exception | error | capture-hook, browser-automation, xiaohongshu, global-state |
| No note detail data found. Check note_id and login status fo | exception | warning | empty-result, authentication, xiaohongshu, scraping |
| No notes found. Ensure you are logged into creator.xiaohongs | exception | warning | empty-result, authentication, xiaohongshu, session-expired |
| xiaohongshu creator-notes: captured ${items.length} of ${Mat | exception | error | pagination, rate-limiting, xiaohongshu, partial-data |
| No notes found. Ensure you are logged into creator.xiaohongs | exception | warning | empty-result, authentication, xiaohongshu, session-expired |
| ${data.error}. Are you logged into creator.xiaohongshu.com? | exception | error | authentication, cookie-auth, xiaohongshu, http-status |
| Unexpected response structure | exception | error | puppeteer, response-parsing, scraping, api-change |
| ${data.error}. Are you logged into creator.xiaohongshu.com? | exception | error | authentication, session-expired, puppeteer, scraping |
| Unexpected response structure | exception | error | puppeteer, response-parsing, scraping, api-change |
| No data for period "${period}". Available: ${Object.keys(dat | exception | warning | empty-result, invalid-argument, scraping, api-contract |
| xiaohongshu/delete-note: malformed ${context} payload | exception | error | puppeteer, type-mismatch, evaluate, scraping |
| xiaohongshu/delete-note: note-id cannot be empty | validation | error | argument-validation, input-validation, cli |
| xiaohongshu/delete-note: note-id must be a 24-character Xiao | validation | error | argument-validation, input-validation, format-mismatch, cli |
| xiaohongshu/delete-note: invalid note URL | validation | error | argument-validation, url-parsing, cli |
| xiaohongshu/delete-note: note URL must be an exact https://* | validation | error | argument-validation, url-validation, security |
| xiaohongshu/delete-note: note URL must contain a 24-characte | validation | error | argument-validation, url-parsing, cli |
| creator.xiaohongshu.com | exception | error | authentication, browser-automation, session |
| xiaohongshu/delete-note: 已发布 tab not found on note-manager; | exception | error | ui-automation, dom-change, browser-automation |
| Note ${noteId} not visible in the 已发布 tab. Verify the note b | exception | error | empty-result, browser-automation, ui-automation |
| xiaohongshu/delete-note: note ${noteId} row found but no del | exception | error | ui-automation, dom-change, browser-automation |
| xiaohongshu/delete-note: failed to locate note row | exception | error | browser-automation, ui-automation, unclassified |
| xiaohongshu/delete-note: confirmation modal step failed (${c | exception | error | ui-automation, dom-change, modal |
| xiaohongshu/delete-note: note ${noteId} still visible after | exception | error | verification, browser-automation, timeout |
| xiaohongshu/delete-note failed: ${err?.message ?? String(err | exception | error | cli, wrapper-error, web-automation |
SECURITY_BLOCK Xiaohongshu security block: the note detail page was blocked by risk control. | error_code | error | risk-control, anti-bot, security-block, xiaohongshu |
| Xiaohongshu media extraction returned malformed payload. | exception | error | extraction, dom-parse, malformed-payload, web-automation |
| No downloadable media found on this note. | exception | warning | empty-result, extraction, media, web-automation |
| Failed to ${execute ? 'clear' : 'count'} ${draftType} drafts | exception | error | indexeddb, drafts, web-automation, cli |
| ${result.after} ${draftType} drafts still exist after clear | exception | error | indexeddb, cli, drafts, state-inconsistency |
| Failed to delete draft ${row.id} | exception | error | indexeddb, cli, delete-failed |
| Draft ${row.id} still exists after delete | exception | error | indexeddb, cli, delete-failed, state-inconsistency |
| Unsupported draft type "${raw}". Expected one of: ${choices} | validation | error | cli, argument-validation, input-validation |
| Draft id is required | validation | error | cli, argument-validation, missing-argument |
| Failed to read ${draftType} drafts | exception | error | browser-automation, drafts, spa |
| Malformed ${draftType} draft payload | exception | error | browser-automation, schema, drafts |
| --limit must be a positive integer, got ${JSON.stringify(raw | validation | warning | cli, argument-validation |
| --limit must be a positive integer, got ${parsed} | validation | warning | cli, argument-validation |
| ${webHost} feed: unexpected evaluate response | exception | error | browser-automation, spa, feed |
| ${webHost} feed: ${data.error} | exception | error | browser-automation, spa, feed |
| ${webHost} feed: unexpected items payload shape | exception | error | browser-automation, schema, feed |
| ${webHost} feed: malformed feed item | exception | error | feed, schema, data-quality |
| ${webHost} feed: feed item is missing note id | exception | error | feed, schema, data-quality |
| ${webHost} feed: feed item ${id} is missing xsecToken; canno | exception | error | feed, schema, signed-url |
| No feed items in the hydrated store. | exception | warning | empty-result, scraping, browser-automation, xiaohongshu |
| xiaohongshu/follow: malformed ${context} payload | exception | error | payload-validation, browser-automation, page-evaluate, xiaohongshu |
| xiaohongshu/follow: invalid profile URL | validation | error | argument-validation, url-parsing, cli-usage, xiaohongshu |
| xiaohongshu/follow: profile URL must be an exact https://*.x | validation | error | argument-validation, url-validation, security, xiaohongshu |
| xiaohongshu/follow: profile URL must be /user/profile/<userI | validation | error | argument-validation, url-parsing, cli-usage, xiaohongshu |
| xiaohongshu/follow: user-id must be a Xiaohongshu user ID (e | validation | error | argument-validation, cli-usage, user-id, xiaohongshu |
| Browser session required for xiaohongshu follow | exception | error | browser-session, missing-dependency, browser-automation, xiaohongshu |
| xiaohongshu/follow: malformed current-url payload | exception | error | page-evaluate, payload-validation, browser-automation, xiaohongshu |
| xiaohongshu/follow: expected Xiaohongshu profile host, got $ | exception | error | redirect, host-validation, anti-bot, browser-automation, xiaohongshu |
| www.xiaohongshu.com | exception | error | auth-required, login, session-expired, xiaohongshu |
| xiaohongshu/follow: expected profile ${userId}, got ${parsed | exception | error | xiaohongshu, navigation, browser-automation |
| xiaohongshu/follow failed: ${result.reason ?? 'unknown reaso | exception | error | xiaohongshu, dom-automation, follow-action |
| xiaohongshu/follow failed: ${err?.message ?? String(err)} | exception | error | xiaohongshu, error-wrapping, browser-automation |
| ${message} | validation | error | xiaohongshu, argument-validation, signed-url |
| Unexpected evaluate response | exception | warning | xiaohongshu, page-evaluate, empty-result |
SECURITY_BLOCK Xiaohongshu security block: the note detail page was blocked by risk control. | error_code | error | xiaohongshu, risk-control, security-block |
| Note content requires login | exception | error | xiaohongshu, authentication, login-required |
| Note ${noteId} not found or unavailable — it may have been d | exception | warning | xiaohongshu, empty-result, not-found |
| The note page loaded without visible content. The note may b | exception | warning | scraping, empty-result, xiaohongshu |
| Image file not found: ${absPath} | validation | error | filesystem, argument-error, file-not-found, xiaohongshu |
| Unsupported image format "${ext}". Supported: jpg, png, gif, | validation | error | validation, argument-error, image-format, xiaohongshu |
| Could not find ${fieldName} input. Debug screenshot: /tmp/xh | exception | error | puppeteer, dom-selector, automation, xiaohongshu |
| Could not prepare ${fieldName} input. Debug screenshot: /tmp | exception | error | puppeteer, automation, dom, xiaohongshu |
| Failed to set ${fieldName}. Expected "${text}", got "${actua | exception | error | automation, puppeteer, verification, xiaohongshu |
| Could not attach topic "${topic}": body editor not found | exception | error | automation, dom-selector, topics, xiaohongshu |
| Could not attach topic "${topic}": page.insertText is unavai | exception | error | automation, cdp, api-compatibility, xiaohongshu |
| Could not attach topic "${topic}": failed to type inline top | exception | error | automation, cdp, input, xiaohongshu |
| Could not attach topic "${topic}": page.pressKey is unavaila | exception | error | automation, keyboard-events, api-compatibility, xiaohongshu |
| Could not attach topic "${topic}": failed to accept suggesti | exception | error | browser-automation, ui-timing, command-execution-error |
| Could not attach topic "${topic}": no real topic entity appe | exception | error | xhs-dom, ui-verification, postcondition-failed |
| 文字配图: could not focus card editor #${index + 1} | exception | error | browser-automation, focus-failure, ui-timing |
| 文字配图: card editor #${index + 1} is empty after typing | exception | error | browser-automation, input-failure, verification |
| 文字配图: requested style "${styleName}" is not available for th | exception | error | validation, xhs-dom, cli-argument |
| 文字配图: could not click requested style "${styleName}". | exception | error | browser-automation, click-failure, ui-timing |
| ${label}: could not verify current composer media count | exception | error | browser-automation, dom-selector, verification |
| ${label}: expected at least ${expectedCount} visible media i | exception | error | upload, media, postcondition-failed |
| 文字配图: could not click "${TEXT_IMAGE_ENTRY_LABEL}" entry. Deb | exception | error | browser-automation, click-failure, ui-timing |
| 文字配图: 写文字 card editor did not appear after clicking "${TEXT_ | exception | error | browser-automation, timeout, ui-timing |
| 文字配图: new card editor #${i + 1} did not render after "${ADD_ | exception | error | puppeteer, ui-automation, xiaohongshu, selector-mismatch |
| 文字配图: "${GENERATE_LABEL}" did not advance to the 预览图片 step. | exception | error | puppeteer, ui-automation, xiaohongshu, timeout |
| 文字配图: could not click "${PREVIEW_NEXT_LABEL}". Debug: /tmp/x | exception | error | puppeteer, ui-automation, xiaohongshu, click-failed |
| Browser page required | exception | error | guard-clause, browser, xiaohongshu, missing-argument |
| --title is required | validation | error | validation, cli-arguments, xiaohongshu |
| Title is ${title.length} chars — must be ≤ ${MAX_TITLE_LEN} | validation | error | validation, cli-arguments, length-limit, xiaohongshu |
| Positional argument <content> is required | validation | error | validation, cli-arguments, xiaohongshu |
| Provide --card-text (text-image mode) or --images (upload mo | validation | error | validation, cli-arguments, xiaohongshu |
| Too many images: ${imagePaths.length} (max ${MAX_IMAGES}) | validation | error | validation, cli-arguments, limit, xiaohongshu |
| 文字配图模式追加的图片不支持 .gif(编辑器图片入口只接受 jpg/jpeg/png/webp) | validation | error | validation, file-format, gif, xiaohongshu |
| Redirected away from creator center — session may have expir | exception | error | authentication, session-expired, browser-automation, xiaohongshu |
| Still on the video publish page after trying to select 图文. D | exception | error | dom-structure, browser-automation, selector-drift, xiaohongshu |
| Image injection failed: ${upload.error ?? 'unknown'}. Debug | exception | error | file-upload, io, browser-automation, xiaohongshu |
| Editing form did not appear after image acquisition. The pag | exception | error | dom-structure, timeout, browser-automation, xiaohongshu |
| Appending images failed: ${upload.error ?? 'unknown'}. Debug | exception | error | file-upload, io, browser-automation, xiaohongshu |
| Could not trigger "${actionLabels[0]}" action${viaClause}${e | exception | error | dom-structure, click-failure, browser-automation, xiaohongshu |
| ${verb} could not be verified: no success marker or post-sub | exception | error | verification, timeout, browser-automation, xiaohongshu |
| Unexpected Xiaohongshu search harvest row ${index + 1} shape | exception | error | validation, schema, scraping, xiaohongshu |
| Unexpected Xiaohongshu search harvest row ${index + 1} shape | exception | error | validation, schema, scraping, xiaohongshu |
| Unexpected Xiaohongshu search harvest row ${index + 1} URL; | exception | error | validation, url, security, scraping, xiaohongshu |
| Unexpected Xiaohongshu search harvest row ${index + 1} autho | exception | error | validation, scraping, url-trust, xiaohongshu |
| Unexpected Xiaohongshu search harvest payload shape; expecte | exception | error | schema-validation, scraping, payload-shape, xiaohongshu |
| --limit must be an integer between 1 and 100, got ${JSON.str | validation | error | cli, argument-validation, input-validation |
| --limit must be between 1 and 100, got ${parsed} | validation | error | cli, argument-validation, range-check |
| --${definition.arg} must be one of: ${Object.keys(definition | validation | error | cli, argument-validation, allowlist, filters |
| Unexpected Xiaohongshu search filter result shape. | exception | error | schema-validation, scraping, payload-shape, filters |
| Xiaohongshu search filters require a logged-in browser sessi | exception | error | authentication, session, scraping, xiaohongshu |
| xiaohongshu search filter ${detail} | exception | error | timeout, scraping, filters, ui-settle |
| Xiaohongshu location filter was not applied (${detail}); ena | exception | error | geolocation, browser-permissions, filters, headless |
| Xiaohongshu account-scoped filter was unavailable (${detail} | exception | error | capability, account-restrictions, filters, scraping |
| Xiaohongshu search filter chip did not become active (${deta | exception | error | filter, dom-automation, puppeteer |
| Xiaohongshu search filter layout did not match the expected | exception | error | filter, dom-automation, layout |
| targetCount must be a positive integer, got ${JSON.stringify | validation | error | argument-validation, typeerror, api-misuse |
| maxScrolls must be a positive integer, got ${JSON.stringify( | validation | error | argument-validation, typeerror, api-misuse |
| maxRounds must be a positive integer, got ${JSON.stringify(m | validation | error | argument-validation, typeerror, api-misuse |
| budgetMs must be a positive number, got ${JSON.stringify(bud | validation | error | argument-validation, typeerror, api-misuse |
| step must be a non-negative number, got ${JSON.stringify(ste | validation | error | argument-validation, typeerror, api-misuse |
| Xiaohongshu search results are blocked behind a login wall | exception | error | authentication, login-wall, scraping |
SECURITY_BLOCK Xiaohongshu search was blocked by request-frequency or security controls. | error_code | error | rate-limit, anti-bot, security-block, scraping |
| xiaohongshu search content | exception | error | timeout, scraping, browser-automation, xiaohongshu |
| Unexpected Xiaohongshu search wait payload shape. | exception | error | internal-contract, browser-automation, payload-shape, xiaohongshu |
| Xiaohongshu search rendered in a collapsed tab, but this bro | exception | error | browser-session, tab-management, capability-check, xiaohongshu |
| Xiaohongshu search cannot identify the collapsed browser tar | exception | error | browser-session, session-state, tab-management, xiaohongshu |
| Failed to replace collapsed Xiaohongshu search tab: ${error? | exception | error | browser-automation, xhs, tab-recovery, command-execution |
| Xiaohongshu search masonry remained collapsed after one fres | exception | error | xhs, anti-bot, rate-limit, collapsed-render |
| No usable notes were rendered for this query. | exception | warning | xhs, empty-results, scraping |
| Xiaohongshu search failed: ${err?.message ?? String(err)} | exception | error | xhs, error-wrapping, command-execution |
| xiaohongshu/unfollow: malformed ${context} payload | exception | error | xhs, payload-validation, browser-automation, schema-mismatch |
| xiaohongshu/unfollow: invalid profile URL | exception | error | argument-validation, url-parsing, cli |
| xiaohongshu/unfollow: profile URL must be an exact https://* | exception | error | argument-validation, url-parsing, https |
| xiaohongshu/unfollow: profile URL must be /user/profile/<use | exception | error | argument-validation, url-parsing, cli |
| xiaohongshu/unfollow: user-id must be a Xiaohongshu user ID | exception | error | argument-validation, cli, user-input |
| Browser session required for xiaohongshu unfollow | exception | error | browser, session, precondition |
| xiaohongshu/unfollow: malformed current-url payload | exception | error | browser, payload-shape, automation |
| xiaohongshu/unfollow: expected Xiaohongshu profile host, got | exception | error | network, redirect, dns, automation |
| www.xiaohongshu.com | exception | error | auth, session, cookies, login |
| xiaohongshu/unfollow: expected profile ${userId}, got ${pars | exception | error | redirect, navigation, automation, page-state |
| xiaohongshu/unfollow failed: ${clickResult.reason ?? 'unknow | exception | error | automation, dom-selector, page-state, ui-change |
| xiaohongshu/unfollow: confirmation modal step failed (${conf | exception | error | browser-automation, dom-selector, modal, xiaohongshu |
| xiaohongshu/unfollow: ${verifyRaw?.reason ?? 'state verifica | exception | error | browser-automation, state-verification, xiaohongshu |
| xiaohongshu/unfollow failed: ${err?.message ?? String(err)} | exception | error | error-wrapping, browser-automation, xiaohongshu |
| Malformed Xiaohongshu user snapshot | exception | error | browser-automation, snapshot, hydration, xiaohongshu |
| Malformed Xiaohongshu user snapshot: user store was not foun | exception | error | hydration, race-condition, browser-automation, xiaohongshu |
| Malformed Xiaohongshu user snapshot: notes array was not fou | exception | error | hydration, snapshot, schema-change, xiaohongshu |
| Xiaohongshu profile requires login (page redirected to /logi | exception | error | authentication, login-wall, session-expired, xiaohongshu |
EMPTY_RESULT 该用户没有公开笔记(可能销号 / 私密 / 全部删除)。 | exception | warning | empty-result, xiaohongshu, data-availability |
| Xiaoyuzhou credential file is missing access_token or refres | exception | error | config, credentials, token, xiaoyuzhou |
| Failed to parse Xiaoyuzhou credential file: ${filePath} | exception | error | config, json-parse, credentials, xiaoyuzhou |
| Missing Xiaoyuzhou credentials. Expected ${filePath} | exception | error | config, missing-credentials, filesystem, authentication |
| Failed to refresh Xiaoyuzhou credentials: ${getErrorMessage( | exception | error | network, token-refresh, timeout, fetch |
| Xiaoyuzhou refresh returned invalid JSON: ${getErrorMessage( | exception | error | json, network, proxy, response-parsing |
| Failed to reach Xiaoyuzhou API: ${getErrorMessage(error)} | exception | error | network, timeout, dns, fetch |
| Xiaoyuzhou API request failed with HTTP ${response.status}${ | exception | error | http, api, rate-limit, network |
| Xiaoyuzhou API returned invalid JSON: ${getErrorMessage(erro | exception | error | json, api-response, network, parsing |
| Xiaoyuzhou API returned an invalid service code | exception | error | api-response, schema, validation |
| Xiaoyuzhou API rejected the credentials with service code ${ | exception | error | authentication, unauthorized, credentials, api |
| ${parsed?.message || parsed?.msg || `Xiaoyuzhou API returned | exception | error | api-response, service-error, http-status, rate-limit |
| ${parsed?.message || parsed?.msg || 'Xiaoyuzhou API returned | exception | error | api-response, service-error, validation, schema |
| Failed to fetch Xiaoyuzhou transcript content: ${getErrorMes | exception | error | network, fetch, timeout, cli |
| Xiaoyuzhou transcript download failed with HTTP ${response.s | exception | error | http, http-status, rate-limit, cli |
NOT_FOUND Episode not found | error_code | error | not-found, api, invalid-input, cli |
PARSE_ERROR Audio URL not found in episode payload | error_code | error | parse-error, api-schema, missing-field, cli |
NOT_FOUND Episode not found | error_code | error | not-found, api, invalid-input, cli |
| --${label} must be an integer between 1 and ${maximum} | validation | error | cli, argument-validation, input-error |
| Xiaoyuzhou history returned an invalid ${label} | exception | error | api-response, schema-validation, upstream-data |
| Xiaoyuzhou history returned an invalid ${label}; expected se | exception | error | api-response, schema-validation, type-mismatch |
| Xiaoyuzhou history returned a missing ${label} | exception | error | api-response, schema-validation, missing-field |
| Xiaoyuzhou history returned an unexpected response shape | exception | error | api-response, auth, network, xiaoyuzhou |
| Xiaoyuzhou history returned an invalid loadMoreKey | exception | error | api-response, pagination, cursor, xiaoyuzhou |
| Xiaoyuzhou history returned an empty page with a continuatio | exception | error | pagination, api-response, invariant-violation, xiaoyuzhou |
| Xiaoyuzhou history row ${rowNumber} is malformed; expected e | exception | error | api-response, schema-validation, xiaoyuzhou |
| Xiaoyuzhou history row ${rowNumber} is missing podcast or fi | exception | error | api-response, schema-validation, xiaoyuzhou |
| Xiaoyuzhou playback progress returned an unexpected response | exception | error | api-response, network, auth, xiaoyuzhou |
| Xiaoyuzhou playback progress row ${index + 1} is malformed | exception | error | api-response, schema-validation, xiaoyuzhou |
| Xiaoyuzhou playback progress returned unrequested eid ${eid} | exception | error | api-response, contract-violation, pagination, xiaoyuzhou |
| Xiaoyuzhou playback progress returned duplicate eid ${eid} | exception | error | api, data-integrity, pagination, deduplication |
| Xiaoyuzhou playback progress pid did not match history eid $ | exception | error | api, data-integrity, join-mismatch, schema |
| Xiaoyuzhou playback progress exceeded duration for eid ${eid | exception | error | api, data-integrity, units, validation |
| Xiaoyuzhou playback progress omitted requested eid ${episode | exception | error | api, data-integrity, pagination, incomplete-data |
| --all must be a boolean | validation | error | argument-validation, types, cli, developer-error |
| Xiaoyuzhou history repeated eid ${episode.eid}; the paginati | exception | error | pagination, consistency, api, race-condition |
| Xiaoyuzhou history pagination repeated the same cursor | exception | error | pagination, infinite-loop-guard, api, cursor |
| Xiaoyuzhou history stopped at the --max-pages safety limit ( | exception | error | pagination, safety-limit, configuration, cli |
| xiaoyuzhou history | exception | warning | empty-result, api, pagination, account-state |
| Xiaoyuzhou history archive did not reach the end of paginati | exception | error | pagination, completeness, api, invariant-violation |
INVALID_ARGUMENT INVALID_ARGUMENT | error_code | error | cli, argument-validation, input-validation |
PARSE_ERROR PARSE_ERROR | error_code | error | cli, api-response, schema-mismatch |
NOT_FOUND NOT_FOUND | error_code | error | cli, not-found, resource-lookup |
| At least one of --json or --text must be enabled | validation | error | cli, argument-validation, flags |
NOT_FOUND NOT_FOUND | error_code | error | cli, not-found, transcript |
PARSE_ERROR PARSE_ERROR | error_code | error | cli, parse-error, missing-field, transcript |
EMPTY_RESULT EMPTY_RESULT | error_code | warning | cli, empty-result, transcript |
| xueqiu.com | exception | critical | auth, cookies, xueqiu |
| auth | exception | critical | auth, session-expired, xueqiu |
| http | exception | error | http, anti-bot, xueqiu, rate-limit |
| xq-error | exception | error | xueqiu, api-error, error-code |
| exception | exception | error | network, browser, xueqiu, exception |
| Unexpected xueqiu probe: ${JSON.stringify(probe)} | exception | error | xueqiu, defensive, unexpected-state |
| xueqiu.com | exception | error | auth, anti-bot, xueqiu, login-required |
| xueqiu comments received an invalid symbol: ${symbol} | validation | error | validation, symbol, xueqiu, argument |
| xueqiu/comments ${symbol} | exception | warning | empty-result, xueqiu, no-data |
| Unexpected response while loading xueqiu comments for ${symb | exception | error | schema-change, xueqiu, unexpected-response |
| Unexpected response while loading xueqiu comments for ${opti | exception | error | unexpected-response, xueqiu, empty-page, network |
| xueqiu comments requires --limit to be a positive integer | validation | error | cli, argument-validation, xueqiu |
| xueqiu comments supports --limit up to 100 | validation | error | cli, argument-validation, xueqiu |
| xueqiu comments requires a symbol | validation | error | cli, missing-argument, xueqiu |
| xueqiu comments only accepts a symbol, not a URL | validation | error | cli, argument-validation, xueqiu |
| HTTP ${raw._httpError} — Hint: not logged in to ${DANJUAN_DO | exception | error | http, authentication, cookies, danjuan |
| No fund accounts found — Hint: not logged in to ${DANJUAN_DO | exception | error | authentication, cookies, empty-result, danjuan |
| Failed to fetch Danjuan account details: ${failedAccounts} | exception | error | network, partial-failure, danjuan |
| xueqiu/earnings-date | exception | warning | empty-result, xueqiu, data-source |
| No fund accounts found — Hint: not logged in to danjuanfunds | exception | error | authentication, cookies, empty-result, danjuan |
| No holdings matched account filter: ${filter} | exception | error | cli, filtering, empty-result, user-input |
| xueqiu.com | exception | error | auth, scraping, xueqiu, session-expired |
| xueqiu.com | exception | error | auth, scraping, xueqiu, session-expired |
| xueqiu/kline | exception | error | empty-result, xueqiu, validation, symbol |
| xueqiu/stock | exception | error | empty-result, xueqiu, validation, symbol |
| xueqiu.com | exception | error | auth, session-expired, xueqiu, http-401 |
| 响应不是有效 JSON | exception | error | xueqiu, json-parse, anti-bot, risk-control |
| HTTP ${code} | exception | error | http, network, xueqiu, api-error |
| xueqiu.com | exception | error | auth, xueqiu, empty-response, session |
| Failed to fetch quote for ${symbol} | exception | error | yahoo-finance, scraping, invalid-symbol, dom-selector |
EMPTY_RESPONSE EMPTY_RESPONSE | error_code | error | empty-response, api, cli, image-generation |
EMPTY_RESPONSE EMPTY_RESPONSE | error_code | error | empty-response, api, cli, image-edit |
EMPTY_RESPONSE EMPTY_RESPONSE | error_code | error | empty-response, api, cli, face-swap |
INVALID_MODEL INVALID_MODEL | error_code | error | invalid-model, config, cli, validation |
EMPTY_RESPONSE EMPTY_RESPONSE | error_code | error | empty-response, api, cli, image-generation |
EMPTY_RESPONSE EMPTY_RESPONSE | error_code | error | empty-response, api, cli, inpainting |
EMPTY_RESPONSE EMPTY_RESPONSE | error_code | error | empty-response, api, cli, background-removal |
EMPTY_RESPONSE EMPTY_RESPONSE | error_code | error | empty-response, api, cli, photo-restoration |
EMPTY_RESPONSE EMPTY_RESPONSE | error_code | error | empty-response, api, cli, virtual-tryon |
FILE_NOT_FOUND FILE_NOT_FOUND | error_code | error | file-not-found, filesystem, cli, validation |
INVALID_TYPE INVALID_TYPE | error_code | error | cli, file-upload, validation, unsupported-file-type |
FILE_TOO_LARGE FILE_TOO_LARGE | error_code | error | cli, file-upload, file-size, limit-exceeded |
UPLOAD_ERROR UPLOAD_ERROR | error_code | error | cli, file-upload, network, authentication |
EMPTY_RESPONSE EMPTY_RESPONSE | error_code | error | cli, upscale, empty-response, api-schema |
FETCH_ERROR FETCH_ERROR | error_code | error | network, browser-bridge, cli, fetch |
API_ERROR API_ERROR | error_code | error | api, http-status, rate-limit, authentication, credits |
FILE_NOT_FOUND FILE_NOT_FOUND | error_code | error | cli, file-io, path, input-validation |
DOWNLOAD_ERROR DOWNLOAD_ERROR | error_code | error | download, network, http-status, url-expiry |
EMPTY_RESPONSE EMPTY_RESPONSE | error_code | error | cli, video-generation, empty-response, prompt |
| youdao note url cannot be empty | validation | error | argument-error, validation, input-validation, url |
| Invalid Youdao Note URL | validation | error | argument-error, url-parsing, validation, malformed-input |
| Youdao Note URL must use http or https | validation | error | argument-error, url-scheme, validation, security |
| Youdao Note URL must be under note.youdao.com or note.youdao | validation | error | argument-error, url-hostname, validation, allowlist |
| Youdao Note URL must include an id query parameter | validation | error | argument-error, query-parameter, validation, url |
| youdao note only accepts shared note URLs | validation | error | argument-error, unsupported-feature, validation, shared-notebook |
| Youdao note extractor returned a malformed payload | exception | error | command-execution-error, malformed-payload, browser-extraction, page-structure-change |
| note.youdao.com | exception | error | auth-required, login-wall, captcha, sharing-permissions |
| youdao note | exception | warning | empty-result, not-found, expired-share, content-availability |
| Youdao note parser failed: ${reason} | exception | error | command-execution-error, parser-failure, page-structure-change, browser-extraction |
| Youdao note parser did not extract a title | exception | error | parsing, browser-automation, extraction |
| Youdao note parser did not find full note content in the pag | exception | error | parsing, browser-automation, spa |
| Youdao note parser found note content but extracted no reada | exception | error | parsing, extraction |
| Failed to open Youdao Note URL: ${error instanceof Error ? e | exception | error | network, browser-automation, navigation |
| Youdao note extractor failed: ${error instanceof Error ? err | exception | error | browser-automation, javascript, extraction |
| www.youtube.com | exception | error | auth, cookies, youtube |
| auth | exception | error | auth, cookies, youtube |
| Unexpected YouTube probe: ${JSON.stringify(probe)} | exception | error | youtube, browser-automation, contract-violation |
| Failed to fetch channel data | exception | error | youtube, scraping, extraction |
| String(data.error) | exception | error | youtube, scraping, page-evaluate, command-execution |
| errMsg | exception | error | youtube, scraping, comments, command-execution |
| Failed to fetch YouTube feed | exception | error | youtube, feed, scraping, command-execution |
| youtube feed | exception | warning | youtube, feed, empty-result, scraping |
| youtube history limit must be a positive integer | validation | error | validation, argument-error, youtube, input-validation |
| youtube history limit must be <= ${MAX_LIMIT} | validation | error | validation, argument-error, youtube, limits |
| www.youtube.com | exception | error | auth, youtube, cookies, authentication-required |
| YouTube history request | exception | error | timeout, youtube, network, rate-limiting |
| youtube history | exception | warning | youtube, empty-result, history, scraping |
| Failed to fetch YouTube history | exception | error | youtube, scraping, command-execution |
| www.youtube.com | exception | error | youtube, auth, sapisid, cookies |
| Failed to like video | exception | error | youtube, api, command-execution, innertube |
| Failed to fetch playlist data | exception | error | youtube, scraping, playlist, command-execution |
| String(data.error) | exception | error | youtube, playlist, scraping, command-execution |
| youtube playlist | exception | warning | youtube, playlist, empty-result, scraping |
| youtube search ${label} must be one of: ${Object.keys(choice | validation | error | youtube, search, argument-validation, cli |
| youtube search limit must be a positive integer | validation | error | youtube, search, argument-validation, cli |
| youtube search limit must be <= ${MAX_LIMIT} | validation | error | youtube, search, argument-validation, cli, limit |
| String(payload.error) | exception | error | youtube, browser-automation, payload-validation, error-propagation |
| `Malformed ${source} payload` | exception | error | youtube, browser-automation, schema-validation, malformed-payload |
| `Malformed json3 timedtext response: ${err?.message || err}` | exception | error | youtube, json, parse-error, timedtext |
| Malformed json3 timedtext response: missing events array | exception | error | youtube, schema-validation, timedtext, malformed-payload |
| captured.error | exception | error | youtube, network-capture, browser-automation, timedtext |
| `Failed to get caption info: ${typeof captionData === 'strin | exception | error | youtube, browser-automation, type-guard, malformed-response |
| 该视频没有字幕(作者未开启 + 无自动字幕)。 | exception | warning | youtube, empty-result, no-captions, expected-condition |
| msg | exception | error | youtube, fetch-failure, retryable, browser-automation |
| Malformed caption info payload | exception | error | youtube, schema-validation, malformed-payload, browser-automation |
| youtube transcript | exception | warning | youtube, empty-result, no-transcript, expected-condition |
| Not logged in (SAPISID cookie missing) | exception | critical | auth, youtube, cookies, login-required |
| www.youtube.com | exception | critical | auth, youtube, session-expired, api-401 |
| result.message || 'Failed to remove like' | exception | error | youtube, browser, command-execution, http-error |
| Not logged in (SAPISID cookie missing) | exception | critical | auth, youtube, cookies, login-required |
| www.youtube.com | exception | critical | auth, youtube, session-expired, api-401 |
| result.message || 'Failed to unsubscribe' | exception | error | youtube, browser, command-execution, http-error |
| Failed to extract video metadata from page | exception | error | youtube, browser, metadata, null-result |
| String(payload.error) | exception | error | youtube, browser, metadata, page-error |
| YouTube video metadata is missing playabilityStatus | exception | error | youtube, schema-validation, metadata, type-mismatch |
| YouTube video metadata is missing playabilityReason | exception | error | youtube, schema-validation, metadata, type-mismatch |
| YouTube video metadata is missing membersOnly | exception | error | youtube, scraping, schema-mismatch, parsing |
| Failed to fetch Watch Later — make sure you are logged into | exception | error | youtube, authentication, scraping, empty-payload |
| String(data.error) | exception | error | youtube, scraping, runtime-error, dynamic-message |
| youtube watch-later | exception | warning | youtube, empty-result, scraping |
| --timeout must be a positive integer (seconds) | validation | error | cli, argument-validation, yuanbao |
| yuanbao ask | exception | error | timeout, yuanbao, network, cli |
| Yuanbao showed wx login gate — anonymous session | exception | error | yuanbao, authentication, login-gate |
| Yuanbao hy_user cookie missing — anonymous session | exception | error | yuanbao, authentication, cookies, session |
| Waiting for Yuanbao hy_user cookie | exception | info | yuanbao, authentication, login-flow, polling |
| `No visible messages found for conversation ${agentId}/${con | exception | error | yuanbao, empty-result, wrong-arguments, scraping |
| must be a positive integer | validation | error | validation, argument-error, cli |
| No Yuanbao conversations found in the sidebar. Either the ac | exception | warning | empty-result, dom-scraping, auth |
| prompt | validation | error | validation, argument-error, cli |
| Failed to send Yuanbao prompt | exception | error | dom-scraping, command-execution, network |
| must be a non-empty Yuanbao chat URL or "<agentId>/<convId>" | validation | error | validation, argument-error, session-id |
| not a valid Yuanbao chat URL (got "${input}"); expected http | validation | error | validation, argument-error, url-parsing, session-id |
| not a valid Yuanbao "<agentId>/<convId>" pair (got "${input} | validation | error | validation, argument-error, session-id |
| not a valid Yuanbao session reference (got "${input}"); pass | validation | error | validation, argument-error, session-id |
| limit | validation | error | validation, argument-error, library-api |
| Zhihu ${label} request failed: ${error instanceof Error ? er | exception | error | network, http-request, command-execution, dom-scraping |
| Zhihu ${label} returned malformed JSON: ${payload.__malforme | exception | error | zhihu, json-parse, network, scraping |
| Zhihu ${label} returned a malformed payload | exception | error | zhihu, schema-validation, serialization |
40362 Zhihu risk control blocked ${label} (40362): ${payload.__errorMessage || 'abnorm | exception | error | zhihu, rate-limit, anti-bot, risk-control |
| www.zhihu.com | exception | error | zhihu, auth, login-required, session-expired |
| Zhihu ${label} returned an error payload: ${payload.__errorM | exception | error | zhihu, api-error, business-logic, error-code |
| Zhihu ${label} returned malformed paging state | exception | error | zhihu, pagination, schema-validation |
| Zhihu answer comments contained a malformed ${role} row | exception | error | zhihu, schema-validation, data-integrity, null-row |
| Zhihu answer comments contained a ${role} row without a stab | exception | error | api, data-validation, zhihu, schema |
| Zhihu answer comment ${id} had conflicting root provenance | exception | error | api, data-integrity, zhihu, provenance |
| Zhihu answer comment ${id} did not identify its immediate pa | exception | error | api, data-validation, zhihu, tree-structure |
| Zhihu answer comments returned conflicting data for comment | exception | error | api, pagination, data-integrity, zhihu |
| Zhihu ${label} pagination returned a repeated next URL | exception | error | pagination, api, network, zhihu |
| Zhihu ${label} pagination exceeded its fetch budget | exception | error | pagination, api, limits, zhihu |
| Zhihu ${label} pagination returned a malformed next URL | exception | error | pagination, api, url, zhihu |
| Zhihu answer root comment ${id} had malformed child count | exception | error | api, data-validation, zhihu, schema |
| Zhihu answer root comment ${id} advertised replies but retur | exception | error | api, data-consistency, zhihu, deleted-content |
| Zhihu answer comments contained a reply cycle at ${cursor} | exception | error | data-integrity, graph-cycle, zhihu, corruption |
| Zhihu answer comments referenced missing parent ${cursor} | exception | error | zhihu, comments, data-integrity, graph |
| Zhihu answer comments reused id ${rootDescriptor.id} across | exception | error | zhihu, comments, duplicate-id, pagination |
| Zhihu answer comments reused id ${descriptor.id} across grap | exception | error | zhihu, comments, duplicate-id, graph |
| Answer ID must be a numeric id, a Zhihu answer URL, or answe | validation | error | zhihu, argument-validation, cli-input |
| --limit must be a positive integer no greater than ${MAX_LIM | validation | error | zhihu, argument-validation, cli-input |
| --replies-limit must be an integer between 0 and ${MAX_REPLI | validation | error | zhihu, argument-validation, cli-input |
| --order must be score or latest | validation | error | zhihu, argument-validation, cli-input |
| Failed to open Zhihu answer ${answerId}: ${err instanceof Er | exception | error | zhihu, navigation, network, browser-automation |
| zhihu answer-comments | exception | warning | zhihu, empty-result, comments |
| Answer ID must be a numeric id, a Zhihu answer URL, or answe | validation | error | zhihu, argument-validation, cli-input |
| --max-content must be a non-negative integer (0 = no cap, fu | validation | error | argument-validation, cli, input-validation |
| Failed to open Zhihu answer ${answerId}: ${err instanceof Er | exception | error | network, navigation, browser, zhihu |
| Zhihu answer detail request failed: ${err instanceof Error ? | exception | error | network, fetch, browser, zhihu |
| Failed to fetch Zhihu answer detail | exception | error | auth, http-401, http-403, zhihu |
zhihu answer-detail No Zhihu answer was found for ${answerId}. | exception | warning | http-404, empty-result, zhihu, not-found |
| Zhihu answer detail request failed (HTTP ${status}) | exception | error | http, http-5xx, rate-limit, zhihu |
| Zhihu answer detail returned malformed JSON: ${data.__malfor | exception | error | json, parsing, anti-bot, zhihu |
| Zhihu answer detail returned a malformed payload | exception | error | json, schema, api-contract, zhihu |
| Zhihu answer detail returned an error payload: ${data.error? | exception | error | api-error, zhihu, payload |
| Zhihu answer detail payload did not include answer content | exception | error | schema, missing-field, api-contract, zhihu |
| Browser session required for zhihu answer | exception | error | browser-session, zhihu, cli, authentication |
COMMAND_EXEC ${apiResult?.message || 'Failed to create answer'} | error_code | error | zhihu, api, http, command-execution |
| Zhihu z_c0 cookie missing — anonymous | exception | error | authentication, zhihu, cookie, browser-session |
| Zhihu whoami failed: ${data.__exception} | exception | error | zhihu, in-page-script, network, command-execution |
| Zhihu /api/v4/me returned HTTP ${status} — anonymous | exception | error | authentication, zhihu, http-401, http-403, session-expired |
| Zhihu identity probe failed (HTTP ${status ?? 'unknown'}) | exception | error | zhihu, http-5xx, rate-limit, transient |
| Zhihu /api/v4/me returned no url_token — anonymous session | exception | error | authentication, zhihu, api-response, session |
| Waiting for Zhihu z_c0 cookie | exception | warning | authentication, login, zhihu, cookie, polling |
| zhihu collection --${name} must be a positive integer | validation | error | validation, arguments, cli, zhihu |
| zhihu collection --${name} must be a non-negative integer | validation | error | validation, arguments, cli, pagination, zhihu |
| Failed to fetch collection data from Zhihu. Please ensure yo | exception | error | auth, http-401, http-403, zhihu, network |
| Zhihu collection request failed (HTTP ${status}) | exception | error | http, network, rate-limit, zhihu |
| Zhihu collection returned unsupported content type: ${type | | exception | error | schema, zhihu, mapping, api-change |
| Zhihu collection returned a malformed item without title or | exception | error | validation, zhihu, schema, data-quality |
| Collection ID must be numeric | validation | error | validation, argument, zhihu, cli |
zhihu collection No items found for collection ${collectionId}. The collection may be empty, priv | exception | warning | empty-result, pagination, zhihu |
| zhihu collections --${name} must be a positive integer | validation | error | validation, argument, cli, pagination |
| ${errorLabel} from Zhihu failed. Please ensure you are logge | exception | error | auth, http-401, http-403, zhihu |
| ${errorLabel} from Zhihu failed (HTTP ${status}) | exception | error | http, network, rate-limit, zhihu |
| Failed to get user url_token from Zhihu | exception | error | auth, zhihu, session, schema |
zhihu collections No favorite collections were returned for the logged-in user. | exception | warning | zhihu, empty-result, scraping, authentication |
| Browser session required for zhihu comment | exception | error | zhihu, browser-session, precondition, write-command |
COMMAND_EXEC ${apiResult?.message || 'Failed to create comment'} | error_code | error | zhihu, api-error, write-command, rate-limit |
| Zhihu column download returned malformed article fields | exception | error | zhihu, schema-validation, scraping, dom-change |
zhihu download The Zhihu column article had no exportable content. | exception | warning | zhihu, empty-result, lazy-loading, scraping |
| Zhihu column extraction failed: ${error instanceof Error ? e | exception | error | browser-automation, scraping, navigation, zhihu |
| Failed to open Zhihu answer ${target.answerId}: ${error inst | exception | error | network, navigation, timeout, zhihu |
| Zhihu answer navigation changed identity for answer ${target | exception | error | redirect, authentication, scraping, zhihu |
| Zhihu answer download request failed: ${error instanceof Err | exception | error | browser-automation, network, fetch, zhihu |
| Zhihu answer download returned a malformed Browser Bridge pa | exception | error | payload, serialization, browser-automation, zhihu |
| Zhihu risk control blocked answer ${target.answerId} (40362) | exception | error | zhihu, risk-control, anti-bot, http-40362, scraping |
| zhihu search --limit must be a positive integer no greater t | validation | error | cli, argument-validation, zhihu, input-error |
| zhihu search query must not be empty | validation | error | cli, argument-validation, zhihu, input-error |
| zhihu search --type must be one of: ${TYPES.join(', ')} | validation | error | cli, argument-validation, zhihu, enum-validation |
| Zhihu search returned malformed payload | exception | error | zhihu, malformed-payload, browser-bridge, parsing |
| www.zhihu.com | error_code | error | zhihu, authentication, http-401, http-403, session-expired |
| Zhihu search request failed${status ? ` (HTTP ${status})` : | exception | error | zhihu, http-error, rate-limit, network |
| Zhihu search request failed | exception | error | zhihu, network, fetch-failed, connectivity |
| Zhihu search returned malformed data list | exception | error | zhihu, schema-mismatch, malformed-payload, parsing |
| Zhihu search returned malformed paging data | exception | error | zhihu, schema-mismatch, pagination, malformed-payload |
| Zhihu search returned malformed result row identity | exception | error | zhihu, search, data-validation, api |
| Zhihu search pagination returned malformed next URL | exception | error | zhihu, search, pagination, api |
| Zhihu search pagination returned a repeated next URL | exception | error | zhihu, search, pagination, infinite-loop |
| zhihu search | error_code | info | zhihu, search, empty-result |
INVALID_INPUT INVALID_INPUT | error_code | error | zhihu, input-validation, url |
UNSUPPORTED_TARGET UNSUPPORTED_TARGET | error_code | error | zhihu, input-validation, command-target-mismatch |
| Zhihu user answers returned malformed row identity | exception | error | zhihu, user-answers, data-validation, api |
INVALID_INPUT INVALID_INPUT | error_code | error | zhihu, input-validation, empty-argument |
| Zhihu user articles returned malformed row identity | exception | error | api, zhihu, response-shape |
| www.zhihu.com | error_code | error | auth, zhihu, http-403 |
| zhihu user | error_code | warning | not-found, zhihu, slug |
| Zhihu user request failed (HTTP ${status}) | exception | error | http, network, zhihu |
| Zhihu user response missing identity fields | exception | error | schema, zhihu, response-shape |
INVALID_INPUT INVALID_INPUT | error_code | error | cli, input-validation, flags |
ACTION_NOT_AVAILABLE ACTION_NOT_AVAILABLE | error_code | error | authentication, scraping, zhihu |
| zlibrary info | error_code | error | scraping, empty-result, zlibrary |
| zlibrary search | error_code | error | scraping, empty-result, zlibrary, search |
| Z-Library book URL must be a valid http(s) URL | validation | error | argument-validation, url |
| Unsupported Z-Library URL host: ${url.hostname} | validation | error | argument-validation, url, allowlist |
| zlibrary search query cannot be empty | validation | error | argument-validation, empty-input |
| auth | error_code | error | auth, http, session-expired |
| HTTP ${probe.httpStatus} from zsxq /v2/users/self | exception | error | http, network, api |
| zsxq whoami failed: ${probe.detail} | exception | error | network, fetch, json |
| Unexpected zsxq probe: ${JSON.stringify(probe)} | exception | error | internal, invariant, probe |
| zsxq /v2/users/self 200 but user_id missing — incomplete ses | error_code | error | auth, schema-change, session |
| Waiting for zsxq login | error_code | error | auth, login, timeout |
FETCH_ERROR ${detailResp.error || `Failed to fetch topic ${topicId}`} | error_code | error | fetch, http, network |
| zsxq.com | error_code | error | auth, session, login-required |
| Cannot determine active group_id | validation | error | argument, browser, configuration |
FETCH_ERROR No candidate endpoint returned JSON | error_code | error | network, api, json, fetch |
PARSE_ERROR Invalid ZSXQ API response | error_code | error | parse, api, json, schema |
${code} ${message} | error_code | error | api, business-error, error-code, zsxq |
session_required Browser session is required. | error_code | error | argument, session, cli-usage, validation |
| Cannot create ${role} tab group without tabs | exception | error | chrome-extension, tabs, internal, invariant |
| Failed to create tab lease in automation container | exception | error | chrome-extension, tabs, race-condition, automation |
bound_window_operation_blocked Session "${existing.session}" is bound to a user tab and does not own an OpenCLI | error_code | error | chrome-extension, session, window, permission |
| Bound tab for session "${session.session}" is not debuggable | error_code | error | chrome-extension, debugging, cdp, session-binding |
bound_tab_gone Bound tab for session "${existingSession.session}" no longer exists. | error_code | error | chrome-extension, tab-lifecycle, session-binding |
bound_tab_not_debuggable Bound tab for session "${session.session}" is not debuggable (${preferredTab.url | error_code | error | chrome-extension, debugging, cdp, session-binding |
| Failed to create tab in automation container | exception | error | chrome-extension, tab-creation, tabs-api |
| Cannot debug tab ${tabId}: URL is ${tab.url ?? 'unknown'} | exception | error | cdp, debugging, chrome-extension, url-policy |
| Tab ${tabId} no longer exists | exception | error | cdp, tab-lifecycle, chrome-extension, stale-reference |
| attach failed: ${lastError}${hint} | exception | error | cdp, debugger-attach, chrome-extension, devtools-conflict |
| ${errMsg} | exception | error | cdp, runtime-evaluate, javascript, page-exception |
| No element found matching selector: ${query} | exception | error | cdp, dom, selector, file-upload |
| No iframe target found for frame ${frameId}${targetUrl ? ` ( | exception | error | cdp, iframe, chrome-extension, frame-target |
| No targetId for tab ${tabId} — page may have been closed | exception | error | chrome-extension, tab-lifecycle, identity-mapping, stale-reference |
| Page not found: ${targetId} — stale page identity | exception | error | chrome-extension, target-lifecycle, identity-mapping, stale-reference |
${resolution.code} ${resolution.message} | error_code | error | target-resolution, selector, dom, playwright-style |
| evaluateWithArgs: invalid key "${key}" | exception | error | validation, javascript-identifiers, api-misuse |
FETCH_ERROR Browser fetch failed for ${targetUrl}: ${result.error} | error_code | error | network, fetch, browser-context, http |
| OPENCLI_DAEMON_PORT is no longer supported${suffix}. The Ope | exception | error | environment, configuration, daemon, breaking-change |
| Element not found: ref=${ref} | exception | error | dom, stale-reference, browser-automation |
| setFileInput returned no count — command may not be supporte | exception | error | extension, browser-automation, version-compatibility |
| insertText returned no inserted flag — command may not be su | exception | error | extension, browser-automation, version-compatibility |
| DOM node not found | exception | error | dom, selector, cdp, browser-automation |
| Element not found: ${safeRef} | exception | error | dom, stale-reference, browser-automation |
| profile contextId is required | validation | error | configuration, validation, profiles |
| profile alias is required | validation | error | configuration, validation, profiles |
| profile is required | validation | error | configuration, validation, profiles |
| No resolved element | exception | error | dom, browser-automation, state, stale-reference |
| page.evaluate(fn) requires a serializable arrow/function exp | validation | error | serialization, browser, evaluate |
| page.evaluate arguments must be JSON-serializable: ${describ | validation | error | serialization, json, evaluate |
| page.evaluate arguments must be JSON-serializable | validation | error | serialization, json, browser, evaluate |
| page.evaluate string input does not accept args; use page.ev | validation | error | api-misuse, evaluate, arguments, browser |
| Failed to parse fixture ${p}: ${err instanceof Error ? err.m | exception | error | json, fixture, parse, filesystem |
| failed to scan ${filePath}: ${getErrorMessage(cause)} | exception | error | filesystem, build, manifest, read-file |
| The `--session` flag is no longer a public option. Use the p | exception | error | cli, api-misuse, breaking-change, argv |
| Target tab ${candidate} could not be validated in the curren | exception | error | browser, session, stale-state, tab-targeting |
| Target tab ${candidate} is not part of the current browser s | exception | error | browser, stale-state, tab-targeting, session |
| This browser session does not support explicit tab targeting | exception | error | browser, capability-missing, tab-targeting, driver |
| --window must be one of: foreground, background. Received: " | validation | error | cli, validation, arguments, env-var |
| OPENCLI_WINDOW must be one of: foreground, background. Recei | validation | error | env-var, cli, validation |
| <session> is a required positional argument: opencli browser | validation | error | cli, missing-argument, commander |
| Browser page is missing a session | exception | error | invariant, browser, missing-property |
| --${label} must be a positive integer (got "${val}") | validation | error | cli, validation, argument-parsing |
| ${resolution.message} | error_code | error | browser, target-resolution, dom |
| This browser session does not support creating tabs | exception | error | browser, capability, unsupported-operation |
| Target tab required. Pass it as an argument or --tab <target | validation | error | cli, missing-argument, browser |
| This browser session does not support closing tabs | exception | error | browser, capability, unsupported-operation |
| Target tab ${resolvedTarget} is not part of the current brow | exception | error | browser, cli, session-state |
| browser hover is not supported by this browser backend | exception | error | browser, cli, capability |
| browser focus is not supported by this browser backend | exception | error | browser, cli, capability |
| browser dblclick is not supported by this browser backend | exception | error | browser, cli, capability |
| browser ${checked ? 'check' : 'uncheck'} is not supported by | exception | error | browser, cli, capability |
| browser upload is not supported by this browser backend | exception | error | browser, cli, capability, file-upload |
| browser drag is not supported by this browser backend | exception | error | browser, cli, capability, drag-and-drop |
| This browser session does not support JavaScript dialog hand | exception | error | browser, cli, capability, dialogs |
| This browser session does not support frame-targeted evaluat | exception | error | browser, cli, capability, iframe |
| Could not find opencli entrypoint under ${projectRoot}. Expe | exception | error | cli, entrypoint, project-setup |
| ${label} must be a positive integer. Received: "${String(raw | validation | error | cli, argument-validation, commander |
| Auth refresh quickCheck failed for ${cmd.site} | exception | error | auth, session-expired, quickcheck |
| --only must be one of: all, logged-in, not-logged-in, unknow | validation | error | cli, argument-validation, enum |
UNSUPPORTED_SHELL Unsupported shell: ${shell}. Supported: bash, zsh, fish | error_code | error | cli, shell-completion, unsupported-shell |
| --trace must be one of: off, on, retain-on-failure. Received | validation | error | cli, argument-validation, trace |
| Argument "${argDef.name}" is required. | validation | error | cli, required-argument, validation |
| Argument "${argDef.name}" must be a valid number. Received: | validation | error | cli, type-coercion, validation |
| Argument "${argDef.name}" must be a valid integer. Received: | validation | error | cli, type-coercion, integer |
| Argument "${argDef.name}" must be a boolean (true/false). Re | validation | error | cli, type-coercion, boolean |
| Argument "${argDef.name}" must be one of: ${argDef.choices.j | validation | error | argument-validation, cli, invalid-input |
| Command ${fullName(cmd)} has no func or pipeline | exception | error | adapter-definition, cli, library-bug |
| Command ${fullName(cmd)} requires a browser session but none | exception | error | browser-session, missing-dependency, cli |
| ${getErrorMessage(err)} | validation | error | argument-validation, cli, error-wrapping |
| CDP not reachable at ${manualEndpoint} | exception | critical | cdp, electron, network, environment-variable |
| Install command contains unsafe shell operators and cannot b | exception | error | security, command-injection, validation |
| Install command is empty. | exception | error | validation, config, empty-input |
| External CLI '${name}' not found in registry. | exception | error | config, registry, not-found |
| Could not launch ${label}: no compatible executable found in | exception | error | macos, electron, launch-failure |
| App launched but CDP not available on port ${port} after ${P | exception | error | electron, cdp, timeout, devtools |
| Invalid trace maxAgeDays: ${maxAgeDays} | validation | error | validation, configuration, retention |
| Invalid trace maxCountPerProfile: ${maxCountPerProfile} | validation | error | validation, configuration, retention |
| Could not find package.json above ${startFile} | exception | critical | filesystem, module-resolution, packaging |
| Unknown pipeline step "${op}" at index ${i}. Check the YAML | validation | error | configuration, pipeline, yaml |
FETCH_ERROR HTTP ${resp.status} ${resp.statusText} from ${finalUrl} | error_code | error | http, network, fetch, http-status |
| HTTP ${resp.status} ${resp.statusText} from ${urls[i]} | exception | error | http, network, browser, batch-fetch |
TAP_MISSING_PARAMS tap: store and action are required | error_code | error | configuration, validation, missing-param |
| Invalid plugin name "${name}". Plugin names must start with | validation | error | validation, naming, plugin, scaffold |
| Directory "${targetDir}" already exists and is not empty. | validation | error | filesystem, validation, plugin, scaffold |
| Failed to clone plugin: ${getErrorMessage(err)} | exception | error | git, network, clone-failure, plugin-install |
| Unable to determine remote source for plugin at ${dir} | exception | error | plugin-update, lock-file, missing-source |
| Plugin path "${subPath}" escapes repo root. | validation | error | security, path-traversal, monorepo-manifest |
| Expected monorepo plugin link at ${linkPath} to be a symlink | exception | error | filesystem, symlink, name-collision, monorepo |
| npm install failed in ${dir}: ${getErrorMessage(err)} | exception | error | npm, network, dependencies, plugin-install |
| Invalid plugin structure: - ${validation.errors.join(' - ')} | validation | error | validation, plugin-structure, package-json |
| Invalid plugin source: "${source}" Supported formats: gith | validation | error | input-validation, plugin-install, argument-format |
| Plugin requires opencli ${manifest.opencli}, but current ver | validation | error | version-compatibility, semver, manifest, plugin-install |
| Plugin "${pluginName}" is already installed at ${targetDir} | validation | error | duplicate-install, plugin-install, name-collision |
| Local plugin path does not exist: ${localPath} | validation | error | filesystem, local-plugin, path-validation |
| Local plugin path is not a directory: ${localPath} | validation | error | plugin, filesystem, path, validation |
| Monorepo manifest missing or invalid at ${repoRoot} | validation | error | plugin, monorepo, manifest, git |
| Sub-plugin "${subPlugin}" is disabled in the manifest. | validation | error | plugin, monorepo, disabled, manifest |
| Sub-plugin "${subPlugin}" not found in monorepo. Available: | validation | error | plugin, monorepo, name-resolution, manifest |
| Installed sub-plugin "${pluginName}" no longer exists in ${c | exception | error | plugin, monorepo, update, lockfile, drift |
| Sub-plugin "${pluginName}" requires opencli ${manifestEntry. | validation | error | plugin, monorepo, version, compatibility, update |
| Updated sub-plugin "${pluginName}" is invalid: - ${validatio | validation | error | plugin, monorepo, update, validation, structure |
| Plugin "${name}" is not installed. | validation | error | plugin, uninstall, filesystem, state |
| Updated source is no longer a monorepo: ${cloneUrl} | exception | error | plugin, monorepo, update, manifest |
| Updated source is now a monorepo: ${cloneUrl} | exception | error | plugin, monorepo, update, manifest |
| Command ${key} must declare access: 'read' | 'write' | validation | error | registry, validation, command, permissions |
| Command ${key} siteSession must be one of: ephemeral, persis | validation | error | registry, validation, command, enum |
| Unknown OpenCLI skill: ${name} | validation | error | skills, validation, naming, argument |
| Invalid skill path: ${relativePath} | exception | error | path-traversal, argument-validation, security, skills |
| Skill file not found: ${name}/${relativePath} | exception | error | file-not-found, argument-validation, skills, filesystem |
| Skill path must be non-empty. | exception | error | argument-validation, empty-input, skills |
| Invalid skill path: ${raw} | exception | error | path-traversal, argument-validation, security, skills |
| Server returned HTML instead of JSON (status=${value.status} | exception | error | http, login-wall, rate-limit, waf, network |
| Server returned HTML instead of JSON (status=${response.stat | exception | error | http, login-wall, rate-limit, json, network |
| JSON parse failed (status=${response.status}, body[0..50]=${ | exception | error | json, http, parse-error, network |
| JSON parse failed (status=${r.status}, body[0..50]=${JSON.st | exception | error | json, browser-evaluate, parse-error, http |
AUTH AUTH | error_code | error | auth, session-expired, grok, browser |
NO_DIALOG NO_DIALOG | error_code | warning | ui-selector, grok, browser, empty-state |
NO_DIALOG NO_DIALOG | error_code | error | dom, timeout, browser-automation, selector |
| Failed to prune trace artifact ${dir}: ${err instanceof Erro | console | warning | filesystem, permissions, retention |
| Failed to list trace artifacts in ${tracesDir}: ${err instan | console | warning | filesystem, permissions, directory-listing |
| Failed to inspect trace artifact ${dir}: ${err instanceof Er | console | warning | filesystem, race-condition, permissions |
| Batch fetch failed for ${urls[i]}: ${(r as { error: string } | console | warning | network, fetch, browser |
| Batch fetch failed for ${itemUrl}: ${message} | console | warning | network, fetch, concurrency |
| [pipeline/template] sanitizeContext failed: ${err instanceof | console | warning | serialization, json, template |
| Plugin "${name}" structure invalid:\n- ${validation.errors.j | console | warning | plugin, validation, structure |
| Skipping "${name}": invalid structure — ${validation.errors. | console | warning | plugin, validation, structure |
| Failed to link host opencli into plugin: ${getErrorMessage(e | console | warning | filesystem, symlink, plugin |
| Failed to transpile ${tsFile}: ${getErrorMessage(err)} | console | warning | typescript, transpilation, plugin |
| TS transpilation setup failed: ${getErrorMessage(err)} | console | warning | transpilation, typescript, esbuild, plugin-loading |
| Could not restore Midjourney video defaults: ${message} | console | warning | midjourney, settings-restore, side-effect-safety, warning |
| Midjourney CDN reported ${media.mime || 'unknown'} for ${res | console | warning | mime-mismatch, cdn, midjourney, media-download |
| Midjourney CDN reported ${media.mime || 'unknown'} for ${url | console | warning | mime-mismatch, video, midjourney, cdn |
| Browser Bridge reported ${downloaded.mime} for ${sourcePath} | console | warning | mime-mismatch, browser-bridge, midjourney, extension |
| [notebooklm open] expected notebook "${notebookId}" but page | console | warning | notebooklm, id-mismatch, navigation, warning |
| [warn] Image base64 payload is ${(base64.length / 1024 / 102 | console | warning | payload-size, base64, browser-bridge, twitter, image-upload |
| WeRead private API auth expired; showing cached shelf data f | console | warning | weread, auth-expired, stale-cache, fallback, warning |
| [warn] Total image payload is ${(totalBytes / 1024 / 1024).t | console | warning | payload-size, base64, browser-bridge, xiaohongshu, image-upload |
| xueqiu comments pagination stopped after request ${requestNu | console | warning | pagination, rate-limit, xueqiu, partial-results, api |
| xueqiu comments pagination stopped after request ${requestNu | console | warning | pagination, duplicate-data, scraping |
| xueqiu comments pagination stopped after request ${requestNu | console | warning | pagination, safety-cap, scraping |
| [opencli] daemon ping failed: HTTP ${res.status} | console | warning | daemon, http, connectivity |
| [opencli] Tab ${tabId} drifted to window ${tab.windowId}, mo | console | info | chrome-extension, tab-management, automation |
| [opencli] Failed to move tab back: ${moveErr} | console | warning | chrome-extension, tab-management, race-condition |
| [opencli] Tab ${tabId} URL is not debuggable (${tab.url}), r | console | warning | chrome-extension, debugging, tab-management |
| [opencli] Tab ${tabId} no longer exists, re-resolving | console | warning | chrome-extension, tab-management, automation |
| [opencli] data: URI was intercepted (${updated.url}), creati | console | warning | chrome-extension, navigation, tab-management |
| [opencli] Navigate to ${targetUrl} timed out after 15s | console | warning | navigation, timeout, chrome-extension |
| [opencli] Tab ${tabId} drifted to window ${tab.windowId} dur | console | warning | chrome-extension, tabs, session-isolation, race-condition |
| [opencli] Failed to recover drifted tab: ${moveErr} | console | warning | chrome-extension, tabs, recovery-failed |
| [opencli] attach attempt ${attempt}/${MAX_ATTACH_RETRIES} fa | console | warning | chrome-extension, cdp, debugger, retry |
| [runtime] Invalid ${envVar}="${raw}", using default ${fallba | console | warning | environment, configuration, timeout |
| Browser Bridge extension does not support network capture; c | console | warning | browser-extension, version-mismatch, network-capture, degraded-capability |
| Command returned an empty result. | console | info | cli, empty-result, output |
| Restarting daemon will disconnect ${before.profiles.length} | console | info | daemon, restart, browser-extension, disconnection |
| url id mismatch for conversation ${id} | exception | error | validation, url, grok, export |
| Sign in to grok.com in your browser, then retry. | exception | error | authentication, grok, browser-automation |
| Sign in to grok.com in your browser, then retry. | exception | error | authentication, grok, ui-automation, menu |
| Sign in to grok.com in your browser, then retry. | exception | error | auth, browser-automation, session-expired |
| Instagram image upload failed | exception | error | upload, instagram, browser-automation |
extraction_drift [taxonomy=extraction_drift] site=${site} command=search all rows rejected by qua | error_code | error | scraping, data-quality, extraction-drift |
relay_unavailable [taxonomy=relay_unavailable] site=${site} command=detail missing required detail | error_code | error | validation, missing-argument, scraping |
extraction_drift [taxonomy=extraction_drift] site=${site} command=detail detail extraction return | error_code | error | scraping, extraction-drift, dom |
selector_drift [taxonomy=selector_drift] site=${site} command=detail detail page blocked by ver | error_code | error | anti-bot, captcha, scraping, blocked |
empty_result [taxonomy=empty_result] site=${site} command=detail detail page has no readable | error_code | warning | scraping, empty-content, js-rendering |
| 请在浏览器里用千问 APP 扫码登录 qianwen.com 后再重试。 | exception | error | auth, login-required, browser-automation, qianwen |
| 请在浏览器里用千问 APP 扫码登录 qianwen.com 后再重试。 | exception | error | auth, http-401, http-403, api, qianwen |
| 请在浏览器里用千问 APP 扫码登录 qianwen.com 后再重试。 | exception | error | auth, login-required, image-generation, qianwen |
| 请在浏览器里用千问 APP 扫码登录 qianwen.com 后再重试。 | exception | error | auth, login-required, qianwen |
SELECTOR Could not find element: Trae CN new task button | error_code | error | selector, ui-changed, trae-cn, browser-automation |
SELECTOR Could not find element: Trae CN chat input | error_code | error | selector, ui-changed, trae-cn, composer |
SELECTOR Could not find element: TRAE SOLO mode capsule (.index-module__capsule__ ...). | error_code | error | selector, ui-changed, trae-solo, css-modules |
SELECTOR Could not find element: TRAE SOLO model trigger (.core-model-select-trigger). Ma | error_code | error | selector, dom, ui-automation |
SELECTOR Could not find element: 闲鱼聊天输入框 | error_code | error | selector, dom, xianyu |
SELECTOR Could not find element: window.lib.mtop | error_code | error | selector, xianyu, page-initialization |
SELECTOR Could not find element: 闲鱼聊天输入框 | error_code | error | selector, dom, xianyu |
SELECTOR Could not find element: window.lib.mtop | error_code | error | selector, xianyu, page-initialization |
| Draft ${id} was not found in ${draftType} drafts. Run opencl | exception | error | not-found, draft, xiaohongshu |
| Draft ${id} was not found in ${draftType} drafts. Run opencl | exception | error | not-found, draft, xiaohongshu |
AUTH_REQUIRED Xiaoyuzhou refresh token is missing | error_code | error | auth, token, xiaoyuzhou |
| No Yahoo results matched "${query}". | exception | warning | scraping, empty-results, yahoo |
| Yuanbao opened a login gate before sending the prompt. ${SES | exception | error | auth, browser-automation, yuanbao |
| Yuanbao opened a login gate instead of accepting the prompt. | exception | error | auth, browser-automation, yuanbao |
COMMAND_EXEC ${reason || 'Unknown Yuanbao send failure.'}${detail ? ` Detail: ${detail}` : '' | exception | error | browser-automation, send-failure, yuanbao |
AUTH_REQUIRED Yuanbao opened a login gate instead of returning a chat response. | exception | error | auth, browser-automation, yuanbao |
AUTH_REQUIRED Yuanbao opened a login gate when navigating to the conversation. | exception | error | auth, browser-automation, yuanbao |
AUTH_REQUIRED Yuanbao opened a login gate when reading the sidebar. | exception | error | authentication, browser-automation, yuanbao |
AUTH_REQUIRED Yuanbao opened a login gate instead of starting a new chat. | exception | error | authentication, browser-automation, yuanbao |
AUTH_REQUIRED Yuanbao opened a login gate before sending the prompt. | exception | error | authentication, browser-automation, yuanbao |
profile-required Multiple Browser Bridge profiles are connected | exception | error | browser-bridge, daemon, configuration |
daemon-not-running Failed to start opencli daemon | exception | critical | daemon, browser-bridge, connectivity |
ADAPTER_LOAD Failed to load adapter module ${modulePath}: ${getErrorMessage(err)} | exception | error | module-loading, configuration, esm-import |