Skip to content

feat(jb_outbound): garde-fou des MCP additionnels (hors Composio) - #3

Merged
gabiar-maker merged 1 commit into
mainfrom
feat/mcp-additionnels-guardrail
Jun 11, 2026
Merged

feat(jb_outbound): garde-fou des MCP additionnels (hors Composio)#3
gabiar-maker merged 1 commit into
mainfrom
feat/mcp-additionnels-guardrail

Conversation

@gabiar-maker

Copy link
Copy Markdown
Owner

Quoi

Le garde-fou jb_outbound ne couvrait que mcp_composio_* : les outils des MCP additionnels (hors Composio) s'exécutaient sans validation. Cette PR le corrige sans bloquer : une fonction déclarée ACTION dans la table managée devient une proposition « à valider » ; les lectures s'exécutent normalement.

Comment

  • managed.py (nouveau) : charge <HERMES_HOME>/jb_outbound/managed.json (déposé par le bundle Jean-Billie), clée par nom d'outil runtime mcp_<serveur>_<outil> (assaini comme tools/mcp_tool.py). Cache mtime, lecture tolérante (absent/illisible → aucune action managée).
  • classify.py : action managée → PROPOSE (dashboard), lecture → PASS. mcp_composio_* et send_message inchangés. Aucun blocage pour les serveurs additionnels.
  • mapping.py : kind="action", titre = libellé client (white-label, jamais le nom technique), preview best-effort, payload channel="mcp".
  • replay.py : inchangé — le dispatch générique (registry.dispatch) rejoue l'outil à l'accord.

Tests

plugins/jb_outbound/test_jb_outbound.py : 11/11 (7 existants + 4 nouveaux : action → PROPOSE, lecture → PASS, sans table → pas de blocage, mapping white-label, middleware dépose la proposition).

Sous Windows : python -m pytest plugins/jb_outbound/test_jb_outbound.py -o addopts="" (le plugin pytest-timeout du repo utilise signal.SIGALRM, indisponible sur Windows).

Lien

Côté plateforme (génération du managed.json, mcp_servers, surface de validation) : gabiar-maker/Jean-Billie PR NousResearch#42.

🤖 Generated with Claude Code

Les outils des MCP additionnels ne sont plus exécutés sans contrôle : une fonction
déclarée ACTION dans la table managée devient une proposition « à valider » ; les
lectures s'exécutent normalement. Aucun blocage (cf. consigne produit).

- managed.py : charge <HERMES_HOME>/jb_outbound/managed.json (clée par nom d'outil
  runtime mcp_<serveur>_<outil>), cache mtime, lecture tolérante (absent → aucune action)
- classify.py : action managée -> PROPOSE, lecture -> PASS ; Composio inchangé
- mapping.py : kind="action", titre = libellé client (white-label), preview best-effort
- replay.py inchangé (dispatch générique rejoue l'outil à l'accord)

Tests : 11/11 (pytest -o addopts="" sous Windows : pytest-timeout/SIGALRM indisponible).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@github-actions

Copy link
Copy Markdown

🔎 Lint report: feat/mcp-additionnels-guardrail vs origin/main

ruff

Total: 0 on HEAD, 0 on base (➖ 0)

🆕 New issues: none

✅ Fixed issues: none

Unchanged: 0 pre-existing issues carried over.

ty (type checker)

Total: 10343 on HEAD, 10343 on base (➖ 0)

🆕 New issues: none

✅ Fixed issues: none

Unchanged: 5396 pre-existing issues carried over.

Diagnostics are surfaced as warnings — this check never fails the build.

@gabiar-maker
gabiar-maker merged commit 2e426c8 into main Jun 11, 2026
22 of 23 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant