Files
agent-desktop/tests/unit/runtime/test_builtin_commands_scroll.py
T

75 lines
2.1 KiB
Python

# -*- coding: utf-8 -*-
"""Tests for the conversation-command adapter's scroll-checkpoint handling.
Pins ``_resolve_scroll_block`` — the rule that keeps the scroll context
manager's persisted bookkeeping consistent with what a command did to the live
window (update on /compact, reset on /clear, preserve otherwise). The prior bug
was that *every* command silently dropped the scroll block.
"""
from pineagents.agents.command_handler import ConversationCommandHandlerMixin
from pineagents.runtime.builtin_commands import (
_collect_conversation_specs,
_CONVERSATION_COMMANDS,
_resolve_scroll_block,
)
def test_runtime_registers_every_command_handler_conversation_command():
assert _CONVERSATION_COMMANDS == (
ConversationCommandHandlerMixin.SYSTEM_COMMANDS
)
assert "reme_status" in {
spec.name for spec in _collect_conversation_specs()
}
def test_compact_saves_the_refreshed_block():
updated = {"tiers": [["block"]]}
out = _resolve_scroll_block(
updated=updated,
context_empty=False,
existing={"old": True},
)
assert out is updated
def test_cleared_context_resets_the_block():
# /clear, /new empty the window — a stale eviction index must not survive.
out = _resolve_scroll_block(
updated=None,
context_empty=True,
existing={"tiers": [["old"]]},
)
assert out is None
def test_readonly_command_preserves_existing_block():
# /history, /message, ... must NOT nuke the scroll checkpoint.
existing = {"persisted_ids": ["a", "b"]}
out = _resolve_scroll_block(
updated=None,
context_empty=False,
existing=existing,
)
assert out is existing
def test_update_wins_even_if_context_empty():
updated = {"tiers": []}
out = _resolve_scroll_block(
updated=updated,
context_empty=True,
existing=None,
)
assert out is updated
def test_no_existing_block_native_session():
out = _resolve_scroll_block(
updated=None,
context_empty=False,
existing=None,
)
assert out is None