chore: import upstream snapshot with attribution
This commit is contained in:
@@ -0,0 +1,150 @@
|
||||
from __future__ import annotations
|
||||
|
||||
from opensquilla.provider import ContentBlockCompaction
|
||||
from opensquilla.session.context_view import (
|
||||
build_compaction_context_items,
|
||||
build_compaction_context_records,
|
||||
build_provider_compaction_context,
|
||||
)
|
||||
from opensquilla.session.models import SessionContextState, SessionSummary
|
||||
|
||||
|
||||
def test_provider_compaction_context_dropped_for_non_anthropic_provider() -> None:
|
||||
# An Anthropic-native state must not replay when a different provider is
|
||||
# active (the live-provider gate). A fork or mid-session switch can leave
|
||||
# such state in the session; replaying it cross-provider corrupts the
|
||||
# request, so the builder returns empty for non-anthropic providers.
|
||||
anthropic_state = SessionContextState(
|
||||
session_id="session",
|
||||
session_key="agent:main:ctx",
|
||||
provider="anthropic",
|
||||
model="claude-opus-4-7",
|
||||
state_kind="anthropic_compaction_block",
|
||||
payload={"content": "native state"},
|
||||
covered_through_id=9,
|
||||
created_at=3000,
|
||||
portable=False,
|
||||
cacheable=True,
|
||||
)
|
||||
for provider_kind in ("openai", "gemini", "openai_responses"):
|
||||
context = build_provider_compaction_context(
|
||||
context_states=[anthropic_state],
|
||||
provider_kind=provider_kind,
|
||||
now_ms=4000,
|
||||
)
|
||||
assert context.messages == []
|
||||
assert context.covered_through_ids == set()
|
||||
|
||||
|
||||
def test_provider_compaction_context_prefers_latest_state_independent_of_input_order() -> None:
|
||||
newer = SessionContextState(
|
||||
session_id="session",
|
||||
session_key="agent:main:ctx",
|
||||
provider="anthropic",
|
||||
model="claude-opus-4-7",
|
||||
state_kind="anthropic_compaction_block",
|
||||
payload={"content": "new native state"},
|
||||
covered_through_id=9,
|
||||
created_at=3000,
|
||||
portable=False,
|
||||
cacheable=True,
|
||||
)
|
||||
older = SessionContextState(
|
||||
session_id="session",
|
||||
session_key="agent:main:ctx",
|
||||
provider="anthropic",
|
||||
model="claude-opus-4-7",
|
||||
state_kind="anthropic_compaction_block",
|
||||
payload={"content": "old native state"},
|
||||
covered_through_id=7,
|
||||
created_at=1000,
|
||||
portable=False,
|
||||
cacheable=True,
|
||||
)
|
||||
|
||||
context = build_provider_compaction_context(
|
||||
context_states=[newer, older],
|
||||
provider_kind="anthropic",
|
||||
now_ms=4000,
|
||||
)
|
||||
|
||||
assert context.covered_through_ids == {9}
|
||||
assert len(context.messages) == 1
|
||||
block = context.messages[0].content[0]
|
||||
assert isinstance(block, ContentBlockCompaction)
|
||||
assert block.content == "new native state"
|
||||
|
||||
|
||||
def test_compaction_context_items_deduplicate_structured_state_by_latest_coverage() -> None:
|
||||
newer = SessionContextState(
|
||||
session_id="session",
|
||||
session_key="agent:main:ctx",
|
||||
provider="portable",
|
||||
state_kind="structured_summary_v1",
|
||||
payload={
|
||||
"schema_version": 1,
|
||||
"current_status": "new structured state",
|
||||
},
|
||||
covered_through_id=7,
|
||||
created_at=3000,
|
||||
portable=True,
|
||||
cacheable=True,
|
||||
)
|
||||
older = SessionContextState(
|
||||
session_id="session",
|
||||
session_key="agent:main:ctx",
|
||||
provider="portable",
|
||||
state_kind="structured_summary_v1",
|
||||
payload={
|
||||
"schema_version": 1,
|
||||
"current_status": "old structured state",
|
||||
},
|
||||
covered_through_id=7,
|
||||
created_at=1000,
|
||||
portable=True,
|
||||
cacheable=True,
|
||||
)
|
||||
summary = SessionSummary(
|
||||
session_id="session",
|
||||
session_key="agent:main:ctx",
|
||||
summary_text="plain summary fallback",
|
||||
covered_through_id=7,
|
||||
)
|
||||
|
||||
items = build_compaction_context_items(
|
||||
context_states=[newer, older],
|
||||
summaries=[summary],
|
||||
now_ms=4000,
|
||||
)
|
||||
|
||||
rendered = "\n".join(items)
|
||||
assert "new structured state" in rendered
|
||||
assert "old structured state" not in rendered
|
||||
assert "plain summary fallback" not in rendered
|
||||
|
||||
|
||||
def test_compaction_context_records_expose_correlation_metadata() -> None:
|
||||
state = SessionContextState(
|
||||
session_id="session",
|
||||
session_key="agent:main:ctx",
|
||||
provider="portable",
|
||||
state_kind="structured_summary_v1",
|
||||
payload={
|
||||
"schema_version": 1,
|
||||
"current_status": "structured state",
|
||||
"compaction_id": "cmp_state_1",
|
||||
},
|
||||
covered_through_id=9,
|
||||
portable=True,
|
||||
cacheable=True,
|
||||
)
|
||||
|
||||
records = build_compaction_context_records(
|
||||
context_states=[state],
|
||||
summaries=[],
|
||||
)
|
||||
|
||||
assert len(records) == 1
|
||||
assert records[0].compaction_id == "cmp_state_1"
|
||||
assert records[0].source == "context_state"
|
||||
assert records[0].covered_through_id == 9
|
||||
Reference in New Issue
Block a user