diff --git a/nanobot/utils/helpers.py b/nanobot/utils/helpers.py index a8681b8f..eebee792 100644 --- a/nanobot/utils/helpers.py +++ b/nanobot/utils/helpers.py @@ -526,6 +526,9 @@ def split_message(content: str, max_len: int = 2000) -> list[str]: """ if not content: return [] + # Non-positive max_len cannot advance the cut pointer; return unsplit. + if max_len <= 0: + return [content] if len(content) <= max_len: return [content] chunks: list[str] = [] diff --git a/tests/utils/test_helpers.py b/tests/utils/test_helpers.py index 483eb77e..3d7daf96 100644 --- a/tests/utils/test_helpers.py +++ b/tests/utils/test_helpers.py @@ -12,6 +12,13 @@ def test_split_message_no_code_blocks_unchanged(): assert split_message(content, max_len=12) == ["alpha beta", "gamma delta"] +def test_split_message_nonpositive_maxlen_returns_unsplit(): + content = "alpha beta gamma delta" + + assert split_message(content, max_len=0) == [content] + assert split_message(content, max_len=-1) == [content] + + def test_truncate_text_to_tokens_keeps_text_within_budget(): text = "hello world " * 100