Files
classic-models-agent-catalogue/pyproject.toml
T
Stéphane Tailland 8051b78647 feat: consult Approvisionnement before dropping a reference
Closes the last item on this agent's backlog. A reference about to be reordered
is not a reference to discontinue, and the catalog's own quantity field does not
say whether it is — that is the supply agent's decision, and it answers rather
than handing back its stock table.

One narrow tool, not a generic call_agent(name, text): a generic one lets the
model reach any peer with any prompt, which is how an agent becomes a proxy onto
its neighbours. The peer's token is minted per call for that peer alone, so an
injection that talks this agent into consulting the wrong one fails at the
realm.

A peer ending in any state but completed is reported as such, never smoothed
over: a specialist that escalated has not answered, and presenting its
escalation as an answer is how a refusal turns into a fact.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-29 17:35:18 +02:00

43 lines
1.6 KiB
TOML

[project]
name = "classic-models-agent-catalogue"
version = "0.3.0"
description = "Product management agent for the Classic Models catalog domain"
requires-python = ">=3.12"
# Pinned to what was current on 2026-08-28 and resolved together in one
# environment. Ranges rather than exact pins so patch-level security fixes are
# picked up, capped below the next major so an upgrade is a deliberate act.
dependencies = [
# The A2A facade. The official SDK rather than FastA2A: this estate exists
# to prove A2A interoperability across five runtimes, so the reference
# implementation is the safer base for the others to interoperate with.
"a2a-sdk[http-server]>=1.1.2,<2",
# Reasoning and tool calling. -slim keeps the dependency surface to the
# providers actually used; [openai] because the LLM endpoint speaks the
# OpenAI protocol, [mcp] for the MCP client.
"pydantic-ai-slim[openai,mcp]>=2.35.3,<3",
"httpx2>=2.12.0,<3",
# httpx 0.x as well, and not redundantly: fastmcp builds its own
# transport client and hands us an httpx.AsyncClient to configure.
"httpx>=0.28.1,<1",
"pydantic-settings>=2.7",
# pydantic_ai.retries ships in pydantic-ai-slim but imports tenacity,
# which the slim extras do not pull. Needed for the LLM gateway's 429s.
"tenacity>=9.1,<10",
"uvicorn>=0.52.4",
]
[project.optional-dependencies]
dev = ["pytest>=8", "pytest-asyncio>=0.24", "pydantic-evals>=2.35.3,<3"]
[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"
[tool.hatch.build.targets.wheel]
packages = ["src/catalogue_agent"]
[tool.pytest.ini_options]
asyncio_mode = "auto"
testpaths = ["tests"]