Merge PR #1222: fix runtime context leaking into session history
This commit is contained in:
@@ -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()
|
||||||
|
|||||||
Reference in New Issue
Block a user