[build-system]
requires = ["setuptools>=68", "wheel"]
build-backend = "setuptools.build_meta"
[project]
name = "witty-service"
version = "0.1.0"
description = "Witty Service - A service for managing agents and sessions"
readme = "README.md"
requires-python = ">=3.11"
license = {file = "LICENSE"}
authors = [
{name = "Witty Team", email = "team@witty.dev"},
]
maintainers = [
{name = "Witty Team", email = "team@witty.dev"},
]
keywords = ["witty", "agent", "service", "ai", "llm"]
classifiers = [
"Development Status :: 4 - Beta",
"Intended Audience :: Developers",
"License :: OSI Approved :: MIT License",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
"Operating System :: OS Independent",
"Topic :: Software Development :: Libraries :: Application Frameworks",
]
dependencies = [
"fastapi>=0.115",
"sqlalchemy>=2.0",
"alembic>=1.14",
"websockets>=15.0.1",
"cryptography>=42.0.0",
"requests>=2.32.5",
"uvicorn>=0.20",
"httpx>=0.27",
"pyyaml>=6.0",
"python-multipart>=0.0.29",
"gitpython>=3.1.40",
"docker>=7.0",
]
[project.optional-dependencies]
dev = [
"pytest>=8.0",
"pytest-asyncio>=0.23",
"black>=24.0",
"flake8>=6.0",
"mypy>=1.8",
"python-semantic-release>=9.0",
]
[project.scripts]
witty-service = "witty_service.cli:main"
[project.urls]
homepage = "https://github.com/openwitty/witty-service"
documentation = "https://docs.witty.dev"
repository = "https://github.com/openwitty/witty-service.git"
changelog = "https://github.com/openwitty/witty-service/blob/main/CHANGELOG.md"
[tool.setuptools]
packages = [
"witty_service",
"witty_service.data",
"witty_service.api",
"witty_service.adapter",
"witty_service.application",
"witty_service.domain",
"witty_service.persistence",
"witty_service.sandbox",
"witty_service.storage",
"witty_agent_server",
"witty_agent_server.api",
"witty_agent_server.api.routers",
"witty_agent_server.application",
"witty_agent_server.application.services",
"witty_agent_server.application.services.agent",
"witty_agent_server.application.services.session",
"witty_agent_server.application.services.skill",
"witty_agent_server.application.models",
"witty_agent_server.application.materialization",
"witty_agent_server.application.materialization.core",
"witty_agent_server.application.materialization.openclaw",
"witty_agent_server.application.materialization.openclaw.core",
"witty_agent_server.adapters",
"witty_agent_server.runtimes",
"witty_agent_server.infra",
"witty_agent_server.infra.persistence",
"witty_agent_server.infra.clients",
"witty_agent_server.logger",
]
package-dir = {"witty_service" = "src/witty_service", "witty_agent_server" = "src/witty_agent_server"}
package-data = {"witty_service.data" = ["*.tar.gz"]}
[tool.pytest.ini_options]
pythonpath = ["."]
testpaths = ["tests"]
[tool.mypy]
python_version = "3.11"
strict = true
show_error_codes = true
ignore_missing_imports = false
follow_imports = "silent"
exclude = ["tests/*", "examples/*"]
[tool.black]
line-length = 88
target-version = ["py311"]
include = '\.pyi?$'
exclude = '''
/(
\.eggs
| \.git
| \.hg
| \.mypy_cache
| \.nox
| \.tox
| \.venv
| _build
| buck-out
| build
| dist
)/
'''
[tool.flake8]
max-line-length = 88
extend-ignore = ["E203", "W503"]
[tool.semantic_release]
version_toml = ["pyproject.toml:project.version"]
commit_parser = "conventional"
allow_zero_version = true
tag_format = "v{version}"
[tool.semantic_release.branches.main]
match = "(master|main)"
prerelease = false
[tool.semantic_release.commit_parser_options]
allowed_tags = ["build", "chore", "ci", "docs", "feat", "fix", "perf", "refactor", "style", "test"]
minor_tags = ["feat"]
patch_tags = ["fix", "perf","refactor"]
[dependency-groups]
dev = [
"pytest-cov>=7.1.0",
]