v2.10.1 (#702)
Co-authored-by: Guillaume LE GOFF <guillaume.lgf@gmail.com> Co-authored-by: Michel Thomazo <51709227+michelTho@users.noreply.github.com> Co-authored-by: Pierre Rossinès <pierre.rossines@mistral.ai> Co-authored-by: Val <102326092+vdeva@users.noreply.github.com> Co-authored-by: Vincent G <10739306+VinceOPS@users.noreply.github.com> Co-authored-by: Mistral Vibe <vibe@mistral.ai>
This commit is contained in:
parent
228f3c65a9
commit
f71bfd3b8c
57 changed files with 2950 additions and 402 deletions
|
|
@ -204,6 +204,84 @@ class TestSessionLoggerTitleManagement:
|
|||
|
||||
assert logger.session_metadata.end_time == "2026-01-01T10:00:00+00:00"
|
||||
|
||||
def test_set_initial_auto_title_applies_when_no_title_set(
|
||||
self, session_config: SessionLoggingConfig
|
||||
) -> None:
|
||||
logger = SessionLogger(session_config, "test-session-123")
|
||||
|
||||
applied = logger.set_initial_auto_title("Pretty title")
|
||||
|
||||
assert applied is True
|
||||
assert logger.session_metadata is not None
|
||||
assert logger.session_metadata.title == "Pretty title"
|
||||
assert logger.session_metadata.title_source == "auto"
|
||||
|
||||
def test_set_initial_auto_title_noop_when_title_already_set(
|
||||
self, session_config: SessionLoggingConfig
|
||||
) -> None:
|
||||
logger = SessionLogger(session_config, "test-session-123")
|
||||
logger.set_title("Manual title")
|
||||
|
||||
applied = logger.set_initial_auto_title("Pretty title")
|
||||
|
||||
assert applied is False
|
||||
assert logger.session_metadata is not None
|
||||
assert logger.session_metadata.title == "Manual title"
|
||||
assert logger.session_metadata.title_source == "manual"
|
||||
|
||||
def test_set_initial_auto_title_noop_when_prior_auto_title_set(
|
||||
self, session_config: SessionLoggingConfig
|
||||
) -> None:
|
||||
logger = SessionLogger(session_config, "test-session-123")
|
||||
logger.set_initial_auto_title("First title")
|
||||
|
||||
applied = logger.set_initial_auto_title("Second title")
|
||||
|
||||
assert applied is False
|
||||
assert logger.session_metadata is not None
|
||||
assert logger.session_metadata.title == "First title"
|
||||
|
||||
def test_set_initial_auto_title_rejects_blank(
|
||||
self, session_config: SessionLoggingConfig
|
||||
) -> None:
|
||||
logger = SessionLogger(session_config, "test-session-123")
|
||||
|
||||
applied = logger.set_initial_auto_title(" ")
|
||||
|
||||
assert applied is False
|
||||
assert logger.session_metadata is not None
|
||||
assert logger.session_metadata.title is None
|
||||
|
||||
def test_needs_initial_auto_title_true_when_no_title(
|
||||
self, session_config: SessionLoggingConfig
|
||||
) -> None:
|
||||
logger = SessionLogger(session_config, "test-session-123")
|
||||
|
||||
assert logger.needs_initial_auto_title() is True
|
||||
|
||||
def test_needs_initial_auto_title_false_after_set_initial_auto_title(
|
||||
self, session_config: SessionLoggingConfig
|
||||
) -> None:
|
||||
logger = SessionLogger(session_config, "test-session-123")
|
||||
logger.set_initial_auto_title("Pretty title")
|
||||
|
||||
assert logger.needs_initial_auto_title() is False
|
||||
|
||||
def test_needs_initial_auto_title_false_after_manual_set_title(
|
||||
self, session_config: SessionLoggingConfig
|
||||
) -> None:
|
||||
logger = SessionLogger(session_config, "test-session-123")
|
||||
logger.set_title("Manual title")
|
||||
|
||||
assert logger.needs_initial_auto_title() is False
|
||||
|
||||
def test_needs_initial_auto_title_false_when_disabled(
|
||||
self, disabled_session_config: SessionLoggingConfig
|
||||
) -> None:
|
||||
logger = SessionLogger(disabled_session_config, "test-session-123")
|
||||
|
||||
assert logger.needs_initial_auto_title() is False
|
||||
|
||||
|
||||
class TestSessionLoggerSaveInteraction:
|
||||
@pytest.mark.asyncio
|
||||
|
|
@ -544,6 +622,47 @@ class TestSessionLoggerSaveInteraction:
|
|||
assert metadata["title"] == expected_title
|
||||
assert metadata["title_source"] == "auto"
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_save_interaction_preserves_preset_auto_title(
|
||||
self,
|
||||
session_config: SessionLoggingConfig,
|
||||
mock_vibe_config: VibeConfig,
|
||||
mock_tool_manager: ToolManager,
|
||||
mock_agent_profile: AgentProfile,
|
||||
) -> None:
|
||||
session_id = "test-session-123"
|
||||
logger = SessionLogger(session_config, session_id)
|
||||
assert logger.session_metadata is not None
|
||||
|
||||
logger.set_initial_auto_title("Pretty @foo.py title")
|
||||
|
||||
messages = [
|
||||
LLMMessage(role=Role.system, content="System prompt"),
|
||||
LLMMessage(
|
||||
role=Role.user, content="path: file:///abs/foo.py\ncontent: ..."
|
||||
),
|
||||
LLMMessage(role=Role.assistant, content="Hi there!"),
|
||||
]
|
||||
stats = AgentStats(
|
||||
steps=1, session_prompt_tokens=10, session_completion_tokens=20
|
||||
)
|
||||
|
||||
await logger.save_interaction(
|
||||
messages=messages,
|
||||
stats=stats,
|
||||
base_config=mock_vibe_config,
|
||||
tool_manager=mock_tool_manager,
|
||||
agent_profile=mock_agent_profile,
|
||||
)
|
||||
|
||||
assert logger.session_dir is not None
|
||||
metadata_file = logger.session_dir / "meta.json"
|
||||
with open(metadata_file) as f:
|
||||
metadata = json.load(f)
|
||||
|
||||
assert metadata["title"] == "Pretty @foo.py title"
|
||||
assert metadata["title_source"] == "auto"
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_save_interaction_preserves_manual_title(
|
||||
self,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue