# 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` робить журнал активності команди придатним для швидкого перегляду лідером — ставтеся до нього як до рядка теми коміту.
