Add REST endpoints and frontend wiring for per-language project actions:
- POST /api/workspace/{project}/translation/{lang}/queue — queue translation
- POST /api/workspace/{project}/audio/{lang}/queue — queue audio generation
- GET/POST /api/workspace/{project}/format/{lang} — format metadata (EPUB/PDF)
- GET /api/workspace/{project}/review/{lang}/chapters/{chapter} — utterance review
- GET/POST /api/workspace/{project}/front-matter/{lang} — front matter editor
- GET /api/workspace/{project}/chapters/{lang} — chapter list
- GET /api/workspace/{project}/chapter-content/{lang}/{chapter} — chapter text
Frontend fixes:
- Review page shows per-language text (English source, Chinese translation, etc.)
- Non-translated languages show 'Queue translation' button only
- Speaker data from English source matched by paragraph ID
- UmbraAudio column layout: Speaker, Variation, Text, Actions
- Chapter tree in left sidebar: Front matter, Back matter, Body
- Audio Format label at top of sidebar
- Pandoc formatting toolbar for front matter text editing
44 lines
962 B
TOML
44 lines
962 B
TOML
[project]
|
|
name = "umbratrans-agent-comm"
|
|
version = "0.1.0"
|
|
description = "Local stdio-only sanitized agent communication server"
|
|
requires-python = ">=3.11"
|
|
dependencies = [
|
|
"argon2-cffi>=23.1,<26",
|
|
"fastapi>=0.115,<1",
|
|
"psycopg-pool>=3.2,<4",
|
|
"psycopg[binary]>=3.2,<4",
|
|
"uvicorn>=0.34,<1",
|
|
]
|
|
|
|
[project.scripts]
|
|
agent-comm = "agent_comm.server:main"
|
|
umbratrans-bootstrap-admin = "umbratrans_web.cli:main"
|
|
|
|
[dependency-groups]
|
|
dev = [
|
|
"httpx>=0.28,<1",
|
|
"pytest>=8,<9",
|
|
"ruff==0.16.9",
|
|
]
|
|
|
|
[tool.uv]
|
|
package = true
|
|
|
|
[tool.setuptools.packages.find]
|
|
include = ["agent_comm*", "umbratrans_web*"]
|
|
|
|
[tool.setuptools.package-data]
|
|
umbratrans_web = ["migrations/*.sql", "migrations/*.md"]
|
|
|
|
[tool.pytest.ini_options]
|
|
testpaths = ["umbratrans_web/tests", "agent_comm/tests", "tools/translation/tests"]
|
|
python_files = ["test_*.py"]
|
|
|
|
[tool.ruff]
|
|
target-version = "py311"
|
|
line-length = 120
|
|
|
|
[tool.ruff.lint]
|
|
select = ["E4", "E7", "E9", "F", "I"]
|