from __future__ import annotations

from enum import StrEnum


class AgentAssetType(StrEnum):
    RULE = "rule"
    SKILL = "skill"
    MCP = "mcp"
    TASK = "task"


class AgentAssetStatus(StrEnum):
    GENERATING = "generating"
    DRAFT = "draft"
    REVIEW = "review"
    ACTIVE = "active"
    DISABLED = "disabled"
    FAILED = "failed"


class AgentReviewStatus(StrEnum):
    PENDING = "pending"
    APPROVED = "approved"
    REJECTED = "rejected"


class AgentName(StrEnum):
    ORCHESTRATOR = "orchestrator"
    USER_AGENT = "user_agent"
    HERMES = "hermes"


class AgentRunSource(StrEnum):
    USER_MESSAGE = "user_message"
    SCHEDULE = "schedule"
    SYSTEM_EVENT = "system_event"


class AgentPermissionLevel(StrEnum):
    READ = "read"
    DRAFT_WRITE = "draft_write"
    APPROVAL_REQUIRED = "approval_required"
    FORBIDDEN = "forbidden"


class AgentAssetContentType(StrEnum):
    MARKDOWN = "markdown"
    JSON = "json"


class AgentRunStatus(StrEnum):
    RUNNING = "running"
    SUCCEEDED = "succeeded"
    FAILED = "failed"
    BLOCKED = "blocked"


class AgentToolType(StrEnum):
    MCP = "mcp"
    DATABASE = "database"
    LLM = "llm"
    OCR = "ocr"
    RULE_ENGINE = "rule_engine"


class AgentAssetDomain(StrEnum):
    EXPENSE = "expense"
    AR = "ar"
    AP = "ap"
    KNOWLEDGE = "knowledge"
    SYSTEM = "system"
