# SendMessage

Доставляет сообщение от одного участника команды к другому внутри активной команды или рассылает всем сокомандникам сразу. Это единственный канал, который слышат сокомандники — всё, что написано в обычный текстовый вывод, для них невидимо.

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

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

## Параметры

- `to` (string, обязательный): `name` целевого сокомандника, зарегистрированное в команде, либо `*` для рассылки всем сокомандникам сразу.
- `message` (string или object, обязательный): обычный текст для стандартного общения или структурированный объект для протокольных ответов, таких как `shutdown_response` и `plan_approval_response`.
- `summary` (string, необязательный): превью из 5–10 слов, показываемое в журнале активности команды для текстовых сообщений. Обязателен для длинных строковых сообщений; игнорируется, когда `message` — протокольный объект.

## Примеры

### Пример 1: прямая передача задачи

```
SendMessage(
  to="db-lead",
  message="Please audit prisma/schema.prisma and list any model missing createdAt/updatedAt timestamps. Reply when done.",
  summary="Audit schema for missing timestamps"
)
```

### Пример 2: рассылка общего ограничения

```
SendMessage(
  to="*",
  message="Reminder: do not touch files under legacy/ — that subtree is frozen until the migration PR lands.",
  summary="Freeze legacy/ during migration"
)
```

### Пример 3: протокольный ответ

Ответьте на запрос о завершении работы от лидера структурированным сообщением:

```
SendMessage(
  to="leader",
  message={ "type": "shutdown_response", "ready": true, "final_report": "All assigned diff chunks committed on branch refactor-crew/db-lead." }
)
```

### Пример 4: ответ на одобрение плана

```
SendMessage(
  to="leader",
  message={ "type": "plan_approval_response", "approved": true, "notes": "LGTM, but please split step 4 into migration + backfill." }
)
```

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

- Ваш обычный текстовый вывод ассистента НЕ передаётся сокомандникам. Если вы хотите, чтобы другой агент что-то увидел, это должно пройти через `SendMessage`. Это самая частая ошибка в командных рабочих процессах.
- Рассылка (`to: "*"`) дорога — она будит каждого сокомандника и расходует его контекст. Резервируйте её для объявлений, которые действительно касаются всех. Предпочитайте адресные отправки.
- Держите сообщения лаконичными и ориентированными на действие. Включайте пути файлов, ограничения и ожидаемый формат ответа, которые нужны получателю; помните, у них нет общей с вами памяти.
- Объекты протокольных сообщений (`shutdown_response`, `plan_approval_response`) имеют фиксированную форму. Не смешивайте протокольные поля с текстовыми сообщениями и наоборот.
- Сообщения асинхронны. Получатель увидит ваше на следующем ходу; не предполагайте, что он прочитал или подействовал на него, пока не ответит.
- Хорошо написанный `summary` делает журнал активности команды легко сканируемым для лидера — относитесь к нему как к строке темы коммита.
