Files
praxis/pyproject.toml
T
Praxis CI 00e39a3f85 feat(milestone): merge phase/01 operator-foundation → milestone/v0.4-operator-tier
Phase 1 complete — Operator Foundation:
- Postgres 16 in Docker-in-LXC (asyncpg pool, 5-table schema, PgStore, migrations)
- Operator auth (argon2id, signed stateless cookies, slowapi 5/min rate limit)
- VC issuer key migration SQLite→Postgres (archive-before-active, R-VC-MIG-01)
- Operator bootstrap CLI (create-operator.py, idempotent)
- Backup cron script + G-008 restore drill
- Graceful degradation (server starts without Postgres)
- 272 tests pass, 33 skip (Postgres-requiring), 0 fail

---ci---
project: praxis
phase: 1
milestone: v0.4
status: complete
requirements:
  covered: [REQ-MT-01, REQ-AUTH-01, REQ-NFR-AUTH-01, REQ-NFR-MT-01, REQ-MT-02]
  partial: []
---/ci---
2026-08-04 01:41:06 +00:00

72 lines
2.3 KiB
TOML

[build-system]
requires = ["setuptools>=68", "wheel"]
build-backend = "setuptools.build_meta"
[project]
name = "praxis-server"
version = "0.1.0"
description = "Praxis — voice-first AI apprenticeship platform (v0.1 foundation: minimal viable voice loop)"
readme = "README.md"
requires-python = ">=3.11"
license = { text = "Proprietary" }
authors = [{ name = "Praxis v0.1 (CIAgent)" }]
dependencies = [
# Web framework — FastAPI serves /health + /pipecat/webrtc + StaticFiles (D-023)
"fastapi>=0.110",
# ASGI server — uvicorn runs the FastAPI app (used by server.__main__.main)
"uvicorn>=0.30",
# Orchestration — Pipecat (D-017) with the three native service extras + WebRTC transport
"pipecat-ai[deepgram,cartesia,piper,webrtc]>=1.6.0",
# LLM access — Ollama Cloud direct API (D-020). Pipecat's OLLamaLLMService uses the
# OpenAI-compatible client; we point base_url at https://ollama.com/v1 + bearer key.
"openai>=1.40",
# Scenario format — YAML DSL → Pydantic (D-018)
"pydantic>=2.7",
"pyyaml>=6.0",
# Learner state — SQLite (D-007), async access
"aiosqlite>=0.20",
# Config
"python-dotenv>=1.0",
# Latency probes — HTTP client for the integrated e2e probe
"httpx>=0.27",
"websockets>=12.0",
# Audio probe fixture generation (synthesized PCM) for the ASR probe
"numpy>=1.26",
# VC issuer (SLICE-09) — Ed25519 sign/verify (libsodium), JCS canonicalization
# (RFC 8785), base58-btc for Multikey proofValue encoding.
"pynacl>=1.5",
"canonicaljson>=2.0",
"base58>=2.1",
# v0.4 operator tier — Postgres pool (D-050), argon2id passwords (D-041),
# slowapi rate limiting (D-041). RESEARCH-v0.4 §new-deps.
"asyncpg>=0.29",
"argon2-cffi>=23.1",
"slowapi>=0.1",
# SessionMiddleware uses itsdangerous for signed cookies (D-056).
"itsdangerous>=2.1",
]
[project.optional-dependencies]
dev = [
"pytest>=8.0",
"pytest-asyncio>=0.23",
"pytest-cov>=5.0",
]
[project.scripts]
praxis-server = "server.__main__:main"
[tool.setuptools.packages.find]
where = ["."]
include = ["server*", "db*", "scenarios*"]
exclude = ["client*", "tests*", "scripts*"]
[tool.pytest.ini_options]
asyncio_mode = "auto"
testpaths = ["tests"]
python_files = ["test_*.py"]
addopts = "-ra -q"
[tool.coverage.run]
source = ["server", "db"]