#!/usr/bin/env python3
"""Fake ``codex exec --json`` for the conformance suite.

Reads a JSON events spec from ``$NVSH_FAKE_EVENTS`` (see
``tests/_fake_adapters.py``) and emits codex's ``{"msg": {...}}`` envelope
lines so ``nvsh.agent.codex.CodexAgent`` can be exercised end to end without
a real ``codex`` binary on PATH.
"""

from __future__ import annotations

import json
import os
import sys


def main() -> int:
    events_path = os.environ.get("NVSH_FAKE_EVENTS")
    events = json.loads(open(events_path, encoding="utf-8").read()) if events_path else []

    for event in events:
        kind = event.get("kind")
        if kind == "status":
            msg = {"type": "task_started", "text": event.get("text", "")}
        elif kind == "text_delta":
            msg = {"type": "agent_message_delta", "delta": event.get("text", "")}
        elif kind == "error":
            print(json.dumps({"msg": {"type": "error", "message": event.get("error", "")}}))
            sys.stdout.flush()
            return 1
        elif kind == "done":
            print(json.dumps({"msg": {"type": "task_complete"}}))
            sys.stdout.flush()
            return 0
        else:
            continue
        print(json.dumps({"msg": msg}))
        sys.stdout.flush()
    return 0


if __name__ == "__main__":
    sys.exit(main())
