@besales/mcp 0.39.0 → 0.40.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/schemas/mcp-tools.json +230 -51
- package/dist/skills/besales-dialogue-audit/SKILL.md +8 -0
- package/dist/tools/definitions/dialogue-audit.d.ts +15 -0
- package/dist/tools/definitions/dialogue-audit.js +99 -0
- package/dist/tools/definitions/dialogue-audit.js.map +1 -1
- package/dist/tools/definitions/follow-up.d.ts +21 -0
- package/dist/tools/definitions/follow-up.js +75 -1
- package/dist/tools/definitions/follow-up.js.map +1 -1
- package/dist/tools/definitions.d.ts +15 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -290,7 +290,7 @@ connect each once and pin sessions via `BESALES_WORKSPACE_ID` (or switch the
|
|
|
290
290
|
global default with `besales-mcp use <id>`) — see
|
|
291
291
|
[Multiple Workspaces](#multiple-workspaces).
|
|
292
292
|
|
|
293
|
-
## Available tools (
|
|
293
|
+
## Available tools (193 tools by category)
|
|
294
294
|
|
|
295
295
|
Итоговое число выводится из `src/schemas/mcp-tools.json` (`tools.length`) и закреплено в
|
|
296
296
|
`src/tools/registry.spec.ts`. ⚠️ Разбивка по категориям ниже и `summary.tools_by_category`
|
|
@@ -321,6 +321,7 @@ global default with `besales-mcp use <id>`) — see
|
|
|
321
321
|
| Context / overview / audit | 3 | `besales_workspace_overview`, `besales_platform_context_get`, `besales_audit_revert` |
|
|
322
322
|
| Session / workspace binding | 2 | `besales_workspace_use`, `besales_workspace_current` (in-memory per-session, local — no backend) |
|
|
323
323
|
| Dialogue audit | 2 | `besales_dialogues_query`, `besales_dialogue_transcript` — read-only transcript + trigger-action evidence |
|
|
324
|
+
| Dialogue audit external | 2 | `besales_dialogue_audit_segments_get`, `besales_dialogue_audit_import` — сервер готовит материал ревизора read-only, разбирает клиент, находки возвращаются импортом |
|
|
324
325
|
| Broadcast analytics | 2 | `besales_broadcast_analytics_get`, `besales_broadcast_cohorts_list` — authoritative read-only aggregates, drill-downs, segment/product catalogs, insights and payment-candidate reports from `/broadcast-analytics`, not transcript-derived counts |
|
|
325
326
|
| GetCourse waves | 10 | `besales_getcourse_wave_import`, `besales_getcourse_wave_status`, `besales_getcourse_wave_run_start`, `besales_getcourse_wave_run_status`, `besales_getcourse_wave_run_contacts`, `besales_getcourse_wave_run_cancel`, `besales_getcourse_wave_run_batch_start`, `besales_getcourse_wave_run_batch_status`, `besales_getcourse_wave_run_batch_cancel`, `besales_getcourse_wave_run_batch_resume`; durable confirm использует стабильный `launch_key` + `dry_run_hash`, import/run/batch принимают `segment_description` |
|
|
326
327
|
| Scheduled tasks | 2 | `besales_scheduled_task_list`, `besales_scheduled_task_update` — cron-driven dialogue analysis («суфлёр»): daily summary + hourly status written to the CRM timeline or as a hidden open-line message, never to the client |
|
|
@@ -392,7 +393,7 @@ Inspect them locally:
|
|
|
392
393
|
yarn dlx @modelcontextprotocol/inspector node bin/besales-mcp.js
|
|
393
394
|
```
|
|
394
395
|
|
|
395
|
-
The Inspector should show
|
|
396
|
+
The Inspector should show 193 tools and 31 resources.
|
|
396
397
|
|
|
397
398
|
## Codex Dialogue Audit Skill
|
|
398
399
|
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
3
|
"title": "besales-mcp Tool Definitions",
|
|
4
4
|
"version": "1.2.0-draft",
|
|
5
|
-
"lastUpdated": "2026-08-
|
|
5
|
+
"lastUpdated": "2026-08-17",
|
|
6
6
|
"description": "MCP tool schemas для besales-mcp npm package. Active v1.5 set содержит PromptHub/ICP/Sandbox/Knowledge external-execution operations и stateless Platform Setup Bridge direct tools. Setup Pipeline session tools сохранены как Phase 4+ future design, но не входят в active toolset.",
|
|
7
7
|
"executionModes": {
|
|
8
8
|
"summary": "Каждая active LLM-операция имеет 2 MCP tools: get_instructions + submit. Claude локально между tools выполняет LLM-вызовы своими моделями. Auto-detection через JWT scope mcp:* → external default.",
|
|
@@ -3623,6 +3623,48 @@
|
|
|
3623
3623
|
"messageConfig": {
|
|
3624
3624
|
"type": "object",
|
|
3625
3625
|
"description": "Текст/шаблон касания. Плейсхолдеры {name} календарного шага обязаны резолвиться, иначе шаг пропускается в рантайме."
|
|
3626
|
+
},
|
|
3627
|
+
"getcourse": {
|
|
3628
|
+
"type": "object",
|
|
3629
|
+
"description": "Каналы отправки ШАГА, только GetCourse. К шагу-вебхуку неприменимо.",
|
|
3630
|
+
"properties": {
|
|
3631
|
+
"delivery": {
|
|
3632
|
+
"type": "object",
|
|
3633
|
+
"required": [
|
|
3634
|
+
"mode"
|
|
3635
|
+
],
|
|
3636
|
+
"description": "Набор каналов шага. Поля нет — набор решает состояние контакта: ответил, значит ровно его канал; молчит, значит все его привязки. 'all' — привязки плюс канал ответа плюс Email/Сайт/Chatium; SMS в него НЕ входит (у отправки один текст на весь набор, SMS нужен свой короткий) и задаётся только через 'explicit' отдельным шагом. Пустое пересечение с разрешёнными каналами площадки — шаг пропускается, цепочка идёт дальше.",
|
|
3637
|
+
"properties": {
|
|
3638
|
+
"mode": {
|
|
3639
|
+
"type": "string",
|
|
3640
|
+
"enum": [
|
|
3641
|
+
"contact",
|
|
3642
|
+
"all",
|
|
3643
|
+
"explicit"
|
|
3644
|
+
]
|
|
3645
|
+
},
|
|
3646
|
+
"transports": {
|
|
3647
|
+
"type": "array",
|
|
3648
|
+
"description": "Только для mode='explicit'; в остальных режимах поле отвергается как ничего не меняющее.",
|
|
3649
|
+
"items": {
|
|
3650
|
+
"type": "string",
|
|
3651
|
+
"enum": [
|
|
3652
|
+
"Site",
|
|
3653
|
+
"Email",
|
|
3654
|
+
"SMS",
|
|
3655
|
+
"Telegram",
|
|
3656
|
+
"Facebook",
|
|
3657
|
+
"VK",
|
|
3658
|
+
"Chatium",
|
|
3659
|
+
"WhatsApp",
|
|
3660
|
+
"Viber",
|
|
3661
|
+
"MAX"
|
|
3662
|
+
]
|
|
3663
|
+
}
|
|
3664
|
+
}
|
|
3665
|
+
}
|
|
3666
|
+
}
|
|
3667
|
+
}
|
|
3626
3668
|
}
|
|
3627
3669
|
}
|
|
3628
3670
|
}
|
|
@@ -8213,30 +8255,6 @@
|
|
|
8213
8255
|
],
|
|
8214
8256
|
"description": "Один или несколько ID именованных вариантов рассылки."
|
|
8215
8257
|
},
|
|
8216
|
-
"mechanism": {
|
|
8217
|
-
"oneOf": [
|
|
8218
|
-
{
|
|
8219
|
-
"type": "string",
|
|
8220
|
-
"enum": [
|
|
8221
|
-
"wave",
|
|
8222
|
-
"cold_welcome"
|
|
8223
|
-
]
|
|
8224
|
-
},
|
|
8225
|
-
{
|
|
8226
|
-
"type": "array",
|
|
8227
|
-
"minItems": 1,
|
|
8228
|
-
"maxItems": 2,
|
|
8229
|
-
"items": {
|
|
8230
|
-
"type": "string",
|
|
8231
|
-
"enum": [
|
|
8232
|
-
"wave",
|
|
8233
|
-
"cold_welcome"
|
|
8234
|
-
]
|
|
8235
|
-
}
|
|
8236
|
-
}
|
|
8237
|
-
],
|
|
8238
|
-
"description": "Механизм запуска: wave — доставляет процесс школы (мы штампуем поля сделки), cold_welcome — пишем первыми сами. Оба значения = фильтра нет."
|
|
8239
|
-
},
|
|
8240
8258
|
"product": {
|
|
8241
8259
|
"oneOf": [
|
|
8242
8260
|
{
|
|
@@ -8452,6 +8470,30 @@
|
|
|
8452
8470
|
"include_archived": {
|
|
8453
8471
|
"type": "boolean",
|
|
8454
8472
|
"description": "Только для report=payment_candidates."
|
|
8473
|
+
},
|
|
8474
|
+
"mechanism": {
|
|
8475
|
+
"oneOf": [
|
|
8476
|
+
{
|
|
8477
|
+
"type": "string",
|
|
8478
|
+
"enum": [
|
|
8479
|
+
"wave",
|
|
8480
|
+
"cold_welcome"
|
|
8481
|
+
]
|
|
8482
|
+
},
|
|
8483
|
+
{
|
|
8484
|
+
"type": "array",
|
|
8485
|
+
"minItems": 1,
|
|
8486
|
+
"maxItems": 2,
|
|
8487
|
+
"items": {
|
|
8488
|
+
"type": "string",
|
|
8489
|
+
"enum": [
|
|
8490
|
+
"wave",
|
|
8491
|
+
"cold_welcome"
|
|
8492
|
+
]
|
|
8493
|
+
}
|
|
8494
|
+
}
|
|
8495
|
+
],
|
|
8496
|
+
"description": "Механизм запуска: wave — доставляет процесс школы (мы штампуем поля сделки), cold_welcome — пишем первыми сами. Оба значения = фильтра нет."
|
|
8455
8497
|
}
|
|
8456
8498
|
}
|
|
8457
8499
|
}
|
|
@@ -8553,30 +8595,6 @@
|
|
|
8553
8595
|
}
|
|
8554
8596
|
]
|
|
8555
8597
|
},
|
|
8556
|
-
"mechanism": {
|
|
8557
|
-
"oneOf": [
|
|
8558
|
-
{
|
|
8559
|
-
"type": "string",
|
|
8560
|
-
"enum": [
|
|
8561
|
-
"wave",
|
|
8562
|
-
"cold_welcome"
|
|
8563
|
-
]
|
|
8564
|
-
},
|
|
8565
|
-
{
|
|
8566
|
-
"type": "array",
|
|
8567
|
-
"minItems": 1,
|
|
8568
|
-
"maxItems": 2,
|
|
8569
|
-
"items": {
|
|
8570
|
-
"type": "string",
|
|
8571
|
-
"enum": [
|
|
8572
|
-
"wave",
|
|
8573
|
-
"cold_welcome"
|
|
8574
|
-
]
|
|
8575
|
-
}
|
|
8576
|
-
}
|
|
8577
|
-
],
|
|
8578
|
-
"description": "Механизм запуска: wave — доставляет процесс школы (мы штампуем поля сделки), cold_welcome — пишем первыми сами. Оба значения = фильтра нет."
|
|
8579
|
-
},
|
|
8580
8598
|
"product": {
|
|
8581
8599
|
"oneOf": [
|
|
8582
8600
|
{
|
|
@@ -8675,6 +8693,30 @@
|
|
|
8675
8693
|
"period"
|
|
8676
8694
|
],
|
|
8677
8695
|
"default": "period"
|
|
8696
|
+
},
|
|
8697
|
+
"mechanism": {
|
|
8698
|
+
"oneOf": [
|
|
8699
|
+
{
|
|
8700
|
+
"type": "string",
|
|
8701
|
+
"enum": [
|
|
8702
|
+
"wave",
|
|
8703
|
+
"cold_welcome"
|
|
8704
|
+
]
|
|
8705
|
+
},
|
|
8706
|
+
{
|
|
8707
|
+
"type": "array",
|
|
8708
|
+
"minItems": 1,
|
|
8709
|
+
"maxItems": 2,
|
|
8710
|
+
"items": {
|
|
8711
|
+
"type": "string",
|
|
8712
|
+
"enum": [
|
|
8713
|
+
"wave",
|
|
8714
|
+
"cold_welcome"
|
|
8715
|
+
]
|
|
8716
|
+
}
|
|
8717
|
+
}
|
|
8718
|
+
],
|
|
8719
|
+
"description": "Механизм запуска: wave — доставляет процесс школы (мы штампуем поля сделки), cold_welcome — пишем первыми сами. Оба значения = фильтра нет."
|
|
8678
8720
|
}
|
|
8679
8721
|
}
|
|
8680
8722
|
}
|
|
@@ -9880,6 +9922,142 @@
|
|
|
9880
9922
|
}
|
|
9881
9923
|
}
|
|
9882
9924
|
},
|
|
9925
|
+
{
|
|
9926
|
+
"name": "besales_dialogue_audit_segments_get",
|
|
9927
|
+
"description": "Материал ревизора для разбора СВОЕЙ моделью: методика (хеш), реконструированный промпт агента и транскрипты отрезков с якорями msg=. Страница однородна — один агент и один снимок промпта. Ничего не пишет: водяной знак двигает импорт, поэтому две выдачи подряд вернут одну и ту же страницу. Scope: read:conversations + read:agents.",
|
|
9928
|
+
"inputSchema": {
|
|
9929
|
+
"type": "object",
|
|
9930
|
+
"required": [
|
|
9931
|
+
"platform_id"
|
|
9932
|
+
],
|
|
9933
|
+
"additionalProperties": false,
|
|
9934
|
+
"properties": {
|
|
9935
|
+
"platform_id": {
|
|
9936
|
+
"type": "string",
|
|
9937
|
+
"format": "uuid",
|
|
9938
|
+
"description": "Канал (платформа)."
|
|
9939
|
+
}
|
|
9940
|
+
}
|
|
9941
|
+
}
|
|
9942
|
+
},
|
|
9943
|
+
{
|
|
9944
|
+
"name": "besales_dialogue_audit_import",
|
|
9945
|
+
"description": "Импорт находок внешнего разбора. Перечисляй ВСЕ разобранные отрезки, включая чистые: тикет — единственное, что двигает их водяной знак. Сервер проверяет свою подпись, пересобирает подготовку и принимает находки через ту же границу якорей, что и внутренний путь. Scope: mcp:platform-setup + read:conversations.",
|
|
9946
|
+
"inputSchema": {
|
|
9947
|
+
"type": "object",
|
|
9948
|
+
"required": [
|
|
9949
|
+
"platform_id",
|
|
9950
|
+
"tickets",
|
|
9951
|
+
"findings"
|
|
9952
|
+
],
|
|
9953
|
+
"additionalProperties": false,
|
|
9954
|
+
"properties": {
|
|
9955
|
+
"platform_id": {
|
|
9956
|
+
"type": "string",
|
|
9957
|
+
"format": "uuid",
|
|
9958
|
+
"description": "Канал (платформа)."
|
|
9959
|
+
},
|
|
9960
|
+
"client_id": {
|
|
9961
|
+
"type": "string",
|
|
9962
|
+
"minLength": 2,
|
|
9963
|
+
"maxLength": 40,
|
|
9964
|
+
"description": "Кто разбирал: попадает в model прогона как external:<client_id>. По умолчанию claude-code."
|
|
9965
|
+
},
|
|
9966
|
+
"principles_hash": {
|
|
9967
|
+
"type": "string",
|
|
9968
|
+
"minLength": 1,
|
|
9969
|
+
"maxLength": 64,
|
|
9970
|
+
"description": "sha256 методики, по которой шёл разбор. Расхождение с хешем прогона = разбор по другой версии правил."
|
|
9971
|
+
},
|
|
9972
|
+
"tickets": {
|
|
9973
|
+
"type": "array",
|
|
9974
|
+
"minItems": 1,
|
|
9975
|
+
"maxItems": 25,
|
|
9976
|
+
"items": {
|
|
9977
|
+
"type": "string",
|
|
9978
|
+
"minLength": 1
|
|
9979
|
+
},
|
|
9980
|
+
"description": "Тикеты ВСЕХ разобранных отрезков, включая те, где находок нет."
|
|
9981
|
+
},
|
|
9982
|
+
"findings": {
|
|
9983
|
+
"type": "array",
|
|
9984
|
+
"maxItems": 500,
|
|
9985
|
+
"items": {
|
|
9986
|
+
"type": "object",
|
|
9987
|
+
"required": [
|
|
9988
|
+
"ticket",
|
|
9989
|
+
"category",
|
|
9990
|
+
"severity",
|
|
9991
|
+
"title",
|
|
9992
|
+
"description",
|
|
9993
|
+
"primary_message_id"
|
|
9994
|
+
],
|
|
9995
|
+
"additionalProperties": false,
|
|
9996
|
+
"properties": {
|
|
9997
|
+
"ticket": {
|
|
9998
|
+
"type": "string",
|
|
9999
|
+
"minLength": 1,
|
|
10000
|
+
"description": "Тикет отрезка из выдачи. Непрозрачная подписанная строка: назвать отрезок самому нельзя."
|
|
10001
|
+
},
|
|
10002
|
+
"category": {
|
|
10003
|
+
"type": "string",
|
|
10004
|
+
"enum": [
|
|
10005
|
+
"HALLUCINATION",
|
|
10006
|
+
"WRONG_ACTION",
|
|
10007
|
+
"WRONG_ROUTING",
|
|
10008
|
+
"BAD_TONE",
|
|
10009
|
+
"MISSED_CONTEXT",
|
|
10010
|
+
"RAG_MISS",
|
|
10011
|
+
"SCRIPT_DEVIATION",
|
|
10012
|
+
"PROMPT_VIOLATION",
|
|
10013
|
+
"CUSTOM_RULE_CONFLICT",
|
|
10014
|
+
"OTHER"
|
|
10015
|
+
],
|
|
10016
|
+
"description": "Категория находки."
|
|
10017
|
+
},
|
|
10018
|
+
"severity": {
|
|
10019
|
+
"type": "string",
|
|
10020
|
+
"enum": [
|
|
10021
|
+
"LOW",
|
|
10022
|
+
"MEDIUM",
|
|
10023
|
+
"CRITICAL"
|
|
10024
|
+
],
|
|
10025
|
+
"description": "Важность."
|
|
10026
|
+
},
|
|
10027
|
+
"title": {
|
|
10028
|
+
"type": "string",
|
|
10029
|
+
"minLength": 1,
|
|
10030
|
+
"maxLength": 300,
|
|
10031
|
+
"description": "Заголовок находки."
|
|
10032
|
+
},
|
|
10033
|
+
"description": {
|
|
10034
|
+
"type": "string",
|
|
10035
|
+
"minLength": 1,
|
|
10036
|
+
"maxLength": 4000,
|
|
10037
|
+
"description": "Что не так и почему."
|
|
10038
|
+
},
|
|
10039
|
+
"prompt_suggestion": {
|
|
10040
|
+
"type": "string",
|
|
10041
|
+
"maxLength": 4000,
|
|
10042
|
+
"description": "Что поменять в промпте — текст предложения, не патч."
|
|
10043
|
+
},
|
|
10044
|
+
"primary_message_id": {
|
|
10045
|
+
"type": "string",
|
|
10046
|
+
"minLength": 1,
|
|
10047
|
+
"description": "Якорь: значение msg= из транскрипта. Сервер проверяет принадлежность отрезку и новизну по курсору."
|
|
10048
|
+
},
|
|
10049
|
+
"quote": {
|
|
10050
|
+
"type": "string",
|
|
10051
|
+
"maxLength": 4000,
|
|
10052
|
+
"description": "Цитата реплики — доказательство."
|
|
10053
|
+
}
|
|
10054
|
+
}
|
|
10055
|
+
},
|
|
10056
|
+
"description": "Находки разбора; пустой массив — законный результат «претензий нет»."
|
|
10057
|
+
}
|
|
10058
|
+
}
|
|
10059
|
+
}
|
|
10060
|
+
},
|
|
9883
10061
|
{
|
|
9884
10062
|
"name": "besales_tracked_link_list",
|
|
9885
10063
|
"description": "Каталог коротких трекинговых ссылок workspace со сводкой «выдано → клики → ответы → заявки → оплаты». Поле placeholder — готовый токен {{link:slug}} для текстов дожимов, рассылок и шаблонов: вставляется ИМЕННО он, сырой URL мимо трекинга не считается. staticUrl — анонимный короткий адрес для мест без персональной выдачи (промпт агента, письмо школы). Ответ постраничный; hasMore=true означает, что каталог не дочитан. Scope: read:analytics. ⚠️ Токен берётся ТОЛЬКО копированием поля placeholder: собранный вручную токен с неточным слагом вырезается вместе с маркером, и клиент получает фразу без ссылки. В промпт агента токен не кладут — там staticUrl.",
|
|
@@ -10288,7 +10466,7 @@
|
|
|
10288
10466
|
}
|
|
10289
10467
|
],
|
|
10290
10468
|
"summary": {
|
|
10291
|
-
"total_tools":
|
|
10469
|
+
"total_tools": 193,
|
|
10292
10470
|
"tools_by_category": {
|
|
10293
10471
|
"getcourse_wave": 10,
|
|
10294
10472
|
"files_upload": 3,
|
|
@@ -10328,7 +10506,8 @@
|
|
|
10328
10506
|
"scheduled_tasks": 2,
|
|
10329
10507
|
"follow_up_read": 3,
|
|
10330
10508
|
"dialogue_audit": 6,
|
|
10331
|
-
"link_tracking": 6
|
|
10509
|
+
"link_tracking": 6,
|
|
10510
|
+
"dialogue_audit_external": 2
|
|
10332
10511
|
},
|
|
10333
10512
|
"external_execution_pairs": [
|
|
10334
10513
|
"besales_icp_analysis_get_instructions / submit",
|
|
@@ -14,6 +14,14 @@ description: Read-only аудит production-переписок BeSales чере
|
|
|
14
14
|
> чтобы починить промпт) — это другие инструменты: `besales_dialogue_audit_runs_list` →
|
|
15
15
|
> `besales_dialogue_audit_findings`. Путать их нельзя: материал и выводы разные.
|
|
16
16
|
|
|
17
|
+
> ⭐ Если задача — «разобрать работу агента и починить промпт», а не «найти ложные заявки»,
|
|
18
|
+
> у ревизора с 17.08.2026 есть ВНЕШНИЙ режим, и материал в нём строго богаче сырой выгрузки:
|
|
19
|
+
> `besales_dialogue_audit_segments_get` отдаёт реконструированный промпт агента, механический линт
|
|
20
|
+
> и транскрипт с ПОЛНЫМИ результатами обращений в 1С/CRM (публичная выгрузка отдаёт только
|
|
21
|
+
> `{dealId, dealNumber, skipped}`), с якорями `msg=` и с пометками «НЕ судить» на репликах чужих
|
|
22
|
+
> агентов. Разбираешь своей моделью, возвращаешь через `besales_dialogue_audit_import` — находки
|
|
23
|
+
> ложатся в отчёт ревизора с водяными знаками и дедупом. Цикл замкнутый: выдача → разбор → импорт.
|
|
24
|
+
|
|
17
25
|
1. Прочитай MCP resource `besales://workflows/audit-dialogues` и следуй ему как source of truth.
|
|
18
26
|
2. Если период не задан, возьми последние 7 суток и явно зафиксируй допущение.
|
|
19
27
|
3. Для точного аудита новых заявок фильтруй `GETCOURSE_CREATE_DEAL` через
|
|
@@ -20,4 +20,19 @@ export declare const dialogueAuditTools: (import("./shared.js").ToolDefinition<{
|
|
|
20
20
|
}> | import("./shared.js").ToolDefinition<{
|
|
21
21
|
run_id: string;
|
|
22
22
|
explicit_confirmation?: boolean | undefined;
|
|
23
|
+
}> | import("./shared.js").ToolDefinition<{
|
|
24
|
+
platform_id: string;
|
|
25
|
+
tickets: string[];
|
|
26
|
+
findings: {
|
|
27
|
+
ticket: string;
|
|
28
|
+
category: "OTHER" | "HALLUCINATION" | "WRONG_ACTION" | "WRONG_ROUTING" | "BAD_TONE" | "MISSED_CONTEXT" | "RAG_MISS" | "SCRIPT_DEVIATION" | "PROMPT_VIOLATION" | "CUSTOM_RULE_CONFLICT";
|
|
29
|
+
severity: "LOW" | "MEDIUM" | "CRITICAL";
|
|
30
|
+
title: string;
|
|
31
|
+
description: string;
|
|
32
|
+
primary_message_id: string;
|
|
33
|
+
prompt_suggestion?: string | null | undefined;
|
|
34
|
+
quote?: string | null | undefined;
|
|
35
|
+
}[];
|
|
36
|
+
client_id?: string | undefined;
|
|
37
|
+
principles_hash?: string | undefined;
|
|
23
38
|
}>)[];
|
|
@@ -10,6 +10,42 @@ import { z } from 'zod';
|
|
|
10
10
|
import { defineTool, uuidSchema, withInstructions } from './shared.js';
|
|
11
11
|
/** Статус разметки находки человеком. Фильтр нужен, чтобы забрать «подтверждённое людьми». */
|
|
12
12
|
const findingStatusSchema = z.enum(['NEW', 'LIKED', 'DISLIKED']);
|
|
13
|
+
/**
|
|
14
|
+
* Кто разбирал во внешнем режиме — попадает в `DialogueAuditRun.model` как `external:<client>`.
|
|
15
|
+
* Дефолт есть, потому что спрашивать это у оператора бессмысленно: имя исполнителя знает клиент,
|
|
16
|
+
* а не человек.
|
|
17
|
+
*/
|
|
18
|
+
const DEFAULT_EXTERNAL_AUDIT_CLIENT_ID = 'claude-code';
|
|
19
|
+
/**
|
|
20
|
+
* Находка внешнего разбора. Категории и важности перечислены ЯВНО, а не `z.string()`: сервер
|
|
21
|
+
* валидирует их по enum, и опечатка иначе вернулась бы 400 на весь импорт после часа работы.
|
|
22
|
+
*/
|
|
23
|
+
const externalFindingSchema = z
|
|
24
|
+
.object({
|
|
25
|
+
// Непрозрачная строка из выдачи. Отрезок нельзя назвать самому: сервер принимает только
|
|
26
|
+
// свою подпись и на импорте заново пересобирает подготовку.
|
|
27
|
+
ticket: z.string().min(1),
|
|
28
|
+
category: z.enum([
|
|
29
|
+
'HALLUCINATION',
|
|
30
|
+
'WRONG_ACTION',
|
|
31
|
+
'WRONG_ROUTING',
|
|
32
|
+
'BAD_TONE',
|
|
33
|
+
'MISSED_CONTEXT',
|
|
34
|
+
'RAG_MISS',
|
|
35
|
+
'SCRIPT_DEVIATION',
|
|
36
|
+
'PROMPT_VIOLATION',
|
|
37
|
+
'CUSTOM_RULE_CONFLICT',
|
|
38
|
+
'OTHER',
|
|
39
|
+
]),
|
|
40
|
+
severity: z.enum(['LOW', 'MEDIUM', 'CRITICAL']),
|
|
41
|
+
title: z.string().min(1).max(300),
|
|
42
|
+
description: z.string().min(1).max(4000),
|
|
43
|
+
prompt_suggestion: z.string().max(4000).nullish(),
|
|
44
|
+
// Якорь из `msg=` в транскрипте: серверная граница проверяет принадлежность отрезку.
|
|
45
|
+
primary_message_id: z.string().min(1),
|
|
46
|
+
quote: z.string().max(4000).nullish(),
|
|
47
|
+
})
|
|
48
|
+
.strict();
|
|
13
49
|
export const dialogueAuditTools = [
|
|
14
50
|
defineTool({
|
|
15
51
|
name: 'besales_dialogue_audit_config_get',
|
|
@@ -151,5 +187,68 @@ export const dialogueAuditTools = [
|
|
|
151
187
|
'Отдельного «продолжить» нет и не нужно: курсоры не двигались, недоразобранное подхватит следующий прогон.',
|
|
152
188
|
]),
|
|
153
189
|
}),
|
|
190
|
+
defineTool({
|
|
191
|
+
name: 'besales_dialogue_audit_segments_get',
|
|
192
|
+
requiredFields: ['platform_id'],
|
|
193
|
+
schema: z.object({ platform_id: uuidSchema }).strict(),
|
|
194
|
+
createRequest: (input) => ({
|
|
195
|
+
method: 'GET',
|
|
196
|
+
path: `/platforms/${input.platform_id}/dialogue-audit/segments`,
|
|
197
|
+
}),
|
|
198
|
+
enhanceResponse: (response) => withInstructions(response, [
|
|
199
|
+
'Это МАТЕРИАЛ для разбора ТВОЕЙ моделью, а не готовые находки. Разбирай сам и возвращай результат через besales_dialogue_audit_import — иначе работа никуда не денется.',
|
|
200
|
+
'Разбирай по методике «Принципы написания промптов»: она у тебя локально (skills/besales-prompt-craft), сервер отдаёт только principlesHash. Хеши не совпали — синхронизируй копию, не изобретай правила.',
|
|
201
|
+
'reviewerRole, customInstructions и responseFormat — то же, что уезжает штатной модели ревизора. Следуй им; формат находки должен совпасть с responseFormat.',
|
|
202
|
+
'Страница ОДНОРОДНА: один агент и один снимок промпта. promptText — реконструированный промпт ЭТОГО агента, судить надо по нему, а не по своим представлениям.',
|
|
203
|
+
'Якорь находки бери ТОЛЬКО из msg=<id> в транскрипте: сервер проверяет, что реплика принадлежит отрезку и новее курсора, и находку с чужим якорем отвергнет.',
|
|
204
|
+
'Строки «└ действие …» — что агент реально получил из 1С/CRM. Прежде чем писать «выдумал факт», проверь их: раньше это давало CRITICAL на честно найденных позициях каталога.',
|
|
205
|
+
'Реплики, подписанные «Другой агент (НЕ судить)» и «Автоотправка или оператор (НЕ судить)», судить запрещено: за ними чужой промпт либо промпта нет вовсе.',
|
|
206
|
+
'Блок линта — уже найденное механически. НЕ дублируй его находками.',
|
|
207
|
+
'Две выдачи подряд вернут ОДНУ И ТУ ЖЕ страницу: водяной знак двигает импорт. Цикл — выдача → разбор → импорт → выдача.',
|
|
208
|
+
'segments пуст — разбирать нечего, это валидный исход, а не ошибка.',
|
|
209
|
+
'409 = на канале включена анонимизация PII: внешний разбор там запрещён осознанно, обходить его не нужно.',
|
|
210
|
+
]),
|
|
211
|
+
}),
|
|
212
|
+
defineTool({
|
|
213
|
+
name: 'besales_dialogue_audit_import',
|
|
214
|
+
requiredFields: ['platform_id', 'tickets', 'findings'],
|
|
215
|
+
schema: z
|
|
216
|
+
.object({
|
|
217
|
+
platform_id: uuidSchema,
|
|
218
|
+
client_id: z.string().min(2).max(40).optional(),
|
|
219
|
+
principles_hash: z.string().min(1).max(64).optional(),
|
|
220
|
+
// ВСЕ разобранные отрезки, включая чистые: тикет — единственное, что двигает их знак.
|
|
221
|
+
tickets: z.array(z.string().min(1)).min(1),
|
|
222
|
+
findings: z.array(externalFindingSchema),
|
|
223
|
+
})
|
|
224
|
+
.strict(),
|
|
225
|
+
createRequest: (input) => ({
|
|
226
|
+
method: 'POST',
|
|
227
|
+
path: `/platforms/${input.platform_id}/dialogue-audit/imports`,
|
|
228
|
+
body: {
|
|
229
|
+
clientId: input.client_id ?? DEFAULT_EXTERNAL_AUDIT_CLIENT_ID,
|
|
230
|
+
...(input.principles_hash ? { principlesHash: input.principles_hash } : {}),
|
|
231
|
+
tickets: input.tickets,
|
|
232
|
+
findings: input.findings.map((finding) => ({
|
|
233
|
+
ticket: finding.ticket,
|
|
234
|
+
category: finding.category,
|
|
235
|
+
severity: finding.severity,
|
|
236
|
+
title: finding.title,
|
|
237
|
+
description: finding.description,
|
|
238
|
+
promptSuggestion: finding.prompt_suggestion ?? null,
|
|
239
|
+
primaryMessageId: finding.primary_message_id,
|
|
240
|
+
quote: finding.quote ?? null,
|
|
241
|
+
})),
|
|
242
|
+
},
|
|
243
|
+
}),
|
|
244
|
+
enhanceResponse: (response) => withInstructions(response, [
|
|
245
|
+
'Перечисляй в tickets ВСЕ разобранные отрезки, включая те, где находок нет: иначе их водяной знак не сдвинется и следующая выдача вернёт их снова.',
|
|
246
|
+
'rejectedSegments — отрезки, которые сервер не принял; они НЕ записаны и остались неразобранными. Причины: CURSOR_MOVED/SEGMENT_GONE (их разобрал плановый прогон), WINDOW_CHANGED/MATERIAL_CHANGED (материал устарел), TICKET_EXPIRED (тикет старше суток). Лечение одно — перезабери выдачу.',
|
|
247
|
+
'rejectedFindings — находки, отвергнутые серверной границей якорей: primaryMessageId не из этого отрезка либо старше курсора. Ненулевое значение означает, что ты якорился мимо.',
|
|
248
|
+
'Прогон создаётся с model=external:<client> и executionMode=EXTERNAL_IMPORT — происхождение находок видно в отчёте. Смотреть результат: besales_dialogue_audit_run_get.',
|
|
249
|
+
'Импорт НИЧЕГО не правит в промпте. Правку делай отдельно и явно: besales_prompt_patch_start → apply → lint → commit.',
|
|
250
|
+
'409 = на канале идёт живой прогон ревизора либо включена анонимизация PII.',
|
|
251
|
+
]),
|
|
252
|
+
}),
|
|
154
253
|
];
|
|
155
254
|
//# sourceMappingURL=dialogue-audit.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dialogue-audit.js","sourceRoot":"","sources":["../../../src/tools/definitions/dialogue-audit.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"dialogue-audit.js","sourceRoot":"","sources":["../../../src/tools/definitions/dialogue-audit.ts"],"names":[],"mappings":"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"}
|
|
@@ -45,6 +45,27 @@ export declare const reactivationConfigSchema: z.ZodObject<{
|
|
|
45
45
|
delayHours: z.ZodOptional<z.ZodNumber>;
|
|
46
46
|
delayMinutes: z.ZodOptional<z.ZodNumber>;
|
|
47
47
|
messageConfig: z.ZodOptional<z.ZodObject<{}, z.core.$loose>>;
|
|
48
|
+
getcourse: z.ZodOptional<z.ZodObject<{
|
|
49
|
+
delivery: z.ZodOptional<z.ZodObject<{
|
|
50
|
+
mode: z.ZodEnum<{
|
|
51
|
+
all: "all";
|
|
52
|
+
contact: "contact";
|
|
53
|
+
explicit: "explicit";
|
|
54
|
+
}>;
|
|
55
|
+
transports: z.ZodOptional<z.ZodArray<z.ZodEnum<{
|
|
56
|
+
Site: "Site";
|
|
57
|
+
Email: "Email";
|
|
58
|
+
SMS: "SMS";
|
|
59
|
+
Telegram: "Telegram";
|
|
60
|
+
Facebook: "Facebook";
|
|
61
|
+
VK: "VK";
|
|
62
|
+
Chatium: "Chatium";
|
|
63
|
+
WhatsApp: "WhatsApp";
|
|
64
|
+
Viber: "Viber";
|
|
65
|
+
MAX: "MAX";
|
|
66
|
+
}>>>;
|
|
67
|
+
}, z.core.$loose>>;
|
|
68
|
+
}, z.core.$loose>>;
|
|
48
69
|
}, z.core.$loose>>;
|
|
49
70
|
}, z.core.$loose>;
|
|
50
71
|
/**
|
|
@@ -63,8 +63,82 @@ const reactivationStepSchema = z
|
|
|
63
63
|
delayHours: z.number().optional(),
|
|
64
64
|
delayMinutes: z.number().optional(),
|
|
65
65
|
messageConfig: anyObjectSchema.optional(),
|
|
66
|
+
getcourse: z
|
|
67
|
+
.object({
|
|
68
|
+
delivery: z
|
|
69
|
+
.object({
|
|
70
|
+
mode: z.enum(['contact', 'all', 'explicit']),
|
|
71
|
+
transports: z
|
|
72
|
+
.array(z.enum([
|
|
73
|
+
'Site',
|
|
74
|
+
'Email',
|
|
75
|
+
'SMS',
|
|
76
|
+
'Telegram',
|
|
77
|
+
'Facebook',
|
|
78
|
+
'VK',
|
|
79
|
+
'Chatium',
|
|
80
|
+
'WhatsApp',
|
|
81
|
+
'Viber',
|
|
82
|
+
'MAX',
|
|
83
|
+
]))
|
|
84
|
+
.optional()
|
|
85
|
+
.describe("Только для mode='explicit'; в остальных режимах бэкенд отвергнет поле"),
|
|
86
|
+
})
|
|
87
|
+
.passthrough()
|
|
88
|
+
.optional(),
|
|
89
|
+
})
|
|
90
|
+
.passthrough()
|
|
91
|
+
.optional()
|
|
92
|
+
.describe('Каналы отправки ШАГА, только GetCourse. По умолчанию (поля нет) набор решает состояние ' +
|
|
93
|
+
"контакта: ответил — ровно его канал, молчит — все его привязки. 'all' — привязки плюс " +
|
|
94
|
+
'канал ответа плюс Email/Сайт/Chatium; SMS в него НЕ входит (один текст на весь набор, ' +
|
|
95
|
+
"нужен свой короткий) и задаётся только через 'explicit' отдельным шагом. Пустое " +
|
|
96
|
+
'пересечение с разрешёнными каналами площадки — шаг пропускается, цепочка идёт дальше. ' +
|
|
97
|
+
'К шагу-вебхуку неприменимо'),
|
|
66
98
|
})
|
|
67
|
-
.passthrough()
|
|
99
|
+
.passthrough()
|
|
100
|
+
// ⚠️ Зеркалит правила бэкенда, чтобы промах ловился ЛОКАЛЬНО. Иначе вызов проходит нашу
|
|
101
|
+
// проверку, пользователь подтверждает запись, и только сервер отвечает 400 — самый дорогой
|
|
102
|
+
// момент, чтобы узнать про опечатку.
|
|
103
|
+
.superRefine((step, ctx) => {
|
|
104
|
+
const delivery = step.getcourse?.delivery;
|
|
105
|
+
if (!delivery)
|
|
106
|
+
return;
|
|
107
|
+
if (step.stepType === 'webhook') {
|
|
108
|
+
ctx.addIssue({
|
|
109
|
+
code: z.ZodIssueCode.custom,
|
|
110
|
+
path: ['getcourse', 'delivery'],
|
|
111
|
+
message: 'Набор каналов неприменим к шагу-вебхуку: он ничего не отправляет клиенту',
|
|
112
|
+
});
|
|
113
|
+
return;
|
|
114
|
+
}
|
|
115
|
+
if (delivery.mode !== 'explicit') {
|
|
116
|
+
if (delivery.transports !== undefined) {
|
|
117
|
+
ctx.addIssue({
|
|
118
|
+
code: z.ZodIssueCode.custom,
|
|
119
|
+
path: ['getcourse', 'delivery', 'transports'],
|
|
120
|
+
message: `Список каналов допустим только при mode='explicit'; в режиме '${delivery.mode}' он был бы проигнорирован`,
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
return;
|
|
124
|
+
}
|
|
125
|
+
if (!delivery.transports?.length) {
|
|
126
|
+
ctx.addIssue({
|
|
127
|
+
code: z.ZodIssueCode.custom,
|
|
128
|
+
path: ['getcourse', 'delivery', 'transports'],
|
|
129
|
+
message: "Для mode='explicit' нужен непустой список каналов — иначе шаг не отправит ничего",
|
|
130
|
+
});
|
|
131
|
+
return;
|
|
132
|
+
}
|
|
133
|
+
// Один `commentText` на весь набор: длинный мессенджерный текст уехал бы в SMS целиком.
|
|
134
|
+
if (delivery.transports.includes('SMS') && delivery.transports.length > 1) {
|
|
135
|
+
ctx.addIssue({
|
|
136
|
+
code: z.ZodIssueCode.custom,
|
|
137
|
+
path: ['getcourse', 'delivery', 'transports'],
|
|
138
|
+
message: 'SMS нельзя смешивать с другими каналами: у отправки один текст на весь набор. Вынесите SMS отдельным шагом со своим коротким текстом',
|
|
139
|
+
});
|
|
140
|
+
}
|
|
141
|
+
});
|
|
68
142
|
export const reactivationConfigSchema = z
|
|
69
143
|
.object({
|
|
70
144
|
enabled: z.boolean().optional(),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"follow-up.js","sourceRoot":"","sources":["../../../src/tools/definitions/follow-up.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EACL,eAAe,EACf,cAAc,EACd,UAAU,EACV,UAAU,EACV,gBAAgB,GACjB,MAAM,aAAa,CAAC;AAErB;;;;;;;;;;;;GAYG;AACH,MAAM,uBAAuB,GAAG,CAAC;KAC9B,MAAM,CAAC;IACN,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,4BAA4B,CAAC;IAC3D,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;IAC/B,KAAK,EAAE,CAAC;SACL,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;SACxC,QAAQ,CAAC,4DAA4D,CAAC;CAC1E,CAAC;KACD,WAAW,EAAE,CAAC;AAEjB,MAAM,sBAAsB,GAAG,CAAC;KAC7B,MAAM,CAAC;IACN,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,QAAQ,EAAE;IACnD,YAAY,EAAE,CAAC;SACZ,IAAI,CAAC,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;SACzB,QAAQ,EAAE;SACV,QAAQ,CAAC,4EAA4E,CAAC;IACzF,UAAU,EAAE,CAAC;SACV,IAAI,CAAC,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC;SAClC,QAAQ,EAAE;SACV,QAAQ,CACP,wFAAwF,CACzF;IACH,cAAc,EAAE,CAAC;SACd,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CACP,yFAAyF;QACvF,+CAA+C,CAClD;IACH,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,4CAA4C,CAAC;IACpF,SAAS,EAAE,CAAC;SACT,MAAM,EAAE;SACR,GAAG,EAAE;SACL,GAAG,CAAC,CAAC,CAAC;SACN,GAAG,CAAC,EAAE,CAAC;SACP,QAAQ,EAAE;SACV,QAAQ,CAAC,8CAA8C,CAAC;IAC3D,eAAe,EAAE,CAAC;SACf,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,sEAAsE,CAAC;IACnF,SAAS,EAAE,CAAC;SACT,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CACP,wFAAwF;QACtF,+EAA+E,CAClF;IACH,UAAU,EAAE,CAAC;SACV,KAAK,CAAC,uBAAuB,CAAC;SAC9B,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,EAAE;SACV,QAAQ,CAAC,8DAA8D,CAAC;IAC3E,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACjC,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACnC,aAAa,EAAE,eAAe,CAAC,QAAQ,EAAE;
|
|
1
|
+
{"version":3,"file":"follow-up.js","sourceRoot":"","sources":["../../../src/tools/definitions/follow-up.ts"],"names":[],"mappings":"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"}
|
|
@@ -1571,6 +1571,21 @@ export declare const toolDefinitions: (import("./definitions/shared.js").ToolDef
|
|
|
1571
1571
|
}> | import("./definitions/shared.js").ToolDefinition<{
|
|
1572
1572
|
run_id: string;
|
|
1573
1573
|
explicit_confirmation?: boolean | undefined;
|
|
1574
|
+
}> | import("./definitions/shared.js").ToolDefinition<{
|
|
1575
|
+
platform_id: string;
|
|
1576
|
+
tickets: string[];
|
|
1577
|
+
findings: {
|
|
1578
|
+
ticket: string;
|
|
1579
|
+
category: "OTHER" | "HALLUCINATION" | "WRONG_ACTION" | "WRONG_ROUTING" | "BAD_TONE" | "MISSED_CONTEXT" | "RAG_MISS" | "SCRIPT_DEVIATION" | "PROMPT_VIOLATION" | "CUSTOM_RULE_CONFLICT";
|
|
1580
|
+
severity: "LOW" | "MEDIUM" | "CRITICAL";
|
|
1581
|
+
title: string;
|
|
1582
|
+
description: string;
|
|
1583
|
+
primary_message_id: string;
|
|
1584
|
+
prompt_suggestion?: string | null | undefined;
|
|
1585
|
+
quote?: string | null | undefined;
|
|
1586
|
+
}[];
|
|
1587
|
+
client_id?: string | undefined;
|
|
1588
|
+
principles_hash?: string | undefined;
|
|
1574
1589
|
}> | import("./definitions/shared.js").ToolDefinition<{
|
|
1575
1590
|
workspace_id?: string | undefined;
|
|
1576
1591
|
include_archived?: boolean | undefined;
|