From 17e07d525b363d694b06244388844045a5bd6e0f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mathias=20Gla=CC=88ser?= Date: Mon, 21 Sep 2026 15:50:19 +0200 Subject: [PATCH] Require raw HTML from Hermes MCP --- .../konzepte/market_management_hermes_mcp_api.md | 4 ++++ .../konzepte/market_management_hermes_mcp_konzept.md | 5 ++++- modules/market_management/service.php | 9 --------- 3 files changed, 8 insertions(+), 10 deletions(-) diff --git a/docs/modules/market_management/konzepte/market_management_hermes_mcp_api.md b/docs/modules/market_management/konzepte/market_management_hermes_mcp_api.md index aecaa80..1030e82 100644 --- a/docs/modules/market_management/konzepte/market_management_hermes_mcp_api.md +++ b/docs/modules/market_management/konzepte/market_management_hermes_mcp_api.md @@ -50,6 +50,10 @@ für solche internen Dokumentlinks sowie `
` und `` erlaubt. Andere HTML-Tags und nicht erlaubte URL-Schemata werden entfernt. Externe `http://`- und `https://`-Links sind erlaubt und öffnen in einem neuen Tab. Der Link ist schreibgeschützt und erfordert bei internen Dokumenten eine aktive ERP-Anmeldung. +Hermes muss diesen HTML-String unverändert als Feldwert senden: keine Markdown- +Notation, keine Backticks und keine HTML-Entity-Kodierung wie `<`, `>` oder +`"`. Der MCP-Transport erwartet den HTML-Inhalt im JSON-String und escaped +ihn nicht als HTML. Die Route benötigt auf dem ERP-Webserver die Konfiguration `HERMES_DOCUMENT_ROOT=/volume1/Hermes/Hermes Naurua`. Dieser lokale Pfad ist diff --git a/docs/modules/market_management/konzepte/market_management_hermes_mcp_konzept.md b/docs/modules/market_management/konzepte/market_management_hermes_mcp_konzept.md index e2c516f..ea4211e 100644 --- a/docs/modules/market_management/konzepte/market_management_hermes_mcp_konzept.md +++ b/docs/modules/market_management/konzepte/market_management_hermes_mcp_konzept.md @@ -73,7 +73,10 @@ Modulberechtigung. Feld `notes` referenziert werden. Zusätzlich sind in mehrzeiligen Feldern `
` und `` erlaubt. Die Position im bestehenden Freitext ist frei wählbar. Externe `http://`- und `https://`-Links sind zulässig und öffnen in - einem neuen Tab; andere HTML-Tags und URL-Schemata sind nicht zulässig. + einem neuen Tab; andere HTML-Tags und URL-Schemata sind nicht zulässig. Hermes + sendet den HTML-String unverändert; Markdown, Backticks und HTML-Entities wie + `<`, `>` oder `"` werden nicht verwendet. Der MCP-Transport escaped + den HTML-Inhalt nicht. - Unsichere Erkennung wird nicht durch eine zusätzliche App-Freigabelogik behandelt; die fachliche Qualitätssicherung liegt im Hermes-Training. diff --git a/modules/market_management/service.php b/modules/market_management/service.php index 31c0b25..00458f0 100644 --- a/modules/market_management/service.php +++ b/modules/market_management/service.php @@ -64,15 +64,6 @@ function market_management_sanitize_multiline_html(?string $value): ?string return $value; } - for ($decodePass = 0; $decodePass < 3; $decodePass++) { - $decoded = html_entity_decode($value, ENT_QUOTES | ENT_HTML5, 'UTF-8'); - if ($decoded === $value) { - break; - } - $value = $decoded; - } - $value = preg_replace('/(]*\bhref\s*=\s*["\'])@url:/iu', '$1', $value) ?? $value; - $tokens = preg_split('/(<\/?a\b[^>]*>||<\/?strong\s*>)/iu', $value, -1, PREG_SPLIT_DELIM_CAPTURE); if ($tokens === false) { return htmlspecialchars($value, ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8');