# hello-tool

## Назначение

`hello-tool` — минимальный isolated fixture для Pi extension runtime. Он нужен в тестах, чтобы быстро убедиться, что TypeBox-схема регистрируется, JSON-аргументы доходят до handler, а ответ возвращается в обычном формате tool result.

## Почему он есть в проекте

Этот extension оставлен только как isolated smoke fixture для tool-call поверхности. Он больше не входит в `package.json#pi.extensions`, потому что default package surface должен содержать только Miloc-specific operator plugins или OMP-backed wrappers, а не учебные/demo tools.

## Пользовательская поверхность

- Тесты вызывают tool `helloTool`, когда нужно проверить базовую работу tool registration. Обязательный параметр `name` задает имя для приветствия, а optional параметр `language` выбирает английский или русский текст.
- Пользователь не вызывает отдельную команду для этого extension. Видимый результат появляется только в ответе tool и содержит короткое приветствие вместе с `details` о выбранном языке.

## Как работает по коду

Entrypoint `extensions/hello-tool/index.ts` регистрирует `helloTool` через `pi.registerTool`. Схема `HelloParams` описана через TypeBox: `name` должен быть непустой строкой, а `language` может быть только `"en"` или `"ru"`.

Перед выполнением handler вызывает `_shared/validation.validateParams`. Если параметры не проходят проверку, tool возвращает стандартный validation result. Если параметры корректны, extension собирает приветствие и возвращает его через `_shared/pi-api.textResult`. У extension нет собственного состояния, фоновых hooks и доступов к filesystem, subprocess, network, browser, models или UI.

- Entrypoint: `./extensions/hello-tool/index.ts`
- Manifest: `extensions/hello-tool/manifest.json`
- Commands: none
- Tools: `helloTool`
- Hooks: none
- Permissions: fs.read=none, fs.write=none, subprocess=none, network=none, browser=false, models=false, ui=none
- State: постоянное состояние не используется; tool возвращает только результат текущего вызова.
- Default: disabled; fixture-only
- Review: status=reviewed, source=write-from-scratch, reviewedBy=miloc-pi, reviewedAt=2026-05-31, risk=low

## Ограничения и риски

`hello-tool` не является продуктовым extension и не должен превращаться в набор обучающих примеров. Его ценность ограничена smoke-проверкой runtime-пути для одного deterministic tool call в isolated tests. Если в будущем появятся более полные integration tests для регистрации tools, этот fixture можно будет удалить.

## Решение

Решение: `fixture-only`. Extension остается в repo как короткая isolated проверка tool registration, TypeBox validation и JSON arguments. Он не входит в default package surface и не является пользовательской функцией.
