feat(toolchain): resolve target interpreter from requires-python

Pure resolver (services/toolchain.py) that derives the Python version an agent
should provision a target workspace with. Defends against uv's resolution
order — a .python-version file overrides requires-python during interpreter
selection — by honoring the pin only when it satisfies requires-python, else
resolving a concrete version from requires-python for the caller to pass via
--python. This is the root cause behind the live guard-core-app failure (pin
3.13 vs packages needing 3.14). Promotes packaging to a direct dependency.
This commit is contained in:
Renn F
2026-06-22 01:25:47 +02:00
parent 77c94b74da
commit 9274cd4584
4 changed files with 223 additions and 0 deletions
Generated
+2
View File
@@ -2996,6 +2996,7 @@ dependencies = [
{ name = "httpx" },
{ name = "mcp" },
{ name = "openai" },
{ name = "packaging" },
{ name = "passlib", extra = ["bcrypt"] },
{ name = "pydantic" },
{ name = "pydantic-settings" },
@@ -3073,6 +3074,7 @@ requires-dist = [
{ name = "mkdocstrings", extras = ["python"], marker = "extra == 'docs'" },
{ name = "mypy", marker = "extra == 'dev'" },
{ name = "openai" },
{ name = "packaging" },
{ name = "passlib", extras = ["bcrypt"] },
{ name = "pip-audit", marker = "extra == 'dev'" },
{ name = "pydantic" },