-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathpyproject.toml
More file actions
84 lines (75 loc) · 2.73 KB
/
pyproject.toml
File metadata and controls
84 lines (75 loc) · 2.73 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
[project]
name = "devforge"
version = "0.1.0"
description = "Enterprise multi-agent engineering platform (capstone)"
requires-python = ">=3.12"
dependencies = [
# Core framework
"openai>=1.50.0",
"openai-agents>=0.0.16",
"pydantic>=2.9.0",
"pyyaml>=6.0",
"httpx>=0.27.0",
"tenacity>=9.0.0",
"python-dotenv>=1.0.0",
# Control plane (FastAPI + GitHub App + Clerk)
"fastapi>=0.115.0",
"uvicorn>=0.30.0",
"mangum>=0.19.0",
"pyjwt[crypto]>=2.9.0",
"cryptography>=43.0.0,<47.0.0",
"fastapi-clerk-auth>=0.0.7",
# MCP (Day 6)
"mcp>=1.0.0",
# Observability — kept in base so the AWS worker exports traces to
# LangFuse. Pure Python, no glibc constraint. The exporter no-ops
# cleanly when LANGFUSE_* env vars are unset.
"langfuse>=2.45.0",
]
[project.optional-dependencies]
# For local development — embeds + vectors run on your laptop.
# torch is pinned explicitly here (not just transitively via sentence-transformers)
# so that [tool.uv.sources] below routes it through PyTorch's CPU-only index —
# avoids dragging in 1.5 GB of NVIDIA CUDA wheels we never use.
local = [
"chromadb>=0.5.0",
"sentence-transformers>=3.0.0",
"torch>=2.4.0",
]
# Security gates (Day 8). Worker installs this; control plane doesn't.
# semgrep's wheel requires manylinux_2_35 which the Lambda base image
# (public.ecr.aws/lambda/python:3.12) doesn't satisfy — keeping it in a
# dedicated extra so `--extra aws` (used by both images) stays slim.
security = [
"detect-secrets>=1.5.0",
"semgrep>=1.85.0",
]
# For deploy-to-AWS — no ML deps, just boto3.
aws = [
"boto3>=1.40.0",
]
# All — use this during development so you can flip DEVFORGE_BACKEND freely.
all = [
"devforge[local,aws]",
]
# Optional: observability (Day 12). LangFuse moved to base deps so it
# ships in the AWS worker image; this group kept as an alias for
# `uv sync --extra obs` to remain a no-op (back-compat for older docs).
obs = []
[tool.pytest.ini_options]
testpaths = ["tests"]
python_files = ["test_*.py"]
addopts = "--tb=short -q"
# ---------------------------------------------------------------------------
# uv config — route torch through PyTorch's CPU-only wheel index so `uv sync`
# doesn't drag in 1.5 GB of NVIDIA CUDA wheels (cudnn, cublas, cuda-runtime,
# etc.) that sentence-transformers transitively requires. The local Docker
# image was running out of disk during build; CI runs slower with the GPU
# stack. We never use GPU — all-MiniLM-L6-v2 runs identically on CPU.
# ---------------------------------------------------------------------------
[[tool.uv.index]]
name = "pytorch-cpu"
url = "https://download.pytorch.org/whl/cpu"
explicit = true
[tool.uv.sources]
torch = [{ index = "pytorch-cpu" }]