Fix compacted tool history for resumed sessions
This commit is contained in:
@@ -37,7 +37,7 @@ from .agent_prompting import (
|
||||
build_system_prompt_parts,
|
||||
render_system_prompt,
|
||||
)
|
||||
from .agent_session import AgentSessionState
|
||||
from .agent_session import AgentSessionState, sanitize_model_message_sequence
|
||||
from .agent_slash_commands import preprocess_slash_command
|
||||
from .agent_tools import (
|
||||
AgentTool,
|
||||
@@ -2468,7 +2468,9 @@ class LocalCodingAgent:
|
||||
if compact_end <= prefix_count:
|
||||
return False
|
||||
candidates = session.messages[prefix_count:compact_end]
|
||||
preserved_tail = list(session.messages[compact_end:])
|
||||
preserved_tail = sanitize_model_message_sequence(
|
||||
list(session.messages[compact_end:])
|
||||
)
|
||||
if not candidates:
|
||||
return False
|
||||
compacted_tokens = sum(
|
||||
@@ -2492,13 +2494,13 @@ class LocalCodingAgent:
|
||||
turn_index=turn_index,
|
||||
estimated_tokens_before=usage_total,
|
||||
estimated_tokens_removed=compacted_tokens,
|
||||
preserved_tail_count=tail_count,
|
||||
preserved_tail_count=len(preserved_tail),
|
||||
preserved_tail=preserved_tail,
|
||||
)
|
||||
session.messages = (
|
||||
session.messages[:prefix_count]
|
||||
+ [compact_message]
|
||||
+ session.messages[compact_end:]
|
||||
+ preserved_tail
|
||||
)
|
||||
stream_events.append(
|
||||
{
|
||||
@@ -2507,7 +2509,7 @@ class LocalCodingAgent:
|
||||
'compacted_message_count': len(candidates),
|
||||
'estimated_tokens_before': usage_total,
|
||||
'estimated_tokens_removed': compacted_tokens,
|
||||
'preserved_tail_count': tail_count,
|
||||
'preserved_tail_count': len(preserved_tail),
|
||||
'preserved_tail_ids': [
|
||||
message.message_id for message in preserved_tail if message.message_id
|
||||
],
|
||||
|
||||
Reference in New Issue
Block a user