#!/usr/bin/env python3
from __future__ import annotations
"""
Post an LM Studio task-complete event to the CodexBar companion.

Use this at the end of a local LM Studio script or wrapper command:
    python3 /path/to/CodexBar-ESP32/companion/lmstudio_notify.py

Optional JSON can be passed on stdin. Recognized fields include cwd, session_id,
event, and message. The default event is TaskComplete.
"""

import json
import os
import sys

import attention_hook


def _post_lmstudio_attention(stdin_text: str) -> None:
    try:
        payload = json.loads(stdin_text) if stdin_text.strip() else {}
        if not isinstance(payload, dict):
            payload = {}
    except json.JSONDecodeError:
        payload = {}

    payload.setdefault("event", "TaskComplete")
    payload.setdefault("cwd", os.getcwd())
    attention_hook.post_attention(
        attention_hook.build_attention_payload("LM Studio", payload),
        os.environ.get("CODEXBAR_ATTENTION_URL", attention_hook.DEFAULT_URL).strip()
        or attention_hook.DEFAULT_URL,
    )


def main(argv: list[str] | None = None) -> int:
    _ = argv
    stdin_text = sys.stdin.read()
    try:
        _post_lmstudio_attention(stdin_text)
    except Exception as exc:
        print(f"[CodexBar lmstudio_notify] attention post failed: {exc}", file=sys.stderr)
    return 0


if __name__ == "__main__":
    raise SystemExit(main())
