601bd6343e
An agent talks to URLs that honour a contract: an MCP endpoint, an OIDC token endpoint, an OpenAI-shaped LLM endpoint. Whatever serves those URLs is replaceable, and naming it in an agent's code or docs implies a coupling that does not exist. Every product name is gone from prose, comments and identifiers, replaced by what the agent actually depends on. Where a behaviour of the current middleware leaks into the contract — the second audience scope, the tool ACL — the text now says what the caller must do and why, not who imposes it. One string survives and cannot be fixed here: the broker client an agent must name in its audience scopes is itself named after the middleware. Closing that means renaming it in Keycloak and following the rename through the gateway configuration and LibreChat. Recorded as a blocker. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
40 lines
1.4 KiB
TOML
40 lines
1.4 KiB
TOML
[project]
|
|
name = "classic-models-agent-catalogue"
|
|
version = "0.1.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",
|
|
"uvicorn>=0.52.4",
|
|
]
|
|
|
|
[project.optional-dependencies]
|
|
dev = ["pytest>=8", "pytest-asyncio>=0.24"]
|
|
|
|
[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"]
|