import { Type } from "@sinclair/typebox"; import type { ExtensionAPI } from "../_shared/pi-api.js"; import { textResult } from "../_shared/pi-api.js"; import { validateParams } from "../_shared/validation.js"; const HelloParams = Type.Object({ name: Type.String({ description: "Who to greet", minLength: 1, maxLength: 100 }), language: Type.Optional(Type.Union([Type.Literal("en"), Type.Literal("ru")], { default: "en", description: "Greeting language" })), }); export default function helloTool(pi: ExtensionAPI): void { pi.registerTool({ name: "helloTool", description: "Deterministic TypeBox-backed example tool.", parameters: HelloParams, execute(_toolCallId, params) { const valid = validateParams(HelloParams, params); if (!valid.ok) return valid.result; const greeting = valid.value.language === "ru" ? `Привет, ${valid.value.name}!` : `Hello, ${valid.value.name}!`; return textResult(greeting, { greeting, language: valid.value.language ?? "en" }); }, }); }