Files
cleveractors-core/features/context_manager.feature
2026-05-27 21:41:03 +00:00

124 lines
5.4 KiB
Gherkin

Feature: Context Manager for CLI Sessions
As a user of CleverAgents
I want to save and restore conversation contexts
So that I can have stateful interactions across CLI runs
Background:
Given I have a temporary test directory for contexts
Scenario: Create a new context manager
When I create a context manager with name "test-session"
Then the context manager should be initialized
And the context directory should exist
And the context files should be created
Scenario: Save and load messages
Given I have a context manager with name "chat-session"
When I add a user message "Hello, how are you?"
And I add an assistant message "I'm doing well, thank you!"
And I save the context
Then the messages should be persisted to disk
When I create a new context manager with the same name "chat-session"
Then the loaded messages should match the saved messages
Scenario: Save and restore global context
Given I have a context manager with name "stateful-session"
When I save global context with key "writing_stage" and value "planning"
And I save global context with key "document_type" and value "research_paper"
Then the global context should be persisted to disk
When I reload the context manager
Then the global context should contain "writing_stage" with value "planning"
And the global context should contain "document_type" with value "research_paper"
Scenario: Update existing context state
Given I have a context manager with name "update-session"
And the context has state "current_task" with value "writing"
When I update the state "current_task" to "reviewing"
And I add metadata "last_update" with current timestamp
Then the state should be updated
And the metadata should contain the timestamp
Scenario: Get last N messages from history
Given I have a context manager with name "history-session"
And I have added 10 messages to the conversation
When I request the last 5 messages
Then I should receive exactly 5 messages
And the messages should be the most recent ones
Scenario: Clear conversation history
Given I have a context manager with name "clear-session"
And the context has 5 messages in history
When I clear the context
Then the message history should be empty
But the context directory should still exist
Scenario: Delete entire context
Given I have a context manager with name "delete-session"
And the context has messages and state data
When I delete the context
Then the context directory should not exist
And attempting to load the context should indicate it doesn't exist
Scenario: List available contexts
Given I have created contexts named "context1", "context2", "context3"
When I list all contexts
Then the list should contain "context1", "context2", "context3"
And the list should be sorted alphabetically
Scenario: Export and import context
Given I have a context manager with name "export-session"
And the context has messages, state, and global context data
When I export the context to a file
Then the export file should contain all context data
When I import the context as "import-session"
Then the imported context should match the original
Scenario: Get formatted conversation history
Given I have a context manager with name "format-session"
And I have added messages with timestamps
When I get formatted history without metadata
Then the output should show timestamps, roles, and content
When I get formatted history with metadata
Then the output should include metadata information
Scenario: Handle non-existent context gracefully
When I create a context manager with name "new-session"
And I check if the context exists
Then it should indicate the context doesn't exist
When I try to get messages from the empty context
Then it should return an empty list
Scenario: Tool agent context updates are captured
Given I have a context manager tool agent with Python code that updates context
When the tool executes code that sets context["writing_stage"] to "drafting"
Then the global context updates should be captured
And the context should persist after execution
Scenario: Context updates through stream routing
Given I have a reactive stream router with context-aware agents
When a message flows through the stream with context metadata
And agents modify the context during processing
Then all context modifications should be preserved
And the final context should reflect all changes
Scenario: Run with context and conversation history
Given an application with simple config for context
When running with 15 message conversation history
Then only last 10 messages are used
And prompt is formatted with history
Scenario: Run with context and long assistant response
Given an application with simple config for context
When running with 600 character assistant response
Then response is truncated to 500 characters
Scenario: Run with context without history
Given an application with simple config for context
When running with no conversation history
Then prompt is used without modification
Scenario: Temperature override in global context
Given a config file path for context
When creating app with temperature override 0.8
Then global context contains temperature value 0.8