Files
cleveragents-core/docs/reference/session_model.md
T
HAL9000 18d00c04c4
CI / lint (pull_request) Failing after 1m15s
CI / quality (pull_request) Successful in 1m21s
CI / typecheck (pull_request) Successful in 1m34s
CI / security (pull_request) Successful in 1m37s
CI / coverage (pull_request) Has been skipped
CI / unit_tests (pull_request) Failing after 1m37s
CI / docker (pull_request) Has been skipped
CI / build (pull_request) Successful in 33s
CI / helm (pull_request) Successful in 26s
CI / push-validation (pull_request) Successful in 19s
CI / e2e_tests (pull_request) Successful in 3m20s
CI / integration_tests (pull_request) Successful in 4m32s
CI / status-check (pull_request) Failing after 3s
fix(skills): implement multi-scope agent skill discovery for global, project, and local tiers
Implements AgentSkillDiscovery class to support discovering Agent Skills from
multiple configured directories across three scopes (global, project, local).
Handles name collisions with precedence: local > project > global.

Adds comprehensive BDD test coverage for multi-scope discovery scenarios including:
- Global-only, project-only, and local-only discovery
- Combined discovery from all scopes
- Name collision resolution with proper precedence
- Non-existent and empty scope directory handling
- Multiple skills in same scope discovery

ISSUES CLOSED: #9369
2026-05-06 19:55:22 +00:00

2.6 KiB

Session Domain Model

The Session domain model represents a persistent conversation thread tied to an orchestrator actor. It maintains message history across plans and serves as the user's natural-language interface.

Key Classes

Class Description
Session Core session model with messages, token tracking, and export
SessionMessage A single message within a session (ULID-identified, sequenced)
MessageRole Enum: user, assistant, system, tool
SessionTokenUsage Accumulated input/output token counts and cost

Source Location

src/cleveragents/domain/models/core/session.py

Session Lifecycle

  1. Create -- Session(session_id=str(ULID())) with optional actor_name
  2. Append messages -- session.append_message(role, content) auto-sequences
  3. Query -- session.get_messages(limit, offset) for paginated access
  4. Export -- session.as_export_dict() produces a checksummed JSON dict
  5. CLI rendering -- session.as_cli_dict() returns an OrderedDict for display

Export Serialization Order

The as_export_dict() method produces keys in this fixed order:

schema_version, session_id, actor_name, namespace, messages,
linked_plan_ids, automation_level, token_usage, metadata,
created_at, updated_at, checksum

Running Tests

Behave (BDD unit tests)

nox -s unit_tests -- features/session_model.feature

Robot Framework (smoke / integration tests)

nox -s integration_tests -- robot/session_model.robot

Or run the Robot suite directly:

robot --outputdir build/reports/robot robot/session_model.robot

Robot Smoke Suite

The Robot smoke suite (robot/session_model.robot) validates:

  • Session creation -- default fields (session_id, namespace, is_empty)
  • Message append ordering -- auto-sequencing produces [0, 1, 2, ...]
  • Export dict completeness -- all 12 required keys are present
  • CLI dict completeness -- required display keys are present
  • Export key order -- keys follow the canonical serialization order

The smoke tests delegate to robot/helper_session_model.py, which can also be invoked standalone:

python robot/helper_session_model.py create
python robot/helper_session_model.py append-messages
python robot/helper_session_model.py export
python robot/helper_session_model.py cli-dict
python robot/helper_session_model.py export-key-order

ASV Benchmarks

nox -s benchmark

Benchmark suites in benchmarks/session_model_bench.py cover validation throughput, append performance, and serialization speed.