@besales/mcp 1.0.0-beta.2 → 1.0.0-beta.5

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.
Files changed (73) hide show
  1. package/README.md +14 -3
  2. package/dist/http/api-client.d.ts +10 -0
  3. package/dist/http/api-client.js +2 -1
  4. package/dist/http/api-client.js.map +1 -1
  5. package/dist/resources/concepts/triggers.md +35 -0
  6. package/dist/resources/docs/platforms.md +58 -0
  7. package/dist/schemas/mcp-tools.json +892 -40
  8. package/dist/tools/definitions/agent-design.d.ts +5 -5
  9. package/dist/tools/definitions/ai-costs.d.ts +1 -1
  10. package/dist/tools/definitions/api-tool-request.d.ts +4 -2
  11. package/dist/tools/definitions/broadcast-analytics.d.ts +1 -1
  12. package/dist/tools/definitions/crm-platform.d.ts +5 -2
  13. package/dist/tools/definitions/crm-platform.js +30 -0
  14. package/dist/tools/definitions/crm-platform.js.map +1 -1
  15. package/dist/tools/definitions/dialogue-export.d.ts +1 -1
  16. package/dist/tools/definitions/dialogue-nudge.d.ts +7 -0
  17. package/dist/tools/definitions/dialogue-nudge.js +139 -0
  18. package/dist/tools/definitions/dialogue-nudge.js.map +1 -0
  19. package/dist/tools/definitions/dialogue-reprocess.d.ts +5 -0
  20. package/dist/tools/definitions/dialogue-reprocess.js +107 -0
  21. package/dist/tools/definitions/dialogue-reprocess.js.map +1 -0
  22. package/dist/tools/definitions/follow-up.d.ts +1 -1
  23. package/dist/tools/definitions/funnel-analytics.d.ts +1 -1
  24. package/dist/tools/definitions/getcourse-cold-welcome.js +18 -7
  25. package/dist/tools/definitions/getcourse-cold-welcome.js.map +1 -1
  26. package/dist/tools/definitions/knowledge.d.ts +1 -1
  27. package/dist/tools/definitions/model-comparison.d.ts +1 -1
  28. package/dist/tools/definitions/platform-setup-wave.d.ts +1 -1
  29. package/dist/tools/definitions/platform-setup.d.ts +12 -1
  30. package/dist/tools/definitions/shared.d.ts +5 -0
  31. package/dist/tools/definitions/shared.js.map +1 -1
  32. package/dist/tools/definitions/task-state.d.ts +4 -4
  33. package/dist/tools/definitions/telegram-personal-management.d.ts +34 -0
  34. package/dist/tools/definitions/telegram-personal-management.js +139 -0
  35. package/dist/tools/definitions/telegram-personal-management.js.map +1 -0
  36. package/dist/tools/definitions/telegram-personal-profile.d.ts +24 -0
  37. package/dist/tools/definitions/telegram-personal-profile.js +154 -0
  38. package/dist/tools/definitions/telegram-personal-profile.js.map +1 -0
  39. package/dist/tools/definitions/telegram-personal-restrictions.d.ts +19 -0
  40. package/dist/tools/definitions/telegram-personal-restrictions.js +109 -0
  41. package/dist/tools/definitions/telegram-personal-restrictions.js.map +1 -0
  42. package/dist/tools/definitions/telegram-pool-policy.d.ts +1 -1
  43. package/dist/tools/definitions/trigger-upsert.tool.d.ts +12 -0
  44. package/dist/tools/definitions/trigger-upsert.tool.js +38 -1
  45. package/dist/tools/definitions/trigger-upsert.tool.js.map +1 -1
  46. package/dist/tools/definitions.d.ts +117 -25
  47. package/dist/tools/definitions.js +10 -0
  48. package/dist/tools/definitions.js.map +1 -1
  49. package/dist/tools/follow-up-request.js +3 -0
  50. package/dist/tools/follow-up-request.js.map +1 -1
  51. package/dist/tools/registry-mapping-primary.cases.js +12 -0
  52. package/dist/tools/registry-mapping-primary.cases.js.map +1 -1
  53. package/dist/tools/registry-mapping.cases.js +230 -0
  54. package/dist/tools/registry-mapping.cases.js.map +1 -1
  55. package/dist/tools/registry-test-fixtures.js +5 -1
  56. package/dist/tools/registry-test-fixtures.js.map +1 -1
  57. package/dist/tools/registry.js +3 -1
  58. package/dist/tools/registry.js.map +1 -1
  59. package/dist/types/api-contract.gen.d.ts +81138 -55369
  60. package/docs/dialogue-nudge.md +50 -0
  61. package/docs/dialogue-reprocess.md +37 -0
  62. package/docs/modules/besales-mcp.md +7 -0
  63. package/docs/telegram-personal-management.md +100 -0
  64. package/docs/telegram-personal-restrictions.md +87 -0
  65. package/package.json +1 -1
  66. package/scripts/getcourse-text-source.spec.mjs +110 -0
  67. package/scripts/shipped-sample.mjs +3 -0
  68. package/scripts/sync-trigger-argument-schema.mjs +10 -34
  69. package/scripts/sync-trigger-argument-schema.spec.mjs +91 -0
  70. package/scripts/sync-trigger-event-schema.mjs +20 -0
  71. package/scripts/sync-trigger-task-schema.mjs +45 -0
  72. package/scripts/telegram-personal-confirmation-mutants.mjs +74 -0
  73. package/scripts/telegram-personal-profile-mutants.mjs +96 -0
@@ -0,0 +1,154 @@
1
+ import { z } from 'zod';
2
+ import { defineTool, uuidSchema, withInstructions } from './shared.js';
3
+ import { compactObject } from './shared-input.helpers.js';
4
+ // Границы зеркалят DTO ядра (telegram-personal-profile.dto.ts, telegram-personal-usernames.ts):
5
+ // мост не строже ядра там, где решает ферма номеров.
6
+ const MAX_ACCOUNTS = 100;
7
+ const BIO_MAX_LENGTH = 140;
8
+ const USERNAME_PATTERN = /^(?!.*__)[A-Za-z][A-Za-z0-9_]{3,30}[A-Za-z0-9]$/u;
9
+ const username = z.string().min(5).max(32).regex(USERNAME_PATTERN);
10
+ const birthday = z
11
+ .object({
12
+ day: z.int().min(1).max(31),
13
+ month: z.int().min(1).max(12),
14
+ year: z.int().min(1).max(9999).optional(),
15
+ })
16
+ .strict();
17
+ const shape = {
18
+ workspace_id: uuidSchema.optional(),
19
+ channel_id: uuidSchema,
20
+ account_ids: z
21
+ .array(z.uuidv4())
22
+ .min(1)
23
+ .max(MAX_ACCOUNTS)
24
+ .refine((ids) => new Set(ids.map((id) => id.toLowerCase())).size === ids.length, 'Список номеров не должен содержать дубли')
25
+ .optional(),
26
+ all: z.literal(true).optional(),
27
+ first_name: z.string().max(64).optional(),
28
+ last_name: z.string().max(64).optional(),
29
+ bio: z
30
+ .string()
31
+ .refine((value) => Array.from(value).length <= BIO_MAX_LENGTH, `Описание — не больше ${BIO_MAX_LENGTH} знаков`)
32
+ .optional(),
33
+ birthday: birthday.nullable().optional(),
34
+ usernames: z
35
+ .array(z.object({ account_id: z.uuidv4(), username }).strict())
36
+ .min(1)
37
+ .max(MAX_ACCOUNTS)
38
+ .optional(),
39
+ username_base: username.optional(),
40
+ idempotency_key: z
41
+ .string()
42
+ .min(1)
43
+ .max(200)
44
+ .regex(/^[\x21-\x7e]+$/u),
45
+ };
46
+ /** Правила режимов повторяют bulkUsernameMode ядра: нарушение отвергается до HTTP. */
47
+ function checkProfileBulk(input, ctx) {
48
+ const refuse = (path, message) => ctx.addIssue({ code: 'custom', path: [path], message });
49
+ if (input.usernames !== undefined) {
50
+ if (input.username_base !== undefined) {
51
+ refuse('username_base', 'Ники — ровно один режим: usernames по номерам или username_base, но не оба сразу');
52
+ }
53
+ if (input.account_ids !== undefined) {
54
+ refuse('account_ids', 'С usernames номера выбирает сам список: account_ids не передаётся');
55
+ }
56
+ if (input.all !== undefined) {
57
+ refuse('all', 'С usernames номера выбирает сам список: all не передаётся');
58
+ }
59
+ const accounts = new Set(input.usernames.map((entry) => entry.account_id.toLowerCase()));
60
+ const names = new Set(input.usernames.map((entry) => entry.username.toLowerCase()));
61
+ if (accounts.size !== input.usernames.length || names.size !== input.usernames.length) {
62
+ refuse('usernames', 'В usernames номера и ники не должны повторяться');
63
+ }
64
+ }
65
+ else if ((input.account_ids !== undefined) === (input.all === true)) {
66
+ refuse('account_ids', 'Выбери ровно одно: список номеров account_ids или all:true');
67
+ }
68
+ const changes = input.first_name !== undefined ||
69
+ input.last_name !== undefined ||
70
+ input.bio !== undefined ||
71
+ input.birthday !== undefined ||
72
+ input.usernames !== undefined ||
73
+ input.username_base !== undefined;
74
+ if (!changes) {
75
+ ctx.addIssue({
76
+ code: 'custom',
77
+ message: 'Нечего менять: передай хотя бы одно поле профиля или ники',
78
+ });
79
+ }
80
+ }
81
+ const profileBulkSchema = z.object(shape).strict().superRefine(checkProfileBulk);
82
+ function profileBulkRequest(input) {
83
+ const body = {
84
+ patch: compactObject({
85
+ firstName: input.first_name,
86
+ lastName: input.last_name,
87
+ bio: input.bio,
88
+ birthday: input.birthday,
89
+ }),
90
+ };
91
+ if (input.usernames !== undefined) {
92
+ body.usernames = input.usernames.map((entry) => ({
93
+ accountId: entry.account_id,
94
+ username: entry.username,
95
+ }));
96
+ }
97
+ else if (input.account_ids !== undefined) {
98
+ body.accountIds = input.account_ids;
99
+ }
100
+ else {
101
+ body.all = true;
102
+ }
103
+ if (input.username_base !== undefined)
104
+ body.usernameBase = input.username_base;
105
+ return {
106
+ method: 'POST',
107
+ path: `/channels/${input.channel_id}/telegram-personal/profile/bulk`,
108
+ body,
109
+ // Маршрут ядра читает ключ из x-idempotency-key; общий Idempotency-Key он не видит.
110
+ idempotencyKey: input.idempotency_key,
111
+ idempotencyKeyHeader: 'X-Idempotency-Key',
112
+ };
113
+ }
114
+ export const telegramPersonalProfileTools = [
115
+ defineTool({
116
+ name: 'besales_platform_telegram_personal_profile_bulk',
117
+ sideEffect: 'write',
118
+ idempotent: true,
119
+ closedWorld: false,
120
+ defaultWorkspaceId: true,
121
+ requiredFields: ['channel_id', 'idempotency_key'],
122
+ resultPolicy: { neverTruncate: true, maxResultBytes: 16 * 1024 },
123
+ schema: profileBulkSchema,
124
+ createRequest: profileBulkRequest,
125
+ enhanceResponse: (response) => withInstructions(response, [
126
+ 'Ответ — принятие задания фермы, а не итог: state PENDING значит «принято», total — число номеров. Итог по каждому номеру читай в besales_platform_telegram_personal_profile_job по job_id.',
127
+ 'При неизвестном исходе новый ключ автоматически не создавай: повтори вызов с тем же idempotency_key и теми же аргументами — ядро вернёт прежний ответ, профиль второй раз не изменится.',
128
+ ]),
129
+ }),
130
+ defineTool({
131
+ name: 'besales_platform_telegram_personal_profile_job',
132
+ sideEffect: 'none',
133
+ closedWorld: true,
134
+ defaultWorkspaceId: true,
135
+ requiredFields: ['channel_id', 'job_id'],
136
+ resultPolicy: { neverTruncate: true, maxResultBytes: 256 * 1024 },
137
+ schema: z
138
+ .object({
139
+ workspace_id: uuidSchema.optional(),
140
+ channel_id: uuidSchema,
141
+ job_id: z.string().min(1).max(128),
142
+ })
143
+ .strict(),
144
+ createRequest: (input) => ({
145
+ method: 'GET',
146
+ path: `/channels/${input.channel_id}/telegram-personal/profile/bulk/${encodeURIComponent(input.job_id)}`,
147
+ }),
148
+ enhanceResponse: (response) => withInstructions(response, [
149
+ 'Пока state не COMPLETED, итог неполный: повтори чтение позже. Исход номера — items[].state; при SUCCEEDED смотри ещё outcome.fields.<поле>: частичный успех остаётся SUCCEEDED, а отдельное поле может быть FAILED с failure_code.',
150
+ 'TELEGRAM_BIO_TOO_LONG — описание длиннее лимита Telegram (до 70 знаков без Premium, до 140 с Premium). PROFILE_PROVIDER_OUTCOME_UNKNOWN — исход у Telegram неизвестен: не повторяй вслепую, сначала сверь профиль номера.',
151
+ ]),
152
+ }),
153
+ ];
154
+ //# sourceMappingURL=telegram-personal-profile.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"telegram-personal-profile.js","sourceRoot":"","sources":["../../../src/tools/definitions/telegram-personal-profile.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ export declare const telegramPersonalRestrictionTools: (import("./shared.js").ToolDefinition<{
2
+ channel_id: string;
3
+ idempotency_key: string;
4
+ workspace_id?: string | undefined;
5
+ account_ids?: string[] | undefined;
6
+ all?: true | undefined;
7
+ }> | import("./shared.js").ToolDefinition<{
8
+ explicit_confirmation: true;
9
+ channel_id: string;
10
+ idempotency_key: string;
11
+ text?: string | undefined;
12
+ workspace_id?: string | undefined;
13
+ account_ids?: string[] | undefined;
14
+ all?: true | undefined;
15
+ }> | import("./shared.js").ToolDefinition<{
16
+ channel_id: string;
17
+ task_id: string;
18
+ workspace_id?: string | undefined;
19
+ }>)[];
@@ -0,0 +1,109 @@
1
+ import { z } from 'zod';
2
+ import { defineTool, uuidSchema, withInstructions } from './shared.js';
3
+ const selection = {
4
+ workspace_id: uuidSchema.optional(),
5
+ channel_id: uuidSchema,
6
+ account_ids: z
7
+ .array(z.uuidv4())
8
+ .min(1)
9
+ .max(100)
10
+ .refine((ids) => new Set(ids.map((id) => id.toLowerCase())).size === ids.length, 'Список номеров не должен содержать дубли')
11
+ .optional(),
12
+ all: z.literal(true).optional(),
13
+ idempotency_key: z
14
+ .string()
15
+ .min(1)
16
+ .max(200)
17
+ .regex(/^[\x21-\x7e]+$/u),
18
+ };
19
+ function oneSelection(input, ctx) {
20
+ if ((input.account_ids !== undefined) === (input.all === true)) {
21
+ ctx.addIssue({
22
+ code: 'custom',
23
+ path: ['account_ids'],
24
+ message: 'Выбери ровно одно: список номеров или all:true',
25
+ });
26
+ }
27
+ }
28
+ const checkSchema = z.object(selection).strict().superRefine(oneSelection);
29
+ const appealSchema = z
30
+ .object({
31
+ ...selection,
32
+ text: z
33
+ .string()
34
+ .trim()
35
+ .min(1)
36
+ .max(500)
37
+ .optional()
38
+ .describe('Необязательный текст. По умолчанию система подбирает разные английские апелляции для каждого номера.'),
39
+ explicit_confirmation: z
40
+ .literal(true)
41
+ .describe('Только после явного согласия человека: номер отправит апелляцию @SpamBot от своего имени; отменить отправку нельзя.'),
42
+ })
43
+ .strict()
44
+ .superRefine(oneSelection);
45
+ function batchRequest(input, appeal) {
46
+ return {
47
+ method: 'POST',
48
+ path: `/channels/${input.channel_id}/telegram-personal/restriction-${appeal ? 'appeals' : 'checks'}`,
49
+ body: {
50
+ ...(input.account_ids === undefined ? { all: true } : { accountIds: input.account_ids }),
51
+ ...(appeal && input.text !== undefined ? { text: input.text } : {}),
52
+ idempotencyKey: input.idempotency_key,
53
+ },
54
+ };
55
+ }
56
+ const batchInstructions = (response) => withInstructions(response, [
57
+ 'Покажи исход каждого номера отдельно: QUEUED с taskId — принято в очередь, а не результат проверки или доставки; FAILED и SKIPPED — с кодом и сообщением.',
58
+ 'При неизвестном исходе сначала прочитай задачу или доступность номеров. Новый ключ автоматически не создавай; для того же намерения сохраняй прежний ключ и аргументы.',
59
+ ]);
60
+ export const telegramPersonalRestrictionTools = [
61
+ defineTool({
62
+ name: 'besales_platform_telegram_personal_restriction_check',
63
+ sideEffect: 'write',
64
+ idempotent: true,
65
+ closedWorld: false,
66
+ defaultWorkspaceId: true,
67
+ requiredFields: ['channel_id', 'idempotency_key'],
68
+ resultPolicy: { neverTruncate: true, maxResultBytes: 256 * 1024 },
69
+ schema: checkSchema,
70
+ createRequest: (input) => batchRequest(input, false),
71
+ enhanceResponse: batchInstructions,
72
+ }),
73
+ defineTool({
74
+ name: 'besales_platform_telegram_personal_restriction_appeal',
75
+ sideEffect: 'write',
76
+ reversible: false,
77
+ idempotent: true,
78
+ closedWorld: false,
79
+ defaultWorkspaceId: true,
80
+ requiredFields: ['channel_id', 'idempotency_key', 'explicit_confirmation'],
81
+ resultPolicy: { neverTruncate: true, maxResultBytes: 256 * 1024 },
82
+ schema: appealSchema,
83
+ createRequest: (input) => batchRequest(input, true),
84
+ enhanceResponse: batchInstructions,
85
+ }),
86
+ defineTool({
87
+ name: 'besales_platform_telegram_personal_operational_task_get',
88
+ sideEffect: 'none',
89
+ closedWorld: true,
90
+ defaultWorkspaceId: true,
91
+ requiredFields: ['channel_id', 'task_id'],
92
+ resultPolicy: { neverTruncate: true, maxResultBytes: 16 * 1024 },
93
+ schema: z
94
+ .object({
95
+ workspace_id: uuidSchema.optional(),
96
+ channel_id: uuidSchema,
97
+ task_id: uuidSchema,
98
+ })
99
+ .strict(),
100
+ createRequest: (input) => ({
101
+ method: 'GET',
102
+ path: `/channels/${input.channel_id}/telegram-personal/operational-tasks/${input.task_id}`,
103
+ }),
104
+ enhanceResponse: (response) => withInstructions(response, [
105
+ 'state — состояние задачи; restrictionStatus — текущий статус ограничений номера, прочитанный после задачи. SUCCEEDED не означает отсутствие ограничений. null означает, что статус номера недоступен. Более поздние действия могли изменить статус.',
106
+ ]),
107
+ }),
108
+ ];
109
+ //# sourceMappingURL=telegram-personal-restrictions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"telegram-personal-restrictions.js","sourceRoot":"","sources":["../../../src/tools/definitions/telegram-personal-restrictions.ts"],"names":[],"mappings":"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"}
@@ -3,6 +3,6 @@ export declare const telegramPoolPolicyTools: import("./shared.js").ToolDefiniti
3
3
  platform_id: string;
4
4
  operation: "set" | "get";
5
5
  workspace_id?: string | undefined;
6
- rebind_policy?: "rebind" | "escalate" | undefined;
6
+ rebind_policy?: "escalate" | "rebind" | undefined;
7
7
  idempotency_key?: string | undefined;
8
8
  }>[];
@@ -1,3 +1,4 @@
1
+ export declare const eventTriggerDescription: string;
1
2
  export declare const triggerUpsertTool: import("./shared.js").ToolDefinition<{
2
3
  platform_id: string;
3
4
  agent_id: string;
@@ -19,6 +20,17 @@ export declare const triggerUpsertTool: import("./shared.js").ToolDefinition<{
19
20
  allow_repeated_calls?: boolean | undefined;
20
21
  run_once_per_contact?: boolean | undefined;
21
22
  trigger_id?: string | undefined;
23
+ trigger?: {
24
+ event: "AGENT_REPLY" | "CONTACT_MESSAGE" | "NEW_CONVERSATION" | "OPERATOR_REPLY";
25
+ condition?: {
26
+ schema_version: 1;
27
+ combinator: "AND" | "OR";
28
+ rules: {
29
+ [x: string]: unknown;
30
+ }[];
31
+ preset?: string | undefined;
32
+ } | undefined;
33
+ } | undefined;
22
34
  name?: string | undefined;
23
35
  condition?: string | undefined;
24
36
  is_enabled?: boolean | undefined;
@@ -11,6 +11,29 @@ import { anyObjectSchema, compactObject, defineTool, platformSetupConfirmationSc
11
11
  */
12
12
  const TRIGGER_NAME_MAX_CODE_POINTS = 100;
13
13
  const TRIGGER_CONDITION_MAX_CODE_POINTS = 4000;
14
+ export const eventTriggerDescription = 'Для автоматического запуска по событию передай trigger вместо scope и строкового condition верхнего уровня. ' +
15
+ 'NEW_CONVERSATION — начало новой переписки; CONTACT_MESSAGE — сообщение клиента; ' +
16
+ 'OPERATOR_REPLY — ответ живого оператора; AGENT_REPLY — после ответа бота клиенту, пустой или молчаливый ход события не даёт. ' +
17
+ 'Шаги событийного триггера статичные: без arguments, {{args.*}} и полей «заполняет ИИ» — автозапуск не получает значений ИИ. ' +
18
+ 'Для шагов с оператором или отправкой требуется explicit_confirmation=true. ' +
19
+ 'Горизонт allow_repeat_in_conversation — ПЕРЕПИСКА. ' +
20
+ 'В trigger.condition можно использовать conversation.lastActionFailureCode, если сервер его знает.';
21
+ // Проверяем конверт группы; операторы, пути и вложенные правила разбирает ядро сервера.
22
+ const eventConditionSchema = z.strictObject({
23
+ schema_version: z.literal(1, { error: 'Версия trigger.condition.schema_version должна быть 1' }),
24
+ combinator: z.enum(['AND', 'OR'], { error: 'Укажи trigger.condition.combinator: AND или OR' }),
25
+ rules: z.array(z.object({}, { error: 'Правило или вложенная группа trigger.condition.rules должны быть объектом' }).passthrough(), {
26
+ error: 'trigger.condition.rules должен быть массивом объектов правил или вложенных групп',
27
+ }),
28
+ preset: z.string({ error: 'trigger.condition.preset должен быть строкой' }).optional(),
29
+ }, { error: 'trigger.condition должен быть группой условий: schema_version, combinator, rules и необязательный preset' });
30
+ const eventTriggerSchema = z.strictObject({
31
+ event: z.enum(['NEW_CONVERSATION', 'CONTACT_MESSAGE', 'OPERATOR_REPLY', 'AGENT_REPLY'], {
32
+ error: 'Укажи событие trigger.event: NEW_CONVERSATION, CONTACT_MESSAGE, OPERATOR_REPLY или AGENT_REPLY',
33
+ }),
34
+ condition: eventConditionSchema.optional(),
35
+ }, { error: 'trigger должен быть объектом только с event и необязательным condition' })
36
+ .describe(eventTriggerDescription);
14
37
  function triggerTextSchema(maxCodePoints) {
15
38
  return z
16
39
  .string()
@@ -28,6 +51,7 @@ export const triggerUpsertTool = defineTool({
28
51
  platform_id: uuidSchema,
29
52
  agent_id: uuidSchema,
30
53
  trigger_id: uuidSchema.optional(),
54
+ trigger: eventTriggerSchema.optional(),
31
55
  // `.trim()` — как у сервера: строка из пробелов пустая, «Оплата » равна «Оплата». Потолок — в кодовых точках,
32
56
  // как его считают сервер и `maxLength` схемы инструмента; `.max` zod считал бы кодовые единицы UTF-16.
33
57
  name: triggerTextSchema(TRIGGER_NAME_MAX_CODE_POINTS).optional(),
@@ -50,13 +74,25 @@ export const triggerUpsertTool = defineTool({
50
74
  actions: z.array(triggerSetupActionItemSchema).optional(),
51
75
  replace_actions: z.boolean().optional(),
52
76
  ...platformSetupConfirmationSchema,
53
- }).superRefine(legacyTriggerRepeatIssues),
77
+ }).superRefine(legacyTriggerRepeatIssues).superRefine((input, context) => {
78
+ if (input.trigger === undefined)
79
+ return;
80
+ for (const field of ['scope', 'condition']) {
81
+ if (input[field] !== undefined)
82
+ context.addIssue({
83
+ code: 'custom',
84
+ path: [field],
85
+ message: `Событийный trigger несовместим с ${field} верхнего уровня; условие события передай в trigger.condition`,
86
+ });
87
+ }
88
+ }),
54
89
  createRequest: (input) => ({
55
90
  method: input.trigger_id ? 'PATCH' : 'POST',
56
91
  path: input.trigger_id
57
92
  ? `/channels/${input.platform_id}/agents/${input.agent_id}/triggers/${input.trigger_id}`
58
93
  : `/channels/${input.platform_id}/agents/${input.agent_id}/triggers`,
59
94
  body: compactObject({
95
+ trigger: input.trigger,
60
96
  name: input.name,
61
97
  condition: input.condition,
62
98
  isEnabled: input.is_enabled,
@@ -73,6 +109,7 @@ export const triggerUpsertTool = defineTool({
73
109
  }),
74
110
  }),
75
111
  enhanceResponse: (response, input) => withInstructions(withProjectedTriggerEcho(response), [
112
+ ...(input.trigger === undefined ? [] : [eventTriggerDescription]),
76
113
  'В ответе вместо самих шагов и условий — их количество (actionsCount / activationsCount): ' +
77
114
  'эхо целиком повторяло отправленное и уносило контекст на каждой правке. ' +
78
115
  'Нужен текущий состав — besales_platform_context_get.',
@@ -1 +1 @@
1
- {"version":3,"file":"trigger-upsert.tool.js","sourceRoot":"","sources":["../../../src/tools/definitions/trigger-upsert.tool.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"trigger-upsert.tool.js","sourceRoot":"","sources":["../../../src/tools/definitions/trigger-upsert.tool.ts"],"names":[],"mappings":"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"}