# retoor <retoor@molodetz.nl>

from __future__ import annotations

from ..spec import Param


def path(name: str, description: str, required: bool = True) -> Param:
    return Param(name=name, location="path", description=description, required=required)


def query(name: str, description: str, required: bool = False) -> Param:
    return Param(
        name=name, location="query", description=description, required=required
    )


def body(
    name: str, description: str, required: bool = False, type: str = "string"
) -> Param:
    return Param(
        name=name,
        location="body",
        description=description,
        required=required,
        type=type,
    )


def upload(name: str, description: str) -> Param:
    return Param(name=name, location="file", description=description, required=True)


def confirm() -> Param:
    return Param(
        name="confirm",
        location="body",
        description=(
            "Set to true ONLY after the user has explicitly confirmed this irreversible action. "
            "Leave it unset on the first call: the tool refuses and tells you to confirm with the "
            "user, and only a repeat call with confirm=true actually performs it."
        ),
        required=False,
        type="boolean",
    )


ATTACHMENTS = "Comma separated attachment uids returned by upload_file."
TARGET_TYPE = "Target type, e.g. post, comment, project, gist."
