suna/backend/credentials/domain/entities.py

66 lines
1.5 KiB
Python

from dataclasses import dataclass, field
from datetime import datetime
from typing import Dict, List, Any, Optional
@dataclass(frozen=True)
class MCPCredential:
credential_id: str
account_id: str
mcp_qualified_name: str
display_name: str
config: Dict[str, Any]
is_active: bool
last_used_at: Optional[datetime] = None
created_at: Optional[datetime] = None
updated_at: Optional[datetime] = None
@dataclass(frozen=True)
class MCPCredentialProfile:
profile_id: str
account_id: str
mcp_qualified_name: str
profile_name: str
display_name: str
config: Dict[str, Any]
is_active: bool
is_default: bool
last_used_at: Optional[datetime] = None
created_at: Optional[datetime] = None
updated_at: Optional[datetime] = None
@dataclass(frozen=True)
class MCPRequirement:
qualified_name: str
display_name: str
enabled_tools: List[str] = field(default_factory=list)
required_config: List[str] = field(default_factory=list)
custom_type: Optional[str] = None
@dataclass(frozen=True)
class CredentialMapping:
qualified_name: str
profile_id: str
profile_name: str
display_name: str
@dataclass
class CredentialRequest:
account_id: str
mcp_qualified_name: str
display_name: str
config: Dict[str, Any]
@dataclass
class ProfileRequest:
account_id: str
mcp_qualified_name: str
profile_name: str
display_name: str
config: Dict[str, Any]
is_default: bool = False