1201606187
- textual-based ConfigApp with General, Plugins, and per-plugin tabs - GeneralConfig (user_name, assistant_name) + plugin_settings dict added to PyraConfig - ConfigField dataclass and config_fields() method added to plugin protocol - /config slash command in chat REPL launches the TUI - pyra auto-runs setup wizard on first invocation when no config.yaml exists - CLAUDE.md updated with config_fields() plugin guide and Code Inventory entries Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
62 lines
1.5 KiB
TOML
62 lines
1.5 KiB
TOML
[build-system]
|
|
requires = ["hatchling"]
|
|
build-backend = "hatchling.build"
|
|
|
|
[project]
|
|
name = "pyra"
|
|
version = "0.1.0"
|
|
description = "Personal AI assistant CLI with vault-first security"
|
|
requires-python = ">=3.11"
|
|
dependencies = [
|
|
"litellm>=1.40.0",
|
|
"rich>=13.0.0",
|
|
"click>=8.1.0",
|
|
"prompt-toolkit>=3.0.0",
|
|
"questionary>=2.0.0",
|
|
"ruamel.yaml>=0.18.0",
|
|
"pydantic>=2.0.0",
|
|
"httpx>=0.27.0",
|
|
"python-dotenv>=1.0.0",
|
|
"textual>=1.0.0",
|
|
]
|
|
|
|
[project.optional-dependencies]
|
|
dev = [
|
|
"pytest>=8.0.0",
|
|
"pytest-asyncio>=0.23.0",
|
|
"ruff>=0.4.0",
|
|
]
|
|
nextcloud = ["caldav>=1.3.0", "webdav4>=0.9.0", "vobject>=0.9.6"]
|
|
matrix = ["matrix-nio>=0.24.0", "aiofiles>=23.0.0"]
|
|
telegram = ["python-telegram-bot>=21.0"]
|
|
ssh = ["paramiko>=3.4.0"]
|
|
docker = ["docker>=7.0.0"]
|
|
gdrive = ["google-api-python-client>=2.120.0", "google-auth-oauthlib>=1.2.0"]
|
|
onedrive = ["msal>=1.28.0"]
|
|
dropbox = ["dropbox>=12.0.0"]
|
|
daemon = ["aiofiles>=23.0.0"]
|
|
all-plugins = [
|
|
"caldav>=1.3.0", "webdav4>=0.9.0", "vobject>=0.9.6",
|
|
"matrix-nio>=0.24.0", "aiofiles>=23.0.0",
|
|
"python-telegram-bot>=21.0",
|
|
"paramiko>=3.4.0",
|
|
"docker>=7.0.0",
|
|
"google-api-python-client>=2.120.0", "google-auth-oauthlib>=1.2.0",
|
|
"msal>=1.28.0",
|
|
"dropbox>=12.0.0",
|
|
]
|
|
|
|
[project.scripts]
|
|
pyra = "pyra.cli:main"
|
|
|
|
[tool.hatch.build.targets.wheel]
|
|
packages = ["src/pyra"]
|
|
|
|
[tool.ruff]
|
|
line-length = 100
|
|
target-version = "py311"
|
|
|
|
[tool.pytest.ini_options]
|
|
asyncio_mode = "auto"
|
|
testpaths = ["tests"]
|