#!/usr/bin/env python3
"""
Introspect helper — retrieves current agent profile and available skills
for self-assessment.

Usage:
  introspect whoami
  introspect list-skills [--json]
"""

import argparse
import json
import os
import signal
import sys

sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))
import rpc_client

PROG = os.path.basename(__file__)


def _signal_handler(signum, frame):
    sys.stderr.write(f"\n[{PROG}] interrupted\n")
    sys.exit(130)


signal.signal(signal.SIGINT, _signal_handler)
signal.signal(signal.SIGTERM, _signal_handler)


def cmd_whoami():
    agents = rpc_client.rpc_call("agent.list") or []
    if not agents:
        print(json.dumps({"error": "no agents found"}))
        sys.exit(1)

    print(json.dumps(agents, ensure_ascii=False, indent=2))


def cmd_list_skills(json_output):
    result = rpc_client.rpc_call("skill.list") or []

    if json_output:
        print(json.dumps(result, ensure_ascii=False))
        return

    if not result:
        print("No skills installed.")
        return

    print(f"Skills ({len(result)}):")
    for s in result:
        desc = (s.get("description", "") or "")[:80].replace("\n", " ")
        print(f"  {s['name']:<28} {desc}")


def main():
    parser = argparse.ArgumentParser(
        description="Introspect helper",
    )
    sub = parser.add_subparsers(dest="command", required=True)

    p = sub.add_parser("whoami", help="List all agent definitions")

    p = sub.add_parser("list-skills", help="List all available skills")
    p.add_argument("--json", action="store_true", help="JSON output")

    args = parser.parse_args()

    if args.command == "whoami":
        cmd_whoami()
    elif args.command == "list-skills":
        cmd_list_skills(args.json)


if __name__ == "__main__":
    main()
