package com.claudecode.tool; import java.util.Map; /** * 工具协议接口 —— 对应 claude-code/src/Tool.ts 中的 Tool 类型定义。 *

* 每个工具是一个完整的协议实现,包含: *

*/ public interface Tool { /** 工具唯一名称标识 */ String name(); /** 给 LLM 看的工具描述 */ String description(); /** * 输入参数的 JSON Schema 定义。 *

* 示例: *

{@code
     * {
     *   "type": "object",
     *   "properties": {
     *     "command": { "type": "string", "description": "Shell command to execute" }
     *   },
     *   "required": ["command"]
     * }
     * }
*/ String inputSchema(); /** * 执行工具。 * * @param input JSON 解析后的输入参数 * @param context 执行上下文(工作目录、会话状态等) * @return 执行结果文本 */ String execute(Map input, ToolContext context); /** * 权限前置检查,在 execute 之前调用。 * 默认放行。 */ default PermissionResult checkPermission(Map input, ToolContext context) { return PermissionResult.ALLOW; } /** 工具是否启用(特性门控),返回 false 则不注册 */ default boolean isEnabled() { return true; } /** 是否为只读操作 */ default boolean isReadOnly() { return false; } /** 人类可读的活动描述,用于 UI 显示执行进度 */ default String activityDescription(Map input) { return "Running " + name() + "..."; } }