@retensy/mcp 0.45.0 → 0.47.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@retensy/mcp",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.47.0",
|
|
4
4
|
"description": "MCP server to build and publish Telegram and MAX bot funnels/automations, broadcasts, service integrations, block-based websites (incl. free-layout Zero blocks, designs, templates, custom domains, form leads) and Markdown blog articles in the Retensy Bots service. Zero dependencies.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -236,7 +236,7 @@ IG-боты не поддерживают команды (`/start`). Вход
|
|
|
236
236
|
- **письмо подписчику**: `send_email` — `email` (обязательно, один адрес — не список; шаблон `{{var.*}}` допустим), `subject`, `text` (обязательно; только обычный текст — HTML не поддерживается, теги уходят в письме экранированными как есть), опц. `replyTo`. Антиабуз: невалидный `email`/`replyTo`, пустой `text`, суточный лимит писем на владельца И на весь сервис, или сбой SMTP → действие не удалось, блок уходит в `error`; отправитель — всегда свой аккаунт сервиса (открытого релея нет).
|
|
237
237
|
- **передача оператору**: `agent_chat` (без полей) — «позвать человека»: диалог встаёт на паузу (бот и ИИ молчат, входящие копятся в «Диалогах»), владельцу уходит уведомление; без бота уведомлений действие помечается `NOT_CONFIGURED`, пауза всё равно включается. Вернуть боту — кнопка в «Диалогах» или MCP `dialog_handoff {active:false}`. В dry-run и headless-прогонах пропускается.
|
|
238
238
|
- **срок ответа оператора (SLA)**: `sla_check` — опц. `maxLevel` (0 — без потолка), `timezone` (для `sla_at`, по умолч. Europe/Moscow). Ставь первым в блоке `ACTIONS` после `DELAY` на срок ответа, ниже в том же блоке — эскалация (`add_tag`, `notify`). Оператор не писал в чат после `agent_chat` → `sla_breached`=`1`, `sla_level` +1, `sla_at` — ISO со смещением, действия блока выполняются; ответил / диалог у бота / тот же таймер повторно → `sla_breached`=`0`, остальные действия блока пропускаются. Новая передача — уровни с 1. Ветвиться дальше — `CONDITION` по `{{var.sla_level}}`.
|
|
239
|
-
- **запись на слоты** (календарь — `booking_calendar_create`/`booking_calendar_list`): `booking_slots` — `calendarId`, опц. `days` (1–62, по умолч. 7), `limit` (1–50, по умолч. 10), `saveTo` (по умолч. `slots`) → переменные `slots` (нумерованный список для сообщения), `slots_json`, `slots_count`; `booking_book` — `calendarId`, `slotAt` (по умолч. `{{var.slot_at}}`; можно номер из списка «2», ISO-время или подпись слота), опц. `slotsVar`, `name`/`phone` (по умолч. `{{var.name}}`/`{{var.phone}}`) → `booking_id`, `slot_at` (ISO с зоной — для напоминания `DELAY UNTIL {{var.slot_at}} offset -24h`), `slot_label`, `booking_status`; занятый слот → выход блока **`taken`** (если ребро нарисовано, иначе `error`); `booking_cancel` — `bookingId` (по умолч. `{{var.booking_id}}`), освобождает слот.
|
|
239
|
+
- **запись на слоты** (календарь — `booking_calendar_create`/`booking_calendar_list`): `booking_slots` — `calendarId`, опц. `days` (1–62, по умолч. 7), `limit` (1–50, по умолч. 10), `saveTo` (по умолч. `slots`) → переменные `slots` (нумерованный список для сообщения), `slots_json`, `slots_count`; `booking_book` — `calendarId`, `slotAt` (по умолч. `{{var.slot_at}}`; можно номер из списка «2», ISO-время или подпись слота), опц. `slotsVar`, `name`/`phone` (по умолч. `{{var.name}}`/`{{var.phone}}`) → `booking_id`, `slot_at` (ISO с зоной — для напоминания `DELAY UNTIL {{var.slot_at}} offset -24h`), `slot_label`, `booking_status`; занятый слот → выход блока **`taken`** (если ребро нарисовано, иначе `error`); `booking_cancel` — `bookingId` (по умолч. `{{var.booking_id}}`), освобождает слот. `booking_reschedule` — самоперенос клиента: `calendarId`, `slotAt`, `bookingId` (по умолч. `{{var.booking_id}}`); сначала бронирует новый слот, затем отменяет прежнюю запись; занято → выход `taken`, прежняя запись остаётся; `booking_status`=`rescheduled`.
|
|
240
240
|
- **публикации из сценария**: `publish_post` — `target` `"channel"` (+ `chatId` привязанного канала TG/MAX, `bot_channel_list`) или `"vk"` (+ `accountId` из `vk_status`), `text` и/или `mediaUrl` (наш `/api/bots/media`), шаблоны `{{var.*}}`; результат — `{{var.post_id}}`; публикует от имени владельца, расходует месячный лимит, в «Тесте» пропускается. `chain_enqueue` — `chainId` (включённая цепочка владельца, `chain_list`), `text`/`mediaUrl`: содержимое входит в цепочку как новый пост источника (фильтры, очередь, назначения), результат — `{{var.chain_jobs}}`. `start_broadcast` — запуск рассылки из сценария: `draftId` (UUID черновика, `broadcast_drafts`), необязательный `segmentId` (сохранённый сегмент, `audience_segments`; пусто = аудитория черновика), `minIntervalHours` 1..720 (по умолчанию 24: не чаще одного запуска за срок на связку бот+черновик+сегмент), `idempotencyKey` (шаблон до 100 символов: повтор с тем же ключом не запускает вторую рассылку). Защиты: лимит запусков на владельца в час, тариф и пробная квота рассылок, тихие часы и дедупликация движка рассылок, запись в журнал аудита; в «Тесте» пропускается. Результат: `{{var.broadcast_id}}`, `{{var.broadcast_status}}` (STARTED|DUPLICATE|THROTTLED|RATE_LIMITED|NOT_ALLOWED|NO_AUDIENCE). Коды: `BROADCAST_BAD_DRAFT`, `BROADCAST_BAD_SEGMENT`, `BROADCAST_BAD_INTERVAL`, `PUBLISH_BAD_TARGET`, `PUBLISH_NO_DESTINATION`, `PUBLISH_EMPTY`, `CHAIN_ENQUEUE_BAD_CHAIN`, `CHAIN_ENQUEUE_EMPTY`.
|
|
241
241
|
- **переход в другой сценарий**: `call_scenario` — `graphId` (сценарий ЭТОГО ЖЕ бота того же владельца, id из `list_graphs`; черновик тоже можно), опц. `nodeId` (стартовый блок цели; по умолч. триггер `/start` → первый триггер → первый блок без входящих рёбер — так стартует подсценарий без триггера), `variables: [{ "key":"plan", "value":"{{var.x}}" }]` (ключи `[a-z][a-z0-9_]{0,63}`, служебные `_*` запрещены — `ACTION_BAD_KEY`, в рантайме пропускаются, значения — шаблоны; сохраняются подписчику ДО перехода), `mode` — `"goto"` (по умолч.) или `"call"`. Ставь ПОСЛЕДНИМ в блоке для обоих режимов (`CALL_SCENARIO_NOT_LAST`), не на себя (`CALL_SCENARIO_SELF`), только `goto`/`call` (иначе `CALL_SCENARIO_BAD_MODE`), без цели — `CALL_SCENARIO_NO_TARGET`, чужой/несуществующий/вебхук-сценарий — `CALL_SCENARIO_FORBIDDEN` при публикации.
|
|
242
242
|
- `mode:"goto"` (по умолчанию) — подписчик уходит в целевой сценарий отдельным прогоном, текущий прогон завершается `OK`; ответы на вопросы и кнопки цели доходят до неё, хотя активный сценарий бота другой (`session.currentGraphId`). Возврата нет — для «вернуться» нужно либо `mode:"call"`, либо свой `call_scenario` обратно в конце цели (сработает, только если между ними был ответ подписчика/задержка, иначе `CALL_SCENARIO_RECURSION`).
|
|
@@ -352,6 +352,13 @@ IG-боты не поддерживают команды (`/start`). Вход
|
|
|
352
352
|
- `minScore` — порог релевантности фрагмента для решения «есть о чём отвечать»; ниже — выход
|
|
353
353
|
`unknown`. `topK`/`maxContextChars` — сколько фрагментов брать и лимит символов контекста.
|
|
354
354
|
`historyTurns` — сколько реплик истории диалога передавать модели.
|
|
355
|
+
- `replyDelaySec` (0..30, по умолчанию 0 = выкл.) — склейка сообщений: клиент пишет мысль несколькими
|
|
356
|
+
короткими репликами, агент ждёт паузу этой длины (окно сдвигается с каждой репликой, но не дольше 4 окон) и отвечает
|
|
357
|
+
один раз на весь текст. Работает на реплики-текст; кнопка/фото в окне ожидания не учитываются.
|
|
358
|
+
- Дожим в диалоге (выкл. по умолчанию): `followUpMin` (5..1380 минут; 0 = выкл.) — если клиент молчит после ответа
|
|
359
|
+
агента, тот сам пишет короткое напоминание по контексту (тратит токены ИИ как ответ). `followUpMax` (1..3, по
|
|
360
|
+
умолчанию 1) — сколько напоминаний. `followUpFrom`/`followUpTo` ("HH:mm") — окно отправки, пояс `windowTz` (по умолчанию МСК).
|
|
361
|
+
Ответ клиента отменяет напоминание; в тексте нельзя новые числа/цены, которых не было в переписке.
|
|
355
362
|
- `systemPrompt` — инструкция агента. Мягкая норма — **до 10 000 символов**: длиннее модель хуже
|
|
356
363
|
держит середину, и каждый ответ дороже. У бэкенда для этого нет отдельного предупреждения при
|
|
357
364
|
публикации (веб-инспектор просто красит счётчик символов) — только `validate.mjs` (этот
|