Skip to content

SIN-CLIs/stealth-runner

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

860 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Stealth Runner — Survey Automation Agent

Status: 2026-05-23 21:51 | Balance: €0.10 (Account 2700434 Test) / €3.73 (Hauptaccount 2525530) | Pipeline: Heypiggy → PureSpectrum → Cint → Provider X

Plan 27 P2.1 ✅ ERFÜLLT — 1 Heypiggy-Survey end-to-end completed (Survey 68025989, 173s, 18 decisions, +0.03 €).

Quick Start

# Install
cd survey-cli && pip install -e ".[dev]"

# Start Chrome with Stealth-Flags (P0.4)
PROFILE_DIR="/tmp/heypiggy-bot-$(date +%s)"
/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome \
  --remote-debugging-port=9999 --remote-allow-origins="*" \
  --user-data-dir="$PROFILE_DIR" \
  --no-first-run --no-default-browser-check \
  --disable-blink-features=AutomationControlled \
  --disable-features=IsolateOrigins,site-per-process \
  --accept-lang=de-DE,de,en-US,en --lang=de \
  --disable-dev-shm-usage --disable-extensions --disable-default-apps \
  about:blank &>/dev/null &

# Inject cookies + navigate to Heypiggy
python3 -c "
from survey.chrome import inject_heypiggy_cookies_to_tab
import json, urllib.request, websocket, time
tabs = json.loads(urllib.request.urlopen('http://localhost:9999/json').read())
tab = next(t for t in tabs if t['type']=='page')
inject_heypiggy_cookies_to_tab(tab['webSocketDebuggerUrl'])
ws = websocket.create_connection(tab['webSocketDebuggerUrl'])
ws.send(json.dumps({'id':1,'method':'Page.navigate','params':{'url':'https://www.heypiggy.com/?page=dashboard'}}))
ws.recv(); ws.close()
"

# Run 1 survey (strict mode — 1 attempt, no retries)
cd survey-cli && python3 -m survey.skills.autonomous_loop 1

Architektur (Stand Plan 27)

Hot-Path

  • survey-cli/survey/skills/autonomous_loop.py — Entry-Point (1 attempt = 1 attempt strict mode)
  • survey-cli/survey/skills/deterministic_solver.py — Survey-Loop, kein Self-Abort
  • survey-cli/survey/skills/cdp_engine.py — 3-Tier Click-Backend (CGEvent → CDP-Input → JS), aktuell prefer_cgevent=False
  • survey-cli/survey/skills/smart_page_solver.py — DOM-Scan, fillt radios/text/captchas/drag-drops
  • survey-cli/survey/skills/decision_engine.py — 3-Tier Dispatcher: Workflow → action_cache → LLM-Helper
  • survey-cli/survey/skills/auto_stealth_injector.py — patcht navigator.webdriver auf neuen Tabs (P0.2)
  • survey-cli/survey/stealth/bezier_path.py — Bezier mouse-path mit Overshoot+Korrektur

Solver-Module (alle aktiv im Hot-Path)

  • solve_word_association.py — Sentry/CloudResearch (P1.11b)
  • _solve_purespectrum_number_drag — drag-drop number-captcha mit Vision-OCR (P1.12)
  • _solve_drag_drop — generic CDK drag puzzles
  • _set_select_by_value — Birthday-Dropdown handler (P1.11d)
  • _check_pre_submit_block — verhindert Forward ohne Antwort (P1.11e)
  • _check_consent_checkboxes — Datenschutz-Checkboxes (P1.8)
  • _dismiss_cookie_banner — Cookie-Banner-Dismiss (P1.0)

Workflows (deklarativ)

  • data/workflows/heypiggy/start-survey-modal.json — modal-button-click
  • data/workflows/purespectrum/advance.json — strict v2.0 mit body_text_must_not_contain (P1.12)
  • data/workflows/_generic/advance.json — fallback Forward-Click

Persona

  • data/personas/jeremy_schulze_de.yaml — Jeremy Schulze, 32, Berlin, Meister, mittleres Einkommen, PLZ 10785, birth 1993-05-15

LLM-Stack (im Hot-Path)

  • Text-Reasoning: nvidia/nemotron-3-nano-omni-30b-a3b-reasoning (NIM)
  • Vision-OCR: meta/llama-3.2-11b-vision-instruct (NIM)
  • Decision Tier-3: google/gemini-3.1-flash-lite (Vercel AI Gateway)

API-Keys in data/: nim-api-key.txt, vercel-ai-gateway-key.txt

Reliability

  • survey/reliability/ — CircuitBreaker, TokenBucket, DLQ Health, Full Stability Gate (Welle-3 primitives, teil-wireup'ed)

Anti-Detection-Stack (alle aktiv P27)

  • navigator.webdriver patched auf jedem neuen Tab (P0.2)
  • ✅ CDP Input.dispatchMouseEvent für alle Klicks (isTrusted=true)
  • ✅ Bezier-Mouse-Path mit Overshoot + Korrekturschleife
  • ✅ Gauss-Click-Position-Jitter (size-aware σ=2.5/6/12)
  • ✅ Reading-Time pro Page (1.5–6s, Gauss-jittered)
  • ✅ Variable Scroll während Reading
  • ✅ Click-Hold 30-90ms (Liu et al. 2021)
  • ✅ Settle vor Click 50-120ms

BANNED (laut AGENTS.md)

  • playstealth, webauto-nodriver, skylight-cli, agent-toolbox/FastAPI (gelöscht 2026-05-13)
  • 8 verwaiste Daemon-Files (gelöscht 2026-05-23, P0.3)

AGENTS.md ist die einzige Wahrheit ROADMAP.md für aktuelle Pläne (27 ERFÜLLT, 28+29 deferred)

About

Stealth Triad orchestrated survey runner — greenfield reimplementation replacing the CDP-based A2A-SIN-Worker-heypiggy

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages