import google.generativeai as genai
import os
import sys
from tkai_lib import read_ai_config

def get_api_key() -> str | None:
    """ai.env から GOOGLE_API_KEY を取得する"""
    read_ai_config("ai.env")
    return os.getenv("GOOGLE_API_KEY")

def list_models() -> int:
    """利用可能なモデル一覧を取得し、件数を返す"""
    count = 0
    for m in genai.list_models():
        if 'generateContent' in m.supported_generation_methods:
            print(f"ID: {m.name}")
            count += 1
    return count

def main() -> int:
    print("--- Gemini (Google AI) 利用可能モデル確認 ---")

    try:
        print("ai.env を読み込みます...")
        api_key = get_api_key()

        print(f"GOOGLE_API_KEY exists = {bool(api_key)}")

        if not api_key:
            print("ERROR: GOOGLE_API_KEY が設定されていません")
            print("       ai.env の内容、または read_ai_config() を確認してください")
            return 1

        print("API を設定中...")
        genai.configure(api_key=api_key)

        print("--- 利用可能なモデル一覧を取得します ---")
        count = list_models()
        print(f"--- 完了: {count} 件 ---")
        return 0

    except Exception as e:
        # 認証エラーや権限エラーの判定
        error_msg = str(e).lower()
        if "api_key_invalid" in error_msg or "invalid api key" in error_msg:
            print("ERROR: Google API の認証に失敗しました")
            print("       API KEY が無効か、設定が間違っている可能性があります")
            print("       Google AI Studio で新しいキーを確認し、ai.env を更新してください")
        elif "permissiondenied" in error_msg or "403" in error_msg:
            print("ERROR: 権限エラーが発生しました")
            print("       API KEY の制限設定（IP制限やサービス制限）を確認してください")
        else:
            print("ERROR: モデル一覧の取得に失敗しました")
            print(f"[{type(e).__name__}] {e}")
        
        return 1

if __name__ == "__main__":
    # もとのコードの "_MAIN__" を修正し、終了コードを返すように変更
    sys.exit(main())