#!/usr/bin/env python3
"""
Terminal Models - 터미널 시스템 데이터 모델
터미널 명령 실행에 필요한 모든 데이터 클래스와 enum 정의
"""
from typing import Dict, List, Any, Optional
from dataclasses import dataclass
from enum import Enum
class CommandCategory(Enum):
"""명령어 카테고리"""
SAFE = "safe"
DEVELOPMENT = "development"
SYSTEM = "system"
NETWORK = "network"
RESTRICTED = "restricted"
DANGEROUS = "dangerous"
@dataclass
class CommandInfo:
"""명령어 정보"""
name: str
category: CommandCategory
description: str
allowed_args: List[str]
forbidden_args: List[str]
max_execution_time: int
requires_confirmation: bool
@dataclass
class ExecutionResult:
"""실행 결과"""
success: bool
output: str
error: Optional[str] = None
exit_code: Optional[int] = None
execution_time: float = 0.0
command_used: str = ""
pid: Optional[int] = None
memory_usage: Optional[int] = None
@dataclass
class ProcessInfo:
"""프로세스 정보"""
pid: int
name: str
cmdline: List[str]
status: str
cpu_percent: float
memory_percent: float
create_time: float
ppid: int
@dataclass
class SystemInfo:
"""시스템 정보"""
platform: str
platform_release: str
platform_version: str
architecture: str
hostname: str
cpu_count: int
cpu_freq: Dict[str, float]
memory_total: int
memory_available: int
memory_percent: float
disk_usage: Dict[str, Any]
network_interfaces: Dict[str, Any]
boot_time: float
load_average: List[float]
@dataclass
class CommandHistory:
"""명령 히스토리"""
id: int
command: str
working_directory: str
exit_code: int
execution_time: float
output_length: int
timestamp: str
user: str = "default"
@dataclass
class EnvironmentVariable:
"""환경변수 정보"""
name: str
value: str
description: Optional[str] = None
is_system: bool = False
is_exported: bool = True