@besales/mcp 0.48.0 → 1.0.0-beta.2

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 (587) hide show
  1. package/README.md +109 -164
  2. package/README.onprem.ru.md +35 -0
  3. package/bin/besales-mcp-http.js +9 -0
  4. package/bin/besales-onprem.mjs +19 -0
  5. package/dist/auth/connection-store.d.ts +3 -1
  6. package/dist/auth/connection-store.js +9 -3
  7. package/dist/auth/connection-store.js.map +1 -1
  8. package/dist/auth/oauth-client.d.ts +20 -27
  9. package/dist/auth/oauth-client.js +31 -23
  10. package/dist/auth/oauth-client.js.map +1 -1
  11. package/dist/auth/session-workspace.d.ts +1 -0
  12. package/dist/auth/session-workspace.js +10 -1
  13. package/dist/auth/session-workspace.js.map +1 -1
  14. package/dist/auth/token-storage.js +4 -1
  15. package/dist/auth/token-storage.js.map +1 -1
  16. package/dist/cli.d.ts +1 -0
  17. package/dist/cli.js +80 -19
  18. package/dist/cli.js.map +1 -1
  19. package/dist/constants/crm-catalog.d.ts +2 -0
  20. package/dist/constants/crm-catalog.js +3 -0
  21. package/dist/constants/crm-catalog.js.map +1 -0
  22. package/dist/http/api-client.d.ts +52 -7
  23. package/dist/http/api-client.js +131 -66
  24. package/dist/http/api-client.js.map +1 -1
  25. package/dist/http/feedback-document-error.d.ts +26 -0
  26. package/dist/http/feedback-document-error.js +22 -0
  27. package/dist/http/feedback-document-error.js.map +1 -0
  28. package/dist/http-server.d.ts +15 -0
  29. package/dist/http-server.js +378 -0
  30. package/dist/http-server.js.map +1 -0
  31. package/dist/instructions/server-instructions.d.ts +1 -1
  32. package/dist/instructions/server-instructions.js +6 -3
  33. package/dist/instructions/server-instructions.js.map +1 -1
  34. package/dist/network/constants.d.ts +25 -0
  35. package/dist/network/constants.js +26 -0
  36. package/dist/network/constants.js.map +1 -0
  37. package/dist/network/failed-verifications.d.ts +10 -0
  38. package/dist/network/failed-verifications.js +37 -0
  39. package/dist/network/failed-verifications.js.map +1 -0
  40. package/dist/network/http-test-fixture.d.ts +3 -0
  41. package/dist/network/http-test-fixture.js +86 -0
  42. package/dist/network/http-test-fixture.js.map +1 -0
  43. package/dist/network/known-keys.d.ts +10 -0
  44. package/dist/network/known-keys.js +38 -0
  45. package/dist/network/known-keys.js.map +1 -0
  46. package/dist/network/memory-credentials.d.ts +11 -0
  47. package/dist/network/memory-credentials.js +24 -0
  48. package/dist/network/memory-credentials.js.map +1 -0
  49. package/dist/network/rate-limit.d.ts +23 -0
  50. package/dist/network/rate-limit.js +62 -0
  51. package/dist/network/rate-limit.js.map +1 -0
  52. package/dist/network/rejected-keys.d.ts +9 -0
  53. package/dist/network/rejected-keys.js +39 -0
  54. package/dist/network/rejected-keys.js.map +1 -0
  55. package/dist/network/request-work.d.ts +8 -0
  56. package/dist/network/request-work.js +20 -0
  57. package/dist/network/request-work.js.map +1 -0
  58. package/dist/network/successful-keys.d.ts +17 -0
  59. package/dist/network/successful-keys.js +47 -0
  60. package/dist/network/successful-keys.js.map +1 -0
  61. package/dist/resources/concepts/external-execution.md +3 -1
  62. package/dist/resources/concepts/feedback-sheets.md +21 -12
  63. package/dist/resources/concepts/icp.md +8 -1
  64. package/dist/resources/concepts/sandbox.md +15 -6
  65. package/dist/resources/concepts/triggers.md +8 -0
  66. package/dist/resources/concepts/workbook-classification.md +104 -50
  67. package/dist/resources/docs/agent-behavior.md +51 -382
  68. package/dist/resources/docs/campaigns.md +9 -16
  69. package/dist/resources/docs/crm-integration.md +39 -523
  70. package/dist/resources/docs/files-and-uploads.md +23 -286
  71. package/dist/resources/docs/follow-up.md +47 -12
  72. package/dist/resources/docs/knowledge-base.md +52 -521
  73. package/dist/resources/docs/pipeline-builder.md +26 -216
  74. package/dist/resources/docs/pipeline-settings-deep.md +27 -220
  75. package/dist/resources/docs/platforms.md +106 -519
  76. package/dist/resources/docs/prompt-anatomy.md +39 -285
  77. package/dist/resources/docs/routing.md +8 -16
  78. package/dist/resources/docs/trigger-actions.md +40 -24
  79. package/dist/resources/docs/variables.md +8 -12
  80. package/dist/resources/operator-edit.contract.d.ts +7 -0
  81. package/dist/resources/operator-edit.contract.js +8 -0
  82. package/dist/resources/operator-edit.contract.js.map +1 -0
  83. package/dist/resources/registry.js +20 -4
  84. package/dist/resources/registry.js.map +1 -1
  85. package/dist/resources/workflows/audit-dialogues.md +23 -12
  86. package/dist/resources/workflows/compare-models.md +6 -6
  87. package/dist/resources/workflows/connect-crm-from-scratch.md +15 -12
  88. package/dist/resources/workflows/connect-datasource-from-scratch.md +5 -4
  89. package/dist/resources/workflows/extract-from-document.md +8 -6
  90. package/dist/resources/workflows/operator-edit.md +15 -0
  91. package/dist/resources/workflows/platform-setup-from-scratch.md +59 -70
  92. package/dist/resources/workflows/production-readiness-check.md +25 -15
  93. package/dist/schemas/mcp-tools.json +9902 -4734
  94. package/dist/schemas/voice-actions-api.contract.json +248 -0
  95. package/dist/shared/constants/broadcast-reason.constants.d.ts +2 -0
  96. package/dist/shared/constants/broadcast-reason.constants.js +47 -0
  97. package/dist/shared/constants/broadcast-reason.constants.js.map +1 -0
  98. package/dist/shared/constants/crm-stage-pool.constants.d.ts +2 -0
  99. package/dist/shared/constants/crm-stage-pool.constants.js +3 -0
  100. package/dist/shared/constants/crm-stage-pool.constants.js.map +1 -0
  101. package/dist/shared/constants/followup-note.constants.d.ts +3 -0
  102. package/dist/shared/constants/followup-note.constants.js +4 -0
  103. package/dist/shared/constants/followup-note.constants.js.map +1 -0
  104. package/dist/shared/constants/followup-session.constants.d.ts +2 -0
  105. package/dist/shared/constants/followup-session.constants.js +3 -0
  106. package/dist/shared/constants/followup-session.constants.js.map +1 -0
  107. package/dist/shared/constants/funnel-analytics.constants.d.ts +2 -0
  108. package/dist/shared/constants/funnel-analytics.constants.js +3 -0
  109. package/dist/shared/constants/funnel-analytics.constants.js.map +1 -0
  110. package/dist/shared/constants/message-filter.constants.d.ts +7 -0
  111. package/dist/shared/constants/message-filter.constants.js +8 -0
  112. package/dist/shared/constants/message-filter.constants.js.map +1 -0
  113. package/dist/shared/utils/trigger-repeat-mapping.d.ts +72 -0
  114. package/dist/shared/utils/trigger-repeat-mapping.js +53 -0
  115. package/dist/shared/utils/trigger-repeat-mapping.js.map +1 -0
  116. package/dist/skills/besales-dialogue-audit/SKILL.md +31 -20
  117. package/dist/tasks/task-state-store.js +5 -0
  118. package/dist/tasks/task-state-store.js.map +1 -1
  119. package/dist/tools/annotations.js +4 -3
  120. package/dist/tools/annotations.js.map +1 -1
  121. package/dist/tools/definitions/agent-design.d.ts +78 -21
  122. package/dist/tools/definitions/agent-design.js +246 -90
  123. package/dist/tools/definitions/agent-design.js.map +1 -1
  124. package/dist/tools/definitions/agent-model-notice.d.ts +5 -0
  125. package/dist/tools/definitions/agent-model-notice.js +31 -0
  126. package/dist/tools/definitions/agent-model-notice.js.map +1 -0
  127. package/dist/tools/definitions/agent-models.d.ts +5 -0
  128. package/dist/tools/definitions/agent-models.js +26 -0
  129. package/dist/tools/definitions/agent-models.js.map +1 -0
  130. package/dist/tools/definitions/agent-settings.d.ts +85 -0
  131. package/dist/tools/definitions/agent-settings.js +187 -0
  132. package/dist/tools/definitions/agent-settings.js.map +1 -0
  133. package/dist/tools/definitions/ai-costs.d.ts +12 -0
  134. package/dist/tools/definitions/ai-costs.js +142 -0
  135. package/dist/tools/definitions/ai-costs.js.map +1 -0
  136. package/dist/tools/definitions/api-tool-request.d.ts +15 -0
  137. package/dist/tools/definitions/api-tool-request.js +2 -0
  138. package/dist/tools/definitions/api-tool-request.js.map +1 -0
  139. package/dist/tools/definitions/behavior-shipped-form.d.ts +182 -0
  140. package/dist/tools/definitions/behavior-shipped-form.js +185 -0
  141. package/dist/tools/definitions/behavior-shipped-form.js.map +1 -0
  142. package/dist/tools/definitions/broadcast-alerts.d.ts +6 -0
  143. package/dist/tools/definitions/broadcast-alerts.js +72 -0
  144. package/dist/tools/definitions/broadcast-alerts.js.map +1 -0
  145. package/dist/tools/definitions/broadcast-analytics.d.ts +102 -18
  146. package/dist/tools/definitions/broadcast-analytics.js +732 -431
  147. package/dist/tools/definitions/broadcast-analytics.js.map +1 -1
  148. package/dist/tools/definitions/broadcast-scheduler.d.ts +10 -13
  149. package/dist/tools/definitions/broadcast-scheduler.js +196 -154
  150. package/dist/tools/definitions/broadcast-scheduler.js.map +1 -1
  151. package/dist/tools/definitions/call-operator-task.schema.d.ts +11 -0
  152. package/dist/tools/definitions/call-operator-task.schema.js +30 -0
  153. package/dist/tools/definitions/call-operator-task.schema.js.map +1 -0
  154. package/dist/tools/definitions/contacts.d.ts +3 -0
  155. package/dist/tools/definitions/contacts.js +57 -31
  156. package/dist/tools/definitions/contacts.js.map +1 -1
  157. package/dist/tools/definitions/crm-platform.d.ts +28 -41
  158. package/dist/tools/definitions/crm-platform.js +235 -368
  159. package/dist/tools/definitions/crm-platform.js.map +1 -1
  160. package/dist/tools/definitions/crm-stage-pool.messages.d.ts +39 -0
  161. package/dist/tools/definitions/crm-stage-pool.messages.js +43 -0
  162. package/dist/tools/definitions/crm-stage-pool.messages.js.map +1 -0
  163. package/dist/tools/definitions/crm-stage-pool.schema.d.ts +64 -0
  164. package/dist/tools/definitions/crm-stage-pool.schema.js +109 -0
  165. package/dist/tools/definitions/crm-stage-pool.schema.js.map +1 -0
  166. package/dist/tools/definitions/custom-reports.d.ts +12 -0
  167. package/dist/tools/definitions/custom-reports.js +68 -0
  168. package/dist/tools/definitions/custom-reports.js.map +1 -0
  169. package/dist/tools/definitions/datasource.d.ts +2 -1
  170. package/dist/tools/definitions/datasource.js +28 -13
  171. package/dist/tools/definitions/datasource.js.map +1 -1
  172. package/dist/tools/definitions/dialog-review-findings-response.d.ts +14 -0
  173. package/dist/tools/definitions/dialog-review-findings-response.js +23 -0
  174. package/dist/tools/definitions/dialog-review-findings-response.js.map +1 -0
  175. package/dist/tools/definitions/dialog-review-safe-response.d.ts +5 -0
  176. package/dist/tools/definitions/dialog-review-safe-response.js +152 -0
  177. package/dist/tools/definitions/dialog-review-safe-response.js.map +1 -0
  178. package/dist/tools/definitions/dialog-review.d.ts +49 -0
  179. package/dist/tools/definitions/dialog-review.js +383 -0
  180. package/dist/tools/definitions/dialog-review.js.map +1 -0
  181. package/dist/tools/definitions/dialogue-analysis.d.ts +46 -0
  182. package/dist/tools/definitions/dialogue-analysis.js +170 -0
  183. package/dist/tools/definitions/dialogue-analysis.js.map +1 -0
  184. package/dist/tools/definitions/dialogue-audit-agent-scope.d.ts +7 -0
  185. package/dist/tools/definitions/dialogue-audit-agent-scope.js +41 -0
  186. package/dist/tools/definitions/dialogue-audit-agent-scope.js.map +1 -0
  187. package/dist/tools/definitions/dialogue-audit-alias.d.ts +67 -0
  188. package/dist/tools/definitions/dialogue-audit-alias.js +559 -0
  189. package/dist/tools/definitions/dialogue-audit-alias.js.map +1 -0
  190. package/dist/tools/definitions/dialogue-export.d.ts +7 -1
  191. package/dist/tools/definitions/dialogue-export.js +89 -32
  192. package/dist/tools/definitions/dialogue-export.js.map +1 -1
  193. package/dist/tools/definitions/dialogue-followup-state.d.ts +9 -0
  194. package/dist/tools/definitions/dialogue-followup-state.js +69 -0
  195. package/dist/tools/definitions/dialogue-followup-state.js.map +1 -0
  196. package/dist/tools/definitions/edit-version-transport.test-fixtures.d.ts +13 -0
  197. package/dist/tools/definitions/edit-version-transport.test-fixtures.js +292 -0
  198. package/dist/tools/definitions/edit-version-transport.test-fixtures.js.map +1 -0
  199. package/dist/tools/definitions/edit-version.d.ts +5 -0
  200. package/dist/tools/definitions/edit-version.js +20 -0
  201. package/dist/tools/definitions/edit-version.js.map +1 -0
  202. package/dist/tools/definitions/external-api-channels.js +17 -15
  203. package/dist/tools/definitions/external-api-channels.js.map +1 -1
  204. package/dist/tools/definitions/feedback-document-access.d.ts +16 -0
  205. package/dist/tools/definitions/feedback-document-access.js +63 -0
  206. package/dist/tools/definitions/feedback-document-access.js.map +1 -0
  207. package/dist/tools/definitions/fixtures/shipped-setup-status.d.ts +3 -0
  208. package/dist/tools/definitions/fixtures/shipped-setup-status.js +9 -0
  209. package/dist/tools/definitions/fixtures/shipped-setup-status.js.map +1 -0
  210. package/dist/tools/definitions/follow-up-config.d.ts +79 -0
  211. package/dist/tools/definitions/follow-up-config.js +258 -0
  212. package/dist/tools/definitions/follow-up-config.js.map +1 -0
  213. package/dist/tools/definitions/follow-up-funnel-test.d.ts +4 -3
  214. package/dist/tools/definitions/follow-up-funnel-test.js +65 -52
  215. package/dist/tools/definitions/follow-up-funnel-test.js.map +1 -1
  216. package/dist/tools/definitions/follow-up-promotion-instructions.d.ts +2 -0
  217. package/dist/tools/definitions/follow-up-promotion-instructions.js +7 -0
  218. package/dist/tools/definitions/follow-up-promotion-instructions.js.map +1 -0
  219. package/dist/tools/definitions/follow-up-setup.d.ts +4 -28
  220. package/dist/tools/definitions/follow-up-setup.js +20 -87
  221. package/dist/tools/definitions/follow-up-setup.js.map +1 -1
  222. package/dist/tools/definitions/follow-up.d.ts +20 -122
  223. package/dist/tools/definitions/follow-up.js +200 -357
  224. package/dist/tools/definitions/follow-up.js.map +1 -1
  225. package/dist/tools/definitions/followup-getcourse-compat.d.ts +29 -0
  226. package/dist/tools/definitions/followup-getcourse-compat.js +62 -0
  227. package/dist/tools/definitions/followup-getcourse-compat.js.map +1 -0
  228. package/dist/tools/definitions/followup-sequence-config.schema.d.ts +10 -0
  229. package/dist/tools/definitions/followup-sequence-config.schema.js +14 -0
  230. package/dist/tools/definitions/followup-sequence-config.schema.js.map +1 -0
  231. package/dist/tools/definitions/funnel-analytics.d.ts +18 -0
  232. package/dist/tools/definitions/funnel-analytics.js +150 -0
  233. package/dist/tools/definitions/funnel-analytics.js.map +1 -0
  234. package/dist/tools/definitions/getcourse-anchor-refresh.d.ts +5 -9
  235. package/dist/tools/definitions/getcourse-anchor-refresh.js +26 -31
  236. package/dist/tools/definitions/getcourse-anchor-refresh.js.map +1 -1
  237. package/dist/tools/definitions/getcourse-cold-outbound-settings.d.ts +46 -0
  238. package/dist/tools/definitions/getcourse-cold-outbound-settings.js +37 -0
  239. package/dist/tools/definitions/getcourse-cold-outbound-settings.js.map +1 -0
  240. package/dist/tools/definitions/getcourse-cold-welcome.d.ts +14 -29
  241. package/dist/tools/definitions/getcourse-cold-welcome.js +180 -254
  242. package/dist/tools/definitions/getcourse-cold-welcome.js.map +1 -1
  243. package/dist/tools/definitions/getcourse-wave-welcome.messages.d.ts +10 -0
  244. package/dist/tools/definitions/getcourse-wave-welcome.messages.js +17 -0
  245. package/dist/tools/definitions/getcourse-wave-welcome.messages.js.map +1 -0
  246. package/dist/tools/definitions/help.js.map +1 -1
  247. package/dist/tools/definitions/icp-import-source.d.ts +75 -0
  248. package/dist/tools/definitions/icp-import-source.js +88 -0
  249. package/dist/tools/definitions/icp-import-source.js.map +1 -0
  250. package/dist/tools/definitions/inbound-analytics.d.ts +13 -0
  251. package/dist/tools/definitions/inbound-analytics.js +55 -0
  252. package/dist/tools/definitions/inbound-analytics.js.map +1 -0
  253. package/dist/tools/definitions/instagram-comment.templates.d.ts +19 -0
  254. package/dist/tools/definitions/instagram-comment.templates.js +34 -0
  255. package/dist/tools/definitions/instagram-comment.templates.js.map +1 -0
  256. package/dist/tools/definitions/instagram-settings-compat.d.ts +33 -0
  257. package/dist/tools/definitions/instagram-settings-compat.js +7 -0
  258. package/dist/tools/definitions/instagram-settings-compat.js.map +1 -0
  259. package/dist/tools/definitions/knowledge-chunking.d.ts +42 -0
  260. package/dist/tools/definitions/knowledge-chunking.js +83 -0
  261. package/dist/tools/definitions/knowledge-chunking.js.map +1 -0
  262. package/dist/tools/definitions/knowledge-space-search-fields.d.ts +12 -0
  263. package/dist/tools/definitions/knowledge-space-search-fields.js +30 -0
  264. package/dist/tools/definitions/knowledge-space-search-fields.js.map +1 -0
  265. package/dist/tools/definitions/knowledge.d.ts +24 -14
  266. package/dist/tools/definitions/knowledge.js +342 -233
  267. package/dist/tools/definitions/knowledge.js.map +1 -1
  268. package/dist/tools/definitions/legacy-trigger-repeat.d.ts +17 -0
  269. package/dist/tools/definitions/legacy-trigger-repeat.js +53 -0
  270. package/dist/tools/definitions/legacy-trigger-repeat.js.map +1 -0
  271. package/dist/tools/definitions/link-tracking.d.ts +8 -0
  272. package/dist/tools/definitions/link-tracking.js +141 -38
  273. package/dist/tools/definitions/link-tracking.js.map +1 -1
  274. package/dist/tools/definitions/mailing-variant-content.d.ts +75 -0
  275. package/dist/tools/definitions/mailing-variant-content.js +73 -0
  276. package/dist/tools/definitions/mailing-variant-content.js.map +1 -0
  277. package/dist/tools/definitions/model-comparison.d.ts +1 -0
  278. package/dist/tools/definitions/model-comparison.js +4 -5
  279. package/dist/tools/definitions/model-comparison.js.map +1 -1
  280. package/dist/tools/definitions/money-currency.d.ts +5 -0
  281. package/dist/tools/definitions/money-currency.js +10 -0
  282. package/dist/tools/definitions/money-currency.js.map +1 -0
  283. package/dist/tools/definitions/operator-workflow.d.ts +5 -5
  284. package/dist/tools/definitions/operator-workflow.js +80 -27
  285. package/dist/tools/definitions/operator-workflow.js.map +1 -1
  286. package/dist/tools/definitions/platform-funnel-analytics.d.ts +42 -0
  287. package/dist/tools/definitions/platform-funnel-analytics.js +72 -0
  288. package/dist/tools/definitions/platform-funnel-analytics.js.map +1 -0
  289. package/dist/tools/definitions/platform-getcourse-wave-field-bindings.d.ts +42 -0
  290. package/dist/tools/definitions/platform-getcourse-wave-field-bindings.js +51 -0
  291. package/dist/tools/definitions/platform-getcourse-wave-field-bindings.js.map +1 -0
  292. package/dist/tools/definitions/platform-settings-limits.d.ts +5 -0
  293. package/dist/tools/definitions/platform-settings-limits.js +6 -0
  294. package/dist/tools/definitions/platform-settings-limits.js.map +1 -0
  295. package/dist/tools/definitions/platform-settings-shipped-form.d.ts +37 -0
  296. package/dist/tools/definitions/platform-settings-shipped-form.js +310 -0
  297. package/dist/tools/definitions/platform-settings-shipped-form.js.map +1 -0
  298. package/dist/tools/definitions/platform-settings-update.d.ts +300 -0
  299. package/dist/tools/definitions/platform-settings-update.js +134 -0
  300. package/dist/tools/definitions/platform-settings-update.js.map +1 -0
  301. package/dist/tools/definitions/{getcourse-wave.d.ts → platform-setup-wave.d.ts} +75 -6
  302. package/dist/tools/definitions/platform-setup-wave.js +1079 -0
  303. package/dist/tools/definitions/platform-setup-wave.js.map +1 -0
  304. package/dist/tools/definitions/platform-setup.d.ts +686 -224
  305. package/dist/tools/definitions/platform-setup.js +313 -752
  306. package/dist/tools/definitions/platform-setup.js.map +1 -1
  307. package/dist/tools/definitions/platform-widget-page-rules.schema.d.ts +10 -0
  308. package/dist/tools/definitions/platform-widget-page-rules.schema.js +7 -0
  309. package/dist/tools/definitions/platform-widget-page-rules.schema.js.map +1 -0
  310. package/dist/tools/definitions/prompt-authoring.constants.d.ts +2 -0
  311. package/dist/tools/definitions/prompt-authoring.constants.js +3 -0
  312. package/dist/tools/definitions/prompt-authoring.constants.js.map +1 -0
  313. package/dist/tools/definitions/prompt-batch-controls.d.ts +5 -0
  314. package/dist/tools/definitions/prompt-batch-controls.js +40 -0
  315. package/dist/tools/definitions/prompt-batch-controls.js.map +1 -0
  316. package/dist/tools/definitions/prompt-draft-authoring.d.ts +5 -0
  317. package/dist/tools/definitions/prompt-draft-authoring.js +24 -0
  318. package/dist/tools/definitions/prompt-draft-authoring.js.map +1 -0
  319. package/dist/tools/definitions/prompt-text-projection.d.ts +11 -0
  320. package/dist/tools/definitions/prompt-text-projection.js +62 -0
  321. package/dist/tools/definitions/prompt-text-projection.js.map +1 -0
  322. package/dist/tools/definitions/reviewer-paid.d.ts +19 -0
  323. package/dist/tools/definitions/reviewer-paid.js +115 -0
  324. package/dist/tools/definitions/reviewer-paid.js.map +1 -0
  325. package/dist/tools/definitions/routing-condition-projection.d.ts +31 -0
  326. package/dist/tools/definitions/routing-condition-projection.js +97 -0
  327. package/dist/tools/definitions/routing-condition-projection.js.map +1 -0
  328. package/dist/tools/definitions/schedule-selection-hints.d.ts +3 -0
  329. package/dist/tools/definitions/schedule-selection-hints.js +42 -0
  330. package/dist/tools/definitions/schedule-selection-hints.js.map +1 -0
  331. package/dist/tools/definitions/{scheduled-tasks.d.ts → scheduled-task-alias.d.ts} +12 -10
  332. package/dist/tools/definitions/scheduled-task-alias.js +207 -0
  333. package/dist/tools/definitions/scheduled-task-alias.js.map +1 -0
  334. package/dist/tools/definitions/session.js +3 -3
  335. package/dist/tools/definitions/session.js.map +1 -1
  336. package/dist/tools/definitions/setup-init-operation.schema.d.ts +2 -0
  337. package/dist/tools/definitions/setup-init-operation.schema.js +6 -0
  338. package/dist/tools/definitions/setup-init-operation.schema.js.map +1 -0
  339. package/dist/tools/definitions/shared-input.helpers.d.ts +51 -0
  340. package/dist/tools/definitions/shared-input.helpers.js +323 -0
  341. package/dist/tools/definitions/shared-input.helpers.js.map +1 -0
  342. package/dist/tools/definitions/shared.d.ts +396 -307
  343. package/dist/tools/definitions/shared.js +430 -652
  344. package/dist/tools/definitions/shared.js.map +1 -1
  345. package/dist/tools/definitions/shipped-output-names.d.ts +19 -0
  346. package/dist/tools/definitions/shipped-output-names.js +123 -0
  347. package/dist/tools/definitions/shipped-output-names.js.map +1 -0
  348. package/dist/tools/definitions/task-state.d.ts +5 -5
  349. package/dist/tools/definitions/task-state.js +2 -1
  350. package/dist/tools/definitions/task-state.js.map +1 -1
  351. package/dist/tools/definitions/telegram-personal-capacity.d.ts +4 -0
  352. package/dist/tools/definitions/telegram-personal-capacity.js +18 -0
  353. package/dist/tools/definitions/telegram-personal-capacity.js.map +1 -0
  354. package/dist/tools/definitions/telegram-pool-policy.d.ts +8 -0
  355. package/dist/tools/definitions/telegram-pool-policy.js +56 -0
  356. package/dist/tools/definitions/telegram-pool-policy.js.map +1 -0
  357. package/dist/tools/definitions/touch-history-alias.d.ts +4 -0
  358. package/dist/tools/definitions/touch-history-alias.js +99 -0
  359. package/dist/tools/definitions/touch-history-alias.js.map +1 -0
  360. package/dist/tools/definitions/trigger-action-item.schema.d.ts +254 -0
  361. package/dist/tools/definitions/trigger-action-item.schema.js +121 -0
  362. package/dist/tools/definitions/trigger-action-item.schema.js.map +1 -0
  363. package/dist/tools/definitions/trigger-argument.schema.d.ts +14 -0
  364. package/dist/tools/definitions/trigger-argument.schema.js +23 -0
  365. package/dist/tools/definitions/trigger-argument.schema.js.map +1 -0
  366. package/dist/tools/definitions/trigger-claim-alias.d.ts +10 -0
  367. package/dist/tools/definitions/trigger-claim-alias.js +90 -0
  368. package/dist/tools/definitions/trigger-claim-alias.js.map +1 -0
  369. package/dist/tools/definitions/trigger-echo-projection.d.ts +1 -0
  370. package/dist/tools/definitions/trigger-echo-projection.js +41 -0
  371. package/dist/tools/definitions/trigger-echo-projection.js.map +1 -0
  372. package/dist/tools/definitions/trigger-upsert.tool.d.ts +29 -0
  373. package/dist/tools/definitions/trigger-upsert.tool.js +122 -0
  374. package/dist/tools/definitions/trigger-upsert.tool.js.map +1 -0
  375. package/dist/tools/definitions/v15-port-descriptions.d.ts +11 -0
  376. package/dist/tools/definitions/v15-port-descriptions.js +30 -0
  377. package/dist/tools/definitions/v15-port-descriptions.js.map +1 -0
  378. package/dist/tools/definitions/variables.d.ts +44 -0
  379. package/dist/tools/definitions/variables.js +310 -0
  380. package/dist/tools/definitions/variables.js.map +1 -0
  381. package/dist/tools/definitions/voice-action-input.d.ts +9 -0
  382. package/dist/tools/definitions/voice-action-input.js +141 -0
  383. package/dist/tools/definitions/voice-action-input.js.map +1 -0
  384. package/dist/tools/definitions/widget-customization-compat.d.ts +51 -0
  385. package/dist/tools/definitions/widget-customization-compat.js +23 -0
  386. package/dist/tools/definitions/widget-customization-compat.js.map +1 -0
  387. package/dist/tools/definitions.d.ts +1089 -636
  388. package/dist/tools/definitions.js +57 -27
  389. package/dist/tools/definitions.js.map +1 -1
  390. package/dist/tools/description-localization.js +3 -2
  391. package/dist/tools/description-localization.js.map +1 -1
  392. package/dist/tools/follow-up-request.d.ts +19 -0
  393. package/dist/tools/follow-up-request.js +81 -0
  394. package/dist/tools/follow-up-request.js.map +1 -0
  395. package/dist/tools/followup-revision.d.ts +4 -0
  396. package/dist/tools/followup-revision.js +29 -0
  397. package/dist/tools/followup-revision.js.map +1 -0
  398. package/dist/tools/incomplete-list.js +4 -0
  399. package/dist/tools/incomplete-list.js.map +1 -1
  400. package/dist/tools/inventory.js +47 -11
  401. package/dist/tools/inventory.js.map +1 -1
  402. package/dist/tools/operation-recovery.d.ts +4 -0
  403. package/dist/tools/operation-recovery.js +33 -0
  404. package/dist/tools/operation-recovery.js.map +1 -0
  405. package/dist/tools/registry-mapping-primary.cases.d.ts +2 -0
  406. package/dist/tools/registry-mapping-primary.cases.js +753 -0
  407. package/dist/tools/registry-mapping-primary.cases.js.map +1 -0
  408. package/dist/tools/registry-mapping-secondary.cases.d.ts +2 -0
  409. package/dist/tools/registry-mapping-secondary.cases.js +626 -0
  410. package/dist/tools/registry-mapping-secondary.cases.js.map +1 -0
  411. package/dist/tools/registry-mapping.cases.d.ts +8 -0
  412. package/dist/tools/registry-mapping.cases.js +13 -0
  413. package/dist/tools/registry-mapping.cases.js.map +1 -0
  414. package/dist/tools/registry-test-fixtures.d.ts +50 -0
  415. package/dist/tools/registry-test-fixtures.js +120 -0
  416. package/dist/tools/registry-test-fixtures.js.map +1 -0
  417. package/dist/tools/registry.d.ts +2 -0
  418. package/dist/tools/registry.js +82 -52
  419. package/dist/tools/registry.js.map +1 -1
  420. package/dist/tools/result.d.ts +1 -0
  421. package/dist/tools/result.js +90 -22
  422. package/dist/tools/result.js.map +1 -1
  423. package/dist/tools/toolsets.d.ts +16 -0
  424. package/dist/tools/toolsets.js +25 -1
  425. package/dist/tools/toolsets.js.map +1 -1
  426. package/dist/types/api-contract.gen.d.ts +105875 -22205
  427. package/dist/utils/credential-signatures.d.ts +3 -0
  428. package/dist/utils/credential-signatures.js +10 -0
  429. package/dist/utils/credential-signatures.js.map +1 -0
  430. package/dist/utils/data-source-column-name.d.ts +10 -0
  431. package/dist/utils/data-source-column-name.js +36 -0
  432. package/dist/utils/data-source-column-name.js.map +1 -0
  433. package/dist/utils/logger.d.ts +1 -0
  434. package/dist/utils/logger.js +32 -8
  435. package/dist/utils/logger.js.map +1 -1
  436. package/dist/utils/secret-read-boundary.d.ts +2 -0
  437. package/dist/utils/secret-read-boundary.js +88 -0
  438. package/dist/utils/secret-read-boundary.js.map +1 -0
  439. package/dist/utils/setup-secrets.d.ts +4 -0
  440. package/dist/utils/setup-secrets.js +40 -0
  441. package/dist/utils/setup-secrets.js.map +1 -0
  442. package/docs/agent-models.md +9 -0
  443. package/docs/agent-usage-guide.full.ru.md +1 -4
  444. package/docs/analytics-contract.md +67 -0
  445. package/docs/async-operation-lifecycle.md +10 -3
  446. package/docs/connect.ru.md +144 -4
  447. package/docs/contact-company-profile.md +17 -0
  448. package/docs/contact-recommendations.md +7 -0
  449. package/docs/crm-stage-pool.md +73 -0
  450. package/docs/customer-data.md +61 -0
  451. package/docs/edit-versions.md +36 -0
  452. package/docs/failure-semantics.md +17 -9
  453. package/docs/help-navigation.md +15 -42
  454. package/docs/host-compatibility-matrix.md +72 -93
  455. package/docs/host-setup.md +33 -35
  456. package/docs/invariants/public-api-and-contracts.md +16 -0
  457. package/docs/legacy-action-settings.md +21 -0
  458. package/docs/main-transfer-dependencies.md +38 -0
  459. package/docs/mcp2-parity.md +50 -0
  460. package/docs/modules/analytics.md +79 -0
  461. package/docs/modules/besales-mcp.md +137 -0
  462. package/docs/modules/dialog-review-report.md +38 -0
  463. package/docs/modules/dialogue-followup-adapters.md +39 -0
  464. package/docs/modules/message-reactions.md +17 -0
  465. package/docs/modules/network-mode.md +284 -0
  466. package/docs/modules/prompt-batch-and-dialogue-controls.md +69 -0
  467. package/docs/pii-policy.md +21 -16
  468. package/docs/response-size-budget.md +197 -7
  469. package/docs/secret-read-boundary.md +102 -0
  470. package/docs/task-state.md +7 -2
  471. package/docs/telegram-pool-policy.md +19 -0
  472. package/docs/tool-effects.md +15 -9
  473. package/docs/tool-surface.md +205 -4
  474. package/docs/voice-actions-and-inbox.md +95 -0
  475. package/docs/wazzup-instagram-comments.md +26 -0
  476. package/package.json +17 -10
  477. package/scripts/api-source-loader.spec.mjs +40 -0
  478. package/scripts/audit-bridge-controls.mjs +129 -0
  479. package/scripts/audit-revert-mutants.mjs +107 -0
  480. package/scripts/bridge-api-input.spec.mjs +98 -0
  481. package/scripts/bridge-controls-mutants.mjs +130 -0
  482. package/scripts/brx3-shipped-refusals.spec.mjs +149 -0
  483. package/scripts/brx4-ledger-payload.spec.mjs +127 -0
  484. package/scripts/build-onprem.mjs +108 -0
  485. package/scripts/connect-clients.sh +141 -0
  486. package/scripts/connect-scopes.mjs +166 -0
  487. package/scripts/connect-scopes.spec.mjs +83 -0
  488. package/scripts/emit-personal-link-carrier.mjs +31 -0
  489. package/scripts/emit-setup-init-schemas.mjs +24 -0
  490. package/scripts/emit-tool-routes.mjs +878 -0
  491. package/scripts/emit-tool-routes.spec.mjs +300 -0
  492. package/scripts/followup-registry.spec.mjs +107 -0
  493. package/scripts/generate-crm-rotation-contract.mjs +98 -0
  494. package/scripts/generate-followup-session-contract.mjs +16 -0
  495. package/scripts/icp-import-verification/mutate.cjs +70 -0
  496. package/scripts/import-secret-read-contract.mjs +53 -0
  497. package/scripts/install-claude-desktop.js +1 -1
  498. package/scripts/lag-decisions.mjs +37 -0
  499. package/scripts/lag-decisions.spec.mjs +87 -0
  500. package/scripts/lag-open-task-owners.mjs +46 -0
  501. package/scripts/lag-open-task-owners.spec.mjs +78 -0
  502. package/scripts/lag-payload.mjs +10 -0
  503. package/scripts/legacy-action-lag.spec.mjs +22 -0
  504. package/scripts/legacy-field-refusal.shipped.spec.mjs +99 -0
  505. package/scripts/mcpcompat-handler.mjs +34 -0
  506. package/scripts/mcpcompat-loader.mjs +36 -0
  507. package/scripts/mcpcompat-typescript.mjs +3 -0
  508. package/scripts/platform-settings-shipped-parity.spec.mjs +89 -0
  509. package/scripts/prbr-round1-recheck.spec.mjs +605 -0
  510. package/scripts/prbr-shipped-compatibility.spec.mjs +276 -0
  511. package/scripts/publish-mcp-registry.mjs +98 -0
  512. package/scripts/publish-mcp-registry.spec.mjs +68 -0
  513. package/scripts/record-scheduled-task-call.mjs +26 -0
  514. package/scripts/refusal-probe.mjs +17 -0
  515. package/scripts/refusal-probe.spec.mjs +29 -0
  516. package/scripts/registry-diff.mjs +502 -0
  517. package/scripts/registry-diff.spec.mjs +787 -0
  518. package/scripts/request-query.mjs +43 -0
  519. package/scripts/request-query.spec.mjs +82 -0
  520. package/scripts/route-lag.mjs +23 -0
  521. package/scripts/route-lag.spec.mjs +30 -0
  522. package/scripts/sample-args.mjs +174 -0
  523. package/scripts/sample-args.spec.mjs +160 -0
  524. package/scripts/shipped-definitions.mjs +197 -0
  525. package/scripts/shipped-definitions.spec.mjs +57 -0
  526. package/scripts/shipped-inputs.spec.mjs +136 -0
  527. package/scripts/shipped-recordings.spec.mjs +19 -0
  528. package/scripts/shipped-ref.d.mts +5 -0
  529. package/scripts/shipped-ref.mjs +20 -0
  530. package/scripts/shipped-ref.spec.mjs +59 -0
  531. package/scripts/shipped-registry.mjs +107 -0
  532. package/scripts/shipped-sample-candidates.mjs +69 -0
  533. package/scripts/shipped-sample-candidates.spec.mjs +117 -0
  534. package/scripts/shipped-sample.mjs +868 -0
  535. package/scripts/shipped-sample.spec.mjs +451 -0
  536. package/scripts/sync-agent-model-schemas.mjs +72 -0
  537. package/scripts/sync-api-contracts.mjs +85 -0
  538. package/scripts/sync-api-contracts.spec.mjs +144 -0
  539. package/scripts/sync-contract-ledger-schemas.mjs +161 -0
  540. package/scripts/sync-crm-stage-pool-schema.mjs +85 -0
  541. package/scripts/sync-prompt-draft-schema.mjs +92 -0
  542. package/scripts/sync-route-map.mjs +94 -0
  543. package/scripts/sync-schema-descriptions.mjs +25 -0
  544. package/scripts/sync-tool-inventory.mjs +27 -0
  545. package/scripts/sync-trigger-argument-schema.mjs +121 -0
  546. package/scripts/sync-trigger-repeat-mapping.mjs +12 -0
  547. package/scripts/sync-voice-actions-contract.mjs +67 -0
  548. package/scripts/sync-voice-actions-tools.mjs +97 -0
  549. package/scripts/sync-wave-id-schemas.mjs +55 -0
  550. package/scripts/tool-input-schemas.mjs +46 -0
  551. package/scripts/tool-input-schemas.spec.mjs +50 -0
  552. package/scripts/verify-followup-adapters.mjs +235 -0
  553. package/scripts/verify-secret-read-import.mjs +84 -0
  554. package/scripts/verify-secret-read-mutants.mjs +143 -0
  555. package/dist/tools/definitions/analytics.d.ts +0 -40
  556. package/dist/tools/definitions/analytics.js +0 -233
  557. package/dist/tools/definitions/analytics.js.map +0 -1
  558. package/dist/tools/definitions/broadcast-mailing-variants.d.ts +0 -41
  559. package/dist/tools/definitions/broadcast-mailing-variants.js +0 -194
  560. package/dist/tools/definitions/broadcast-mailing-variants.js.map +0 -1
  561. package/dist/tools/definitions/dialogue-audit.d.ts +0 -38
  562. package/dist/tools/definitions/dialogue-audit.js +0 -292
  563. package/dist/tools/definitions/dialogue-audit.js.map +0 -1
  564. package/dist/tools/definitions/getcourse-wave.js +0 -519
  565. package/dist/tools/definitions/getcourse-wave.js.map +0 -1
  566. package/dist/tools/definitions/operational-overview.d.ts +0 -3
  567. package/dist/tools/definitions/operational-overview.js +0 -23
  568. package/dist/tools/definitions/operational-overview.js.map +0 -1
  569. package/dist/tools/definitions/scheduled-tasks.js +0 -173
  570. package/dist/tools/definitions/scheduled-tasks.js.map +0 -1
  571. package/dist/tools/definitions/trigger-contact-claims.d.ts +0 -7
  572. package/dist/tools/definitions/trigger-contact-claims.js +0 -60
  573. package/dist/tools/definitions/trigger-contact-claims.js.map +0 -1
  574. package/dist/tools/registry-mapping-cases-core.d.ts +0 -38
  575. package/dist/tools/registry-mapping-cases-core.js +0 -963
  576. package/dist/tools/registry-mapping-cases-core.js.map +0 -1
  577. package/dist/tools/registry-mapping-cases-platform.d.ts +0 -2
  578. package/dist/tools/registry-mapping-cases-platform.js +0 -1052
  579. package/dist/tools/registry-mapping-cases-platform.js.map +0 -1
  580. package/dist/tools/trigger-action-config.d.ts +0 -49
  581. package/dist/tools/trigger-action-config.js +0 -171
  582. package/dist/tools/trigger-action-config.js.map +0 -1
  583. package/docs/evals/model-behavior-scorecard.md +0 -80
  584. package/docs/operation-coverage.md +0 -114
  585. package/scripts/mock-credentials.js +0 -77
  586. package/scripts/model-eval-server.js +0 -213
  587. package/scripts/run-model-eval.js +0 -447
@@ -1,13 +1,26 @@
1
+ import { LINK_PAGINATION_HINT } from './v15-port-descriptions.js';
2
+ // Каталог отслеживаемых ссылок и домен коротких адресов: инструменты, перенесённые с отгруженной
3
+ // линии на контракт v2 (`TrackedLinksController`, `/workspaces/:workspaceId/tracked-links`, и
4
+ // `WorkspaceLinkDomainController`, `/workspaces/:workspaceId/link-tracking-domain`).
5
+ //
6
+ // Каталог v2 постраничный: limit/offset и items/total/limit/offset/hasMore в ответе.
7
+ //
8
+ // ⛔ Сервер называет человека в ленте кликов `contactId`; центральный обработчик инструмента
9
+ // дописывает отгруженное имя `chatUserId` рядом с ним для сохранённых сценариев.
1
10
  import { z } from 'zod';
2
- import { buildListQuery, compactObject, defineTool, uuidSchema, withInstructions } from './shared.js';
11
+ import { MONEY_CURRENCY_INSTRUCTIONS, moneyCurrencySchema } from './money-currency.js';
12
+ import { buildListQuery, compactObject, defineTool, uuidSchema, withInstructions, } from './shared.js';
13
+ /** Паритет с `CreateTrackedLinkDto.name`. */
3
14
  const NAME_MAX_LENGTH = 200;
15
+ /** Паритет с `CreateTrackedLinkDto.targetUrl`. */
4
16
  const TARGET_URL_MAX_LENGTH = 2048;
17
+ /** Паритет с `CreateTrackedLinkDto.productCode`. */
5
18
  const PRODUCT_CODE_MAX_LENGTH = 64;
6
- /** Форма слага — паритет с `CreateTrackedLinkDto`: латиница, цифры, дефис, подчёркивание. */
19
+ /** Форма слага — паритет с `CreateTrackedLinkDto.slug`: латиница, цифры, дефис, подчёркивание. */
7
20
  const SLUG_PATTERN = /^[a-zA-Z0-9_-]{1,64}$/;
8
21
  /** Потолок глубины аналитики — паритет с `LINK_ANALYTICS_MAX_DAYS`. */
9
22
  const ANALYTICS_MAX_DAYS = 366;
10
- /** Потолок страницы каталога и ленты кликов — паритет с `LINK_CATALOG_PAGE_SIZE_MAX`. */
23
+ /** Потолок страницы ленты кликов — паритет с `LINK_CATALOG_PAGE_SIZE_MAX`. */
11
24
  const PAGE_SIZE_MAX = 200;
12
25
  /** Схемы целевого адреса — паритет с `LINK_ALLOWED_PROTOCOLS`. */
13
26
  const ALLOWED_TARGET_PROTOCOLS = ['http:', 'https:'];
@@ -35,21 +48,28 @@ const targetUrlSchema = z
35
48
  }
36
49
  }, { message: 'target_url должен быть абсолютным http(s)-адресом' });
37
50
  const daysSchema = z.number().int().min(1).max(ANALYTICS_MAX_DAYS);
51
+ /**
52
+ * Окно сводки: не задано — за ВСЁ время. Умолчания в 60 дней больше нет нигде, и это несущее:
53
+ * прежде окно расходилось само с собой — выданное раньше него показывалось «выдано 0», а выручка
54
+ * той же строки считалась за всё время.
55
+ */
56
+ const DAYS_ALL_TIME_NOTE = '⚠️ days не задан — сводка за ВСЁ ВРЕМЯ, умолчания нет. Нужно окно — назови его явно; граница включительная и режет момент выдачи.';
38
57
  /** Потолок длины хоста по DNS — паритет с `LINK_DOMAIN_HOST_MAX_LENGTH`. */
39
58
  const DOMAIN_HOST_MAX_LENGTH = 253;
40
- /** Имя перед зоной: 3–24 символа, латиница и цифры, дефис внутри — паритет с `LINK_DOMAIN_LABEL_PATTERN`. */
41
- const DOMAIN_LABEL_PATTERN = /^[a-z0-9][a-z0-9-]{1,22}[a-z0-9]$/;
59
+ /**
60
+ * Имя перед зоной: 1–24 символа, латиница и цифры, дефис внутри — самое мягкое из правил сервера: под собственной
61
+ * зоной клиента имя от одного символа (`LINK_DOMAIN_CLIENT_LABEL_PATTERN`), под зоной платформы — от трёх
62
+ * (`LINK_DOMAIN_LABEL_PATTERN`). Какая зона, решает сервер: список зон рабочей области здесь не дублируется.
63
+ */
64
+ const DOMAIN_LABEL_PATTERN = /^[a-z0-9](?:[a-z0-9-]{0,22}[a-z0-9])?$/;
42
65
  /** Паритет с `LINK_DOMAIN_PUNYCODE_PREFIX`. */
43
66
  const DOMAIN_PUNYCODE_PREFIX = 'xn--';
44
67
  /**
45
- * Хост коротких ссылок воркспейса.
68
+ * Хост коротких ссылок воркспейса — копия отгруженной проверки ФОРМЫ.
46
69
  *
47
- * Проверяется только ФОРМА: голый хост без схемы и пути, имя по правилам DNS, не punycode.
48
- *
49
- * ⚠️ Список ЗОН и список занятых имён здесь сознательно НЕ дублируются — они приходят с
50
- * сервера (`besales_link_domain_get`) и меняются вместе с инфраструктурой. Своя копия
51
- * разъехалась бы с тем, что реально поднято, и агент либо предлагал бы зону, которой нет,
52
- * либо отвергал бы живую. Форму же продублировать безопасно: она структурная.
70
+ * ⚠️ Список ЗОН и занятых имён здесь сознательно НЕ дублируется: они приходят с сервера
71
+ * (`besales_link_domain_get`) и меняются вместе с инфраструктурой. Своя копия разъехалась бы с тем,
72
+ * что реально поднято. Форму продублировать безопасно: она структурная.
53
73
  */
54
74
  const linkDomainSchema = z
55
75
  .string()
@@ -61,45 +81,84 @@ const linkDomainSchema = z
61
81
  if (!/^[a-z0-9.-]+$/.test(host))
62
82
  return false;
63
83
  const [label, ...rest] = host.split('.');
64
- if (rest.length < 1)
84
+ if (label === undefined || rest.length < 1)
65
85
  return false;
66
86
  return DOMAIN_LABEL_PATTERN.test(label) && !label.startsWith(DOMAIN_PUNYCODE_PREFIX);
67
87
  }, {
68
- message: 'domain: хост вида <имя>.<зона> без схемы и пути; имя — 3–24 символа латиницей, ' +
69
- 'цифры и дефис внутри, не начинается с xn--. Доступные зоны — в besales_link_domain_get',
88
+ message: 'domain: хост вида <имя>.<зона> без схемы и пути; имя — до 24 символов латиницей, ' +
89
+ 'цифры и дефис внутри (под зоной платформы — от 3), не начинается с xn--. ' +
90
+ 'Доступные зоны — в besales_link_domain_get',
70
91
  });
92
+ const domainPath = (workspaceId) => `/workspaces/${workspaceId}/link-tracking-domain`;
93
+ /**
94
+ * Отгруженные имена строки охвата дописываются рядом с именами v2.
95
+ *
96
+ * ⛔ Именно дописываются: отгруженный контракт называл канал «площадкой» (`platformId`,
97
+ * `platformName`, `platformDeleted`), и существующий читатель без них получил бы строки без канала —
98
+ * поле просто исчезло бы, молча. Имена v2 остаются на месте для нового читателя.
99
+ */
100
+ function withShippedReachNames(response) {
101
+ if (!Array.isArray(response))
102
+ return response;
103
+ return response.map((item) => {
104
+ if (typeof item !== 'object' || item === null || Array.isArray(item))
105
+ return item;
106
+ const row = item;
107
+ return {
108
+ ...row,
109
+ platformId: row.channelId ?? null,
110
+ platformName: row.channelName ?? null,
111
+ platformDeleted: row.channelDeleted ?? false,
112
+ };
113
+ });
114
+ }
115
+ const catalogPath = (workspaceId, linkId) => {
116
+ const base = `/workspaces/${workspaceId}/tracked-links`;
117
+ return linkId === undefined ? base : `${base}/${linkId}`;
118
+ };
71
119
  export const linkTrackingTools = [
72
120
  defineTool({
73
121
  name: 'besales_tracked_link_list',
74
122
  sideEffect: 'none',
123
+ closedWorld: true,
75
124
  requiredFields: [],
76
125
  defaultWorkspaceId: true,
77
126
  schema: z
78
127
  .object({
79
128
  workspace_id: uuidSchema.optional(),
129
+ currency: moneyCurrencySchema.optional(),
80
130
  include_archived: z.boolean().optional(),
81
131
  days: daysSchema.optional(),
132
+ // ⛔ Параметры страницы ВОССТАНОВЛЕНЫ. Прежде они были сняты как «маршрут отдаёт каталог
133
+ // целиком», и это давало живой отказ: отгруженный клиент их шлёт, а приёмная сторона
134
+ // отвергала незнакомый параметр вместе со всем запросом. Маршрут v2 теперь страницы
135
+ // объявляет.
82
136
  limit: z.number().int().min(1).max(PAGE_SIZE_MAX).optional(),
83
137
  offset: z.number().int().min(0).optional(),
84
138
  })
85
139
  .strict(),
86
140
  createRequest: (input) => ({
87
141
  method: 'GET',
88
- path: `/workspaces/${input.workspace_id}/tracked-links${buildListQuery({
142
+ path: `${catalogPath(input.workspace_id)}${buildListQuery({
89
143
  includeArchived: input.include_archived,
90
144
  days: input.days,
145
+ currency: input.currency,
91
146
  limit: input.limit,
92
147
  offset: input.offset,
93
148
  })}`,
94
149
  }),
95
150
  enhanceResponse: (response) => withInstructions(response, [
151
+ ...MONEY_CURRENCY_INSTRUCTIONS,
96
152
  'Каталог коротких ссылок воркспейса со сводкой «выдано → клики → ответы → заявки → оплаты».',
153
+ LINK_PAGINATION_HINT,
97
154
  'Поле placeholder — готовый токен ссылки. Копируй его ДОСЛОВНО в текст дожима, рассылки или шаблона; сырой URL мимо каталога не трекается.',
98
155
  '⚠️ Токен не пиши руками и не подставляй в него свой слаг: несуществующий слаг вырезается вместе с маркером, и клиент получит фразу ВООБЩЕ без ссылки — молча, только с ошибкой в логах. В промпт агента токен не клади вовсе (модель воспроизведёт его неточно) — там используй staticUrl.',
99
- 'staticUrl — анонимный короткий адрес для мест, где персональной выдачи нет: промпт агента (модель не воспроизведёт токен дословно), письмо школы, подпись вложения. Клики по нему считаются без привязки к человеку.',
100
- 'hasMore=true означает, что каталог не дочитан: увеличивай offset. Вывод «такого слага нет» по неполной странице недействителен.',
101
- '⚠️ days не задан — сводка за ВСЁ ВРЕМЯ. Прежде подставлялось окно 60 дней, и оно расходилось само с собой: выданное раньше него показывалось как «выдано 0», тогда как выручка в той же строке считалась за всё время. Нужно окно — назови его явно.',
156
+ 'staticUrl — анонимный короткий адрес для мест, где персональной выдачи нет: промпт агента (модель не воспроизведёт токен дословно), письмо школы, подпись вложения. Клики по нему считаются без привязки к человеку. null означает, что публичный адрес платформы не настроен, — тогда анонимного адреса у ссылки нет вовсе.',
157
+ 'hasMore=true означает, что каталог не дочитан: увеличивай offset. Вывод «такого слага нет» ' +
158
+ 'по неполной странице недействителен.',
102
159
  'Архивные ссылки по умолчанию скрыты — чтобы их увидеть, передай include_archived=true. Их слаги ЗАНЯТЫ: создание с тем же слагом даст 409. При include_archived=true архивные идут ПЕРВЫМИ.',
160
+ 'Сводка (issued/clicked/...) приходит ТОЛЬКО в этом списке: у создания, правки и архивации счётчиков нет — там ноль означал бы «никому не выдана», хотя замера просто не было. windowDays в ответе называет окно замера: null — за всё время.',
161
+ DAYS_ALL_TIME_NOTE,
103
162
  ]),
104
163
  }),
105
164
  defineTool({
@@ -113,17 +172,24 @@ export const linkTrackingTools = [
113
172
  name: z.string().trim().min(1).max(NAME_MAX_LENGTH),
114
173
  slug: slugSchema,
115
174
  target_url: targetUrlSchema,
175
+ personal_url_variable: z
176
+ .string()
177
+ .max(64)
178
+ .regex(/^[a-zA-Z_][a-zA-Z0-9_]*$/)
179
+ .optional()
180
+ .describe('Имя переменной контакта, где школа держит ЛИЧНЫЙ адрес человека (поле заказа GetCourse, например AI_TRF, привязанное к переменной в «Полях заказа → переменные» платформы). Есть годное значение — ссылка ведёт на него; нет, пусто или не адрес — на target_url (адрес по умолчанию). Метки utm_* из target_url ставятся в обоих случаях и перекрывают школьные; остальные параметры target_url дополняют личный адрес, но не затирают его. Личный адрес принимается только с ТОГО ЖЕ хоста И того же продукта (первая часть пути), что и target_url. Латиница, цифры, подчёркивание; до 64 символов.'),
116
181
  product_code: z.string().max(PRODUCT_CODE_MAX_LENGTH).optional(),
117
182
  })
118
183
  .strict(),
119
184
  createRequest: (input) => ({
120
185
  method: 'POST',
121
- path: `/workspaces/${input.workspace_id}/tracked-links`,
186
+ path: catalogPath(input.workspace_id),
122
187
  body: compactObject({
123
188
  name: input.name,
124
189
  slug: input.slug,
125
190
  targetUrl: input.target_url,
126
191
  productCode: input.product_code,
192
+ personalUrlVariable: input.personal_url_variable,
127
193
  }),
128
194
  }),
129
195
  enhanceResponse: (response) => withInstructions(response, [
@@ -143,6 +209,13 @@ export const linkTrackingTools = [
143
209
  link_id: uuidSchema,
144
210
  name: z.string().trim().min(1).max(NAME_MAX_LENGTH).optional(),
145
211
  target_url: targetUrlSchema.optional(),
212
+ personal_url_variable: z
213
+ .string()
214
+ .max(64)
215
+ .regex(/^[a-zA-Z_][a-zA-Z0-9_]*$/)
216
+ .nullable()
217
+ .optional()
218
+ .describe('Имя переменной контакта, где школа держит ЛИЧНЫЙ адрес человека (поле заказа GetCourse, например AI_TRF, привязанное к переменной в «Полях заказа → переменные» платформы). Есть годное значение — ссылка ведёт на него; нет, пусто или не адрес — на target_url (адрес по умолчанию). Метки utm_* из target_url ставятся в обоих случаях и перекрывают школьные; остальные параметры target_url дополняют личный адрес, но не затирают его. Личный адрес принимается только с ТОГО ЖЕ хоста И того же продукта (первая часть пути), что и target_url. Латиница, цифры, подчёркивание; до 64 символов. null — выключить настройку (ссылка снова всегда ведёт на target_url). Как и target_url, действует только ВПЕРЁД: уже выданные коды хранят снимок адреса.'),
146
219
  product_code: z.string().max(PRODUCT_CODE_MAX_LENGTH).optional(),
147
220
  restore: z.literal(true).optional(),
148
221
  })
@@ -150,14 +223,16 @@ export const linkTrackingTools = [
150
223
  .refine((input) => input.name !== undefined ||
151
224
  input.target_url !== undefined ||
152
225
  input.product_code !== undefined ||
226
+ input.personal_url_variable !== undefined ||
153
227
  input.restore !== undefined, { message: 'Передай хотя бы одно поле для изменения' }),
154
228
  createRequest: (input) => ({
155
229
  method: 'PATCH',
156
- path: `/workspaces/${input.workspace_id}/tracked-links/${input.link_id}`,
230
+ path: catalogPath(input.workspace_id, input.link_id),
157
231
  body: compactObject({
158
232
  name: input.name,
159
233
  targetUrl: input.target_url,
160
234
  productCode: input.product_code,
235
+ personalUrlVariable: input.personal_url_variable,
161
236
  restore: input.restore,
162
237
  }),
163
238
  }),
@@ -181,7 +256,7 @@ export const linkTrackingTools = [
181
256
  .strict(),
182
257
  createRequest: (input) => ({
183
258
  method: 'DELETE',
184
- path: `/workspaces/${input.workspace_id}/tracked-links/${input.link_id}`,
259
+ path: catalogPath(input.workspace_id, input.link_id),
185
260
  }),
186
261
  enhanceResponse: (response) => withInstructions(response, [
187
262
  'Это АРХИВАЦИЯ, а не удаление: hard-delete у ссылок отсутствует в принципе. Код уже лежит в отправленных людям сообщениях, и удаление превратило бы живую ссылку в 404.',
@@ -192,28 +267,36 @@ export const linkTrackingTools = [
192
267
  defineTool({
193
268
  name: 'besales_tracked_link_breakdown',
194
269
  sideEffect: 'none',
270
+ closedWorld: true,
195
271
  requiredFields: ['link_id'],
196
272
  defaultWorkspaceId: true,
197
273
  schema: z
198
274
  .object({
199
275
  workspace_id: uuidSchema.optional(),
276
+ currency: moneyCurrencySchema.optional(),
200
277
  link_id: uuidSchema,
201
278
  days: daysSchema.optional(),
202
279
  })
203
280
  .strict(),
204
281
  createRequest: (input) => ({
205
282
  method: 'GET',
206
- path: `/workspaces/${input.workspace_id}/tracked-links/${input.link_id}/breakdown${buildListQuery({ days: input.days })}`,
283
+ path: `${catalogPath(input.workspace_id, input.link_id)}/breakdown${buildListQuery({
284
+ days: input.days,
285
+ currency: input.currency,
286
+ })}`,
207
287
  }),
208
288
  enhanceResponse: (response) => withInstructions(response, [
209
- 'Разрез одной ссылки по источникам выдачи: WAVE (волна), FOLLOWUP (дожим), CAMPAIGN (кампания), GREETING (приветствие), AGENT (обычный ответ агента).',
289
+ ...MONEY_CURRENCY_INSTRUCTIONS,
290
+ 'Разрез одной ссылки по источникам выдачи: WAVE (волна), FOLLOWUP (дожим), CAMPAIGN (кампания), GREETING (приветствие), AGENT (обычный ответ агента), OPERATOR (сообщение оператора), SYSTEM (служебный текст платформы, например извинение после сбоя). Человеку называй источник словами, сам ключ не показывай.',
210
291
  'sourceId у волны пуст: welcome запускается переходом сделки, а не джобом импорта, поэтому разрез отвечает «после волны», но не «после какой именно».',
211
292
  'Оплата атрибутируется last-touch по ближайшему клику, поэтому суммы по разным ссылкам не складываются в общую выручку дважды.',
293
+ DAYS_ALL_TIME_NOTE,
212
294
  ]),
213
295
  }),
214
296
  defineTool({
215
297
  name: 'besales_tracked_link_reach',
216
298
  sideEffect: 'none',
299
+ closedWorld: true,
217
300
  requiredFields: ['link_id'],
218
301
  defaultWorkspaceId: true,
219
302
  schema: z
@@ -225,17 +308,25 @@ export const linkTrackingTools = [
225
308
  .strict(),
226
309
  createRequest: (input) => ({
227
310
  method: 'GET',
228
- path: `/workspaces/${input.workspace_id}/tracked-links/${input.link_id}/reach${buildListQuery({ days: input.days })}`,
311
+ path: `${catalogPath(input.workspace_id, input.link_id)}/reach${buildListQuery({
312
+ days: input.days,
313
+ })}`,
229
314
  }),
230
- enhanceResponse: (response) => withInstructions(response, [
231
- 'Разрез одной ссылки по МЕСТУ применения: площадка и агент, через которых она уходила людям. Отвечает на «где ссылка работает», тогда как besales_tracked_link_breakdown — на «после какого касания по ней ходят». Оси независимые: одна выдача принадлежит ровно одной площадке и одному агенту, а тип источника — отдельное измерение.',
232
- 'null в оси — это «не определён», отдельная строка, а не ноль: у контакта могло не быть ни одного ответа агента. Приписывать такие выдачи какому-то агенту нельзя.',
233
- 'Имя при заполненном id пустое, если площадку или агента удалили: id хранится снимком без внешнего ключа, чтобы история кликов пережила удаление.',
315
+ enhanceResponse: (response) => withInstructions(withShippedReachNames(response), [
316
+ 'Разрез одной ссылки по МЕСТУ применения: канал и агент, через которых она уходила людям. Отвечает на «где ссылка работает», тогда как besales_tracked_link_breakdown — на «после какого касания по ней ходят». Оси независимые: одна выдача принадлежит ровно одному каналу и одному агенту.',
317
+ 'issued — отправленные выдачи, clicked — выдачи с первым живым кликом (предпросмотры мессенджеров отсеяны, повторные клики одной выдачи считаются один раз).',
318
+ 'Пустой agentId — отдельная строка, а не ноль, и причина названа полем agentAbsence: NONE — у источника агента не бывает (рассылка, оператор, служебный текст); UNDETERMINED — агент ожидался, но не записан (старые выдачи или агент не найден). Приписывать такие выдачи какому-то агенту нельзя.',
319
+ 'Пустой channelId — «канал не определён», тоже отдельная строка. Имена текущие; удалённый канал или агент отмечен признаком channelDeleted / agentDeleted, а имя тогда пустое: выдачи и клики переживают удаление.',
320
+ 'Чужая или несуществующая ссылка — отказ 404, как у разбивки и ленты кликов (отгруженная линия отвечала пустым списком).',
321
+ 'Отгруженные имена platformId, platformName и platformDeleted дописаны в каждую строку рядом с channelId, channelName и channelDeleted и значат то же самое.',
322
+ DAYS_ALL_TIME_NOTE,
234
323
  ]),
235
324
  }),
236
325
  defineTool({
237
326
  name: 'besales_tracked_link_clicks',
327
+ carriesCustomerData: true,
238
328
  sideEffect: 'none',
329
+ closedWorld: true,
239
330
  requiredFields: ['link_id'],
240
331
  defaultWorkspaceId: true,
241
332
  schema: z
@@ -249,18 +340,24 @@ export const linkTrackingTools = [
249
340
  .strict(),
250
341
  createRequest: (input) => ({
251
342
  method: 'GET',
252
- path: `/workspaces/${input.workspace_id}/tracked-links/${input.link_id}/clicks${buildListQuery({ days: input.days, page: input.page, pageSize: input.page_size })}`,
343
+ path: `${catalogPath(input.workspace_id, input.link_id)}/clicks${buildListQuery({
344
+ days: input.days,
345
+ page: input.page,
346
+ pageSize: input.page_size,
347
+ })}`,
253
348
  }),
254
349
  enhanceResponse: (response) => withInstructions(response, [
255
350
  'Лента переходов живых людей: контакт, сообщение, источник, время. Клики-предпросмотры мессенджеров отсеяны и сюда не попадают.',
256
- '⚠️ Анонимные переходы по staticUrl В ЛЕНТЕ ЕСТЬ — строками, где chatUserId, contactName, messageId, issuedAt и sourceKind равны null. Это не битый ответ: у анонимного кода человека нет по построению. Не считай такие строки людьми; их суммарное число отдельно лежит в каталоге полем anonymousClicks.',
351
+ '⚠️ Анонимные переходы по staticUrl В ЛЕНТЕ ЕСТЬ — строками, где contactId, contactName, messageId, issuedAt и sourceKind равны null. Это не битый ответ: у анонимного кода человека нет по построению. Не считай такие строки людьми; их суммарное число отдельно лежит в каталоге полем anonymousClicks.',
257
352
  '⚠️ total — это число КЛИКОВ (включая повторные и анонимные), а поле clicked в каталоге — число ВЫДАЧ с первым живым кликом. Величины разные, сходиться не обязаны и по-разному отвечают на «сколько человек перешло».',
258
353
  'Для следующей страницы увеличивай page; максимальный page_size — 200.',
354
+ DAYS_ALL_TIME_NOTE,
259
355
  ]),
260
356
  }),
261
357
  defineTool({
262
358
  name: 'besales_link_domain_get',
263
359
  sideEffect: 'none',
360
+ closedWorld: true,
264
361
  requiredFields: [],
265
362
  defaultWorkspaceId: true,
266
363
  schema: z
@@ -270,18 +367,22 @@ export const linkTrackingTools = [
270
367
  .strict(),
271
368
  createRequest: (input) => ({
272
369
  method: 'GET',
273
- path: `/workspaces/${input.workspace_id}/link-tracking-domain`,
370
+ path: domainPath(input.workspace_id),
274
371
  }),
275
372
  enhanceResponse: (response) => withInstructions(response, [
276
373
  'domain — хост, с которого уходят короткие ссылки этого воркспейса; null означает, что используется общий домен платформы (он же defaultBaseUrl).',
277
- 'zones — зоны, доступные для назначения. ПУСТОЙ список означает, что выбор домена на платформе не настроен: назначить нельзя, и это не ошибка запроса. Зона появляется только после того, как для неё подняты wildcard-запись DNS и wildcard-сертификат.',
374
+ 'zones — зоны, доступные для назначения ЭТОМУ воркспейсу: зоны платформы и собственные зоны клиента, закреплённые за ним (чужая зона клиента сюда не попадает и назначена быть не может). ПУСТОЙ список означает, что выбор домена не настроен: назначить нельзя, и это не ошибка запроса. Зона появляется только после того, как для неё подняты wildcard-запись DNS и wildcard-сертификат.',
278
375
  '⚠️ Смена домена влияет ТОЛЬКО на новые ссылки: короткий адрес собирается в момент отправки и вшивается в сообщение навсегда. Уже разосланные ссылки продолжают открываться на прежнем хосте.',
279
- '⚠️ Адрес staticUrl, который уже вставлен куда-либо руками (промпт агента, шаблон, подпись), при смене домена НЕ переписывается — он продолжит содержать прежнее имя. После смены перечитай каталог besales_tracked_link_list и перевставь такие адреса.',
376
+ 'staleUsages — места настройки воркспейса (факты и инструкция агента, приветствие канала, шаги цепочки, ответы базы знаний, переменные и другие), где остался короткий адрес на ЧУЖОМ хосте: place — код места, placeLabel — место словами (показывай человеку его), name — что открыть, host — какой хост там остался.',
377
+ 'При отправке платформа сама приводит хост СВОИХ коротких адресов к текущему домену, поэтому клиент прежнего имени не увидит. Но сама настройка не меняется: перевставь адреса из staleUsages, особенно если текст уходит мимо платформы (письма и SMS школы) — там подмены нет.',
280
378
  ]),
281
379
  }),
282
380
  defineTool({
283
381
  name: 'besales_link_domain_set',
284
382
  sideEffect: 'write',
383
+ // Повтор с тем же именем ничего не меняет и в журнал не пишет.
384
+ idempotent: true,
385
+ closedWorld: true,
285
386
  requiredFields: ['domain'],
286
387
  defaultWorkspaceId: true,
287
388
  schema: z
@@ -294,15 +395,17 @@ export const linkTrackingTools = [
294
395
  .strict(),
295
396
  createRequest: (input) => ({
296
397
  method: 'PUT',
297
- path: `/workspaces/${input.workspace_id}/link-tracking-domain`,
398
+ path: domainPath(input.workspace_id),
399
+ // ⛔ null уходит ЯВНЫМ null: пустое тело сервер отвергает, а не читает как сброс.
298
400
  body: { domain: input.domain },
299
401
  }),
300
402
  enhanceResponse: (response) => withInstructions(response, [
301
403
  'Домен назначен. Он влияет только на НОВЫЕ ссылки — уже отправленные продолжают работать на прежнем адресе, и это обязательное свойство: короткий адрес вшит в разосланные сообщения.',
302
404
  '⚠️ Выбранное имя закрепляется за воркспейсом НАВСЕГДА. Сброс (domain=null) возвращает воркспейс на общий домен, но имя не освобождает: отдать его другому клиенту нельзя, иначе письма прежнего владельца открывались бы на чужом бренде. Вернуться на своё прежнее имя можно.',
303
- '400 означает, что домен не прошёл правила: зона не из списка zones, имя не по формату (латиница и цифры, дефис внутри, 3–24 символа, ровно один уровень под зоной), имя начинается с xn--, либо имя занято служебными адресами платформы. Перечитай besales_link_domain_get и возьми зону оттуда.',
304
- '409 означает, что хост занят ДРУГИМ воркспейсом — в том числе тем, который его когда-то освободил. Выбери другое имя, повторять запрос бессмысленно.',
305
- '⚠️ Уже вставленные вручную адреса staticUrl не переписываются: после смены домена перевставь их из besales_tracked_link_list.',
405
+ '400 означает, что домен не прошёл правила: зона не из списка zones, имя не по формату (латиница и цифры, дефис внутри, ровно один уровень под зоной; под зоной платформы 3–24 символа, под собственной зоной клиента 1–24), имя начинается с xn--, либо имя под зоной платформы занято её служебными адресами. Перечитай besales_link_domain_get и возьми зону оттуда.',
406
+ '409 означает, что хост занят ДРУГИМ воркспейсом — в том числе тем, который его когда-то освободил или был удалён. Выбери другое имя, повторять запрос бессмысленно.',
407
+ '⚠️ Под собственной зоной клиента имя не должно существовать в DNS клиента (www, gc, pay и т. п.): своя запись имени перекрывает wildcard, и ссылки уйдут на сайт клиента — сервис этого не проверяет, сверь имя с DNS клиента до назначения. Если после назначения ссылки открывают чужую страницу — у имени есть своя запись в DNS: назначь другое имя.',
408
+ 'staleUsages в ответе — места настройки, где остался адрес на прежнем хосте. Клиенту при отправке хост своих ссылок подменяется автоматически, но в письмах и SMS школы подмены нет — перевставь адреса оттуда.',
306
409
  ]),
307
410
  }),
308
411
  ];
@@ -1 +1 @@
1
- {"version":3,"file":"link-tracking.js","sourceRoot":"","sources":["../../../src/tools/definitions/link-tracking.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"link-tracking.js","sourceRoot":"","sources":["../../../src/tools/definitions/link-tracking.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,75 @@
1
+ import { z } from 'zod';
2
+ /**
3
+ * Содержимое варианта рассылки — общее у создания и правки: текст «Первого сообщения», тексты по сегментам и
4
+ * умолчания запуска. Поле не передано — не меняется; `null` — очистить.
5
+ *
6
+ * ⛔ Сервер пишет содержимое только тому, у кого есть право управлять рассылками (у ключа — область маршрута):
7
+ * имя и пояснение варианта этого права не требуют.
8
+ */
9
+ export declare const mailingVariantContentShape: {
10
+ message_text: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNull]>>;
11
+ message_text_by_segment: z.ZodOptional<z.ZodUnion<readonly [z.ZodRecord<z.ZodString, z.ZodString>, z.ZodNull]>>;
12
+ default_segment: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNull]>>;
13
+ default_product_code: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNull]>>;
14
+ default_funnel: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNull]>>;
15
+ default_channels: z.ZodOptional<z.ZodArray<z.ZodEnum<{
16
+ Site: "Site";
17
+ Email: "Email";
18
+ SMS: "SMS";
19
+ Telegram: "Telegram";
20
+ Facebook: "Facebook";
21
+ VK: "VK";
22
+ Chatium: "Chatium";
23
+ WhatsApp: "WhatsApp";
24
+ Viber: "Viber";
25
+ MAX: "MAX";
26
+ }>>>;
27
+ default_deal_fields: z.ZodOptional<z.ZodUnion<readonly [z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodNull]>>, z.ZodNull]>>;
28
+ default_platform_id: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNull]>>;
29
+ cold_welcome_channels: z.ZodOptional<z.ZodArray<z.ZodEnum<{
30
+ Site: "Site";
31
+ Email: "Email";
32
+ SMS: "SMS";
33
+ Telegram: "Telegram";
34
+ Facebook: "Facebook";
35
+ VK: "VK";
36
+ Chatium: "Chatium";
37
+ WhatsApp: "WhatsApp";
38
+ Viber: "Viber";
39
+ MAX: "MAX";
40
+ }>>>;
41
+ cold_welcome_channels_mode: z.ZodOptional<z.ZodEnum<{
42
+ ADD: "ADD";
43
+ RESTRICT: "RESTRICT";
44
+ }>>;
45
+ quiet_days_override: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
46
+ };
47
+ export interface MailingVariantContentInput {
48
+ readonly message_text?: string | null;
49
+ readonly message_text_by_segment?: Record<string, string> | null;
50
+ readonly default_segment?: string | null;
51
+ readonly default_product_code?: string | null;
52
+ readonly default_funnel?: string | null;
53
+ readonly default_channels?: readonly string[];
54
+ readonly default_deal_fields?: Record<string, string | number | boolean | null> | null;
55
+ readonly default_platform_id?: string | null;
56
+ readonly cold_welcome_channels?: readonly string[];
57
+ readonly cold_welcome_channels_mode?: 'RESTRICT' | 'ADD';
58
+ readonly quiet_days_override?: number | null;
59
+ }
60
+ /** Содержимое в именах сервера; `null` доезжает как есть — это «очистить». */
61
+ export declare function mailingVariantContentBody(input: MailingVariantContentInput): {
62
+ messageText: string | null | undefined;
63
+ messageTextBySegment: Record<string, string> | null | undefined;
64
+ defaultSegment: string | null | undefined;
65
+ defaultProductCode: string | null | undefined;
66
+ defaultFunnel: string | null | undefined;
67
+ defaultTransports: readonly string[] | undefined;
68
+ defaultDealFields: Record<string, string | number | boolean | null> | null | undefined;
69
+ defaultChannelId: string | null | undefined;
70
+ coldWelcomeTransports: readonly string[] | undefined;
71
+ coldWelcomeTransportsMode: "ADD" | "RESTRICT" | undefined;
72
+ quietDaysOverride: number | null | undefined;
73
+ };
74
+ /** Подсказки о содержимом варианта — общие у создания и правки. */
75
+ export declare const MAILING_VARIANT_CONTENT_INSTRUCTIONS: readonly ["Текст и умолчания варианта подставляются в запуск «Первого сообщения» с mailing_variant_id, если запуск их не передал: текст сегмента запуска — из message_text_by_segment, иначе message_text.", "message_text_by_segment замещает карту ЦЕЛИКОМ (не по-ключно); null или {} убирают посегментные тексты. Ключ — имя сегмента из справочника пространства: незнакомое имя сервер отвергает с адресом поля.", "Содержимое (тексты, умолчания, каналы, тихий период) меняет только тот, кому разрешено управлять рассылками; имя и пояснение этого права не требуют."];
@@ -0,0 +1,73 @@
1
+ import { z } from 'zod';
2
+ import { coldWelcomeChannelsModeEnum } from './getcourse-cold-welcome.js';
3
+ import { getcourseTransportEnum, uuidSchema } from './shared.js';
4
+ /** Потолки отгруженной схемы — паритет с сервером: сузить их значит внести отказ там, где клиент уже пишет. */
5
+ const MESSAGE_TEXT_MAX_LENGTH = 4000;
6
+ const LABEL_MAX_LENGTH = 200;
7
+ const MESSAGE_TEXT_BY_SEGMENT_MAX_ENTRIES = 50;
8
+ /**
9
+ * Содержимое варианта рассылки — общее у создания и правки: текст «Первого сообщения», тексты по сегментам и
10
+ * умолчания запуска. Поле не передано — не меняется; `null` — очистить.
11
+ *
12
+ * ⛔ Сервер пишет содержимое только тому, у кого есть право управлять рассылками (у ключа — область маршрута):
13
+ * имя и пояснение варианта этого права не требуют.
14
+ */
15
+ export const mailingVariantContentShape = {
16
+ message_text: z.union([z.string().max(MESSAGE_TEXT_MAX_LENGTH), z.null()]).optional(),
17
+ // Тексты по сегментам: ключ — ИМЯ сегмента справочника пространства. Незнакомое имя сервер отвергает с
18
+ // адресом поля. `.trim()` здесь потому, что сервер требует непустоты ПОСЛЕ обрезки — иначе пробел проходит
19
+ // клиента и падает уже на сервере.
20
+ message_text_by_segment: z
21
+ .union([
22
+ z
23
+ .record(z.string().trim().min(1).max(LABEL_MAX_LENGTH), z.string().trim().min(1).max(MESSAGE_TEXT_MAX_LENGTH))
24
+ .refine((map) => Object.keys(map).length <= MESSAGE_TEXT_BY_SEGMENT_MAX_ENTRIES, {
25
+ message: `Не больше ${MESSAGE_TEXT_BY_SEGMENT_MAX_ENTRIES} сегментов в message_text_by_segment`,
26
+ }),
27
+ z.null(),
28
+ ])
29
+ .optional(),
30
+ default_segment: z.union([z.string().max(LABEL_MAX_LENGTH), z.null()]).optional(),
31
+ default_product_code: z.union([z.string().max(LABEL_MAX_LENGTH), z.null()]).optional(),
32
+ default_funnel: z.union([z.string().max(LABEL_MAX_LENGTH), z.null()]).optional(),
33
+ // Весь набор транспортов школы, а не копия трёх «волновых»: сервер принимает каждый.
34
+ default_channels: z.array(getcourseTransportEnum).optional(),
35
+ default_deal_fields: z
36
+ .union([
37
+ z.record(z.string().regex(/^\d+$/, 'Ключ default_deal_fields обязан быть числовым fieldId GetCourse'), z.union([z.string(), z.number(), z.boolean(), z.null()])),
38
+ z.null(),
39
+ ])
40
+ .optional(),
41
+ // Имя отгруженной схемы; на сервере это канал по умолчанию.
42
+ default_platform_id: z.union([uuidSchema, z.null()]).optional(),
43
+ // Каналы «Первого сообщения»: список значит «слать сюда», судьбу КАЖДОГО канала решает сервер по тому, что
44
+ // известно о человеке. НЕ путать с волновым default_channels.
45
+ cold_welcome_channels: z.array(getcourseTransportEnum).optional(),
46
+ // ⚠️ УСТАРЕЛО и на поведение не влияет: принимается ради старых клиентов и игнорируется сервером.
47
+ cold_welcome_channels_mode: coldWelcomeChannelsModeEnum.optional(),
48
+ // ⚠️ null и 0 — РАЗНЫЕ значения: null — рассылка тихий период не перекрывает, 0 — разрешает слать внутри него.
49
+ quiet_days_override: z.number().int().min(0).nullable().optional(),
50
+ };
51
+ /** Содержимое в именах сервера; `null` доезжает как есть — это «очистить». */
52
+ export function mailingVariantContentBody(input) {
53
+ return {
54
+ messageText: input.message_text,
55
+ messageTextBySegment: input.message_text_by_segment,
56
+ defaultSegment: input.default_segment,
57
+ defaultProductCode: input.default_product_code,
58
+ defaultFunnel: input.default_funnel,
59
+ defaultTransports: input.default_channels,
60
+ defaultDealFields: input.default_deal_fields,
61
+ defaultChannelId: input.default_platform_id,
62
+ coldWelcomeTransports: input.cold_welcome_channels,
63
+ coldWelcomeTransportsMode: input.cold_welcome_channels_mode,
64
+ quietDaysOverride: input.quiet_days_override,
65
+ };
66
+ }
67
+ /** Подсказки о содержимом варианта — общие у создания и правки. */
68
+ export const MAILING_VARIANT_CONTENT_INSTRUCTIONS = [
69
+ 'Текст и умолчания варианта подставляются в запуск «Первого сообщения» с mailing_variant_id, если запуск их не передал: текст сегмента запуска — из message_text_by_segment, иначе message_text.',
70
+ 'message_text_by_segment замещает карту ЦЕЛИКОМ (не по-ключно); null или {} убирают посегментные тексты. Ключ — имя сегмента из справочника пространства: незнакомое имя сервер отвергает с адресом поля.',
71
+ 'Содержимое (тексты, умолчания, каналы, тихий период) меняет только тот, кому разрешено управлять рассылками; имя и пояснение этого права не требуют.',
72
+ ];
73
+ //# sourceMappingURL=mailing-variant-content.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mailing-variant-content.js","sourceRoot":"","sources":["../../../src/tools/definitions/mailing-variant-content.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ export declare const MODEL_COMPARISON_MAX_MODELS = 36;
1
2
  /**
2
3
  * v1.5 — сравнение промпта на нескольких моделях («model bake-off»).
3
4
  * Internal-операция: prompt-services сам гоняет модели-кандидаты. Запускается