"""Thin reuse of the in-repo local-Qwen client (backend/ingest/llm.py) via Spark Control. We import the ingest client rather than re-implementing the HTTP call so the intake bot speaks the exact same Spark contract (model, /v1/chat/completions, TLS verify, .env load). The intake message is real LP substance, but it goes ONLY to the local Qwen on Ten31 infra — never Claude — so no scrub boundary applies (same basis as the daily digest). Never call a Spark directly; everything goes through SPARK_CONTROL_URL. """ import os import sys _INGEST = os.path.join(os.path.dirname(os.path.dirname(os.path.abspath(__file__))), "ingest") if _INGEST not in sys.path: sys.path.insert(0, _INGEST) import llm # noqa: E402 (backend/ingest/llm.py — chat / chat_json over Spark Control) def parse_json(prompt, system=None, max_tokens=400): """Send to local Qwen (temp 0, thinking off) and parse the first JSON object, or None.""" return llm.chat_json(prompt, system=system, max_tokens=max_tokens)