Ben Senescu e39de22f96
Fix: don't mask DataForSEO 40501 validation errors as empty results (#346)
* Fix: don't mask DataForSEO 40501 validation errors as empty results

isNoResultsTask classified any task with status_code 40501 as a
successful empty result, but 40501 is not unique to "No Search
Results" — DataForSEO also returns it for validation rejections
like "Invalid Field: 'target'.".

After the Business Listings and Q&A endpoints opted into
treatNoResultsAsEmpty, invalid-field 40501 responses (reachable via
the MCP search_local_businesses categories input, which accepts
arbitrary strings) were silently masked as empty successes — billed
and tracked, but hiding the real provider validation error.

Match on the status message ("no search results") instead of the
ambiguous code so charged validation failures flow through to
DataforseoChargedTaskError with the diagnostic message, while genuine
no-results responses still return as empty successes. Fixes all call
sites uniformly (Business, SERP live, SERP task_get polling).

* Format isNoResultsTask per prettier
2026-07-05 17:54:14 -04:00
..
2026-06-19 13:20:52 -04:00
2026-02-27 14:09:33 -05:00
2026-03-19 19:24:34 -04:00