@besales/mcp 0.45.0 → 0.47.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +96 -55
- package/dist/auth/connection-store.d.ts +21 -1
- package/dist/auth/connection-store.js +46 -2
- package/dist/auth/connection-store.js.map +1 -1
- package/dist/auth/oauth-client.d.ts +5 -1
- package/dist/auth/oauth-client.js +22 -12
- package/dist/auth/oauth-client.js.map +1 -1
- package/dist/cli.js +14 -5
- package/dist/cli.js.map +1 -1
- package/dist/http/api-client.d.ts +16 -1
- package/dist/http/api-client.js +50 -2
- package/dist/http/api-client.js.map +1 -1
- package/dist/instructions/server-instructions.d.ts +4 -13
- package/dist/instructions/server-instructions.js +68 -274
- package/dist/instructions/server-instructions.js.map +1 -1
- package/dist/prompts/registry.d.ts +15 -0
- package/dist/prompts/registry.js +83 -0
- package/dist/prompts/registry.js.map +1 -0
- package/dist/resources/concepts/feedback-sheets.md +7 -4
- package/dist/resources/concepts/handoff.md +4 -1
- package/dist/resources/concepts/sandbox.md +14 -5
- package/dist/resources/concepts/triggers.md +6 -2
- package/dist/resources/concepts/workbook-classification.md +26 -21
- package/dist/resources/docs/campaigns.md +20 -0
- package/dist/resources/docs/crm-integration.md +3 -1
- package/dist/resources/docs/follow-up.md +19 -0
- package/dist/resources/docs/platforms.md +2 -2
- package/dist/resources/docs/routing.md +18 -0
- package/dist/resources/docs/task-state.md +30 -0
- package/dist/resources/docs/trigger-actions.md +28 -0
- package/dist/resources/docs/variables.md +18 -0
- package/dist/resources/registry.js +51 -2
- package/dist/resources/registry.js.map +1 -1
- package/dist/resources/workflows/compare-models.md +4 -3
- package/dist/resources/workflows/connect-crm-from-scratch.md +8 -0
- package/dist/resources/workflows/extract-from-document.md +8 -1
- package/dist/resources/workflows/iterate-with-sandbox.md +5 -2
- package/dist/resources/workflows/platform-setup-from-scratch.md +90 -2
- package/dist/resources/workflows/production-readiness-check.md +22 -18
- package/dist/schemas/mcp-tools.json +1537 -177
- package/dist/server.d.ts +2 -0
- package/dist/server.js +8 -2
- package/dist/server.js.map +1 -1
- package/dist/tasks/task-state-store.d.ts +68 -0
- package/dist/tasks/task-state-store.js +278 -0
- package/dist/tasks/task-state-store.js.map +1 -0
- package/dist/tools/annotations.d.ts +7 -0
- package/dist/tools/annotations.js +16 -0
- package/dist/tools/annotations.js.map +1 -0
- package/dist/tools/contracts.js +7 -1
- package/dist/tools/contracts.js.map +1 -1
- package/dist/tools/definitions/agent-design.d.ts +49 -20
- package/dist/tools/definitions/agent-design.js +192 -19
- package/dist/tools/definitions/agent-design.js.map +1 -1
- package/dist/tools/definitions/analytics.d.ts +40 -0
- package/dist/tools/definitions/analytics.js +233 -0
- package/dist/tools/definitions/analytics.js.map +1 -0
- package/dist/tools/definitions/broadcast-analytics.d.ts +5 -4
- package/dist/tools/definitions/broadcast-analytics.js +26 -4
- package/dist/tools/definitions/broadcast-analytics.js.map +1 -1
- package/dist/tools/definitions/broadcast-mailing-variants.d.ts +2 -0
- package/dist/tools/definitions/broadcast-mailing-variants.js +10 -0
- package/dist/tools/definitions/broadcast-mailing-variants.js.map +1 -1
- package/dist/tools/definitions/broadcast-scheduler.d.ts +20 -1
- package/dist/tools/definitions/broadcast-scheduler.js +134 -8
- package/dist/tools/definitions/broadcast-scheduler.js.map +1 -1
- package/dist/tools/definitions/contacts.d.ts +15 -0
- package/dist/tools/definitions/contacts.js +84 -0
- package/dist/tools/definitions/contacts.js.map +1 -0
- package/dist/tools/definitions/crm-platform.d.ts +2 -0
- package/dist/tools/definitions/crm-platform.js +95 -5
- package/dist/tools/definitions/crm-platform.js.map +1 -1
- package/dist/tools/definitions/datasource.d.ts +1 -0
- package/dist/tools/definitions/datasource.js +16 -1
- package/dist/tools/definitions/datasource.js.map +1 -1
- package/dist/tools/definitions/dialogue-audit.d.ts +2 -2
- package/dist/tools/definitions/dialogue-audit.js +54 -16
- package/dist/tools/definitions/dialogue-audit.js.map +1 -1
- package/dist/tools/definitions/dialogue-export.d.ts +1 -1
- package/dist/tools/definitions/dialogue-export.js +12 -0
- package/dist/tools/definitions/dialogue-export.js.map +1 -1
- package/dist/tools/definitions/external-api-channels.js +39 -12
- package/dist/tools/definitions/external-api-channels.js.map +1 -1
- package/dist/tools/definitions/follow-up-funnel-test.js +4 -0
- package/dist/tools/definitions/follow-up-funnel-test.js.map +1 -1
- package/dist/tools/definitions/follow-up-setup.js +3 -0
- package/dist/tools/definitions/follow-up-setup.js.map +1 -1
- package/dist/tools/definitions/follow-up.d.ts +1 -1
- package/dist/tools/definitions/follow-up.js +6 -0
- package/dist/tools/definitions/follow-up.js.map +1 -1
- package/dist/tools/definitions/getcourse-anchor-refresh.d.ts +3 -0
- package/dist/tools/definitions/getcourse-anchor-refresh.js +29 -2
- package/dist/tools/definitions/getcourse-anchor-refresh.js.map +1 -1
- package/dist/tools/definitions/getcourse-cold-welcome.d.ts +20 -2
- package/dist/tools/definitions/getcourse-cold-welcome.js +128 -7
- package/dist/tools/definitions/getcourse-cold-welcome.js.map +1 -1
- package/dist/tools/definitions/getcourse-wave.js +14 -0
- package/dist/tools/definitions/getcourse-wave.js.map +1 -1
- package/dist/tools/definitions/help.d.ts +8 -0
- package/dist/tools/definitions/help.js +219 -0
- package/dist/tools/definitions/help.js.map +1 -0
- package/dist/tools/definitions/knowledge.d.ts +27 -5
- package/dist/tools/definitions/knowledge.js +200 -33
- package/dist/tools/definitions/knowledge.js.map +1 -1
- package/dist/tools/definitions/link-tracking.js +31 -0
- package/dist/tools/definitions/link-tracking.js.map +1 -1
- package/dist/tools/definitions/model-comparison.js +12 -3
- package/dist/tools/definitions/model-comparison.js.map +1 -1
- package/dist/tools/definitions/operational-overview.d.ts +3 -0
- package/dist/tools/definitions/operational-overview.js +23 -0
- package/dist/tools/definitions/operational-overview.js.map +1 -0
- package/dist/tools/definitions/operator-workflow.d.ts +20 -0
- package/dist/tools/definitions/operator-workflow.js +114 -0
- package/dist/tools/definitions/operator-workflow.js.map +1 -0
- package/dist/tools/definitions/platform-setup.d.ts +54 -3
- package/dist/tools/definitions/platform-setup.js +211 -5
- package/dist/tools/definitions/platform-setup.js.map +1 -1
- package/dist/tools/definitions/scheduled-tasks.js +2 -0
- package/dist/tools/definitions/scheduled-tasks.js.map +1 -1
- package/dist/tools/definitions/session.js +103 -5
- package/dist/tools/definitions/session.js.map +1 -1
- package/dist/tools/definitions/shared.d.ts +272 -10
- package/dist/tools/definitions/shared.js +154 -8
- package/dist/tools/definitions/shared.js.map +1 -1
- package/dist/tools/definitions/task-state.d.ts +76 -0
- package/dist/tools/definitions/task-state.js +301 -0
- package/dist/tools/definitions/task-state.js.map +1 -0
- package/dist/tools/definitions/trigger-contact-claims.d.ts +7 -0
- package/dist/tools/definitions/trigger-contact-claims.js +60 -0
- package/dist/tools/definitions/trigger-contact-claims.js.map +1 -0
- package/dist/tools/definitions.d.ts +334 -35
- package/dist/tools/definitions.js +14 -0
- package/dist/tools/definitions.js.map +1 -1
- package/dist/tools/description-localization.d.ts +2 -0
- package/dist/tools/description-localization.js +46 -0
- package/dist/tools/description-localization.js.map +1 -0
- package/dist/tools/incomplete-list.d.ts +23 -0
- package/dist/tools/incomplete-list.js +39 -0
- package/dist/tools/incomplete-list.js.map +1 -0
- package/dist/tools/inventory.d.ts +10 -0
- package/dist/tools/inventory.js +49 -0
- package/dist/tools/inventory.js.map +1 -0
- package/dist/tools/registry-mapping-cases-core.js +122 -4
- package/dist/tools/registry-mapping-cases-core.js.map +1 -1
- package/dist/tools/registry-mapping-cases-platform.js +69 -0
- package/dist/tools/registry-mapping-cases-platform.js.map +1 -1
- package/dist/tools/registry.d.ts +2 -0
- package/dist/tools/registry.js +60 -8
- package/dist/tools/registry.js.map +1 -1
- package/dist/tools/result-envelope.d.ts +46 -0
- package/dist/tools/result-envelope.js +184 -0
- package/dist/tools/result-envelope.js.map +1 -0
- package/dist/tools/result.d.ts +41 -3
- package/dist/tools/result.js +229 -27
- package/dist/tools/result.js.map +1 -1
- package/dist/tools/tool-title.d.ts +2 -0
- package/dist/tools/tool-title.js +12 -0
- package/dist/tools/tool-title.js.map +1 -0
- package/dist/tools/toolsets.d.ts +37 -0
- package/dist/tools/toolsets.js +64 -0
- package/dist/tools/toolsets.js.map +1 -0
- package/dist/tools/trigger-action-config.js +4 -0
- package/dist/tools/trigger-action-config.js.map +1 -1
- package/dist/tools/verify-with.d.ts +5 -0
- package/dist/tools/verify-with.js +36 -0
- package/dist/tools/verify-with.js.map +1 -0
- package/dist/types/api-contract.gen.d.ts +2612 -332
- package/dist/utils/logger.d.ts +11 -0
- package/dist/utils/logger.js +64 -8
- package/dist/utils/logger.js.map +1 -1
- package/docs/agent-usage-guide.full.ru.md +21 -15
- package/docs/agent-usage-guide.ru.md +24 -16
- package/docs/async-operation-lifecycle.md +46 -0
- package/docs/connect.ru.md +120 -0
- package/docs/evals/model-behavior-scorecard.md +80 -0
- package/docs/failure-semantics.md +56 -0
- package/docs/help-navigation.md +48 -0
- package/docs/host-compatibility-matrix.md +153 -0
- package/docs/host-setup.md +22 -6
- package/docs/operation-coverage.md +114 -0
- package/docs/pii-policy.md +46 -0
- package/docs/response-size-budget.md +150 -0
- package/docs/task-state.md +58 -0
- package/docs/tool-effects.md +46 -0
- package/docs/tool-surface.md +91 -0
- package/package.json +6 -2
- package/scripts/model-eval-server.js +213 -0
- package/scripts/probe-mcp-protocol.js +134 -0
- package/scripts/run-model-eval.js +447 -0
|
@@ -4,6 +4,9 @@ import { compactObject, defineTool, uuidSchema, withInstructions } from './share
|
|
|
4
4
|
const MAX_CONTACTS = 5000;
|
|
5
5
|
/** Значение якоря — это дата, а не текст; паритет с DTO бэкенда. */
|
|
6
6
|
const ANCHOR_VALUE_MAX_LENGTH = 64;
|
|
7
|
+
const anchorRefreshCorrelationIdSchema = z
|
|
8
|
+
.string()
|
|
9
|
+
.regex(/^anchor-refresh:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/iu, 'correlation_id обязан иметь вид anchor-refresh:<uuid>');
|
|
7
10
|
const numericIdSchema = (field) => z
|
|
8
11
|
.string()
|
|
9
12
|
.trim()
|
|
@@ -50,6 +53,7 @@ const toBody = (input) => compactObject({
|
|
|
50
53
|
export const getcourseAnchorRefreshTools = [
|
|
51
54
|
defineTool({
|
|
52
55
|
name: 'besales_getcourse_anchor_refresh_preview',
|
|
56
|
+
sideEffect: 'none',
|
|
53
57
|
requiredFields: ['platform_id'],
|
|
54
58
|
defaultWorkspaceId: true,
|
|
55
59
|
schema: z.object(audienceShape).strict().refine(...audienceRefinement),
|
|
@@ -69,6 +73,8 @@ export const getcourseAnchorRefreshTools = [
|
|
|
69
73
|
}),
|
|
70
74
|
defineTool({
|
|
71
75
|
name: 'besales_getcourse_anchor_refresh_start',
|
|
76
|
+
sideEffect: 'write',
|
|
77
|
+
verifyWithToolName: 'besales_getcourse_anchor_refresh_status',
|
|
72
78
|
requiredFields: ['platform_id', 'explicit_confirmation'],
|
|
73
79
|
defaultWorkspaceId: true,
|
|
74
80
|
schema: z
|
|
@@ -81,15 +87,36 @@ export const getcourseAnchorRefreshTools = [
|
|
|
81
87
|
body: toBody(input),
|
|
82
88
|
}),
|
|
83
89
|
enhanceResponse: (response) => withInstructions(response, [
|
|
84
|
-
'Прогон идёт ФОНОМ: ответ подтверждает старт.
|
|
90
|
+
'Прогон идёт ФОНОМ: ответ подтверждает старт. Опрашивай besales_getcourse_anchor_refresh_status по correlationId каждые 10–30 секунд до COMPLETED, FAILED или STALLED. Построчный аудит: audit_logs с entityType=ChatUser, action=GETCOURSE_ANCHOR_REFRESH; changes.variables содержит прежнее и новое значение каждого якоря.',
|
|
85
91
|
'Перечитываются ТОЛЬКО якоря календарных цепочек площадки и ТОЛЬКО с запинённой сделки. Переменные ветвления (посещаемость эфира, клики) не трогаются: у них авторитетнее ответ клиента в диалоге.',
|
|
86
92
|
'⚠️⚠️ Прогресс цепочек НЕ откатывается. Уже отправленные касания остаются отправленными; заново планируются только не ушедшие. Перенос эфира ВПЕРЁД доезжает целиком, НАЗАД — закрывает часть слотов как просроченные. Скажи это пользователю до подтверждения: откатить нельзя.',
|
|
87
93
|
'Исходы в логе прогона различают ПРИЧИНЫ, и чинятся они разным: UPDATED — дата перенесена, прежняя сохранена в аудите; UPDATED_AUDIT_LOST — дата перенесена, но строка аудита не легла (прежнее значение только в логе, откатить нечем); UNCHANGED — на сделке та же дата; SKIPPED_DEAL_FIELD_EMPTY — поле сделки пусто (заполнить в школе); SKIPPED_NO_PINNED_DEAL / SKIPPED_STALE_PIN — сделка не закреплена либо исчезла (перезакрепить импортом); SKIPPED_NOT_IN_BASE — контакта нет в базе (сначала импорт); FAILED — школа не ответила, повтор осмыслен.',
|
|
88
94
|
'⚠️ FAILED и UNCHANGED — противоположные новости: первое означает «не прочитали ни одной сделки, повтори», второе — «переносить нечего». Не сваливай их в одно «ничего не изменилось».',
|
|
89
|
-
'alreadyRunning=true означает, что по этой площадке прогон уже идёт — дождись его, второй не запускается. ⚠️ Отмены у прогона
|
|
95
|
+
'alreadyRunning=true означает, что по этой площадке прогон уже идёт — дождись его, второй не запускается. ⚠️ Отмены у прогона НЕТ: частично переписанные даты откатить автоматически нельзя. Сначала preview, потом запуск.',
|
|
90
96
|
'started=false при пустом refreshableVariables — перечитывать нечем, а не сбой: у площадки нет включённых календарных цепочек либо якорь не замаплен на поле сделки.',
|
|
91
97
|
'После прогона контакты с обновлённой датой снова доступны обычному запуску «Первого сообщения» — до него они отсеивались исходом SKIPPED_ANCHOR_IN_PAST.',
|
|
92
98
|
]),
|
|
93
99
|
}),
|
|
100
|
+
defineTool({
|
|
101
|
+
name: 'besales_getcourse_anchor_refresh_status',
|
|
102
|
+
sideEffect: 'none',
|
|
103
|
+
requiredFields: ['correlation_id'],
|
|
104
|
+
defaultWorkspaceId: true,
|
|
105
|
+
schema: z
|
|
106
|
+
.object({
|
|
107
|
+
workspace_id: uuidSchema.optional(),
|
|
108
|
+
correlation_id: anchorRefreshCorrelationIdSchema,
|
|
109
|
+
})
|
|
110
|
+
.strict(),
|
|
111
|
+
createRequest: (input) => ({
|
|
112
|
+
method: 'GET',
|
|
113
|
+
path: `/workspaces/${input.workspace_id}/getcourse-anchor-refresh/${encodeURIComponent(input.correlation_id)}`,
|
|
114
|
+
}),
|
|
115
|
+
enhanceResponse: (response) => withInstructions(response, [
|
|
116
|
+
'Опрашивай каждые 10–30 секунд до COMPLETED, FAILED или STALLED. RUNNING означает, что процесс ещё владеет площадочным lock.',
|
|
117
|
+
'STALLED означает, что процесс оборвался без terminal status. Часть дат могла быть уже переписана: сначала проверь result и построчный аудит по correlationId, затем решай, нужен ли повтор.',
|
|
118
|
+
'Отмены нет: уже выполненные перезаписи необратимы, поэтому cancel создал бы ложное ожидание отката.',
|
|
119
|
+
]),
|
|
120
|
+
}),
|
|
94
121
|
];
|
|
95
122
|
//# sourceMappingURL=getcourse-anchor-refresh.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getcourse-anchor-refresh.js","sourceRoot":"","sources":["../../../src/tools/definitions/getcourse-anchor-refresh.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAEtF,0FAA0F;AAC1F,MAAM,YAAY,GAAG,IAAI,CAAC;AAC1B,oEAAoE;AACpE,MAAM,uBAAuB,GAAG,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"getcourse-anchor-refresh.js","sourceRoot":"","sources":["../../../src/tools/definitions/getcourse-anchor-refresh.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAEtF,0FAA0F;AAC1F,MAAM,YAAY,GAAG,IAAI,CAAC;AAC1B,oEAAoE;AACpE,MAAM,uBAAuB,GAAG,EAAE,CAAC;AACnC,MAAM,gCAAgC,GAAG,CAAC;KACvC,MAAM,EAAE;KACR,KAAK,CACJ,4FAA4F,EAC5F,uDAAuD,CACxD,CAAC;AAEJ,MAAM,eAAe,GAAG,CAAC,KAAa,EAAE,EAAE,CACxC,CAAC;KACE,MAAM,EAAE;KACR,IAAI,EAAE;KACN,KAAK,CAAC,OAAO,EAAE,GAAG,KAAK,iDAAiD,CAAC,CAAC;AAE/E,MAAM,aAAa,GAAG,CAAC;KACpB,MAAM,CAAC;IACN,UAAU,EAAE,eAAe,CAAC,YAAY,CAAC;IACzC,OAAO,EAAE,eAAe,CAAC,SAAS,CAAC,CAAC,QAAQ,EAAE;CAC/C,CAAC;KACD,MAAM,EAAE,CAAC;AAEZ,MAAM,UAAU,GAAG,CAAC,QAA0D,EAAE,EAAE,CAChF,QAAQ,EAAE,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;AAE3F,kFAAkF;AAClF,MAAM,aAAa,GAAG;IACpB,YAAY,EAAE,UAAU,CAAC,QAAQ,EAAE;IACnC,WAAW,EAAE,UAAU;IACvB,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,QAAQ,EAAE;IACpE,oBAAoB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC,QAAQ,EAAE;CACvF,CAAC;AAEF,0EAA0E;AAC1E,MAAM,kBAAkB,GAAG;IACzB,CAAC,KAA8D,EAAE,EAAE,CACjE,KAAK,CAAC,QAAQ,KAAK,SAAS,IAAI,KAAK,CAAC,oBAAoB,KAAK,SAAS;IAC1E;QACE,OAAO,EACL,8FAA8F;YAC9F,4BAA4B;KAC/B;CACO,CAAC;AAEX,MAAM,MAAM,GAAG,CAAC,KAIf,EAAE,EAAE,CACH,aAAa,CAAC;IACZ,UAAU,EAAE,KAAK,CAAC,WAAW;IAC7B,QAAQ,EAAE,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC;IACpC,kBAAkB,EAAE,KAAK,CAAC,oBAAoB;CAC/C,CAAC,CAAC;AAEL;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG;IACzC,UAAU,CAAC;QACT,IAAI,EAAE,0CAA0C;QAChD,UAAU,EAAE,MAAM;QAClB,cAAc,EAAE,CAAC,aAAa,CAAC;QAC/B,kBAAkB,EAAE,IAAI;QACxB,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,GAAG,kBAAkB,CAAC;QACtE,aAAa,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YACzB,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,eAAe,KAAK,CAAC,YAAY,mCAAmC;YAC1E,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC;SACpB,CAAC;QACF,eAAe,EAAE,CAAC,QAAQ,EAAE,EAAE,CAC5B,gBAAgB,CAAC,QAAQ,EAAE;YACzB,sKAAsK;YACtK,oLAAoL;YACpL,6OAA6O;YAC7O,yTAAyT;YACzT,gLAAgL;YAChL,sIAAsI;SACvI,CAAC;KACL,CAAC;IACF,UAAU,CAAC;QACT,IAAI,EAAE,wCAAwC;QAC9C,UAAU,EAAE,OAAO;QACnB,kBAAkB,EAAE,yCAAyC;QAC7D,cAAc,EAAE,CAAC,aAAa,EAAE,uBAAuB,CAAC;QACxD,kBAAkB,EAAE,IAAI;QACxB,MAAM,EAAE,CAAC;aACN,MAAM,CAAC,EAAE,GAAG,aAAa,EAAE,qBAAqB,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;aACpE,MAAM,EAAE;aACR,MAAM,CAAC,GAAG,kBAAkB,CAAC;QAChC,aAAa,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YACzB,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,eAAe,KAAK,CAAC,YAAY,2BAA2B;YAClE,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC;SACpB,CAAC;QACF,eAAe,EAAE,CAAC,QAAQ,EAAE,EAAE,CAC5B,gBAAgB,CAAC,QAAQ,EAAE;YACzB,+TAA+T;YAC/T,mMAAmM;YACnM,iRAAiR;YACjR,+hBAA+hB;YAC/hB,uLAAuL;YACvL,4NAA4N;YAC5N,qKAAqK;YACrK,0JAA0J;SAC3J,CAAC;KACL,CAAC;IACF,UAAU,CAAC;QACT,IAAI,EAAE,yCAAyC;QAC/C,UAAU,EAAE,MAAM;QAClB,cAAc,EAAE,CAAC,gBAAgB,CAAC;QAClC,kBAAkB,EAAE,IAAI;QACxB,MAAM,EAAE,CAAC;aACN,MAAM,CAAC;YACN,YAAY,EAAE,UAAU,CAAC,QAAQ,EAAE;YACnC,cAAc,EAAE,gCAAgC;SACjD,CAAC;aACD,MAAM,EAAE;QACX,aAAa,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YACzB,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,eAAe,KAAK,CAAC,YAAY,6BAA6B,kBAAkB,CAAC,KAAK,CAAC,cAAc,CAAC,EAAE;SAC/G,CAAC;QACF,eAAe,EAAE,CAAC,QAAQ,EAAE,EAAE,CAC5B,gBAAgB,CAAC,QAAQ,EAAE;YACzB,6HAA6H;YAC7H,6LAA6L;YAC7L,qGAAqG;SACtG,CAAC;KACL,CAAC;CACH,CAAC"}
|
|
@@ -1,10 +1,18 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Рассылка «Первое сообщение» (холодное приветствие GetCourse): МЫ пишем первыми
|
|
3
|
-
*
|
|
2
|
+
* Рассылка «Первое сообщение» (холодное приветствие GetCourse): МЫ пишем первыми тем, кому НАШЕГО
|
|
3
|
+
* исходящего ещё не было.
|
|
4
|
+
*
|
|
5
|
+
* ⚠️⚠️ Именно «нашего исходящего не было», а не «диалога нет»: человек, который написал школе и
|
|
6
|
+
* остался без ответа, — законный адресат (замер 01.09.2026: 4216 таких карточек из 8428 с диалогом,
|
|
7
|
+
* и их частые реплики «я буду», «ок», «+» это подтверждения участия в эфире). Исключать их из
|
|
8
|
+
* когорты НЕ надо. Отправка НЕОБРАТИМА и не идемпотентна на стороне GetCourse — повтор создал
|
|
4
9
|
* бы второе сообщение живому человеку, поэтому старт требует explicit_confirmation и всегда
|
|
5
10
|
* предваряется preview.
|
|
6
11
|
*/
|
|
7
12
|
export declare const getcourseColdWelcomeTools: (import("./shared.js").ToolDefinition<{
|
|
13
|
+
getcourse_user_id: number;
|
|
14
|
+
workspace_id?: string | undefined;
|
|
15
|
+
}> | import("./shared.js").ToolDefinition<{
|
|
8
16
|
platform_id: string;
|
|
9
17
|
workspace_id?: string | undefined;
|
|
10
18
|
created_after?: string | undefined;
|
|
@@ -12,8 +20,11 @@ export declare const getcourseColdWelcomeTools: (import("./shared.js").ToolDefin
|
|
|
12
20
|
contact_id: string;
|
|
13
21
|
deal_id?: string | undefined;
|
|
14
22
|
segment_entered_at?: string | undefined;
|
|
23
|
+
funnel?: string | undefined;
|
|
15
24
|
}[] | undefined;
|
|
16
25
|
mailing_variant_id?: string | undefined;
|
|
26
|
+
segment?: string | undefined;
|
|
27
|
+
message?: string | undefined;
|
|
17
28
|
channels?: ("Site" | "Email" | "SMS" | "Telegram" | "Facebook" | "VK" | "Chatium" | "WhatsApp" | "Viber" | "MAX")[] | undefined;
|
|
18
29
|
channels_mode?: "RESTRICT" | "ADD" | undefined;
|
|
19
30
|
}> | import("./shared.js").ToolDefinition<{
|
|
@@ -25,6 +36,7 @@ export declare const getcourseColdWelcomeTools: (import("./shared.js").ToolDefin
|
|
|
25
36
|
contact_id: string;
|
|
26
37
|
deal_id?: string | undefined;
|
|
27
38
|
segment_entered_at?: string | undefined;
|
|
39
|
+
funnel?: string | undefined;
|
|
28
40
|
}[] | undefined;
|
|
29
41
|
deal_fields?: Record<string, string | number | boolean | null> | undefined;
|
|
30
42
|
message?: string | undefined;
|
|
@@ -41,6 +53,7 @@ export declare const getcourseColdWelcomeTools: (import("./shared.js").ToolDefin
|
|
|
41
53
|
contact_id: string;
|
|
42
54
|
deal_id?: string | undefined;
|
|
43
55
|
segment_entered_at?: string | undefined;
|
|
56
|
+
funnel?: string | undefined;
|
|
44
57
|
}[];
|
|
45
58
|
segment?: string | undefined;
|
|
46
59
|
product_code?: string | undefined;
|
|
@@ -55,6 +68,11 @@ export declare const getcourseColdWelcomeTools: (import("./shared.js").ToolDefin
|
|
|
55
68
|
mailing_variant_id?: string | undefined;
|
|
56
69
|
channels?: ("Site" | "Email" | "SMS" | "Telegram" | "Facebook" | "VK" | "Chatium" | "WhatsApp" | "Viber" | "MAX")[] | undefined;
|
|
57
70
|
channels_mode?: "RESTRICT" | "ADD" | undefined;
|
|
71
|
+
guards?: {
|
|
72
|
+
active_series?: "OFF" | "WARN" | "BLOCK" | undefined;
|
|
73
|
+
active_application?: "OFF" | "WARN" | "BLOCK" | undefined;
|
|
74
|
+
paid?: "OFF" | "WARN" | "BLOCK" | undefined;
|
|
75
|
+
} | undefined;
|
|
58
76
|
}> | import("./shared.js").ToolDefinition<{
|
|
59
77
|
batch_id: string;
|
|
60
78
|
workspace_id?: string | undefined;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
-
import { compactObject, defineTool, coldWelcomeChannelsModeEnum, getcourseTransportEnum, uuidSchema, withInstructions, } from './shared.js';
|
|
2
|
+
import { compactObject, defineTool, coldWelcomeChannelsModeEnum, getcourseTransportEnum, guardModeEnum, uuidSchema, withInstructions, } from './shared.js';
|
|
3
3
|
const MESSAGE_MAX_LENGTH = 4000;
|
|
4
4
|
const LABEL_MAX_LENGTH = 200;
|
|
5
5
|
const MAX_CONTACTS = 5000;
|
|
@@ -37,12 +37,26 @@ const contactSchema = z
|
|
|
37
37
|
* разошёлся бы на часы между средами.
|
|
38
38
|
*/
|
|
39
39
|
segment_entered_at: z.string().datetime({ offset: true }).optional(),
|
|
40
|
+
/**
|
|
41
|
+
* Воронка ЭТОГО контакта — паритет со строкой волнового импорта (колонка
|
|
42
|
+
* `funnel | funnel_name | воронка | funnel_code`).
|
|
43
|
+
*
|
|
44
|
+
* ⚠️⚠️ Заполняй, когда файл собран из НЕСКОЛЬКИХ воронок: одна метка на запуск заставляла
|
|
45
|
+
* писать в поле воронки когорту («reg-no-show|дбо»), и ось «Воронка» переставала отвечать
|
|
46
|
+
* на свой вопрос — по f11 фильтр показывал НОЛЬ отправок за 30 дней при 3267 регистрациях
|
|
47
|
+
* и 1496 реально написанных людях (замер 02.09.2026). Когорта и продукт при этом уже лежат
|
|
48
|
+
* в своих полях `segment` и `product_code` — дублировать их в воронке нечем.
|
|
49
|
+
*
|
|
50
|
+
* Не передан — берётся воронка запуска (`funnel`), поведение прежнее.
|
|
51
|
+
*/
|
|
52
|
+
funnel: z.string().min(1).max(LABEL_MAX_LENGTH).optional(),
|
|
40
53
|
})
|
|
41
54
|
.strict();
|
|
42
55
|
const toContacts = (contacts) => contacts?.map((contact) => ({
|
|
43
56
|
contactId: contact.contact_id,
|
|
44
57
|
dealId: contact.deal_id,
|
|
45
58
|
segmentEnteredAt: contact.segment_entered_at,
|
|
59
|
+
funnel: contact.funnel,
|
|
46
60
|
}));
|
|
47
61
|
/**
|
|
48
62
|
* Пустая строка = поля НЕТ.
|
|
@@ -74,14 +88,44 @@ const importContactSchema = z
|
|
|
74
88
|
})
|
|
75
89
|
.strict();
|
|
76
90
|
/**
|
|
77
|
-
* Рассылка «Первое сообщение» (холодное приветствие GetCourse): МЫ пишем первыми
|
|
78
|
-
*
|
|
91
|
+
* Рассылка «Первое сообщение» (холодное приветствие GetCourse): МЫ пишем первыми тем, кому НАШЕГО
|
|
92
|
+
* исходящего ещё не было.
|
|
93
|
+
*
|
|
94
|
+
* ⚠️⚠️ Именно «нашего исходящего не было», а не «диалога нет»: человек, который написал школе и
|
|
95
|
+
* остался без ответа, — законный адресат (замер 01.09.2026: 4216 таких карточек из 8428 с диалогом,
|
|
96
|
+
* и их частые реплики «я буду», «ок», «+» это подтверждения участия в эфире). Исключать их из
|
|
97
|
+
* когорты НЕ надо. Отправка НЕОБРАТИМА и не идемпотентна на стороне GetCourse — повтор создал
|
|
79
98
|
* бы второе сообщение живому человеку, поэтому старт требует explicit_confirmation и всегда
|
|
80
99
|
* предваряется preview.
|
|
81
100
|
*/
|
|
82
101
|
export const getcourseColdWelcomeTools = [
|
|
102
|
+
defineTool({
|
|
103
|
+
name: 'besales_contact_touch_history',
|
|
104
|
+
sideEffect: 'none',
|
|
105
|
+
requiredFields: ['getcourse_user_id'],
|
|
106
|
+
defaultWorkspaceId: true,
|
|
107
|
+
schema: z
|
|
108
|
+
.object({
|
|
109
|
+
workspace_id: uuidSchema.optional(),
|
|
110
|
+
getcourse_user_id: z.number().int().positive(),
|
|
111
|
+
})
|
|
112
|
+
.strict(),
|
|
113
|
+
createRequest: (input) => ({
|
|
114
|
+
method: 'GET',
|
|
115
|
+
path: `/workspaces/${input.workspace_id}/getcourse-cold-welcome/touch-history/${input.getcourse_user_id}`,
|
|
116
|
+
}),
|
|
117
|
+
enhanceResponse: (response) => withInstructions(response, [
|
|
118
|
+
'⚠️⚠️ touches и sends отвечают на РАЗНЫЕ вопросы, складывать их нельзя. touches — журнал касаний: это ПРАВО, взятое ДО отправки, поэтому строка есть и у попытки, которая никуда не ушла (status UNKNOWN или зависший CLAIMED). sends — реестр получателей, он пишется ПОСЛЕ доставки и best-effort: его отсутствие неотправки НЕ доказывает (замер: 10 198 приветствий против 9 802 строк).',
|
|
119
|
+
'На вопрос «писали ли мы этому человеку» отвечает НАЛИЧИЕ строки в touches со статусом не RELEASED (RELEASED — доказанная неотправка, касание свободно) либо непустой firstWelcomeAt.',
|
|
120
|
+
'touchKey — служебное имя права, не показывай его пользователю как есть. Четыре рода: ярлык сегмента, text:<отпечаток шаблона> (правило «тот же текст не дважды»), registration:<заказ> (приветствие регистранта), legacy:welcome (право, восстановленное за период до появления журнала). Человеку называй mailingName и дату.',
|
|
121
|
+
'mailingName пуст у строк до 09.09.2026 — колонки тогда не было; это не потеря данных.',
|
|
122
|
+
'Ключ — человек ШКОЛЫ, поэтому история включает касания со ВСЕХ площадок воркспейса. Это и есть право: две площадки одной школы — один живой человек.',
|
|
123
|
+
'truncated=true — строк больше, чем поместилось; для разбора этого обычно достаточно, полная выгрузка сюда не помещается намеренно.',
|
|
124
|
+
]),
|
|
125
|
+
}),
|
|
83
126
|
defineTool({
|
|
84
127
|
name: 'besales_getcourse_cold_welcome_preview',
|
|
128
|
+
sideEffect: 'none',
|
|
85
129
|
requiredFields: ['platform_id'],
|
|
86
130
|
defaultWorkspaceId: true,
|
|
87
131
|
schema: z
|
|
@@ -91,6 +135,13 @@ export const getcourseColdWelcomeTools = [
|
|
|
91
135
|
created_after: z.string().datetime({ offset: true }).optional(),
|
|
92
136
|
contacts: z.array(contactSchema).min(1).max(MAX_CONTACTS).optional(),
|
|
93
137
|
mailing_variant_id: uuidSchema.optional(),
|
|
138
|
+
/**
|
|
139
|
+
* ⚠️⚠️ ИДЕНТИЧНОСТЬ КАСАНИЯ: метка сегмента и разовый текст. Ими считается прогноз правил
|
|
140
|
+
* отправки — «этим сегментом уже слали» ключуется меткой, «тот же текст не дважды»
|
|
141
|
+
* отпечатком шаблона. Без них прогноз молчит там, где старт ответит DUPLICATE.
|
|
142
|
+
*/
|
|
143
|
+
segment: z.string().max(LABEL_MAX_LENGTH).optional(),
|
|
144
|
+
message: z.string().max(MESSAGE_MAX_LENGTH).optional(),
|
|
94
145
|
channels: z.array(getcourseTransportEnum).optional(),
|
|
95
146
|
channels_mode: coldWelcomeChannelsModeEnum.optional(),
|
|
96
147
|
})
|
|
@@ -106,6 +157,8 @@ export const getcourseColdWelcomeTools = [
|
|
|
106
157
|
createdAfter: input.created_after,
|
|
107
158
|
contacts: toContacts(input.contacts),
|
|
108
159
|
mailingVariantId: input.mailing_variant_id,
|
|
160
|
+
segment: input.segment,
|
|
161
|
+
message: input.message,
|
|
109
162
|
channels: input.channels,
|
|
110
163
|
channelsMode: input.channels_mode,
|
|
111
164
|
}),
|
|
@@ -118,10 +171,16 @@ export const getcourseColdWelcomeTools = [
|
|
|
118
171
|
'Для аудитории по файлу дополнительно приходят alreadyInDialog и notInBase: контакты предсписка обязаны быть импортированы (Шаг 1) до запуска.',
|
|
119
172
|
'Всегда показывай пользователю фактический охват и alreadyWelcomed ДО старта: отправку нельзя отозвать.',
|
|
120
173
|
'Часть контактов отсеется уже в прогоне (мьют бота, нет даты эфира, недостижимость, переменные без значения) — разбивка по причинам будет в outcomes задачи.',
|
|
174
|
+
'⚠️⚠️ policyForecast — ПРАВИЛА ОТПРАВКИ. blockedBy.alreadySentSegment — этим сегментом человеку уже уходило НАШЕЙ отправкой; blockedBy.alreadyGreeted — уже получал первое сообщение; blockedBy.activeEpisode — идёт приветствие по регистрации; blockedBy.cooldown — тихий период (пока не настраивается); touchClaimed — тот же ТЕКСТ уже занят в журнале под другим ярлыком. Причины взаимно исключают друг друга, поэтому сумма — это ЛЮДИ, а не срабатывания: называй пользователю сумму, разбор — только по запросу.',
|
|
175
|
+
'⚠️⚠️ policyForecast считается по МЕТКЕ и ТЕКСТУ. Без segment (и без message у запуска разовым текстом) правила молча дают нули — передавай в preview ровно те segment/message, с которыми пойдёт старт.',
|
|
176
|
+
'⚠️ policyForecast.externalWaveTouched — ИНФОРМАЦИЯ, а не запрет: этим ярлыком человека рассылала школа своими процессами (или WABA-волна), и наш догон в мессенджерах уйдёт как обычно. В отсев это число НЕ входит.',
|
|
177
|
+
'⚠️ Прогноз — на МОМЕНТ ЗАПРОСА. Блокирует сама отправка: она пересчитывает правила постранично вплотную к транспорту, поэтому итог в outcomes может отличаться (SKIPPED_ALREADY_SENT_SEGMENT, SKIPPED_ACTIVE_EPISODE, SKIPPED_SESSION_AHEAD).',
|
|
121
178
|
]),
|
|
122
179
|
}),
|
|
123
180
|
defineTool({
|
|
124
181
|
name: 'besales_getcourse_cold_welcome_start',
|
|
182
|
+
sideEffect: 'spend',
|
|
183
|
+
verifyWithToolName: 'besales_getcourse_contact_import_status',
|
|
125
184
|
requiredFields: ['explicit_confirmation'],
|
|
126
185
|
defaultWorkspaceId: true,
|
|
127
186
|
schema: z
|
|
@@ -137,6 +196,12 @@ export const getcourseColdWelcomeTools = [
|
|
|
137
196
|
mailing_variant_id: uuidSchema.optional(),
|
|
138
197
|
segment: z.string().max(LABEL_MAX_LENGTH).optional(),
|
|
139
198
|
product_code: z.string().max(LABEL_MAX_LENGTH).optional(),
|
|
199
|
+
/**
|
|
200
|
+
* ⚠️⚠️ Воронка ШКОЛЫ («f11 — ДБО / NR / ВК / In Stream»), а НЕ когорта. Тип отбора идёт
|
|
201
|
+
* в `segment`, продукт в `product_code`, подпись запуска в `cohort_label`. Текст правила
|
|
202
|
+
* живёт в описании поля (`mcp-tools.json`) — его читает агент; здесь напоминание для
|
|
203
|
+
* того, кто правит схему.
|
|
204
|
+
*/
|
|
140
205
|
funnel: z.string().max(LABEL_MAX_LENGTH).optional(),
|
|
141
206
|
cohort_label: z.string().max(LABEL_MAX_LENGTH).optional(),
|
|
142
207
|
channels: z.array(getcourseTransportEnum).optional(),
|
|
@@ -169,7 +234,7 @@ export const getcourseColdWelcomeTools = [
|
|
|
169
234
|
}),
|
|
170
235
|
}),
|
|
171
236
|
enhanceResponse: (response) => withInstructions(response, [
|
|
172
|
-
'Рассылка запущена фоном: прогресс и разбивка исходов
|
|
237
|
+
'Рассылка запущена фоном: опрашивай besales_getcourse_contact_import_status по jobId каждые 10–30 секунд до COMPLETED, PARTIAL или FAILED; прогресс и разбивка исходов живут в этой задаче импорта.',
|
|
173
238
|
'cohort_label — имя ЭТОГО запуска в «Аналитике рассылок». Задавай его на каждом запуске: без него разрез «по запускам» различает их только датой, а два запуска одной рассылки за день сольются в одну подпись.',
|
|
174
239
|
'Текст заморожен снимком: правка рассылки НЕ меняет идущий запуск.',
|
|
175
240
|
'Если у рассылки заданы message_text_by_segment и segment совпал — уедет ТЕКСТ СЕГМЕНТА. Назови пользователю, какой текст выбран, ДО подтверждения: отправку не отозвать.',
|
|
@@ -185,6 +250,7 @@ export const getcourseColdWelcomeTools = [
|
|
|
185
250
|
}),
|
|
186
251
|
defineTool({
|
|
187
252
|
name: 'besales_getcourse_cold_welcome_batch_start',
|
|
253
|
+
sideEffect: 'spend',
|
|
188
254
|
requiredFields: ['segments', 'explicit_confirmation'],
|
|
189
255
|
defaultWorkspaceId: true,
|
|
190
256
|
schema: z
|
|
@@ -212,6 +278,17 @@ export const getcourseColdWelcomeTools = [
|
|
|
212
278
|
.strict())
|
|
213
279
|
.min(1)
|
|
214
280
|
.max(MAX_BATCH_SEGMENTS),
|
|
281
|
+
// Перекрытие предохранителей на ЭТОТ пакет. Не передано — настройки площадки.
|
|
282
|
+
// Ослабление здесь — аварийный обход одной отправки; постоянное решение принимается
|
|
283
|
+
// в настройках площадки, чтобы его было видно всем, а не только автору вызова.
|
|
284
|
+
guards: z
|
|
285
|
+
.object({
|
|
286
|
+
active_series: guardModeEnum.optional(),
|
|
287
|
+
active_application: guardModeEnum.optional(),
|
|
288
|
+
paid: guardModeEnum.optional(),
|
|
289
|
+
})
|
|
290
|
+
.strict()
|
|
291
|
+
.optional(),
|
|
215
292
|
explicit_confirmation: z.literal(true),
|
|
216
293
|
})
|
|
217
294
|
.strict()
|
|
@@ -235,21 +312,36 @@ export const getcourseColdWelcomeTools = [
|
|
|
235
312
|
dealFields: segment.deal_fields,
|
|
236
313
|
contacts: toContacts(segment.contacts),
|
|
237
314
|
})),
|
|
315
|
+
guards: input.guards
|
|
316
|
+
? compactObject({
|
|
317
|
+
activeSeries: input.guards.active_series,
|
|
318
|
+
activeApplication: input.guards.active_application,
|
|
319
|
+
paid: input.guards.paid,
|
|
320
|
+
})
|
|
321
|
+
: undefined,
|
|
238
322
|
}),
|
|
239
323
|
}),
|
|
240
324
|
enhanceResponse: (response) => withInstructions(response, [
|
|
241
325
|
'Пакет: несколько сегментов одним вызовом, у каждого свой список контактов, свои метки и свои поля сделки.',
|
|
242
326
|
'cohort_label задаётся ПОСЕГМЕНТНО: каждый сегмент — отдельный запуск со своей задачей и когортой, и общая на пакет подпись схлопнула бы их в отчёте в одну корзину.',
|
|
243
|
-
'Сегменты идут ПО ОЧЕРЕДИ — задачи импорта не могут выполняться параллельно. Прогресс смотри через besales_getcourse_cold_welcome_batch_status по batchId
|
|
327
|
+
'Сегменты идут ПО ОЧЕРЕДИ — задачи импорта не могут выполняться параллельно. Прогресс смотри через besales_getcourse_cold_welcome_batch_status по batchId; о ЗАВЕРШЕНИИ пакета платформа доложит сама в чат уведомлений воркспейса, поэтому опрашивать в цикле не нужно.',
|
|
244
328
|
'contacts[].segment_entered_at — точный ISO-момент (с зоной) входа человека в когорту; на нём считается свежесть в «Аналитике рассылок». Передавай его посегментно, когда предсписок собран ПРАВИЛОМ и у каждой строки есть свой момент события. ⚠️ Дату запуска подставлять НЕЛЬЗЯ: разброс возраста бывает от часа до 294 дней, и общий момент схлопнул бы месяцы когорт в одну.',
|
|
245
329
|
'Весь пакет проверяется ДО первой отправки: сегмент без текста ИЛИ текст с переменными, которые не подставляются его контактам, отменяет пакет целиком, пока никому ничего не ушло. В ошибке названы сами переменные, контакт проверки и агент — чинить надо значение переменной или перезапись у этого агента.',
|
|
246
330
|
'⚠️ Проверка переменных на плане ВЫБОРОЧНАЯ (несколько контактов сегмента) и не гарантирует, что подставится всем: агента выбирает роутер по контакту. Полноту держит гейт на самой отправке — контакт с сырыми скобками пропускается с outcome SKIPPED_UNRESOLVED_VARS.',
|
|
247
331
|
'⚠️ Переменные, которые отправка дочитывает из сделки (календарные поля замапленной площадки), план НЕ проверяет — судить по до-синковому снимку значило бы блокировать каждый пакет календарной площадки. Все остальные проверяются. Если пакет упал на календарной переменной — это баг, а не настройка.',
|
|
248
332
|
'Отказ одного сегмента НЕ останавливает остальные — смотри разбивку в статусе.',
|
|
333
|
+
'ПРЕДОХРАНИТЕЛИ. Перед отправкой каждый контакт проверяется по фактам школы: идёт ли у него вебинарная серия, есть ли действующая заявка (работает менеджер), оплачен ли этот продукт. Исходы: SKIPPED_ACTIVE_SERIES, SKIPPED_ACTIVE_DEAL, SKIPPED_GUARD_UNAVAILABLE.',
|
|
334
|
+
'⚠️ Правило серии видит только тех, кто ДЕЙСТВИТЕЛЬНО смотрел эфиры: серии школы строятся из фактов посещения. Зарегистрировавшийся и не пришедший под это правило не попадает — это не пробел проверки, а граница данных.',
|
|
335
|
+
'⚠️ Правило оплаты сверяет продукт запуска с оплаченными. Если у пакета не задан product_code, а у контакта есть оплата, отправка пропускается с SKIPPED_GUARD_UNAVAILABLE («сверять не с чем») — это чинится повторным запуском с продуктом, а не считается работой менеджера.',
|
|
336
|
+
'⚠️ Блокировка по серии — это ОТСРОЧКА, а не потеря: серия кончится, и контакт станет доступен следующему запуску (замер: из 55 контактов сегодня проходят 10, завтра 39, через трое суток 47). Не пытайся обойти гейт, чтобы «добрать объём».',
|
|
337
|
+
'⚠️ Поле guards ослабляет проверку на ОДИН пакет и предназначено для аварийного обхода. Постоянное решение принимается в настройках площадки (besales_platform_settings_update) — там его видно всей команде, а не только автору вызова.',
|
|
338
|
+
'⚠️⚠️ policyForecast — прогноз ПРАВИЛ ОТПРАВКИ ПОСЕГМЕНТНО: сколько людей блока не пропустят «этим сегментом уже слали», «уже получал первое сообщение», «идёт приветствие по регистрации», «эфир ещё не прошёл», тихий период и «тот же текст». Показывай пользователю сумму по блокам сразу после запуска: у пакета отдельного предпросмотра нет, и это единственные числа правил, которые он увидит.',
|
|
339
|
+
'⚠️ policyForecast — best-effort: ПУСТОЙ массив значит «прогноз не посчитался» (отказ чтения), а НЕ «никого не заблокировали». Пакет при этом идёт. Нужны надёжные числа до запуска — сделай besales_getcourse_cold_welcome_preview на каждый блок с его segment.',
|
|
249
340
|
]),
|
|
250
341
|
}),
|
|
251
342
|
defineTool({
|
|
252
343
|
name: 'besales_getcourse_cold_welcome_batch_status',
|
|
344
|
+
sideEffect: 'none',
|
|
253
345
|
requiredFields: ['batch_id'],
|
|
254
346
|
defaultWorkspaceId: true,
|
|
255
347
|
schema: z
|
|
@@ -261,12 +353,16 @@ export const getcourseColdWelcomeTools = [
|
|
|
261
353
|
}),
|
|
262
354
|
enhanceResponse: (response) => withInstructions(response, [
|
|
263
355
|
'state — агрегат по пакету, segments[] — разбивка: у каждого свой статус, свой importJobId и своя причина отказа.',
|
|
264
|
-
'
|
|
356
|
+
'completedAt — момент, когда закрылись ВСЕ сегменты; null означает «пакет ещё идёт». Это и есть ответ на вопрос «закончилось ли»: лезть в import_jobs и chat_users не нужно.',
|
|
357
|
+
'summary — план, ДОКАЗАННЫЕ доставки (строки реестра рассылок) и слитая разбивка исходов; у каждого сегмента те же delivered/outcomes. SKIPPED_UNRESOLVED_VARS означает «переменные текста без значения»: такие контакты не приветствованы и доберутся повторным запуском.',
|
|
358
|
+
'⚠️ summary.segmentsWithoutOutcomes > 0 — у стольких сегментов прогон оборвался, не записав итог: их исходы в разбивку НЕ вошли, и судить о них можно только по delivered. outcomes=null у сегмента значит ровно это, а НЕ «все нули».',
|
|
359
|
+
'⚠️ Опрашивать в цикле не нужно: о завершении пакета и о его обрыве платформа сама докладывает в чат уведомлений воркспейса (там же batchId, доставлено/из скольких и разбивка исходов). Оборванный пакет крон-подметатель находит сам в пределах ~15 минут и освобождает задачу импорта, чтобы воркспейс не оставался заблокированным.',
|
|
265
360
|
'stalled=true означает, что драйвер оборвался (рестарт инстанса). НЕ запускай пакет заново — зови besales_getcourse_cold_welcome_batch_resume по тому же batch_id: источник текста хранится в плане, пересобирать списки не нужно, а уже отправленным контактам повтор не уйдёт (приветствие одноразово НА КОНТАКТ).',
|
|
266
361
|
]),
|
|
267
362
|
}),
|
|
268
363
|
defineTool({
|
|
269
364
|
name: 'besales_getcourse_cold_welcome_batch_resume',
|
|
365
|
+
sideEffect: 'spend',
|
|
270
366
|
requiredFields: ['batch_id'],
|
|
271
367
|
defaultWorkspaceId: true,
|
|
272
368
|
schema: z
|
|
@@ -282,6 +378,7 @@ export const getcourseColdWelcomeTools = [
|
|
|
282
378
|
}),
|
|
283
379
|
defineTool({
|
|
284
380
|
name: 'besales_getcourse_cold_welcome_batch_cancel',
|
|
381
|
+
sideEffect: 'write',
|
|
285
382
|
requiredFields: ['batch_id', 'explicit_confirmation'],
|
|
286
383
|
defaultWorkspaceId: true,
|
|
287
384
|
schema: z
|
|
@@ -301,6 +398,7 @@ export const getcourseColdWelcomeTools = [
|
|
|
301
398
|
}),
|
|
302
399
|
defineTool({
|
|
303
400
|
name: 'besales_getcourse_cold_welcome_cancel',
|
|
401
|
+
sideEffect: 'write',
|
|
304
402
|
requiredFields: ['job_id'],
|
|
305
403
|
defaultWorkspaceId: true,
|
|
306
404
|
schema: z
|
|
@@ -319,6 +417,8 @@ export const getcourseColdWelcomeTools = [
|
|
|
319
417
|
}),
|
|
320
418
|
defineTool({
|
|
321
419
|
name: 'besales_getcourse_contacts_import',
|
|
420
|
+
sideEffect: 'write',
|
|
421
|
+
verifyWithToolName: 'besales_getcourse_contact_import_status',
|
|
322
422
|
requiredFields: ['platform_id', 'contacts'],
|
|
323
423
|
defaultWorkspaceId: true,
|
|
324
424
|
schema: z
|
|
@@ -341,12 +441,33 @@ export const getcourseColdWelcomeTools = [
|
|
|
341
441
|
enhanceResponse: (response) => withInstructions(response, [
|
|
342
442
|
'НИЧЕГО НЕ ОТПРАВЛЯЕТ: заводит или обновляет контакты в базе платформы, чтобы по ним можно было запускать «Нашу отправку». Матчинг существующих — по contact_id (getcourse_user_id).',
|
|
343
443
|
'Импорт нужен ровно тогда, когда preview показал notInBase > 0: отправке нужен ChatUser, иначе контакт получает исход SKIPPED_NOT_IN_BASE и остаётся без сообщения.',
|
|
344
|
-
'Идёт фоном — вернувшийся jobId опрашивай через
|
|
444
|
+
'Идёт фоном — вернувшийся jobId опрашивай через besales_getcourse_contact_import_status каждые 10–30 секунд до COMPLETED, PARTIAL или FAILED; отвечает сразу, а не по завершении.',
|
|
345
445
|
'⚠️ Гейт «один активный импорт на воркспейс» общий с волнами и пакетами: 409 означает «идёт другой импорт», а не сбой — дождись его и повтори.',
|
|
346
446
|
'⚠️ first_name прямо влияет на текст: обращение подставляется системным {greeting}, и у контакта без имени обращения не будет вовсе. Передавай имя, если оно есть в источнике.',
|
|
347
447
|
'check_messenger_presence по умолчанию включён и отсеивает контакты без Telegram/MAX/VK. Это API-вызов на КАЖДЫЙ контакт, поэтому на тысячах строк импорт идёт заметно дольше.',
|
|
348
448
|
'Повторный импорт того же списка безопасен: существующий контакт обновляется, второй не создаётся.',
|
|
349
449
|
]),
|
|
350
450
|
}),
|
|
451
|
+
defineTool({
|
|
452
|
+
name: 'besales_getcourse_contact_import_status',
|
|
453
|
+
sideEffect: 'none',
|
|
454
|
+
requiredFields: ['job_id'],
|
|
455
|
+
defaultWorkspaceId: true,
|
|
456
|
+
schema: z
|
|
457
|
+
.object({
|
|
458
|
+
workspace_id: uuidSchema.optional(),
|
|
459
|
+
job_id: uuidSchema,
|
|
460
|
+
})
|
|
461
|
+
.strict(),
|
|
462
|
+
createRequest: (input) => ({
|
|
463
|
+
method: 'GET',
|
|
464
|
+
path: `/workspaces/${input.workspace_id}/getcourse-contact-imports/${input.job_id}`,
|
|
465
|
+
}),
|
|
466
|
+
enhanceResponse: (response) => withInstructions(response, [
|
|
467
|
+
'Опрашивай каждые 10–30 секунд до terminal state: COMPLETED, PARTIAL или FAILED.',
|
|
468
|
+
'PARTIAL означает, что часть контактов записана, а часть завершилась ошибками; сверяй successCount, failedCount и errors перед следующим шагом.',
|
|
469
|
+
'Отмены нет: импорт пишет контакты по мере обработки. Повтор того же списка безопасен — существующие карточки обновятся без дублей.',
|
|
470
|
+
]),
|
|
471
|
+
}),
|
|
351
472
|
];
|
|
352
473
|
//# sourceMappingURL=getcourse-cold-welcome.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getcourse-cold-welcome.js","sourceRoot":"","sources":["../../../src/tools/definitions/getcourse-cold-welcome.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"getcourse-cold-welcome.js","sourceRoot":"","sources":["../../../src/tools/definitions/getcourse-cold-welcome.ts"],"names":[],"mappings":"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"}
|
|
@@ -29,6 +29,7 @@ const mapGetCourseWaveContact = (contact) => compactObject({
|
|
|
29
29
|
export const getCourseWaveTools = [
|
|
30
30
|
defineTool({
|
|
31
31
|
name: 'besales_getcourse_wave_import',
|
|
32
|
+
sideEffect: 'spend',
|
|
32
33
|
requiredFields: ['platform_id', 'crm_id', 'channels', 'contacts'],
|
|
33
34
|
defaultWorkspaceId: true,
|
|
34
35
|
schema: z
|
|
@@ -131,6 +132,7 @@ export const getCourseWaveTools = [
|
|
|
131
132
|
}),
|
|
132
133
|
defineTool({
|
|
133
134
|
name: 'besales_getcourse_wave_status',
|
|
135
|
+
sideEffect: 'none',
|
|
134
136
|
requiredFields: ['job_id'],
|
|
135
137
|
defaultWorkspaceId: true,
|
|
136
138
|
schema: z.object({
|
|
@@ -149,6 +151,7 @@ export const getCourseWaveTools = [
|
|
|
149
151
|
}),
|
|
150
152
|
defineTool({
|
|
151
153
|
name: 'besales_getcourse_wave_run_start',
|
|
154
|
+
sideEffect: 'spend',
|
|
152
155
|
requiredFields: ['platform_id', 'crm_id', 'channels', 'contacts'],
|
|
153
156
|
defaultWorkspaceId: true,
|
|
154
157
|
schema: z
|
|
@@ -262,6 +265,7 @@ export const getCourseWaveTools = [
|
|
|
262
265
|
}),
|
|
263
266
|
defineTool({
|
|
264
267
|
name: 'besales_getcourse_wave_run_status',
|
|
268
|
+
sideEffect: 'none',
|
|
265
269
|
requiredFields: ['run_id'],
|
|
266
270
|
defaultWorkspaceId: true,
|
|
267
271
|
schema: z.object({
|
|
@@ -281,8 +285,13 @@ export const getCourseWaveTools = [
|
|
|
281
285
|
}),
|
|
282
286
|
defineTool({
|
|
283
287
|
name: 'besales_getcourse_wave_run_contacts',
|
|
288
|
+
sideEffect: 'none',
|
|
284
289
|
requiredFields: ['run_id'],
|
|
285
290
|
defaultWorkspaceId: true,
|
|
291
|
+
resultPolicy: {
|
|
292
|
+
neverTruncate: true,
|
|
293
|
+
narrowingHint: 'Уменьшите limit, фильтруйте по status и идите по страницам через cursor.',
|
|
294
|
+
},
|
|
286
295
|
schema: z.object({
|
|
287
296
|
workspace_id: uuidSchema.optional(),
|
|
288
297
|
run_id: uuidSchema,
|
|
@@ -315,6 +324,7 @@ export const getCourseWaveTools = [
|
|
|
315
324
|
}),
|
|
316
325
|
defineTool({
|
|
317
326
|
name: 'besales_getcourse_wave_run_cancel',
|
|
327
|
+
sideEffect: 'write',
|
|
318
328
|
requiredFields: ['run_id'],
|
|
319
329
|
defaultWorkspaceId: true,
|
|
320
330
|
schema: z.object({
|
|
@@ -334,6 +344,7 @@ export const getCourseWaveTools = [
|
|
|
334
344
|
}),
|
|
335
345
|
defineTool({
|
|
336
346
|
name: 'besales_getcourse_wave_run_batch_start',
|
|
347
|
+
sideEffect: 'spend',
|
|
337
348
|
requiredFields: ['batch_key', 'platform_id', 'crm_id', 'segments'],
|
|
338
349
|
defaultWorkspaceId: true,
|
|
339
350
|
schema: z
|
|
@@ -451,6 +462,7 @@ export const getCourseWaveTools = [
|
|
|
451
462
|
}),
|
|
452
463
|
defineTool({
|
|
453
464
|
name: 'besales_getcourse_wave_run_batch_status',
|
|
465
|
+
sideEffect: 'none',
|
|
454
466
|
requiredFields: ['batch_id'],
|
|
455
467
|
defaultWorkspaceId: true,
|
|
456
468
|
schema: z.object({
|
|
@@ -469,6 +481,7 @@ export const getCourseWaveTools = [
|
|
|
469
481
|
}),
|
|
470
482
|
defineTool({
|
|
471
483
|
name: 'besales_getcourse_wave_run_batch_cancel',
|
|
484
|
+
sideEffect: 'write',
|
|
472
485
|
requiredFields: ['batch_id'],
|
|
473
486
|
defaultWorkspaceId: true,
|
|
474
487
|
schema: z.object({
|
|
@@ -486,6 +499,7 @@ export const getCourseWaveTools = [
|
|
|
486
499
|
}),
|
|
487
500
|
defineTool({
|
|
488
501
|
name: 'besales_getcourse_wave_run_batch_resume',
|
|
502
|
+
sideEffect: 'spend',
|
|
489
503
|
requiredFields: ['batch_id'],
|
|
490
504
|
defaultWorkspaceId: true,
|
|
491
505
|
schema: z.object({
|