|
# retoor <retoor@molodetz.nl>
|
|
|
|
from __future__ import annotations
|
|
|
|
from ..actions.spec import Action, Param
|
|
|
|
|
|
def arg(
|
|
name: str, description: str, required: bool = False, kind: str = "string"
|
|
) -> Param:
|
|
return Param(
|
|
name=name,
|
|
location="body",
|
|
description=description,
|
|
required=required,
|
|
type=kind,
|
|
)
|
|
|
|
|
|
VIRTUAL_TOOL_ACTIONS: tuple[Action, ...] = (
|
|
Action(
|
|
name="tool_create",
|
|
method="LOCAL",
|
|
path="",
|
|
summary="Create a new user-defined tool that runs a stored prompt when called",
|
|
description=(
|
|
"Use when the user asks you to remember a new capability ('when I say X, do Y'). The new "
|
|
"tool becomes callable on the next turn; when called it re-runs you on its stored prompt "
|
|
"plus the user's input. Give a clear trigger-oriented description so you know when to use it."
|
|
),
|
|
handler="virtual_tool",
|
|
requires_auth=False,
|
|
params=(
|
|
arg(
|
|
"name",
|
|
"Tool name: a letter then letters, digits, or underscores (2-41 chars).",
|
|
required=True,
|
|
),
|
|
arg(
|
|
"description",
|
|
"When to use the tool and what it does (your trigger hint).",
|
|
required=True,
|
|
),
|
|
arg(
|
|
"prompt",
|
|
"The instruction the tool runs each time it is called.",
|
|
required=True,
|
|
),
|
|
arg(
|
|
"input_description",
|
|
"What the single free-form 'input' argument should contain.",
|
|
),
|
|
),
|
|
),
|
|
Action(
|
|
name="tool_list",
|
|
method="LOCAL",
|
|
path="",
|
|
summary="List the user's defined tools with their descriptions and status",
|
|
handler="virtual_tool",
|
|
requires_auth=False,
|
|
),
|
|
Action(
|
|
name="tool_get",
|
|
method="LOCAL",
|
|
path="",
|
|
summary="Read a user-defined tool's full prompt and settings",
|
|
handler="virtual_tool",
|
|
requires_auth=False,
|
|
params=(arg("name", "Tool name to read.", required=True),),
|
|
),
|
|
Action(
|
|
name="tool_update",
|
|
method="LOCAL",
|
|
path="",
|
|
summary="Update a user-defined tool's description, prompt, input hint, or enabled state",
|
|
handler="virtual_tool",
|
|
requires_auth=False,
|
|
params=(
|
|
arg("name", "Tool name to update.", required=True),
|
|
arg("description", "New description (optional)."),
|
|
arg("prompt", "New stored prompt (optional)."),
|
|
arg("input_description", "New input hint (optional)."),
|
|
arg(
|
|
"enabled",
|
|
"Enable (true) or disable (false) the tool without deleting it.",
|
|
kind="boolean",
|
|
),
|
|
),
|
|
),
|
|
Action(
|
|
name="tool_delete",
|
|
method="LOCAL",
|
|
path="",
|
|
summary="Delete a user-defined tool",
|
|
handler="virtual_tool",
|
|
requires_auth=False,
|
|
params=(arg("name", "Tool name to delete.", required=True),),
|
|
),
|
|
)
|