8 Commits
Author SHA1 Message Date
lukaszraczylo edb655f590 feat(captcha): self-consistency voting, optimized prompts, no-targets signal
- Add Samples to TextOptions/GridOptions; N>1 runs N solves at temp 0.5
  and majority-votes (text: most frequent; grid: tiles in strict majority).
  N<=1 keeps the single deterministic call path unchanged.
- Add NoTargets to GridResult so callers know to click Verify instead of
  looping; prompt instructs empty tiles + no_targets:true when nothing matches.
- Grid prompt: numbered cells 0..R*C-1, select any partial overlap.
- Text prompt: disambiguate similar glyphs (0/O 1/l/I 5/S 2/Z 8/B).
- Rotation prompt: reason step-by-step then emit final JSON.
2026-06-07 17:37:18 +01:00
lukaszraczylo 4ffe555bfd fix(captcha): strip reasoning-model <think> blocks before json extraction
Reasoning models prefix responses with <think>...</think> (or
<thinking>...</thinking>) scratchpad that can itself contain a JSON-looking
object. The brace-counting extractor would grab that inner object instead of
the real answer. Strip think/thinking blocks via a package-level regexp before
the balanced-object scan. Adds table cases covering both tag spellings while
keeping the plain, prose-wrapped, and unbalanced cases intact.
2026-06-07 14:34:35 +01:00
lukaszraczylo 8bfd64f7ed fix: address code review (v3/v2 detect, gemini caps, fetch timeout, audio mime, json extract, dead temp config)
- detect: recaptcha_v3 now suppresses recaptcha_v2 (hidden g-recaptcha div on v3 pages no longer mis-detected as LLM-solvable); funcaptcha drops over-broad bare "arkose" substring
- llm/gemini: stub methods return ErrUnsupported{Provider:"gemini"} so audio handler errors.As guard catches it; drop unused fmt import
- mcp/tools: remove gemini from audio capability (stub); pick audio filename (.wav/.mp3) from sniffed media type; schema notes for browser/actions no longer advertise unimplemented options
- imageutil: fetchURL uses a package client with 30s Timeout instead of http.DefaultClient
- captcha/json: extractJSON brace-counts to return the first balanced object (handles prose, markdown fences, example-before-real)
- config: remove dead CAPTCHA_LLM_TEMPERATURE / Config.Temperature; solving is fixed at temperature 0
- stealth: Action.Type doc comment drops nonexistent scroll case
2026-06-07 14:15:43 +01:00
lukaszraczylo 13ff6449a3 feat(captcha): best-effort rotation/funcaptcha solver 2026-06-07 13:17:26 +01:00
lukaszraczylo 6e496eeac8 feat(captcha): image-grid tile solver with centroid mapping 2026-06-07 13:16:54 +01:00
lukaszraczylo 0f1ad1dc44 feat(captcha): audio captcha transcription solver 2026-06-07 13:15:57 +01:00
lukaszraczylo c0da1121d9 feat(captcha): LLM text-image OCR solver with strict-retry 2026-06-07 13:15:32 +01:00
lukaszraczylo ca9add612e feat(captcha): deterministic HTML detection for known providers 2026-06-07 13:13:10 +01:00