@besales/mcp 0.38.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 +8 -5
- package/dist/schemas/mcp-tools.json +459 -53
- 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/link-tracking.d.ts +34 -0
- package/dist/tools/definitions/link-tracking.js +200 -0
- package/dist/tools/definitions/link-tracking.js.map +1 -0
- package/dist/tools/definitions.d.ts +48 -0
- package/dist/tools/definitions.js +2 -0
- package/dist/tools/definitions.js.map +1 -1
- package/package.json +1 -1
|
@@ -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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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
export declare const linkTrackingTools: (import("./shared.js").ToolDefinition<{
|
|
2
|
+
workspace_id?: string | undefined;
|
|
3
|
+
include_archived?: boolean | undefined;
|
|
4
|
+
days?: number | undefined;
|
|
5
|
+
limit?: number | undefined;
|
|
6
|
+
offset?: number | undefined;
|
|
7
|
+
}> | import("./shared.js").ToolDefinition<{
|
|
8
|
+
name: string;
|
|
9
|
+
slug: string;
|
|
10
|
+
target_url: string;
|
|
11
|
+
workspace_id?: string | undefined;
|
|
12
|
+
product_code?: string | undefined;
|
|
13
|
+
}> | import("./shared.js").ToolDefinition<{
|
|
14
|
+
link_id: string;
|
|
15
|
+
workspace_id?: string | undefined;
|
|
16
|
+
name?: string | undefined;
|
|
17
|
+
target_url?: string | undefined;
|
|
18
|
+
product_code?: string | undefined;
|
|
19
|
+
restore?: true | undefined;
|
|
20
|
+
}> | import("./shared.js").ToolDefinition<{
|
|
21
|
+
link_id: string;
|
|
22
|
+
explicit_confirmation: true;
|
|
23
|
+
workspace_id?: string | undefined;
|
|
24
|
+
}> | import("./shared.js").ToolDefinition<{
|
|
25
|
+
link_id: string;
|
|
26
|
+
workspace_id?: string | undefined;
|
|
27
|
+
days?: number | undefined;
|
|
28
|
+
}> | import("./shared.js").ToolDefinition<{
|
|
29
|
+
link_id: string;
|
|
30
|
+
workspace_id?: string | undefined;
|
|
31
|
+
days?: number | undefined;
|
|
32
|
+
page?: number | undefined;
|
|
33
|
+
page_size?: number | undefined;
|
|
34
|
+
}>)[];
|
|
@@ -0,0 +1,200 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { buildListQuery, compactObject, defineTool, uuidSchema, withInstructions } from './shared.js';
|
|
3
|
+
const NAME_MAX_LENGTH = 200;
|
|
4
|
+
const TARGET_URL_MAX_LENGTH = 2048;
|
|
5
|
+
const PRODUCT_CODE_MAX_LENGTH = 64;
|
|
6
|
+
/** Форма слага — паритет с `CreateTrackedLinkDto`: латиница, цифры, дефис, подчёркивание. */
|
|
7
|
+
const SLUG_PATTERN = /^[a-zA-Z0-9_-]{1,64}$/;
|
|
8
|
+
/** Потолок глубины аналитики — паритет с `LINK_ANALYTICS_MAX_DAYS`. */
|
|
9
|
+
const ANALYTICS_MAX_DAYS = 366;
|
|
10
|
+
/** Потолок страницы каталога и ленты кликов — паритет с `LINK_CATALOG_PAGE_SIZE_MAX`. */
|
|
11
|
+
const PAGE_SIZE_MAX = 200;
|
|
12
|
+
/** Схемы целевого адреса — паритет с `LINK_ALLOWED_PROTOCOLS`. */
|
|
13
|
+
const ALLOWED_TARGET_PROTOCOLS = ['http:', 'https:'];
|
|
14
|
+
const slugSchema = z
|
|
15
|
+
.string()
|
|
16
|
+
.regex(SLUG_PATTERN, 'slug: латиница, цифры, дефис и подчёркивание, до 64 символов');
|
|
17
|
+
/**
|
|
18
|
+
* Целевой адрес обязан быть абсолютным http(s). Проверяем здесь, а не только на бэкенде:
|
|
19
|
+
* `javascript:`-адрес через наш общий домен — это фишинг, и узнавать о запрете из 400-й
|
|
20
|
+
* после того, как агент уже сочинил каталог ссылок, дороже, чем отвергнуть на входе.
|
|
21
|
+
*
|
|
22
|
+
* ⚠️ Разбираем `new URL()`, а не сверяем префикс: бэкендский `isAllowedTargetUrl` устроен
|
|
23
|
+
* именно так, и проверка префиксом принимала бы `http://` без хоста — значение, которое
|
|
24
|
+
* клиент считает валидным, а сервер отвергает 400-й.
|
|
25
|
+
*/
|
|
26
|
+
const targetUrlSchema = z
|
|
27
|
+
.string()
|
|
28
|
+
.max(TARGET_URL_MAX_LENGTH)
|
|
29
|
+
.refine((value) => {
|
|
30
|
+
try {
|
|
31
|
+
return ALLOWED_TARGET_PROTOCOLS.includes(new URL(value).protocol);
|
|
32
|
+
}
|
|
33
|
+
catch {
|
|
34
|
+
return false;
|
|
35
|
+
}
|
|
36
|
+
}, { message: 'target_url должен быть абсолютным http(s)-адресом' });
|
|
37
|
+
const daysSchema = z.number().int().min(1).max(ANALYTICS_MAX_DAYS);
|
|
38
|
+
export const linkTrackingTools = [
|
|
39
|
+
defineTool({
|
|
40
|
+
name: 'besales_tracked_link_list',
|
|
41
|
+
requiredFields: [],
|
|
42
|
+
defaultWorkspaceId: true,
|
|
43
|
+
schema: z
|
|
44
|
+
.object({
|
|
45
|
+
workspace_id: uuidSchema.optional(),
|
|
46
|
+
include_archived: z.boolean().optional(),
|
|
47
|
+
days: daysSchema.optional(),
|
|
48
|
+
limit: z.number().int().min(1).max(PAGE_SIZE_MAX).optional(),
|
|
49
|
+
offset: z.number().int().min(0).optional(),
|
|
50
|
+
})
|
|
51
|
+
.strict(),
|
|
52
|
+
createRequest: (input) => ({
|
|
53
|
+
method: 'GET',
|
|
54
|
+
path: `/workspaces/${input.workspace_id}/tracked-links${buildListQuery({
|
|
55
|
+
includeArchived: input.include_archived,
|
|
56
|
+
days: input.days,
|
|
57
|
+
limit: input.limit,
|
|
58
|
+
offset: input.offset,
|
|
59
|
+
})}`,
|
|
60
|
+
}),
|
|
61
|
+
enhanceResponse: (response) => withInstructions(response, [
|
|
62
|
+
'Каталог коротких ссылок воркспейса со сводкой «выдано → клики → ответы → заявки → оплаты».',
|
|
63
|
+
'Поле placeholder — готовый токен ссылки. Копируй его ДОСЛОВНО в текст дожима, рассылки или шаблона; сырой URL мимо каталога не трекается.',
|
|
64
|
+
'⚠️ Токен не пиши руками и не подставляй в него свой слаг: несуществующий слаг вырезается вместе с маркером, и клиент получит фразу ВООБЩЕ без ссылки — молча, только с ошибкой в логах. В промпт агента токен не клади вовсе (модель воспроизведёт его неточно) — там используй staticUrl.',
|
|
65
|
+
'staticUrl — анонимный короткий адрес для мест, где персональной выдачи нет: промпт агента (модель не воспроизведёт токен дословно), письмо школы, подпись вложения. Клики по нему считаются без привязки к человеку.',
|
|
66
|
+
'hasMore=true означает, что каталог не дочитан: увеличивай offset. Вывод «такого слага нет» по неполной странице недействителен.',
|
|
67
|
+
'Архивные ссылки по умолчанию скрыты — чтобы их увидеть, передай include_archived=true. Их слаги ЗАНЯТЫ: создание с тем же слагом даст 409. При include_archived=true архивные идут ПЕРВЫМИ.',
|
|
68
|
+
]),
|
|
69
|
+
}),
|
|
70
|
+
defineTool({
|
|
71
|
+
name: 'besales_tracked_link_create',
|
|
72
|
+
requiredFields: ['name', 'slug', 'target_url'],
|
|
73
|
+
defaultWorkspaceId: true,
|
|
74
|
+
schema: z
|
|
75
|
+
.object({
|
|
76
|
+
workspace_id: uuidSchema.optional(),
|
|
77
|
+
name: z.string().trim().min(1).max(NAME_MAX_LENGTH),
|
|
78
|
+
slug: slugSchema,
|
|
79
|
+
target_url: targetUrlSchema,
|
|
80
|
+
product_code: z.string().max(PRODUCT_CODE_MAX_LENGTH).optional(),
|
|
81
|
+
})
|
|
82
|
+
.strict(),
|
|
83
|
+
createRequest: (input) => ({
|
|
84
|
+
method: 'POST',
|
|
85
|
+
path: `/workspaces/${input.workspace_id}/tracked-links`,
|
|
86
|
+
body: compactObject({
|
|
87
|
+
name: input.name,
|
|
88
|
+
slug: input.slug,
|
|
89
|
+
targetUrl: input.target_url,
|
|
90
|
+
productCode: input.product_code,
|
|
91
|
+
}),
|
|
92
|
+
}),
|
|
93
|
+
enhanceResponse: (response) => withInstructions(response, [
|
|
94
|
+
'Ссылка заведена. Возьми из ответа поле placeholder и вставь его в тексты ДОСЛОВНО — сырой URL мимо каталога не трекается, а собранный вручную токен с неточным слагом вырежется, и клиент получит фразу без ссылки.',
|
|
95
|
+
'Слаг НЕИЗМЕНЯЕМ: он уходит в отправленные сообщения. Выбирай осмысленный и стабильный (например shzh-w1-15), переименовать потом можно только name.',
|
|
96
|
+
'409 означает, что слаг занят — возможно, АРХИВНОЙ ссылкой. Тогда не выдумывай новый слаг: найди её через besales_tracked_link_list(include_archived=true) и восстанови besales_tracked_link_update(restore=true).',
|
|
97
|
+
]),
|
|
98
|
+
}),
|
|
99
|
+
defineTool({
|
|
100
|
+
name: 'besales_tracked_link_update',
|
|
101
|
+
requiredFields: ['link_id'],
|
|
102
|
+
defaultWorkspaceId: true,
|
|
103
|
+
schema: z
|
|
104
|
+
.object({
|
|
105
|
+
workspace_id: uuidSchema.optional(),
|
|
106
|
+
link_id: uuidSchema,
|
|
107
|
+
name: z.string().trim().min(1).max(NAME_MAX_LENGTH).optional(),
|
|
108
|
+
target_url: targetUrlSchema.optional(),
|
|
109
|
+
product_code: z.string().max(PRODUCT_CODE_MAX_LENGTH).optional(),
|
|
110
|
+
restore: z.literal(true).optional(),
|
|
111
|
+
})
|
|
112
|
+
.strict()
|
|
113
|
+
.refine((input) => input.name !== undefined ||
|
|
114
|
+
input.target_url !== undefined ||
|
|
115
|
+
input.product_code !== undefined ||
|
|
116
|
+
input.restore !== undefined, { message: 'Передай хотя бы одно поле для изменения' }),
|
|
117
|
+
createRequest: (input) => ({
|
|
118
|
+
method: 'PATCH',
|
|
119
|
+
path: `/workspaces/${input.workspace_id}/tracked-links/${input.link_id}`,
|
|
120
|
+
body: compactObject({
|
|
121
|
+
name: input.name,
|
|
122
|
+
targetUrl: input.target_url,
|
|
123
|
+
productCode: input.product_code,
|
|
124
|
+
restore: input.restore,
|
|
125
|
+
}),
|
|
126
|
+
}),
|
|
127
|
+
enhanceResponse: (response) => withInstructions(response, [
|
|
128
|
+
'⚠️ Правка target_url действует ТОЛЬКО ВПЕРЁД, и это три разных случая. Персональные коды, УЖЕ ушедшие людям, остаются на СТАРОМ адресе: каждая выдача хранит снимок адреса на момент отправки, и резолвер читает именно его. Новые выдачи получат новый адрес. Анонимный staticUrl переключается на новый адрес сразу.',
|
|
129
|
+
'Отсюда следствие: правкой target_url НЕЛЬЗЯ перенаправить тех, кому ссылка уже отправлена, — для этого нужна новая ссылка в новом тексте. Снимок ещё и делает отчёты доказуемыми: видно, куда вело конкретное сообщение.',
|
|
130
|
+
'Поля ответа сюда не копируются: slug неизменяем, а archivedAt не поле записи — снятие из архива это restore=true, архивация — besales_tracked_link_archive. Счётчики (issued/clicked/...) и placeholder/staticUrl только читаются.',
|
|
131
|
+
]),
|
|
132
|
+
}),
|
|
133
|
+
defineTool({
|
|
134
|
+
name: 'besales_tracked_link_archive',
|
|
135
|
+
requiredFields: ['link_id', 'explicit_confirmation'],
|
|
136
|
+
defaultWorkspaceId: true,
|
|
137
|
+
schema: z
|
|
138
|
+
.object({
|
|
139
|
+
workspace_id: uuidSchema.optional(),
|
|
140
|
+
link_id: uuidSchema,
|
|
141
|
+
explicit_confirmation: z.literal(true),
|
|
142
|
+
})
|
|
143
|
+
.strict(),
|
|
144
|
+
createRequest: (input) => ({
|
|
145
|
+
method: 'DELETE',
|
|
146
|
+
path: `/workspaces/${input.workspace_id}/tracked-links/${input.link_id}`,
|
|
147
|
+
}),
|
|
148
|
+
enhanceResponse: (response) => withInstructions(response, [
|
|
149
|
+
'Это АРХИВАЦИЯ, а не удаление: hard-delete у ссылок отсутствует в принципе. Код уже лежит в отправленных людям сообщениях, и удаление превратило бы живую ссылку в 404.',
|
|
150
|
+
'Архивная ссылка перестаёт подставляться в новые тексты, но её код продолжает резолвиться, клики продолжают считаться, а слаг остаётся занятым.',
|
|
151
|
+
'Восстановление — besales_tracked_link_update(restore=true). explicit_confirmation=true передавай только после явного подтверждения пользователя.',
|
|
152
|
+
]),
|
|
153
|
+
}),
|
|
154
|
+
defineTool({
|
|
155
|
+
name: 'besales_tracked_link_breakdown',
|
|
156
|
+
requiredFields: ['link_id'],
|
|
157
|
+
defaultWorkspaceId: true,
|
|
158
|
+
schema: z
|
|
159
|
+
.object({
|
|
160
|
+
workspace_id: uuidSchema.optional(),
|
|
161
|
+
link_id: uuidSchema,
|
|
162
|
+
days: daysSchema.optional(),
|
|
163
|
+
})
|
|
164
|
+
.strict(),
|
|
165
|
+
createRequest: (input) => ({
|
|
166
|
+
method: 'GET',
|
|
167
|
+
path: `/workspaces/${input.workspace_id}/tracked-links/${input.link_id}/breakdown${buildListQuery({ days: input.days })}`,
|
|
168
|
+
}),
|
|
169
|
+
enhanceResponse: (response) => withInstructions(response, [
|
|
170
|
+
'Разрез одной ссылки по источникам выдачи: WAVE (волна), FOLLOWUP (дожим), CAMPAIGN (кампания), GREETING (приветствие), AGENT (обычный ответ агента).',
|
|
171
|
+
'sourceId у волны пуст: welcome запускается переходом сделки, а не джобом импорта, поэтому разрез отвечает «после волны», но не «после какой именно».',
|
|
172
|
+
'Оплата атрибутируется last-touch по ближайшему клику, поэтому суммы по разным ссылкам не складываются в общую выручку дважды.',
|
|
173
|
+
]),
|
|
174
|
+
}),
|
|
175
|
+
defineTool({
|
|
176
|
+
name: 'besales_tracked_link_clicks',
|
|
177
|
+
requiredFields: ['link_id'],
|
|
178
|
+
defaultWorkspaceId: true,
|
|
179
|
+
schema: z
|
|
180
|
+
.object({
|
|
181
|
+
workspace_id: uuidSchema.optional(),
|
|
182
|
+
link_id: uuidSchema,
|
|
183
|
+
days: daysSchema.optional(),
|
|
184
|
+
page: z.number().int().min(1).optional(),
|
|
185
|
+
page_size: z.number().int().min(1).max(PAGE_SIZE_MAX).optional(),
|
|
186
|
+
})
|
|
187
|
+
.strict(),
|
|
188
|
+
createRequest: (input) => ({
|
|
189
|
+
method: 'GET',
|
|
190
|
+
path: `/workspaces/${input.workspace_id}/tracked-links/${input.link_id}/clicks${buildListQuery({ days: input.days, page: input.page, pageSize: input.page_size })}`,
|
|
191
|
+
}),
|
|
192
|
+
enhanceResponse: (response) => withInstructions(response, [
|
|
193
|
+
'Лента переходов живых людей: контакт, сообщение, источник, время. Клики-предпросмотры мессенджеров отсеяны и сюда не попадают.',
|
|
194
|
+
'⚠️ Анонимные переходы по staticUrl В ЛЕНТЕ ЕСТЬ — строками, где chatUserId, contactName, messageId, issuedAt и sourceKind равны null. Это не битый ответ: у анонимного кода человека нет по построению. Не считай такие строки людьми; их суммарное число отдельно лежит в каталоге полем anonymousClicks.',
|
|
195
|
+
'⚠️ total — это число КЛИКОВ (включая повторные и анонимные), а поле clicked в каталоге — число ВЫДАЧ с первым живым кликом. Величины разные, сходиться не обязаны и по-разному отвечают на «сколько человек перешло».',
|
|
196
|
+
'Для следующей страницы увеличивай page; максимальный page_size — 200.',
|
|
197
|
+
]),
|
|
198
|
+
}),
|
|
199
|
+
];
|
|
200
|
+
//# sourceMappingURL=link-tracking.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"link-tracking.js","sourceRoot":"","sources":["../../../src/tools/definitions/link-tracking.ts"],"names":[],"mappings":"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"}
|
|
@@ -1571,6 +1571,54 @@ 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;
|
|
1589
|
+
}> | import("./definitions/shared.js").ToolDefinition<{
|
|
1590
|
+
workspace_id?: string | undefined;
|
|
1591
|
+
include_archived?: boolean | undefined;
|
|
1592
|
+
days?: number | undefined;
|
|
1593
|
+
limit?: number | undefined;
|
|
1594
|
+
offset?: number | undefined;
|
|
1595
|
+
}> | import("./definitions/shared.js").ToolDefinition<{
|
|
1596
|
+
name: string;
|
|
1597
|
+
slug: string;
|
|
1598
|
+
target_url: string;
|
|
1599
|
+
workspace_id?: string | undefined;
|
|
1600
|
+
product_code?: string | undefined;
|
|
1601
|
+
}> | import("./definitions/shared.js").ToolDefinition<{
|
|
1602
|
+
link_id: string;
|
|
1603
|
+
workspace_id?: string | undefined;
|
|
1604
|
+
name?: string | undefined;
|
|
1605
|
+
target_url?: string | undefined;
|
|
1606
|
+
product_code?: string | undefined;
|
|
1607
|
+
restore?: true | undefined;
|
|
1608
|
+
}> | import("./definitions/shared.js").ToolDefinition<{
|
|
1609
|
+
link_id: string;
|
|
1610
|
+
explicit_confirmation: true;
|
|
1611
|
+
workspace_id?: string | undefined;
|
|
1612
|
+
}> | import("./definitions/shared.js").ToolDefinition<{
|
|
1613
|
+
link_id: string;
|
|
1614
|
+
workspace_id?: string | undefined;
|
|
1615
|
+
days?: number | undefined;
|
|
1616
|
+
}> | import("./definitions/shared.js").ToolDefinition<{
|
|
1617
|
+
link_id: string;
|
|
1618
|
+
workspace_id?: string | undefined;
|
|
1619
|
+
days?: number | undefined;
|
|
1620
|
+
page?: number | undefined;
|
|
1621
|
+
page_size?: number | undefined;
|
|
1574
1622
|
}> | import("./definitions/shared.js").ToolDefinition<{
|
|
1575
1623
|
platform_id: string;
|
|
1576
1624
|
type: "DIALOGUE_ANALYSIS";
|