Follow the supply agent's rename

Its Keycloak client and audience scope changed name; the peer entry and the
environment variables that point at it move with them.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Stéphane Tailland
2026-08-31 15:04:26 +02:00
parent 64fcd85b24
commit c09e7d1017
6 changed files with 14 additions and 14 deletions
+2 -2
View File
@@ -53,7 +53,7 @@ How to work:
bears on a pricing or discontinuation decision. You never act on orders.
- State figures as the tools returned them. If a tool returns nothing, say so
rather than estimating.
- When a decision depends on availability, ask Approvisionnement with
- When a decision depends on availability, ask Supply with
`check_availability`. It answers; it does not hand back the stock table, and
you must not infer availability from the catalog's own quantity field.
- Never recommend discontinuing a reference without asking. A reference about to
@@ -288,7 +288,7 @@ class CatalogueAgent:
is how an agent becomes a proxy onto its neighbours. This one asks a
single question of a single peer.
"""
peer = peers(self._settings)["approvisionnement"]
peer = peers(self._settings)["supply"]
settings, exchanger = self._settings, self._exchanger
async def check_availability(productcode: str) -> str:
+2 -2
View File
@@ -39,8 +39,8 @@ class Settings(BaseSettings):
# An A2A call returns an answer, not data. Consulting this one is how the
# agent learns whether a reference is about to be reordered before it
# recommends dropping it — without gaining any sight of the supply domain.
approvisionnement_url: str = "http://supply-agent.agents.svc.cluster.local:8080/"
approvisionnement_scope: str = "classic-models-agent-approvisionnement-audience"
supply_url: str = "http://supply-agent.agents.svc.cluster.local:8080/"
supply_scope: str = "classic-models-agent-supply-audience"
mcp_sales_scope: str = "mcp-sales-audience token-exchange-broker-audience"
# --- inference ----------------------------------------------------------
+7 -7
View File
@@ -1,7 +1,7 @@
"""Calling another agent, as a tool the model can reach for.
The rule this agent lives by: **an A2A call returns an answer, not data.** It
asks Approvisionnement "can S10_1949 be promised?" and receives a decision. It
asks Supply "can S10_1949 be promised?" and receives a decision. It
never gains read access to whatever that agent can see, and it must not — the
whole per-domain scoping rests on a specialist answering rather than handing
over its records.
@@ -11,7 +11,7 @@ A generic one would let 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, from the end user's
own token. A token for Approvisionnement is refused by every other agent, so a
own token. A token for Supply is refused by every other agent, so a
prompt injection that talks this agent into consulting the wrong peer fails at
the realm.
"""
@@ -42,16 +42,16 @@ class Peer:
def peers(settings: Settings) -> dict[str, Peer]:
"""Approvisionnement, and nothing else.
"""Supply, and nothing else.
The design has this agent consult it before a discontinuation decision:
a reference that is about to be reordered is not a reference to drop.
"""
return {
"approvisionnement": Peer(
"approvisionnement",
settings.approvisionnement_url,
settings.approvisionnement_scope,
"supply": Peer(
"supply",
settings.supply_url,
settings.supply_scope,
)
}