diff --git a/app.py b/app.py
index e19ae3c..402e344 100644
--- a/app.py
+++ b/app.py
@@ -1002,16 +1002,23 @@ def parse_agent_commands(agent_key, response_text, task_id=None):
import re
def get_field(block, field):
- """Extrahiert ein Feld aus einem XML-Block: 'field: value' oder 'value'."""
- # Versuche erst XML-Tag-Format
+ """Extrahiert ein Feld aus einem XML-Block: 'value' oder 'field: value'.
+ Unterstützt mehrzeilige Werte (z.B. langer Email-Body).
+ """
+ # Versuche erst XML-Tag-Format (bevorzugt, unterstützt Mehrzeiligkeit)
m = re.search(rf'<{field}>(.*?){field}>', block, re.DOTALL | re.IGNORECASE)
if m:
return m.group(1).strip()
- # Dann Key-Value-Format
- m = re.search(rf'^{field}\s*:\s*(.+)', block, re.MULTILINE | re.IGNORECASE)
- if m:
- return m.group(1).strip()
- return ''
+ # Key-Value-Format: finde 'field: ...' und lies bis zum nächsten echten Key (^\w+: )
+ m = re.search(rf'(?m)^{field}\s*:\s*(.*)', block, re.IGNORECASE)
+ if not m:
+ return ''
+ rest = block[m.start(1):]
+ # Stoppe nur bei echten einwortigen Keys (^\w+: Leerzeichen) — nicht bei "Report:" etc.
+ stop = re.search(r'(?m)^\w+\s*:\s', rest)
+ if stop:
+ return rest[:stop.start()].strip()
+ return rest.strip()
# ── CREATE_TASK ──────────────────────────────────────────────────────────
for block in re.findall(r'(.*?)', response_text, re.DOTALL | re.IGNORECASE):