@besales/mcp 0.28.0 → 0.31.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/README.md +3 -2
- package/dist/instructions/server-instructions.d.ts +1 -1
- package/dist/instructions/server-instructions.js +6 -0
- package/dist/instructions/server-instructions.js.map +1 -1
- package/dist/resources/workflows/audit-dialogues.md +12 -0
- package/dist/resources/workflows/compare-models.md +1 -1
- package/dist/schemas/mcp-tools.json +343 -9
- package/dist/tools/definitions/broadcast-analytics.d.ts +26 -0
- package/dist/tools/definitions/broadcast-analytics.js +89 -0
- package/dist/tools/definitions/broadcast-analytics.js.map +1 -0
- package/dist/tools/definitions/dialogue-export.js +8 -1
- package/dist/tools/definitions/dialogue-export.js.map +1 -1
- package/dist/tools/definitions/model-comparison.js +1 -1
- package/dist/tools/definitions/platform-setup.d.ts +25 -0
- package/dist/tools/definitions/platform-setup.js +103 -0
- package/dist/tools/definitions/platform-setup.js.map +1 -1
- package/dist/tools/definitions/shared.d.ts +5 -0
- package/dist/tools/definitions/shared.js +20 -0
- package/dist/tools/definitions/shared.js.map +1 -1
- package/dist/tools/definitions.d.ts +50 -0
- package/dist/tools/definitions.js +2 -0
- package/dist/tools/definitions.js.map +1 -1
- package/docs/host-setup.md +3 -3
- package/package.json +2 -2
- package/CHANGELOG.md +0 -531
|
@@ -1490,6 +1490,156 @@
|
|
|
1490
1490
|
}
|
|
1491
1491
|
}
|
|
1492
1492
|
},
|
|
1493
|
+
{
|
|
1494
|
+
"name": "besales_wazzup_templates_list",
|
|
1495
|
+
"description": "List approved WABA templates of a Wazzup platform with usability flags. Returns templateGuid, title, Meta moderation status, bodyText, variableCount (values required) and usable + unsupportedReasons. Only usable=true templates can be sent in a wave; the rest are unapproved or carry a media header / variable URL button, where values would land in the wrong slots. Scope: mcp:platform-setup.",
|
|
1496
|
+
"inputSchema": {
|
|
1497
|
+
"type": "object",
|
|
1498
|
+
"required": [
|
|
1499
|
+
"platform_id"
|
|
1500
|
+
],
|
|
1501
|
+
"properties": {
|
|
1502
|
+
"workspace_id": {
|
|
1503
|
+
"type": "string",
|
|
1504
|
+
"format": "uuid",
|
|
1505
|
+
"description": "Optional override. Normally omit — resolved from the connected session."
|
|
1506
|
+
},
|
|
1507
|
+
"platform_id": {
|
|
1508
|
+
"type": "string",
|
|
1509
|
+
"format": "uuid",
|
|
1510
|
+
"description": "Wazzup PLATFORM uuid (WhatsApp Business API channel)."
|
|
1511
|
+
}
|
|
1512
|
+
},
|
|
1513
|
+
"additionalProperties": false
|
|
1514
|
+
}
|
|
1515
|
+
},
|
|
1516
|
+
{
|
|
1517
|
+
"name": "besales_wazzup_wave_import",
|
|
1518
|
+
"description": "Launch a WhatsApp wave through Wazzup: an approved WABA template is sent to a cohort of phone numbers. Replies are handled by the platform AI agent and the wave appears in Broadcast analytics under the WhatsApp channel. WITHOUT confirm=true it is a DRY-RUN: the full preflight runs (platform, live WABA channel, template, value count) and previewText is returned, but nothing is sent. EVERY WhatsApp marketing message is PAID and Meta caps unique recipients per day (250 at start, higher after business verification) — never launch a large cohort without explicit user consent. Re-sending the SAME template to the same contact within 24h is skipped automatically. A real launch requires BOTH confirm=true and explicit_confirmation=true — set the latter only after the user explicitly agrees to send paid messages. Returns jobId — poll besales_wazzup_wave_status until COMPLETED. Scope: mcp:platform-setup.",
|
|
1519
|
+
"inputSchema": {
|
|
1520
|
+
"type": "object",
|
|
1521
|
+
"required": [
|
|
1522
|
+
"platform_id",
|
|
1523
|
+
"template_guid",
|
|
1524
|
+
"contacts"
|
|
1525
|
+
],
|
|
1526
|
+
"properties": {
|
|
1527
|
+
"workspace_id": {
|
|
1528
|
+
"type": "string",
|
|
1529
|
+
"format": "uuid",
|
|
1530
|
+
"description": "Optional override. Normally omit — resolved from the connected session."
|
|
1531
|
+
},
|
|
1532
|
+
"platform_id": {
|
|
1533
|
+
"type": "string",
|
|
1534
|
+
"format": "uuid",
|
|
1535
|
+
"description": "Wazzup PLATFORM uuid (WhatsApp Business API channel)."
|
|
1536
|
+
},
|
|
1537
|
+
"template_guid": {
|
|
1538
|
+
"type": "string",
|
|
1539
|
+
"maxLength": 100,
|
|
1540
|
+
"description": "Approved WABA template GUID from besales_wazzup_templates_list (usable=true)."
|
|
1541
|
+
},
|
|
1542
|
+
"template_values": {
|
|
1543
|
+
"type": "array",
|
|
1544
|
+
"items": {
|
|
1545
|
+
"type": "string"
|
|
1546
|
+
},
|
|
1547
|
+
"maxItems": 20,
|
|
1548
|
+
"description": "Template variable values in {{1}}, {{2}}… order. Length must equal the template variableCount."
|
|
1549
|
+
},
|
|
1550
|
+
"contacts": {
|
|
1551
|
+
"type": "array",
|
|
1552
|
+
"minItems": 1,
|
|
1553
|
+
"maxItems": 500,
|
|
1554
|
+
"description": "Wave cohort. Duplicate numbers are collapsed.",
|
|
1555
|
+
"items": {
|
|
1556
|
+
"type": "object",
|
|
1557
|
+
"required": [
|
|
1558
|
+
"phone"
|
|
1559
|
+
],
|
|
1560
|
+
"properties": {
|
|
1561
|
+
"phone": {
|
|
1562
|
+
"type": "string",
|
|
1563
|
+
"maxLength": 32,
|
|
1564
|
+
"description": "Any readable format; normalised to E.164."
|
|
1565
|
+
},
|
|
1566
|
+
"name": {
|
|
1567
|
+
"type": "string",
|
|
1568
|
+
"maxLength": 200,
|
|
1569
|
+
"description": "Optional recipient name."
|
|
1570
|
+
}
|
|
1571
|
+
},
|
|
1572
|
+
"additionalProperties": false
|
|
1573
|
+
}
|
|
1574
|
+
},
|
|
1575
|
+
"funnel": {
|
|
1576
|
+
"type": "string",
|
|
1577
|
+
"maxLength": 200,
|
|
1578
|
+
"description": "Wave business funnel — analytics dimension."
|
|
1579
|
+
},
|
|
1580
|
+
"segment": {
|
|
1581
|
+
"type": "string",
|
|
1582
|
+
"maxLength": 200,
|
|
1583
|
+
"description": "Wave segment — analytics dimension."
|
|
1584
|
+
},
|
|
1585
|
+
"product_code": {
|
|
1586
|
+
"type": "string",
|
|
1587
|
+
"maxLength": 100,
|
|
1588
|
+
"pattern": "^[^\\s/]+$",
|
|
1589
|
+
"description": "Product code for the funnel→product dictionary. Requires a non-empty funnel."
|
|
1590
|
+
},
|
|
1591
|
+
"product_name": {
|
|
1592
|
+
"type": "string",
|
|
1593
|
+
"maxLength": 200,
|
|
1594
|
+
"description": "Display name of the product (needs product_code)."
|
|
1595
|
+
},
|
|
1596
|
+
"cohort_label": {
|
|
1597
|
+
"type": "string",
|
|
1598
|
+
"maxLength": 200,
|
|
1599
|
+
"description": "Human-readable name of this launch."
|
|
1600
|
+
},
|
|
1601
|
+
"confirm": {
|
|
1602
|
+
"type": "boolean",
|
|
1603
|
+
"description": "Without true the call is a DRY-RUN and sends nothing."
|
|
1604
|
+
},
|
|
1605
|
+
"explicit_confirmation": {
|
|
1606
|
+
"type": "boolean",
|
|
1607
|
+
"enum": [
|
|
1608
|
+
true
|
|
1609
|
+
],
|
|
1610
|
+
"description": "Required together with confirm=true: the wave is irreversible and every WABA template is billed by Meta. Dry-run does not need it."
|
|
1611
|
+
},
|
|
1612
|
+
"confirmation_reason": {
|
|
1613
|
+
"type": "string",
|
|
1614
|
+
"description": "Optional human-readable reason recorded with the confirmation."
|
|
1615
|
+
}
|
|
1616
|
+
},
|
|
1617
|
+
"additionalProperties": false
|
|
1618
|
+
}
|
|
1619
|
+
},
|
|
1620
|
+
{
|
|
1621
|
+
"name": "besales_wazzup_wave_status",
|
|
1622
|
+
"description": "Status of a WhatsApp wave: status (PROCESSING|COMPLETED), processedRows, sent/failed/skipped and per-row errors. skipped counts deliberate skips (contact stopped the bot, is waiting for an operator, or already received this template recently) — those are not failures; sent+failed+skipped equals the processed rows. Scope: mcp:platform-setup.",
|
|
1623
|
+
"inputSchema": {
|
|
1624
|
+
"type": "object",
|
|
1625
|
+
"required": [
|
|
1626
|
+
"job_id"
|
|
1627
|
+
],
|
|
1628
|
+
"properties": {
|
|
1629
|
+
"workspace_id": {
|
|
1630
|
+
"type": "string",
|
|
1631
|
+
"format": "uuid",
|
|
1632
|
+
"description": "Optional override. Normally omit — resolved from the connected session."
|
|
1633
|
+
},
|
|
1634
|
+
"job_id": {
|
|
1635
|
+
"type": "string",
|
|
1636
|
+
"format": "uuid",
|
|
1637
|
+
"description": "Wave job uuid returned by besales_wazzup_wave_import."
|
|
1638
|
+
}
|
|
1639
|
+
},
|
|
1640
|
+
"additionalProperties": false
|
|
1641
|
+
}
|
|
1642
|
+
},
|
|
1493
1643
|
{
|
|
1494
1644
|
"name": "besales_agent_create",
|
|
1495
1645
|
"description": "Create a REGULAR AgentChat inside an existing platform. Does not set production prompt content; use PromptHub tools for prompt generation/finalize.",
|
|
@@ -2433,7 +2583,11 @@
|
|
|
2433
2583
|
"contact_name_personalization_mode": {
|
|
2434
2584
|
"type": "string",
|
|
2435
2585
|
"description": "Режим безопасного обращения по подтверждённому имени. Реальное имя модели не раскрывается.",
|
|
2436
|
-
"enum": [
|
|
2586
|
+
"enum": [
|
|
2587
|
+
"OFF",
|
|
2588
|
+
"SHADOW",
|
|
2589
|
+
"ENABLED"
|
|
2590
|
+
]
|
|
2437
2591
|
},
|
|
2438
2592
|
"anonymization_disabled_types": {
|
|
2439
2593
|
"type": "array",
|
|
@@ -2911,6 +3065,9 @@
|
|
|
2911
3065
|
"string",
|
|
2912
3066
|
"null"
|
|
2913
3067
|
]
|
|
3068
|
+
},
|
|
3069
|
+
"ignore_crm_stage_gate": {
|
|
3070
|
+
"type": "boolean"
|
|
2914
3071
|
}
|
|
2915
3072
|
}
|
|
2916
3073
|
},
|
|
@@ -3031,6 +3188,31 @@
|
|
|
3031
3188
|
"type": "boolean",
|
|
3032
3189
|
"description": "Nightly wave delivery check (04:00 MSK): cron reads per-transport deal custom fields (=1 → sent); broadcast analytics for the platform counts only confirmed deliveries."
|
|
3033
3190
|
},
|
|
3191
|
+
"manual_mute_enabled": {
|
|
3192
|
+
"type": "boolean",
|
|
3193
|
+
"description": "Manual bot stop via GetCourse contact field: operator edits a contact custom field → AI stops replying (resumes when set back to 'on'/cleared). GetCourse only. Dangerous — requires explicit_confirmation."
|
|
3194
|
+
},
|
|
3195
|
+
"manual_mute_field_id": {
|
|
3196
|
+
"type": [
|
|
3197
|
+
"string",
|
|
3198
|
+
"null"
|
|
3199
|
+
],
|
|
3200
|
+
"description": "Contact custom field ID (numeric string) OR name for manual mute."
|
|
3201
|
+
},
|
|
3202
|
+
"manual_mute_value": {
|
|
3203
|
+
"type": [
|
|
3204
|
+
"string",
|
|
3205
|
+
"null"
|
|
3206
|
+
],
|
|
3207
|
+
"description": "Field value(s) meaning 'bot OFF' (comma-separated, match-any, case-insensitive)."
|
|
3208
|
+
},
|
|
3209
|
+
"manual_mute_active_value": {
|
|
3210
|
+
"type": [
|
|
3211
|
+
"string",
|
|
3212
|
+
"null"
|
|
3213
|
+
],
|
|
3214
|
+
"description": "Optional value(s) meaning 'bot ON' (empty = anything other than the OFF value = bot replies)."
|
|
3215
|
+
},
|
|
3034
3216
|
"delivery_field_map": {
|
|
3035
3217
|
"type": "object",
|
|
3036
3218
|
"description": "Transport → EXACT deal custom field NAME (GetCourse read API returns no field ids), e.g. { \"Telegram\": \"Отправлено ТГ\" }. Clear with {}.",
|
|
@@ -6259,7 +6441,7 @@
|
|
|
6259
6441
|
},
|
|
6260
6442
|
{
|
|
6261
6443
|
"name": "besales_model_comparison_run_start",
|
|
6262
|
-
"description": "Запустить прогон сравнения промпта агента на нескольких моделях (один и тот же набор диалогов, меняется только модель агента). ДОРОГО — только по явному запросу оператора, НЕ после каждого фикса. models опционально (по умолчанию ~5 defaultSelected из besales_model_catalog_list), 1..
|
|
6444
|
+
"description": "Запустить прогон сравнения промпта агента на нескольких моделях (один и тот же набор диалогов, меняется только модель агента). ДОРОГО — только по явному запросу оператора, НЕ после каждого фикса. models опционально (по умолчанию ~5 defaultSelected из besales_model_catalog_list), 1..21. dialogue_count по умолчанию 5, до 20. Возвращает run_id для besales_model_comparison_get.",
|
|
6263
6445
|
"inputSchema": {
|
|
6264
6446
|
"type": "object",
|
|
6265
6447
|
"required": [
|
|
@@ -6277,8 +6459,8 @@
|
|
|
6277
6459
|
"type": "string"
|
|
6278
6460
|
},
|
|
6279
6461
|
"minItems": 1,
|
|
6280
|
-
"maxItems":
|
|
6281
|
-
"description": "Runnable id моделей из каталога (1..
|
|
6462
|
+
"maxItems": 21,
|
|
6463
|
+
"description": "Runnable id моделей из каталога (1..21). По умолчанию набор defaultSelected."
|
|
6282
6464
|
},
|
|
6283
6465
|
"dialogue_count": {
|
|
6284
6466
|
"type": "integer",
|
|
@@ -6497,7 +6679,7 @@
|
|
|
6497
6679
|
},
|
|
6498
6680
|
{
|
|
6499
6681
|
"name": "besales_dialogues_query",
|
|
6500
|
-
"description": "Read-only манифест диалогов workspace по фильтрам: каналы, окно дат активности, CRM-статус, последнее work-log событие и выполненные trigger-actions (action_type/action_success/action_execution_mode). Пагинация cursor + total. Тексты и факты действий берутся через besales_dialogue_transcript. Scope: read:conversations.",
|
|
6682
|
+
"description": "Read-only манифест диалогов workspace по фильтрам: каналы, окно дат активности, CRM-статус, последнее work-log событие и выполненные trigger-actions (action_type/action_success/action_execution_mode). По каждому диалогу отдаёт точки атрибуции lastWaveSentAt/firstPaidAt/paidAmount — интервалы «касание → ответ → оплата» считаются прямо здесь, без отдельной выгрузки. Пагинация cursor + total. Тексты и факты действий берутся через besales_dialogue_transcript. Scope: read:conversations.",
|
|
6501
6683
|
"inputSchema": {
|
|
6502
6684
|
"type": "object",
|
|
6503
6685
|
"required": [],
|
|
@@ -6570,7 +6752,10 @@
|
|
|
6570
6752
|
},
|
|
6571
6753
|
"action_execution_mode": {
|
|
6572
6754
|
"type": "string",
|
|
6573
|
-
"enum": [
|
|
6755
|
+
"enum": [
|
|
6756
|
+
"production",
|
|
6757
|
+
"test"
|
|
6758
|
+
],
|
|
6574
6759
|
"description": "Режим того же trigger execution; для production-аудита передайте production."
|
|
6575
6760
|
},
|
|
6576
6761
|
"ai_enabled": {
|
|
@@ -6600,7 +6785,7 @@
|
|
|
6600
6785
|
},
|
|
6601
6786
|
{
|
|
6602
6787
|
"name": "besales_dialogue_transcript",
|
|
6603
|
-
"description": "Read-only полный транскрипт одного диалога + triggerExecutions, привязанные к messageId. Действия содержат type/success/time и безопасную выжимку dealId/dealNumber/skipped без сырого result. Пагинация сообщений через cursor. Scope: read:conversations.",
|
|
6788
|
+
"description": "Read-only полный транскрипт одного диалога + triggerExecutions, привязанные к messageId. Каждая реплика несёт время (sentAt, у ответа агента — фактическое время отправки) и authorType: AI_AGENT / AUTOMATION (наш follow-up, рассылка) / HUMAN_OPERATOR (живой человек) — по isAi автоматика и оператор неразличимы. Действия содержат type/success/time и безопасную выжимку dealId/dealNumber/skipped без сырого result. Пагинация сообщений через cursor. Scope: read:conversations.",
|
|
6604
6789
|
"inputSchema": {
|
|
6605
6790
|
"type": "object",
|
|
6606
6791
|
"required": [
|
|
@@ -6630,6 +6815,154 @@
|
|
|
6630
6815
|
}
|
|
6631
6816
|
}
|
|
6632
6817
|
}
|
|
6818
|
+
},
|
|
6819
|
+
{
|
|
6820
|
+
"name": "besales_broadcast_analytics_get",
|
|
6821
|
+
"description": "Read-only authoritative агрегат страницы /broadcast-analytics по дням и измерениям. Метрики считаются по получателям волн/доставке/событиям, а не по строкам сообщений. Scope: read:analytics.",
|
|
6822
|
+
"inputSchema": {
|
|
6823
|
+
"type": "object",
|
|
6824
|
+
"required": [],
|
|
6825
|
+
"additionalProperties": false,
|
|
6826
|
+
"properties": {
|
|
6827
|
+
"workspace_id": {
|
|
6828
|
+
"type": "string",
|
|
6829
|
+
"format": "uuid",
|
|
6830
|
+
"description": "Optional override. Normally omit — defaults to the workspace bound to this session."
|
|
6831
|
+
},
|
|
6832
|
+
"mode": {
|
|
6833
|
+
"type": "string",
|
|
6834
|
+
"enum": [
|
|
6835
|
+
"all",
|
|
6836
|
+
"days",
|
|
6837
|
+
"range"
|
|
6838
|
+
],
|
|
6839
|
+
"default": "days",
|
|
6840
|
+
"description": "Режим периода. Для точной даты используйте range."
|
|
6841
|
+
},
|
|
6842
|
+
"days": {
|
|
6843
|
+
"type": "integer",
|
|
6844
|
+
"minimum": 1,
|
|
6845
|
+
"description": "Последние N дней для mode=days."
|
|
6846
|
+
},
|
|
6847
|
+
"from": {
|
|
6848
|
+
"type": "string",
|
|
6849
|
+
"format": "date",
|
|
6850
|
+
"description": "Начальная календарная дата МСК (YYYY-MM-DD) для mode=range."
|
|
6851
|
+
},
|
|
6852
|
+
"to": {
|
|
6853
|
+
"type": "string",
|
|
6854
|
+
"format": "date",
|
|
6855
|
+
"description": "Конечная календарная дата МСК (YYYY-MM-DD) для mode=range."
|
|
6856
|
+
},
|
|
6857
|
+
"platform_id": {
|
|
6858
|
+
"type": "string",
|
|
6859
|
+
"format": "uuid"
|
|
6860
|
+
},
|
|
6861
|
+
"funnel": {
|
|
6862
|
+
"type": "string",
|
|
6863
|
+
"minLength": 1,
|
|
6864
|
+
"description": "Точная бизнес-воронка волны."
|
|
6865
|
+
},
|
|
6866
|
+
"funnel_mode": {
|
|
6867
|
+
"type": "string",
|
|
6868
|
+
"enum": [
|
|
6869
|
+
"none"
|
|
6870
|
+
],
|
|
6871
|
+
"description": "Явно выбрать строки без воронки."
|
|
6872
|
+
},
|
|
6873
|
+
"segment": {
|
|
6874
|
+
"type": "string",
|
|
6875
|
+
"minLength": 1
|
|
6876
|
+
},
|
|
6877
|
+
"product": {
|
|
6878
|
+
"type": "string",
|
|
6879
|
+
"minLength": 1
|
|
6880
|
+
},
|
|
6881
|
+
"product_mode": {
|
|
6882
|
+
"type": "string",
|
|
6883
|
+
"enum": [
|
|
6884
|
+
"none"
|
|
6885
|
+
],
|
|
6886
|
+
"description": "Явно выбрать строки без продукта."
|
|
6887
|
+
},
|
|
6888
|
+
"view": {
|
|
6889
|
+
"type": "string",
|
|
6890
|
+
"enum": [
|
|
6891
|
+
"cohort",
|
|
6892
|
+
"period"
|
|
6893
|
+
],
|
|
6894
|
+
"default": "period",
|
|
6895
|
+
"description": "period — по дате события (как вкладка по дням); cohort — по дате запуска волны."
|
|
6896
|
+
}
|
|
6897
|
+
}
|
|
6898
|
+
}
|
|
6899
|
+
},
|
|
6900
|
+
{
|
|
6901
|
+
"name": "besales_broadcast_cohorts_list",
|
|
6902
|
+
"description": "Read-only результаты отдельных запусков рассылок: label, funnel, segment, product, channels, found/sent/delivered/entered/handed/payments/notSent. Scope: read:analytics.",
|
|
6903
|
+
"inputSchema": {
|
|
6904
|
+
"type": "object",
|
|
6905
|
+
"required": [],
|
|
6906
|
+
"additionalProperties": false,
|
|
6907
|
+
"properties": {
|
|
6908
|
+
"workspace_id": {
|
|
6909
|
+
"type": "string",
|
|
6910
|
+
"format": "uuid",
|
|
6911
|
+
"description": "Optional override. Normally omit — defaults to the workspace bound to this session."
|
|
6912
|
+
},
|
|
6913
|
+
"mode": {
|
|
6914
|
+
"type": "string",
|
|
6915
|
+
"enum": [
|
|
6916
|
+
"all",
|
|
6917
|
+
"days",
|
|
6918
|
+
"range"
|
|
6919
|
+
],
|
|
6920
|
+
"default": "days"
|
|
6921
|
+
},
|
|
6922
|
+
"days": {
|
|
6923
|
+
"type": "integer",
|
|
6924
|
+
"minimum": 1
|
|
6925
|
+
},
|
|
6926
|
+
"from": {
|
|
6927
|
+
"type": "string",
|
|
6928
|
+
"format": "date",
|
|
6929
|
+
"description": "Начальная календарная дата МСК (YYYY-MM-DD) для mode=range."
|
|
6930
|
+
},
|
|
6931
|
+
"to": {
|
|
6932
|
+
"type": "string",
|
|
6933
|
+
"format": "date",
|
|
6934
|
+
"description": "Конечная календарная дата МСК (YYYY-MM-DD) для mode=range."
|
|
6935
|
+
},
|
|
6936
|
+
"platform_id": {
|
|
6937
|
+
"type": "string",
|
|
6938
|
+
"format": "uuid"
|
|
6939
|
+
},
|
|
6940
|
+
"funnel": {
|
|
6941
|
+
"type": "string",
|
|
6942
|
+
"minLength": 1
|
|
6943
|
+
},
|
|
6944
|
+
"funnel_mode": {
|
|
6945
|
+
"type": "string",
|
|
6946
|
+
"enum": [
|
|
6947
|
+
"none"
|
|
6948
|
+
]
|
|
6949
|
+
},
|
|
6950
|
+
"segment": {
|
|
6951
|
+
"type": "string",
|
|
6952
|
+
"minLength": 1
|
|
6953
|
+
},
|
|
6954
|
+
"product": {
|
|
6955
|
+
"type": "string",
|
|
6956
|
+
"minLength": 1
|
|
6957
|
+
},
|
|
6958
|
+
"product_mode": {
|
|
6959
|
+
"type": "string",
|
|
6960
|
+
"enum": [
|
|
6961
|
+
"none"
|
|
6962
|
+
]
|
|
6963
|
+
}
|
|
6964
|
+
}
|
|
6965
|
+
}
|
|
6633
6966
|
}
|
|
6634
6967
|
],
|
|
6635
6968
|
"resources": [
|
|
@@ -6821,7 +7154,7 @@
|
|
|
6821
7154
|
}
|
|
6822
7155
|
],
|
|
6823
7156
|
"summary": {
|
|
6824
|
-
"total_tools":
|
|
7157
|
+
"total_tools": 145,
|
|
6825
7158
|
"tools_by_category": {
|
|
6826
7159
|
"getcourse_wave": 2,
|
|
6827
7160
|
"files_upload": 3,
|
|
@@ -6856,7 +7189,8 @@
|
|
|
6856
7189
|
"platform_clone": 3,
|
|
6857
7190
|
"session_workspace": 2,
|
|
6858
7191
|
"model_comparison": 4,
|
|
6859
|
-
"dialog_script": 2
|
|
7192
|
+
"dialog_script": 2,
|
|
7193
|
+
"broadcast_analytics": 2
|
|
6860
7194
|
},
|
|
6861
7195
|
"external_execution_pairs": [
|
|
6862
7196
|
"besales_icp_analysis_get_instructions / submit",
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
export declare const broadcastAnalyticsTools: (import("./shared.js").ToolDefinition<{
|
|
2
|
+
view: "cohort" | "period";
|
|
3
|
+
mode: "all" | "days" | "range";
|
|
4
|
+
workspace_id?: string | undefined;
|
|
5
|
+
days?: number | undefined;
|
|
6
|
+
from?: string | undefined;
|
|
7
|
+
to?: string | undefined;
|
|
8
|
+
platform_id?: string | undefined;
|
|
9
|
+
funnel?: string | undefined;
|
|
10
|
+
funnel_mode?: "none" | undefined;
|
|
11
|
+
segment?: string | undefined;
|
|
12
|
+
product?: string | undefined;
|
|
13
|
+
product_mode?: "none" | undefined;
|
|
14
|
+
}> | import("./shared.js").ToolDefinition<{
|
|
15
|
+
mode: "all" | "days" | "range";
|
|
16
|
+
workspace_id?: string | undefined;
|
|
17
|
+
days?: number | undefined;
|
|
18
|
+
from?: string | undefined;
|
|
19
|
+
to?: string | undefined;
|
|
20
|
+
platform_id?: string | undefined;
|
|
21
|
+
funnel?: string | undefined;
|
|
22
|
+
funnel_mode?: "none" | undefined;
|
|
23
|
+
segment?: string | undefined;
|
|
24
|
+
product?: string | undefined;
|
|
25
|
+
product_mode?: "none" | undefined;
|
|
26
|
+
}>)[];
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
// Read-only агрегаты страницы /broadcast-analytics. Не пересчитывать эти показатели по сообщениям:
|
|
2
|
+
// backend уже держит когортную атрибуцию, delivery-гейт и дедуп событий между соседними волнами.
|
|
3
|
+
import { z } from 'zod';
|
|
4
|
+
import { defineTool, uuidSchema, withInstructions } from './shared.js';
|
|
5
|
+
const calendarDateSchema = z.string().regex(/^\d{4}-\d{2}-\d{2}$/);
|
|
6
|
+
const analyticsQueryFields = {
|
|
7
|
+
workspace_id: uuidSchema.optional(),
|
|
8
|
+
mode: z.enum(['all', 'days', 'range']).default('days'),
|
|
9
|
+
days: z.number().int().min(1).optional(),
|
|
10
|
+
from: calendarDateSchema.optional(),
|
|
11
|
+
to: calendarDateSchema.optional(),
|
|
12
|
+
platform_id: uuidSchema.optional(),
|
|
13
|
+
funnel: z.string().min(1).optional(),
|
|
14
|
+
funnel_mode: z.literal('none').optional(),
|
|
15
|
+
segment: z.string().min(1).optional(),
|
|
16
|
+
product: z.string().min(1).optional(),
|
|
17
|
+
product_mode: z.literal('none').optional(),
|
|
18
|
+
};
|
|
19
|
+
function buildQuery(input) {
|
|
20
|
+
const params = new URLSearchParams();
|
|
21
|
+
const mode = input.mode ?? 'days';
|
|
22
|
+
params.set('mode', mode);
|
|
23
|
+
if (mode === 'days')
|
|
24
|
+
params.set('days', String(input.days ?? 30));
|
|
25
|
+
if (input.from)
|
|
26
|
+
params.set('from', input.from);
|
|
27
|
+
if (input.to)
|
|
28
|
+
params.set('to', input.to);
|
|
29
|
+
if (input.platform_id)
|
|
30
|
+
params.set('platformId', input.platform_id);
|
|
31
|
+
if (input.funnel)
|
|
32
|
+
params.set('funnel', input.funnel);
|
|
33
|
+
if (input.funnel_mode)
|
|
34
|
+
params.set('funnelMode', input.funnel_mode);
|
|
35
|
+
if (input.segment)
|
|
36
|
+
params.set('segment', input.segment);
|
|
37
|
+
if (input.product)
|
|
38
|
+
params.set('product', input.product);
|
|
39
|
+
if (input.product_mode)
|
|
40
|
+
params.set('productMode', input.product_mode);
|
|
41
|
+
if (input.view)
|
|
42
|
+
params.set('view', input.view);
|
|
43
|
+
const query = params.toString();
|
|
44
|
+
return query ? `?${query}` : '';
|
|
45
|
+
}
|
|
46
|
+
export const broadcastAnalyticsTools = [
|
|
47
|
+
defineTool({
|
|
48
|
+
name: 'besales_broadcast_analytics_get',
|
|
49
|
+
requiredFields: [],
|
|
50
|
+
defaultWorkspaceId: true,
|
|
51
|
+
schema: z
|
|
52
|
+
.object({
|
|
53
|
+
...analyticsQueryFields,
|
|
54
|
+
view: z.enum(['cohort', 'period']).default('period'),
|
|
55
|
+
})
|
|
56
|
+
.strict(),
|
|
57
|
+
createRequest: (input) => ({
|
|
58
|
+
method: 'GET',
|
|
59
|
+
path: `/workspaces/${input.workspace_id}/broadcast-analytics${buildQuery(input)}`,
|
|
60
|
+
}),
|
|
61
|
+
enhanceResponse: (response) => withInstructions(response, [
|
|
62
|
+
'Это authoritative агрегат той же страницы /broadcast-analytics. НЕ пересчитывай статистику рассылок через besales_dialogues_query или транскрипты.',
|
|
63
|
+
'Для «сегодня» используй view=period, mode=range, from=to=нужная дата YYYY-MM-DD; даты группируются по МСК.',
|
|
64
|
+
'Общий итог бери из totals, а не суммой data по каналам: один получатель мультиканальной волны присутствует в нескольких channel-строках.',
|
|
65
|
+
'sent — строки получателей волн, не число реплик агента и не обязательно уникальные люди между разными волнами.',
|
|
66
|
+
'received — доставленные строки получателей с учётом platform delivery-гейта.',
|
|
67
|
+
'enteredDialog — строки получателей, у которых было хотя бы одно входящее после этой волны и до следующей; это НЕ количество входящих сообщений.',
|
|
68
|
+
'handedOff — успешные GETCOURSE_CREATE_DEAL / GETCOURSE_SET_MANAGER / GETCOURSE_SET_DEAL_MANAGER / GETCOURSE_SET_PERSONAL_MANAGER.',
|
|
69
|
+
'funnel здесь — бизнес-воронка волны. Названия CRM pipeline при необходимости читай отдельно через besales_crm_list + besales_crm_pipeline_list.',
|
|
70
|
+
]),
|
|
71
|
+
}),
|
|
72
|
+
defineTool({
|
|
73
|
+
name: 'besales_broadcast_cohorts_list',
|
|
74
|
+
requiredFields: [],
|
|
75
|
+
defaultWorkspaceId: true,
|
|
76
|
+
schema: z.object(analyticsQueryFields).strict(),
|
|
77
|
+
createRequest: (input) => ({
|
|
78
|
+
method: 'GET',
|
|
79
|
+
path: `/workspaces/${input.workspace_id}/broadcast-analytics/cohorts${buildQuery(input)}`,
|
|
80
|
+
}),
|
|
81
|
+
enhanceResponse: (response) => withInstructions(response, [
|
|
82
|
+
'Каждый items[] — отдельный запуск рассылки (importJobId/cohortId), а не строка сообщения или диалог.',
|
|
83
|
+
'label — имя запуска; funnel/segment/product/channels — снимок бизнес-разрезов волны.',
|
|
84
|
+
'sent/delivered/entered/handedOff считаются по получателям этой волны; entered — ответившие получатели, не число их сообщений.',
|
|
85
|
+
'Для общей статистики по дням используй besales_broadcast_analytics_get; транскрипты нужны только для качественного разбора конкретных диалогов.',
|
|
86
|
+
]),
|
|
87
|
+
}),
|
|
88
|
+
];
|
|
89
|
+
//# sourceMappingURL=broadcast-analytics.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"broadcast-analytics.js","sourceRoot":"","sources":["../../../src/tools/definitions/broadcast-analytics.ts"],"names":[],"mappings":"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"}
|
|
@@ -103,6 +103,9 @@ export const dialogueExportTools = [
|
|
|
103
103
|
'Для точного аудита новых заявок используй action_type=["GETCOURSE_CREATE_DEAL"], action_success=true и action_execution_mode="production".',
|
|
104
104
|
'GETCOURSE_SEND_PAYMENT_LINK анализируй отдельно: он может обновлять существующий заказ и сам по себе не доказывает создание новой заявки.',
|
|
105
105
|
'Тексты переписки здесь НЕ отдаются — по каждому conversationId вызывай besales_dialogue_transcript.',
|
|
106
|
+
'lastWaveSentAt / firstPaidAt / paidAmount — LIFETIME-маркеры контакта, а НЕ одна цепочка: это ПОСЛЕДНЯЯ волна, ПЕРВАЯ оплата и сумма всех прямых оплат. У контакта с несколькими волнами разность firstPaidAt − lastWaveSentAt может выйти отрицательной — вычитать их нельзя.',
|
|
107
|
+
'Для атрибуции оплаты к конкретной волне бери когортные цифры из besales_broadcast_analytics_get: там оплаты считаются переходами относительно даты волны.',
|
|
108
|
+
'firstPaidAt/paidAmount заполняются только для GetCourse и только при наличии scope read:analytics; null означает «неизвестно», а не «не платил». paidAmount — прямые оплаты по реестру, косвенные (подтверждённые оператором) в него не входят.',
|
|
106
109
|
'MCP файлы не пишет: сохрани результаты локально сам (по файлу на диалог).',
|
|
107
110
|
]),
|
|
108
111
|
}),
|
|
@@ -138,7 +141,11 @@ export const dialogueExportTools = [
|
|
|
138
141
|
enhanceResponse: (response) => withInstructions(response, [
|
|
139
142
|
'Транскрипт диалога: { conversationId, channelType, contactName, turns[], triggerExecutions[], transcriptMarkdown, cursor }.',
|
|
140
143
|
'Сохрани transcriptMarkdown в ОТДЕЛЬНЫЙ файл на диалог, напр. dialogs/<conversationId>.md.',
|
|
141
|
-
'Роли реплик: client (клиент) / agent
|
|
144
|
+
'Роли реплик: client (клиент) / agent. Автора исходящего бери из turn.authorType: AI_AGENT — ответ модели, AUTOMATION — наша рассылка/follow-up/приветствие, HUMAN_OPERATOR — живой человек.',
|
|
145
|
+
'НЕ считай исходящее операторским по isAi=false: у автоматики он тоже false. Вывод «продажу дожал человек» делай только по authorType=HUMAN_OPERATOR.',
|
|
146
|
+
'authorType=null — сообщение клиента ИЛИ строка старше 2026-07-20 без разметки; для таких автора считай неизвестным, а не оператором.',
|
|
147
|
+
'turn.sentAt у agent — фактическое время отправки ответа. У строк старше 2026-07-20 оно равно времени реплики клиента, поэтому интервал «наш ответ → ответ клиента» на старом периоде не вычисляется (получится ноль).',
|
|
148
|
+
'turn.delivered=false — реплика записана в историю, но клиенту НЕ отправлена (тихий режим, не влезший ответ). Такие реплики исключай из подсчёта касаний и интервалов: их sentAt — время строки, а не отправки.',
|
|
142
149
|
'turn.messageId связывает реплику с triggerExecutions.messageId. В actions есть type/success/time и только безопасный resultSummary; сырой result не отдаётся.',
|
|
143
150
|
'Если cursor не null — у диалога есть ещё сообщения: повтори с этим cursor. Первая страница содержит заголовок; последующие — только реплики: дописывай их в тот же файл.',
|
|
144
151
|
]),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dialogue-export.js","sourceRoot":"","sources":["../../../src/tools/definitions/dialogue-export.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"dialogue-export.js","sourceRoot":"","sources":["../../../src/tools/definitions/dialogue-export.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
import { compactObject, defineTool, uuidSchema, withInstructions } from './shared.js';
|
|
3
3
|
// Зеркало MAX_MODELS в prompt-services model-comparison.constants.ts (размер каталога)
|
|
4
|
-
const MODEL_COMPARISON_MAX_MODELS =
|
|
4
|
+
const MODEL_COMPARISON_MAX_MODELS = 21;
|
|
5
5
|
// Оценка ИИ по одной модели (eval-submit). Маппится snake→camel в createRequest.
|
|
6
6
|
const modelEvalPerModelSchema = z.object({
|
|
7
7
|
model: z.string(),
|