# AskUserQuestion

Показывает пользователю один или несколько структурированных вопросов с множественным выбором прямо в интерфейсе чата, собирает ответы и возвращает их ассистенту — удобно для устранения неоднозначности намерений без свободной переписки.

## Когда использовать

- Запрос имеет несколько разумных интерпретаций, и ассистенту нужно, чтобы пользователь выбрал одну, прежде чем продолжать.
- Пользователь должен выбрать из конкретных опций (фреймворк, библиотека, путь к файлу, стратегия), где ответы в свободной форме были бы подвержены ошибкам.
- Вы хотите сравнить альтернативы рядом с помощью панели предпросмотра.
- Несколько связанных решений можно объединить в одном запросе, чтобы сократить переписку.
- План или вызов инструмента зависит от конфигурации, которую пользователь ещё не указал.

## Параметры

- `questions` (array, обязательный): от одного до четырёх вопросов, показываемых вместе в одном запросе. Каждый объект вопроса содержит:
  - `question` (string, обязательный): полный текст вопроса, заканчивающийся знаком вопроса.
  - `header` (string, обязательный): короткая метка (не более 12 символов), отображаемая как чип над вопросом.
  - `options` (array, обязательный): от двух до четырёх объектов-вариантов. У каждого варианта есть `label` (1–5 слов), `description` и необязательный предпросмотр `markdown`.
  - `multiSelect` (boolean, обязательный): если `true`, пользователь может выбрать более одного варианта.

## Примеры

### Пример 1: выбор одного фреймворка

```
AskUserQuestion(questions=[{
  "header": "Test runner",
  "question": "Which test runner should I configure?",
  "multiSelect": false,
  "options": [
    {"label": "Vitest (Recommended)", "description": "Fast, Vite-native, Jest-compatible API"},
    {"label": "Jest",                  "description": "Mature, broadest plugin ecosystem"},
    {"label": "Node --test",           "description": "Zero dependencies, built in"}
  ]
}])
```

### Пример 2: предпросмотр двух раскладок бок о бок

```
AskUserQuestion(questions=[{
  "header": "Layout",
  "question": "Which dashboard layout do you prefer?",
  "multiSelect": false,
  "options": [
    {"label": "Sidebar",  "description": "Nav on the left", "markdown": "```\n+------+---------+\n| NAV  | CONTENT |\n+------+---------+\n```"},
    {"label": "Top bar",  "description": "Nav across top",  "markdown": "```\n+-----------------+\n|       NAV       |\n+-----------------+\n|     CONTENT     |\n+-----------------+\n```"}
  ]
}])
```

## Примечания

- UI автоматически добавляет опцию «Other» со свободным вводом к каждому вопросу. Не добавляйте собственные варианты «Other», «None» или «Custom» — это продублирует встроенный запасной выход.
- Ограничивайте каждый вызов одним-четырьмя вопросами, а каждый вопрос — двумя-четырьмя вариантами. Превышение этих границ отклоняется каркасом.
- Если вы рекомендуете конкретный вариант, поставьте его первым и добавьте «(Recommended)» к его `label`, чтобы UI подсветил предпочтительный путь.
- Предпросмотры через поле `markdown` поддерживаются только для вопросов с одиночным выбором. Используйте их для визуальных артефактов — ASCII-раскладок, фрагментов кода, диффов конфигурации, — а не для простых вопросов о предпочтениях, где достаточно метки и описания.
- Если у какого-либо варианта в вопросе есть значение `markdown`, UI переключается в компоновку «бок о бок» со списком вариантов слева и предпросмотром справа.
- Не используйте `AskUserQuestion`, чтобы спросить «нравится ли вам этот план?» — вместо этого вызывайте `ExitPlanMode`, который существует именно для утверждения плана. В режиме plan mode также избегайте упоминания «плана» в тексте вопроса, потому что пока не запущен `ExitPlanMode`, план пользователю невидим.
- Не используйте этот инструмент для запроса конфиденциальных данных или ввода в свободной форме, таких как API-ключи или пароли. Спрашивайте в чате.
