[project]
name = "vikingbot"
version = "0.1.1"
description = "A lightweight personal AI assistant framework"
requires-python = ">=3.11, <=3.14"
license = {text = "MIT"}
authors = [
    {name = "vikingbot contributors"}
]
keywords = ["ai", "agent", "chatbot"]
classifiers = [
    "Development Status :: 3 - Alpha",
    "Intended Audience :: Developers",
    "License :: OSI Approved :: MIT License",
    "Programming Language :: Python :: 3.11",
    "Programming Language :: Python :: 3.12",
]

dependencies = [
    "typer>=0.9.0",
    "litellm>=1.0.0",
    "pydantic>=2.0.0",
    "pydantic-settings>=2.0.0",
    "websockets>=12.0",
    "websocket-client>=1.6.0",
    "httpx[socks]>=0.25.0",
    "loguru>=0.7.0",
    "readability-lxml>=0.8.0",
    "rich>=13.0.0",
    "croniter>=2.0.0",
    "dingtalk-stream>=0.4.0",
    "python-telegram-bot[socks]>=21.0",
    "lark-oapi>=1.0.0",
    "socksio>=1.0.0",
    "python-socketio>=5.11.0",
    "msgpack>=1.0.8",
    "slack-sdk>=3.26.0",
    "qq-botpy>=1.0.0",
    "python-socks[asyncio]>=2.4.0",
    "prompt-toolkit>=3.0.0",
    "textual>=0.50.0",
    "pygments>=2.16.0",
    "ddgs>=9.0.0",
    "fastapi>=0.100.0",
    "uvicorn>=0.20.0",
    "opensandbox>=0.1.0",
    "opensandbox-server>=0.1.0",
    "agent-sandbox>=0.0.23",
    "html2text>=2020.1.16",
    "beautifulsoup4>=4.12.0",
    "opencode-ai>=0.1.0a0",
    "openviking>=0.1.18",
    "tos>=2.9.0",
    "gradio>=6.6.0",
    "fusepy>=3.0.1",
    "pytest>=9.0.2",
]

[project.optional-dependencies]
dev = [
    "pytest>=7.0.0",
    "pytest-asyncio>=0.21.0",
    "ruff>=0.1.0",
]

[project.scripts]
vikingbot = "vikingbot.cli.commands:app"

[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"

[tool.hatch.build.targets.wheel]
packages = ["vikingbot"]

[tool.hatch.build.targets.wheel.sources]
"vikingbot" = "vikingbot"

# Include non-Python files in skills and sandbox
[tool.hatch.build]
include = [
    "vikingbot/**/*.py",
    "vikingbot/**/*.mjs",
    "vikingbot/skills/**/*.md",
    "vikingbot/skills/**/*.sh",
    "vikingbot/console/static/**/*",
]

[tool.hatch.build.targets.sdist]
include = [
    "vikingbot/",
    "bridge/",
    "README.md",
    "LICENSE",
]

[tool.hatch.build.targets.wheel.force-include]
"bridge" = "vikingbot/bridge"

[tool.ruff]
line-length = 100
target-version = "py311"

[tool.ruff.lint]
select = ["E", "F", "I", "N", "W"]
ignore = ["E501"]

[tool.pytest.ini_options]
asyncio_mode = "auto"
testpaths = ["tests"]
