Merge PR #1222: fix runtime context leaking into session history

This commit is contained in:
Re-bin
2026-02-27 10:07:22 +00:00

View File

@@ -444,18 +444,19 @@ class AgentLoop:
from datetime import datetime from datetime import datetime
for m in messages[skip:]: for m in messages[skip:]:
entry = {k: v for k, v in m.items() if k != "reasoning_content"} entry = {k: v for k, v in m.items() if k != "reasoning_content"}
if entry.get("role") == "tool" and isinstance(entry.get("content"), str): role, content = entry.get("role"), entry.get("content")
content = entry["content"] if role == "tool" and isinstance(content, str) and len(content) > self._TOOL_RESULT_MAX_CHARS:
if len(content) > self._TOOL_RESULT_MAX_CHARS: entry["content"] = content[:self._TOOL_RESULT_MAX_CHARS] + "\n... (truncated)"
entry["content"] = content[:self._TOOL_RESULT_MAX_CHARS] + "\n... (truncated)" elif role == "user":
if entry.get("role") == "user" and isinstance(entry.get("content"), list): if isinstance(content, str) and content.startswith(ContextBuilder._RUNTIME_CONTEXT_TAG):
entry["content"] = [ continue
{"type": "text", "text": "[image]"} if ( if isinstance(content, list):
c.get("type") == "image_url" entry["content"] = [
and c.get("image_url", {}).get("url", "").startswith("data:image/") {"type": "text", "text": "[image]"} if (
) else c c.get("type") == "image_url"
for c in entry["content"] and c.get("image_url", {}).get("url", "").startswith("data:image/")
] ) else c for c in content
]
entry.setdefault("timestamp", datetime.now().isoformat()) entry.setdefault("timestamp", datetime.now().isoformat())
session.messages.append(entry) session.messages.append(entry)
session.updated_at = datetime.now() session.updated_at = datetime.now()