#!/usr/bin/env python3
"""
Filesystem MCP Models - 파일시스템 관련 데이터 모델
완전한 파일시스템 MCP를 위한 핵심 데이터 구조
"""
from enum import Enum
from dataclasses import dataclass
from typing import Dict, List, Optional, Any
from datetime import datetime
# =============================================================================
# 열거형 정의 (Enumerations)
# =============================================================================
class PermissionLevel(Enum):
"""권한 레벨 정의"""
READ_ONLY = "read_only"
READ_WRITE = "read_write"
FULL_ACCESS = "full_access"
RESTRICTED = "restricted"
class FileOperation(Enum):
"""파일 작업 타입"""
READ = "read"
WRITE = "write"
DELETE = "delete"
CREATE = "create"
MOVE = "move"
SEARCH = "search"
# =============================================================================
# 데이터 클래스 정의 (Data Classes)
# =============================================================================
@dataclass
class RootConfig:
"""Roots 프로토콜 설정"""
name: str
path: str
permission_level: PermissionLevel
allowed_operations: List[FileOperation]
max_file_size: int = 100 * 1024 * 1024 # 100MB
audit_enabled: bool = True
def to_dict(self):
"""딕셔너리로 변환"""
return {
'name': self.name,
'path': self.path,
'permission_level': self.permission_level.value,
'allowed_operations': [op.value for op in self.allowed_operations],
'max_file_size': self.max_file_size,
'audit_enabled': self.audit_enabled
}
@dataclass
class FileMetadata:
"""파일 메타데이터"""
path: str
name: str
size: int
modified_time: datetime
created_time: datetime
mime_type: str
permissions: str
file_hash: str
is_directory: bool
is_symlink: bool
symlink_target: Optional[str] = None
@dataclass
class AuditEvent:
"""감사 이벤트"""
timestamp: datetime
operation: FileOperation
path: str
user: str
success: bool
file_size: Optional[int] = None
error_message: Optional[str] = None
details: Optional[Dict] = None