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
+1 -1
View File
@@ -137,7 +137,7 @@ and the A2A call to the supply agent work, and `k8s/` deploys through Flux.
## Deployment ## Deployment
``` ```
gitea.sttlab.eu/stt/classic-models-agent-catalogue:v0.3.2 gitea.sttlab.eu/stt/classic-models-agent-catalogue:v0.4.0
``` ```
gitea's own registry rather than ghcr, so the image sits beside the source it gitea's own registry rather than ghcr, so the image sits beside the source it
+1 -1
View File
@@ -26,4 +26,4 @@ data:
CATALOGUE_PUBLIC_URL: http://catalog-agent.agents.svc.cluster.local:8080/ CATALOGUE_PUBLIC_URL: http://catalog-agent.agents.svc.cluster.local:8080/
# The peer's Service name, overriding the default in config.py — set here so # The peer's Service name, overriding the default in config.py — set here so
# the rename took effect without rebuilding an image. # the rename took effect without rebuilding an image.
CATALOGUE_APPROVISIONNEMENT_URL: http://supply-agent.agents.svc.cluster.local:8080/ CATALOGUE_SUPPLY_URL: http://supply-agent.agents.svc.cluster.local:8080/
+1 -1
View File
@@ -30,7 +30,7 @@ spec:
# repo is public, so the pull needs no credentials — which removes an # repo is public, so the pull needs no credentials — which removes an
# imagePullSecret that would otherwise have to be created by hand in # imagePullSecret that would otherwise have to be created by hand in
# this namespace and kept in step with a GitHub token. # this namespace and kept in step with a GitHub token.
image: gitea.sttlab.eu/stt/classic-models-agent-catalogue:v0.3.2 image: gitea.sttlab.eu/stt/classic-models-agent-catalogue:v0.4.0
ports: ports:
- name: http - name: http
containerPort: 8080 containerPort: 8080
+2 -2
View File
@@ -53,7 +53,7 @@ How to work:
bears on a pricing or discontinuation decision. You never act on orders. 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 - State figures as the tools returned them. If a tool returns nothing, say so
rather than estimating. 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 `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. you must not infer availability from the catalog's own quantity field.
- Never recommend discontinuing a reference without asking. A reference about to - 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 is how an agent becomes a proxy onto its neighbours. This one asks a
single question of a single peer. single question of a single peer.
""" """
peer = peers(self._settings)["approvisionnement"] peer = peers(self._settings)["supply"]
settings, exchanger = self._settings, self._exchanger settings, exchanger = self._settings, self._exchanger
async def check_availability(productcode: str) -> str: 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 # 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 # agent learns whether a reference is about to be reordered before it
# recommends dropping it — without gaining any sight of the supply domain. # recommends dropping it — without gaining any sight of the supply domain.
approvisionnement_url: str = "http://supply-agent.agents.svc.cluster.local:8080/" supply_url: str = "http://supply-agent.agents.svc.cluster.local:8080/"
approvisionnement_scope: str = "classic-models-agent-approvisionnement-audience" supply_scope: str = "classic-models-agent-supply-audience"
mcp_sales_scope: str = "mcp-sales-audience token-exchange-broker-audience" mcp_sales_scope: str = "mcp-sales-audience token-exchange-broker-audience"
# --- inference ---------------------------------------------------------- # --- inference ----------------------------------------------------------
+7 -7
View File
@@ -1,7 +1,7 @@
"""Calling another agent, as a tool the model can reach for. """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 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 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 whole per-domain scoping rests on a specialist answering rather than handing
over its records. 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. 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 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 prompt injection that talks this agent into consulting the wrong peer fails at
the realm. the realm.
""" """
@@ -42,16 +42,16 @@ class Peer:
def peers(settings: Settings) -> dict[str, 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: 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. a reference that is about to be reordered is not a reference to drop.
""" """
return { return {
"approvisionnement": Peer( "supply": Peer(
"approvisionnement", "supply",
settings.approvisionnement_url, settings.supply_url,
settings.approvisionnement_scope, settings.supply_scope,
) )
} }