edfa5f0da3
* feat: add DuckDuckGo, Brave, and Yahoo web search adapters Add three new search engine adapters with browser-based DOM extraction: - duckduckgo/search: Search DuckDuckGo via html.duckduckgo.com Supports region, time filters, and XHR-based pagination (--offset) - duckduckgo/suggest: Search suggestion autocomplete (no browser needed) - brave/search: Search Brave Search via search.brave.com Supports GET-based pagination (--offset) - yahoo/search: Search Yahoo (Bing-powered) via search.yahoo.com Supports GET-based pagination (--page) All search adapters use Strategy.PUBLIC with browser:true, navigating the target site and extracting results via page.evaluate() DOM queries. Includes full test coverage (16 tests). * fix: use clampInt from shared utils and add adapter docs - Replace Math.max/Math.min patterns with clampInt() from _shared/common.js to pass the typed-error-lint gate (4 silent-clamp violations resolved) - Add adapter documentation for duckduckgo, brave, and yahoo to fix the doc-coverage CI check - Regenerate cli-manifest.json and typed-error-lint-baseline.json * fix: avoid silent-column-drop overlap in brave/yahoo extractors Change buildExtractorJs to return arrays instead of objects whose keys matched columns. This prevents silent-column-drop audit false positives as per opencli-adapter-author conventions. * fix(search): tighten browser search adapters * chore(search): drop baseline churn * fix(duckduckgo): execute search extractor safely * fix(yahoo): reject unsafe redirect targets --------- Co-authored-by: huzekang <huzekang@opencode.ai> Co-authored-by: jackwener <jakevingoo@gmail.com>