Files
talemate/pyproject.toml
veguAI f5d41c04c8 0.37.0 (#267)
0.37.0

- **Director Planning** — Multi-step todo lists in director chat plus a Generate long progress action for multi-beat scene arcs.
- **Auto Narration** — Unified auto-narration replacing the old Narrate after Dialogue toggle, with a chance slider and weighted action mix.
- **LLM Prompt Templates Manager** — Dedicated UI tab for viewing, creating, editing, and deleting prompt templates.
- **Character Folders** — Collapsible folders in the World Editor character list, synced across linked scenes.
- **OpenAI Compatible TTS** — Connect any number of OpenAI-compatible TTS servers in parallel.
- **KoboldCpp TTS Auto-Setup** — KoboldCpp clients with a TTS model loaded register themselves as a TTS backend.
- **Model Testing Harness** — Bundled scene that runs basic capability tests against any connected LLM.

Plus 27 improvements and 28 bug fixes
2026-05-12 21:01:51 +03:00

173 lines
3.5 KiB
TOML

[project]
name = "talemate"
version = "0.37.0"
description = "AI-backed roleplay and narrative tools"
authors = [{name = "VeguAITools"}]
license = {text = "GNU Affero General Public License v3.0"}
requires-python = ">=3.11,<3.14"
dependencies = [
"pip",
"astroid>=2.8",
"jedi>=0.18",
"black",
"rope>=0.22",
"isort>=5.10",
"jinja2>=3.0",
"openai>=1",
"mistralai>=2.4.0",
"cohere>=6.0.0",
"anthropic>=0.19.1",
"groq>=0.5.0",
"requests>=2.26",
"colorama>=0.4.6",
"Pillow>=9.5",
"httpx<1",
"piexif>=1.1",
"typing-inspect==0.8.0",
"typing_extensions>=4.5.0",
"uvicorn>=0.23",
"blinker>=1.6.2",
"pydantic<3",
"beautifulsoup4>=4.12.2",
"python-dotenv>=1.0.0",
"cryptography>=43.0",
"keyring>=25.0",
"structlog>=23.1.0",
"google-genai>=1.20.0",
"nest_asyncio>=1.5.7",
"isodate>=0.6.1",
"thefuzz>=0.20.0",
"tiktoken>=0.5.1",
"nltk>=3.8.1",
"huggingface-hub>=0.20.2",
"RestrictedPython>7.1",
"numpy>=2",
"aiofiles>=25.1.0",
"pyyaml>=6.0",
"limits>=5.0",
"diff-match-patch>=20241021",
"sseclient-py>=1.8.0",
"ollama>=0.5.1",
# ChromaDB
"chromadb>=1.0.12",
"torch>=2.7.1",
"torchaudio>=2.7.1",
"sentence_transformers>=2.7.0",
"transformers<5",
# TTS
"elevenlabs>=2.7.1",
# Local TTS
# Chatterbox TTS
# we cannot upgrade to 0.1.3 because it installs ancient pkuseg library
# "chatterbox-tts==0.1.2",
# tts_webui_chatterbox_tts is much faster without seeminly any quality loss
"tts_webui_chatterbox_tts==0.4.4",
"torchcodec>=0.9.0",
# kokoro TTS
"kokoro>=0.9.4",
"soundfile>=0.13.1",
# F5-TTS
"f5-tts>=1.1.7",
"deepdiff>=8.6.1",
"hf-xet>=1.2.0",
"pocket-tts>=1.0.1",
]
[project.optional-dependencies]
dev = [
"pytest>=6.2",
"pytest-asyncio>=0.25.3",
"pytest-cov>=4.0",
"mypy>=0.910",
"mkdocs-material>=9.5.27",
"mkdocs-awesome-pages-plugin>=2.9.2",
"mkdocs-glightbox>=0.4.0",
"pre-commit>=2.13",
]
[project.scripts]
talemate = "talemate:cli.main"
[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"
[tool.hatch.metadata]
allow-direct-references = true
[tool.black]
line-length = 88
target-version = ['py38']
include = '\.pyi?$'
exclude = '''
/(
\.git
| \.hg
| \.mypy_cache
| \.tox
| \.venv
| _build
| buck-out
| build
| dist
| talemate_env
)/
'''
[tool.isort]
profile = "black"
multi_line_output = 3
include_trailing_comma = true
force_grid_wrap = 0
use_parentheses = true
ensure_newline_before_comments = true
line_length = 88
[tool.uv]
override-dependencies = [
# chatterbox wants torch 2.6.0, but is confirmed working with 2.7.1
"torchaudio>=2.7.1",
"torch>=2.7.1",
# numba needs numpy < 2.3
"numpy>=2,<2.3",
"pydantic>=2.11",
]
[tool.uv.sources]
torch = [
{ index = "pytorch-cu128" },
]
torchaudio = [
{ index = "pytorch-cu128" },
]
[[tool.uv.index]]
name = "pytorch-cu128"
url = "https://download.pytorch.org/whl/cu128"
explicit = true
[tool.pytest.ini_options]
testpaths = ["tests"]
asyncio_mode = "auto"
[tool.coverage.run]
source = ["src/talemate"]
branch = true
omit = [
"*/tests/*",
"*/__pycache__/*",
# Deprecated public game-scripting API surface; excluded from coverage
# to avoid skewing totals while it phases out.
"src/talemate/game/engine/api/*",
]
[tool.coverage.report]
exclude_lines = [
"pragma: no cover",
"def __repr__",
"raise NotImplementedError",
"if TYPE_CHECKING:",
"if __name__ == .__main__.:",
]
show_missing = true