# -*- coding: utf-8 -*-
"""The task tool base class, providing unified interface and permission
check for builtin task related tools."""
from typing import Any

from .._base import ToolBase
from ...permission import (
    PermissionContext,
    PermissionDecision,
    PermissionBehavior,
)


class _TaskToolBase(ToolBase):
    name: str

    description: str

    input_schema: dict

    is_concurrency_safe: bool = True

    is_read_only: bool = False

    is_state_injected: bool = True

    is_external_tool: bool = False

    is_mcp: bool = False

    mcp_name: str | None = None

    async def check_permissions(
        self,
        tool_input: dict[str, Any],
        context: PermissionContext,
    ) -> PermissionDecision:
        """Check permission for the tool usage."""
        return PermissionDecision(
            behavior=PermissionBehavior.ALLOW,
            message=f"{self.name} is always allowed to be called.",
        )
