Revert "feat: bring back use message packing for timezone [LET-6846]" (#9302)
Revert "feat: bring back use message packing for timezone [LET-6846] (#9256)" This reverts commit c5017cccdef95b84fc585b26a0ddc5b7e44eb7c9.
This commit is contained in:
@@ -699,109 +699,6 @@ async def test_update_agent(server: SyncServer, comprehensive_test_agent_fixture
|
||||
assert updated_agent.updated_at > last_updated_timestamp
|
||||
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_create_agent_without_timezone_no_message_packing(server: SyncServer, default_user, default_block):
|
||||
"""Test that agent created without timezone has raw user messages (not JSON wrapped)."""
|
||||
test_message = "hello world without timezone"
|
||||
memory_blocks = [CreateBlock(label="human", value="TestUser"), CreateBlock(label="persona", value="I am a helpful assistant")]
|
||||
create_agent_request = CreateAgent(
|
||||
agent_type="memgpt_v2_agent",
|
||||
system="test system",
|
||||
memory_blocks=memory_blocks,
|
||||
llm_config=LLMConfig.default_config("gpt-4o-mini"),
|
||||
embedding_config=EmbeddingConfig.default_config(provider="openai"),
|
||||
block_ids=[default_block.id],
|
||||
initial_message_sequence=[MessageCreate(role=MessageRole.user, content=test_message)],
|
||||
include_base_tools=False,
|
||||
# No timezone specified - should be None
|
||||
)
|
||||
agent_state = await server.agent_manager.create_agent_async(
|
||||
create_agent_request,
|
||||
actor=default_user,
|
||||
)
|
||||
|
||||
try:
|
||||
# Verify timezone is None
|
||||
assert agent_state.timezone is None, f"Expected timezone to be None, got {agent_state.timezone}"
|
||||
|
||||
# Get the messages
|
||||
init_messages = await server.message_manager.get_messages_by_ids_async(message_ids=agent_state.message_ids, actor=default_user)
|
||||
|
||||
# Find the user message
|
||||
user_messages = [m for m in init_messages if m.role == MessageRole.user]
|
||||
assert len(user_messages) == 1, f"Expected 1 user message, got {len(user_messages)}"
|
||||
|
||||
# Check that the raw content is the plain text (not JSON wrapped)
|
||||
raw_content = user_messages[0].content[0].text
|
||||
assert raw_content == test_message, f"Expected raw message '{test_message}', got '{raw_content}'"
|
||||
|
||||
# Verify it's NOT JSON
|
||||
try:
|
||||
parsed = json.loads(raw_content)
|
||||
# If we get here, the content is JSON - that's wrong for no-timezone case
|
||||
assert False, f"Expected raw text but got JSON: {parsed}"
|
||||
except json.JSONDecodeError:
|
||||
# Expected - the content should not be valid JSON
|
||||
pass
|
||||
finally:
|
||||
await server.agent_manager.delete_agent_async(agent_id=agent_state.id, actor=default_user)
|
||||
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_create_agent_with_timezone_message_packing(server: SyncServer, default_user, default_block):
|
||||
"""Test that agent created with timezone has JSON wrapped user messages with timestamp."""
|
||||
test_message = "hello world with timezone"
|
||||
memory_blocks = [CreateBlock(label="human", value="TestUser"), CreateBlock(label="persona", value="I am a helpful assistant")]
|
||||
create_agent_request = CreateAgent(
|
||||
agent_type="memgpt_v2_agent",
|
||||
system="test system",
|
||||
memory_blocks=memory_blocks,
|
||||
llm_config=LLMConfig.default_config("gpt-4o-mini"),
|
||||
embedding_config=EmbeddingConfig.default_config(provider="openai"),
|
||||
block_ids=[default_block.id],
|
||||
initial_message_sequence=[MessageCreate(role=MessageRole.user, content=test_message)],
|
||||
include_base_tools=False,
|
||||
timezone="America/Los_Angeles",
|
||||
)
|
||||
agent_state = await server.agent_manager.create_agent_async(
|
||||
create_agent_request,
|
||||
actor=default_user,
|
||||
)
|
||||
|
||||
try:
|
||||
# Verify timezone is set
|
||||
assert agent_state.timezone == "America/Los_Angeles", f"Expected timezone 'America/Los_Angeles', got {agent_state.timezone}"
|
||||
|
||||
# Get the messages
|
||||
init_messages = await server.message_manager.get_messages_by_ids_async(message_ids=agent_state.message_ids, actor=default_user)
|
||||
|
||||
# Find the user message
|
||||
user_messages = [m for m in init_messages if m.role == MessageRole.user]
|
||||
assert len(user_messages) == 1, f"Expected 1 user message, got {len(user_messages)}"
|
||||
|
||||
# Check that the raw content is JSON wrapped
|
||||
raw_content = user_messages[0].content[0].text
|
||||
|
||||
# Verify it IS valid JSON with expected structure
|
||||
parsed = json.loads(raw_content)
|
||||
assert isinstance(parsed, dict), f"Expected JSON object, got {type(parsed)}"
|
||||
assert "type" in parsed, "Expected 'type' field in packed message"
|
||||
assert "message" in parsed, "Expected 'message' field in packed message"
|
||||
assert "time" in parsed, "Expected 'time' field in packed message"
|
||||
|
||||
# Verify the inner message content
|
||||
assert parsed["type"] == "user_message", f"Expected type 'user_message', got '{parsed['type']}'"
|
||||
assert parsed["message"] == test_message, f"Expected inner message '{test_message}', got '{parsed['message']}'"
|
||||
|
||||
# Verify the time contains timezone info (PST or PDT for America/Los_Angeles)
|
||||
time_str = parsed["time"]
|
||||
assert any(tz in time_str for tz in ["PST", "PDT", "-0800", "-0700"]), (
|
||||
f"Expected Pacific timezone indicator in time string '{time_str}'"
|
||||
)
|
||||
finally:
|
||||
await server.agent_manager.delete_agent_async(agent_id=agent_state.id, actor=default_user)
|
||||
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_create_agent_with_compaction_settings(server: SyncServer, default_user, default_block):
|
||||
"""Test that agents can be created with custom compaction_settings"""
|
||||
|
||||
@@ -790,81 +790,6 @@ def test_initial_sequence(client: Letta):
|
||||
# assert agent.timezone == "America/New_York"
|
||||
|
||||
|
||||
def test_agent_timezone_none_no_message_packing(client: Letta):
|
||||
"""Test that agent created without timezone has timezone=None and messages are not JSON wrapped."""
|
||||
agent = client.agents.create(
|
||||
memory_blocks=[{"label": "human", "value": ""}, {"label": "persona", "value": ""}],
|
||||
model="anthropic/claude-haiku-4-5-20251001",
|
||||
embedding="openai/text-embedding-3-small",
|
||||
# No timezone specified
|
||||
)
|
||||
|
||||
try:
|
||||
# Verify timezone is None
|
||||
retrieved_agent = client.agents.retrieve(agent_id=agent.id)
|
||||
assert retrieved_agent.timezone is None, f"Expected timezone to be None, got {retrieved_agent.timezone}"
|
||||
|
||||
# Send a message
|
||||
test_message = "Hello, this is a test message without timezone"
|
||||
client.agents.messages.create(
|
||||
agent_id=agent.id,
|
||||
messages=[MessageCreateParam(role="user", content=test_message)],
|
||||
)
|
||||
|
||||
# List messages and find the user message
|
||||
messages = client.agents.messages.list(agent_id=agent.id).items
|
||||
user_messages = [m for m in messages if m.message_type == "user_message"]
|
||||
assert len(user_messages) > 0, "Expected at least one user message"
|
||||
|
||||
# The user message content should be the raw text (not JSON wrapped)
|
||||
# When timezone is None, the message is stored as-is and retrieved as-is
|
||||
latest_user_message = user_messages[0]
|
||||
assert latest_user_message.content == test_message, f"Expected raw message '{test_message}', got '{latest_user_message.content}'"
|
||||
finally:
|
||||
client.agents.delete(agent_id=agent.id)
|
||||
|
||||
|
||||
def test_agent_timezone_set_message_packing(client: Letta):
|
||||
"""Test that agent created with timezone has messages JSON wrapped with timestamp."""
|
||||
agent = client.agents.create(
|
||||
memory_blocks=[{"label": "human", "value": ""}, {"label": "persona", "value": ""}],
|
||||
model="anthropic/claude-haiku-4-5-20251001",
|
||||
embedding="openai/text-embedding-3-small",
|
||||
timezone="America/Los_Angeles",
|
||||
)
|
||||
|
||||
try:
|
||||
# Verify timezone is set
|
||||
retrieved_agent = client.agents.retrieve(agent_id=agent.id)
|
||||
assert retrieved_agent.timezone == "America/Los_Angeles", f"Expected timezone 'America/Los_Angeles', got {retrieved_agent.timezone}"
|
||||
|
||||
# Send a message
|
||||
test_message = "Hello, this is a test message with timezone"
|
||||
client.agents.messages.create(
|
||||
agent_id=agent.id,
|
||||
messages=[MessageCreateParam(role="user", content=test_message)],
|
||||
)
|
||||
|
||||
# List messages and find the user message
|
||||
messages = client.agents.messages.list(agent_id=agent.id).items
|
||||
user_messages = [m for m in messages if m.message_type == "user_message"]
|
||||
assert len(user_messages) > 0, "Expected at least one user message"
|
||||
|
||||
# The user message content should be unpacked to just the message text
|
||||
# (The API unpacks the JSON wrapper before returning)
|
||||
latest_user_message = user_messages[0]
|
||||
assert latest_user_message.content == test_message, (
|
||||
f"Expected unpacked message '{test_message}', got '{latest_user_message.content}'"
|
||||
)
|
||||
|
||||
# Test that updating timezone works
|
||||
client.agents.update(agent_id=agent.id, timezone="America/New_York")
|
||||
updated_agent = client.agents.retrieve(agent_id=agent.id)
|
||||
assert updated_agent.timezone == "America/New_York", f"Expected updated timezone 'America/New_York', got {updated_agent.timezone}"
|
||||
finally:
|
||||
client.agents.delete(agent_id=agent.id)
|
||||
|
||||
|
||||
def test_attach_sleeptime_block(client: Letta):
|
||||
agent = client.agents.create(
|
||||
memory_blocks=[{"label": "human", "value": ""}, {"label": "persona", "value": ""}],
|
||||
|
||||
Reference in New Issue
Block a user