"""
setup.py - MyAgent 打包配置
支持 pip install 和 PyInstaller 打包
"""
from setuptools import setup, find_packages
from pathlib import Path

# 动态读取版本号（单一数据源: package.json）
import json as _json
_pkg_path = Path(__file__).parent / "package.json"
try:
    _pkg_data = _json.loads(_pkg_path.read_text(encoding="utf-8"))
    __version__ = _pkg_data.get("version", "0.0.0")
except Exception:
    __version__ = "0.0.0"

setup(
    name="myagent",
    version=__version__,
    description="本地桌面端执行型AI助手 - Open Interpreter 风格",
    author="ctz168",
    url="https://github.com/ctz168/myagent",
    python_requires=">=3.13",
    packages=find_packages(exclude=["logs", "data", "*.pyc", "tests", "docs", "download"]),
    install_requires=[
        # 核心
        "openai>=1.12.0",
        "aiohttp>=3.9.0",
        "requests>=2.31.0",
        # 搜索
        "duckduckgo-search>=6.0.0",
        "beautifulsoup4>=4.12.0",
        "lxml>=5.0.0",
        "psutil>=5.9.0",
        # 系统托盘
        "pystray>=0.19.5",
        "Pillow>=10.0.0",
        # 语音合成
        "edge-tts>=6.1.0",
        # 语音识别 (本地 STT) - [v1.18.8] SenseVoice 首选
        "funasr>=1.1.0",
        "torch>=2.0.0",
        "torchaudio>=2.0.0",
        # 浏览器自动化 (ChromeDev MCP, 无需 Playwright)
        # 桌面 GUI 自动化 (内置技能)
        "pynput>=1.7.6",
        "pygetwindow>=0.0.9",
        "mss>=9.0.0",
    ],
    extras_require={
        "telegram": ["python-telegram-bot>=21.0"],
        "discord": ["discord.py>=2.3.0"],
        "anthropic": ["anthropic>=0.18.0"],
        "communication": ["cryptography>=41.0.0", "websockets>=12.0"],
        "voice": ["funasr>=1.1.0", "torch>=2.0.0", "torchaudio>=2.0.0"],
        "all": [
            "python-telegram-bot>=21.0",
            "discord.py>=2.3.0",
            "anthropic>=0.18.0",
            "cryptography>=41.0.0",
            "websockets>=12.0",
            "funasr>=1.1.0",
            "torch>=2.0.0",
            "torchaudio>=2.0.0",
        ],
    },
    entry_points={
        "console_scripts": [
            "myagent=main:main",
        ],
    },
)
