OpenHands/openhands/storage/data_models/conversation_metadata.py
Tim O'Farrell f292f3a84d
V1 Integration (#11183)
Co-authored-by: openhands <openhands@all-hands.dev>
Co-authored-by: sp.wack <83104063+amanape@users.noreply.github.com>
Co-authored-by: Engel Nyst <enyst@users.noreply.github.com>
2025-10-14 02:16:44 +00:00

42 lines
1.2 KiB
Python

from dataclasses import dataclass, field
from datetime import datetime, timezone
from enum import Enum
from openhands.integrations.service_types import ProviderType
class ConversationTrigger(Enum):
RESOLVER = 'resolver'
GUI = 'gui'
SUGGESTED_TASK = 'suggested_task'
REMOTE_API_KEY = 'openhands_api'
SLACK = 'slack'
MICROAGENT_MANAGEMENT = 'microagent_management'
JIRA = 'jira'
JIRA_DC = 'jira_dc'
LINEAR = 'linear'
BITBUCKET = 'bitbucket'
@dataclass
class ConversationMetadata:
conversation_id: str
selected_repository: str | None
user_id: str | None = None
selected_branch: str | None = None
git_provider: ProviderType | None = None
title: str | None = None
last_updated_at: datetime | None = None
trigger: ConversationTrigger | None = None
pr_number: list[int] = field(default_factory=list)
created_at: datetime = field(default_factory=lambda: datetime.now(timezone.utc))
llm_model: str | None = None
# Cost and token metrics
accumulated_cost: float = 0.0
prompt_tokens: int = 0
completion_tokens: int = 0
total_tokens: int = 0
# V1 compatibility
sandbox_id: str | None = None
conversation_version: str | None = None