diff --git a/s08_context_compact/README.en.md b/s08_context_compact/README.en.md index dcf254cc..15199c37 100644 --- a/s08_context_compact/README.en.md +++ b/s08_context_compact/README.en.md @@ -46,10 +46,12 @@ def snip_compact(messages, max_messages=50): if len(messages) <= max_messages: return messages head_end, tail_start = 3, len(messages) - (max_messages - 3) - if _message_has_tool_use(messages[head_end - 1]): + if head_end > 0 and _message_has_tool_use(messages[head_end - 1]): while head_end < len(messages) and _is_tool_result_message(messages[head_end]): head_end += 1 - if _is_tool_result_message(messages[tail_start]) and _message_has_tool_use(messages[tail_start - 1]): + if (tail_start > 0 and tail_start < len(messages) + and _is_tool_result_message(messages[tail_start]) + and _message_has_tool_use(messages[tail_start - 1])): tail_start -= 1 snipped = tail_start - head_end placeholder = {"role": "user", "content": f"[snipped {snipped} messages from conversation middle]"} diff --git a/s08_context_compact/README.ja.md b/s08_context_compact/README.ja.md index 72cae428..da174d0a 100644 --- a/s08_context_compact/README.ja.md +++ b/s08_context_compact/README.ja.md @@ -46,10 +46,12 @@ def snip_compact(messages, max_messages=50): if len(messages) <= max_messages: return messages head_end, tail_start = 3, len(messages) - (max_messages - 3) - if _message_has_tool_use(messages[head_end - 1]): + if head_end > 0 and _message_has_tool_use(messages[head_end - 1]): while head_end < len(messages) and _is_tool_result_message(messages[head_end]): head_end += 1 - if _is_tool_result_message(messages[tail_start]) and _message_has_tool_use(messages[tail_start - 1]): + if (tail_start > 0 and tail_start < len(messages) + and _is_tool_result_message(messages[tail_start]) + and _message_has_tool_use(messages[tail_start - 1])): tail_start -= 1 snipped = tail_start - head_end placeholder = {"role": "user", "content": f"[snipped {snipped} messages from conversation middle]"} diff --git a/s08_context_compact/README.md b/s08_context_compact/README.md index 771257d4..ab5dae54 100644 --- a/s08_context_compact/README.md +++ b/s08_context_compact/README.md @@ -46,10 +46,12 @@ def snip_compact(messages, max_messages=50): if len(messages) <= max_messages: return messages head_end, tail_start = 3, len(messages) - (max_messages - 3) - if _message_has_tool_use(messages[head_end - 1]): + if head_end > 0 and _message_has_tool_use(messages[head_end - 1]): while head_end < len(messages) and _is_tool_result_message(messages[head_end]): head_end += 1 - if _is_tool_result_message(messages[tail_start]) and _message_has_tool_use(messages[tail_start - 1]): + if (tail_start > 0 and tail_start < len(messages) + and _is_tool_result_message(messages[tail_start]) + and _message_has_tool_use(messages[tail_start - 1])): tail_start -= 1 snipped = tail_start - head_end placeholder = {"role": "user", "content": f"[snipped {snipped} messages from conversation middle]"}