@besales/mcp 0.47.1 → 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 -4
  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 +12061 -6753
  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 -427
  147. package/dist/tools/definitions/broadcast-analytics.js.map +1 -1
  148. package/dist/tools/definitions/broadcast-scheduler.d.ts +19 -13
  149. package/dist/tools/definitions/broadcast-scheduler.js +217 -128
  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 -39
  158. package/dist/tools/definitions/crm-platform.js +235 -344
  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 -354
  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 +17 -29
  241. package/dist/tools/definitions/getcourse-cold-welcome.js +182 -242
  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 +701 -222
  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 +414 -284
  343. package/dist/tools/definitions/shared.js +436 -619
  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 +1105 -621
  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 +105862 -22115
  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 -927
  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,104 +1,81 @@
1
1
  # Матрица хостов, версий и установки
2
2
 
3
- Снимок: 2026-09-11. Это проверяемая граница текущего hardening, а не обещание для любого
4
- MCP-клиента.
3
+ Снимок хостов: 2026-09-11. Снимок протокола самого пакета: 2026-10-19. Это проверяемая граница,
4
+ а не обещание для любого MCP-клиента. Версии хостов перепроверяются перед каждым выпуском
5
+ следующей мажорной версии пакета.
5
6
 
6
- ## Линии продукта
7
+ ## Линия продукта
7
8
 
8
- | Линия | MCP | API | Источник API-контракта | Tool schema | Transport |
9
- |---|---|---|---|---|---|
10
- | main | `be-sales/mcp`, `codex/mcp-hardening-main-20260910`, `0.46.0` | `be-sales/back-main`, `codex/mcp-hardening-api-main-20260910`, `1.0.1` | loose `animaly/docs/specs/v2/contracts/openapi-besales-api.yaml` → `src/types/api-contract.gen.ts` | tracked `besales-mcp/src/schemas/mcp-tools.json`; build копирует его в dist | local stdio |
11
- | v2 beta | тот же GitHub repo, отдельная ветка `codex/mcp-hardening-v2-20260910`, `1.0.0-beta.1` | `be-sales/besales-api`, `codex/mcp-hardening-api-v2-20260910`, `0.0.1` | `besales-api/contracts/openapi-besales-api.yaml` → generated types | локальный `src/schemas/mcp-tools.json` + route export | local stdio |
9
+ | MCP | API | Источник API-контракта | Tool schema | Transport |
10
+ |---|---|---|---|---|
11
+ | `be-sales/mcp`, `@besales/mcp` | `be-sales/besales-api`, маршруты `/api/v2` | `besales-api/contracts/openapi-besales-api.yaml` → `src/types/api-contract.gen.ts` (`yarn types:gen:api`) | tracked `src/schemas/mcp-tools.json`; build копирует его в dist | local stdio |
12
12
 
13
- Main и v2 не взаимозаменяемы по совпадению имени файла. Изменение переносится только после
14
- сверки route, DTO, scope, ответа и теста своей пары.
13
+ Прежняя линия пакета (`0.x`, работала с прежней системой) этой матрицей не описывается: у неё свой
14
+ набор инструментов и прав, и изменения между линиями не переносятся по совпадению имени файла —
15
+ только после сверки route, DTO, scope, ответа и теста своей пары. Эталон прежней линии для таких
16
+ сверок и порядок замены линии — [RELEASING.md](../RELEASING.md).
15
17
 
16
- Общий loose `docs/specs/v2/contracts/mcp-tools.json` является целью v2 registry publish и больше
17
- не копируется внутрь main. Это устраняет перезапись канона одной линии контрактом другой; main
18
- проверяет собственный tracked schema, v2 публикует свой schema в явно выбранные targets.
19
-
20
- ## Поддерживаемые хосты этой итерации
18
+ ## Поддерживаемые хосты
21
19
 
22
20
  | Хост | Проверенная версия | Фактическое поведение | Статус |
23
21
  |---|---|---|---|
24
- | MCP SDK / Inspector | SDK из lockfile, raw stdio | полный initialize; main: 253 tools / 38 resources / 5 prompts, v2: 213 / 38 / 5; schema validation до HTTP | блокирующий protocol gate |
22
+ | MCP SDK / Inspector | SDK из lockfile, raw stdio | полный initialize; schema validation до HTTP | блокирующий protocol gate |
25
23
  | Codex CLI / App | `codex-cli 0.153.4` | один сервер `besales`; tools могут грузиться отложенно; resources модели не гарантированы, поэтому есть `besales_help_*` | поддержан |
26
- | Claude Code | `2.1.220` | stdio подключён; видит tools/resources/prompts; server instructions режет **4123 → 2048 символов** | поддержан с полезным префиксом и help-tools |
27
- | Claude Desktop | app `1.49585.0` | local stdio; два намеренно разных подключения `besales-tg` и `besales-ksamata`, каждое прибито к своему workspace | поддержан; ручной UI smoke после установки |
24
+ | Claude Code | `2.1.220` | stdio подключён; видит tools/resources/prompts; server instructions режет до **2048 символов** | поддержан с полезным префиксом и help-tools |
25
+ | Claude Desktop | app `1.49585.0` | local stdio; допускается несколько намеренно разных подключений, каждое прибито к своему workspace | поддержан; ручной UI smoke после установки |
28
26
 
29
27
  Новый неизвестный хост не становится блокирующим автоматически. Для него сначала повторяются
30
28
  raw initialize/list/read/call и модельная оценка.
31
29
 
32
- ## Протокольное доказательство main
33
-
34
- Артефакт: `docs/evidence/2026-09-11-main-wire-protocol.json`.
30
+ ## Протокольное доказательство
35
31
 
36
- - initialize: `@besales/mcp 0.46.0`, instructions 4123 символа / 6532 UTF-8 байта;
37
- - capabilities: tools, resources, prompts;
38
- - tools/list: 253 уникальных имени, 418380 байт;
39
- - resources/list: 38; каждый URI реально прочитан и снабжён SHA-256;
40
- - prompts/list: 5;
41
- - пустой `besales_agent_create` отклонён MCP кодом `-32602` до HTTP: отсутствуют
42
- `platform_id`, `name`, а `model_lane` не входит в `CHEAP|STANDARD|DEEP`;
43
- - wire schema сохраняет required, UUID format, enums, вложенные объекты и
44
- `const: true` + `type: boolean`.
32
+ Артефакт: `docs/evidence/2026-10-19-v2-wire-protocol.json` (предыдущий снимок —
33
+ `2026-09-11-v2-wire-protocol.json`). Повторение:
45
34
 
46
- Скрипт повторения: `yarn build && yarn host:probe bin/besales-mcp.js <output.json>`.
35
+ ```bash
36
+ yarn build && yarn host:probe bin/besales-mcp.js <output.json>
37
+ ```
47
38
 
48
- ## Протокольное доказательство v2 beta
39
+ Снимок 2026-10-19, пакет `1.0.0-beta.1`, сборка ветки `integ/bridge-w8` на коммите `84bcb97`:
49
40
 
50
- Артефакт в v2 checkout: `docs/evidence/2026-09-11-v2-wire-protocol.json`.
41
+ - capabilities: tools, resources, prompts;
42
+ - initialize: instructions 4633 символа / 7474 UTF-8 байта;
43
+ - tools/list: 292 уникальных имени, 611740 байт; resources/list: 39; prompts/list: 5;
44
+ - каждый resource реально прочитан и снабжён SHA-256;
45
+ - пустой `besales_agent_create` отклонён MCP кодом `-32602` до HTTP — обязательными полями.
51
46
 
52
- - initialize: `@besales/mcp 1.0.0-beta.1`, instructions 4122 символа / 6538 UTF-8 байт;
53
- - tools/list: 213 уникальных имён, 322105 байт; resources/list: 38; prompts/list: 5;
54
- - все resources прочитаны, representative schemas сохранены, пустой `besales_agent_create`
55
- отклонён кодом `-32602` до API теми же обязательными полями;
56
- - снимок собран из v2 MCP `912a70a`; API-зависимые main tools в него не копировались.
47
+ Числа дрейфуют с каждым инструментом; актуальные получают повтором скрипта. Размер `tools/list`
48
+ стоит знать заранее: хост, который не откладывает загрузку инструментов, кладёт его в контекст
49
+ модели целиком.
57
50
 
58
51
  ## Что видит модель
59
52
 
60
- У установленной до hardening main-версии Codex App было 215 активных tools. Старый сервер
61
- добавлял полный текст инструкций в описание каждого tool: 22385 символов у одного описания,
62
- 4747836 символов суммарно. Это подтверждённый дефект версии, а не лимит MCP.
63
-
64
- Новая версия передаёт инструкции один раз через initialize. В первых 2048 символах, которые
65
- оставляет проверенный Claude Code, находятся:
66
-
67
- 1. `besales_workspace_current` и выбор компании по названию;
68
- 2. overview → точечный platform context;
69
- 3. `besales_help_search` → `besales_help_get`;
70
- 4. запрет одинакового повторного read и конкретный следующий шаг;
71
- 5. запрет секретов в чате и начало правила подтверждений.
72
-
73
- Глубокие правила после этой границы остаются доступны через тот же registry ресурсов и
74
- `besales_help_search` / `besales_help_get`; модель не зависит от UI resources конкретного хоста.
75
-
76
- Повторная проверка model-eval 2026-09-11 отозвала прежний сравнительный PASS:
77
- все 15 baseline-прогонов были заблокированы политикой approvals хоста до выполнения fixture.
78
- Сопоставимого baseline нет; улучшение времени, токенов или успешности не доказано.
79
- Current отдельно дал 14/15 успешных маршрутов и чтение справки в 12/15 на пяти fixture-сценариях
80
- (`gpt-5.6-luna`, reasoning `low`, три повтора). Это не проверка production API или всех workflows.
81
- Scorer пересчитывает метрики из исходных calls/events и учитывает только успешные ответы;
82
- approval-blocked read не считается мутацией. UPD-048 открыт до сопоставимой серии.
83
- Raw JSONL сохранён в `docs/evidence/model-eval-2026-09-11/`.
84
-
85
- Claude Code debug подтвердил stdio connection и capabilities tools/resources/prompts, а также
86
- точный лимит instructions 2048. Модельный ответ не получен: аккаунт вернул 429 weekly limit до
87
- первого token. Это ограничение хоста/аккаунта, не ошибка MCP; raw protocol и command discovery
88
- остаются валидны. В Claude Code prompts появляются как
89
- `/mcp__besales__besales_setup_agent` и аналогичные команды. Обычный текстовый запрос остаётся
90
- основным и полностью эквивалентным входом.
53
+ Инструкции передаются один раз через initialize. Claude Code отдаёт модели только первые 2048
54
+ символов, поэтому порядок текста значим. В эту границу сейчас входят:
91
55
 
92
- ## Подключения и дубли
56
+ 1. правило подтверждения перед правкой (одно сообщение со списком всех правок и один вопрос), в
57
+ него же сведены `explicit_confirmation`, запрет автоповтора после timeout/5xx и отчёт после
58
+ правок;
59
+ 2. запрет просить токены, пароли и API keys в чате;
60
+ 3. пункты 1–3 раздела «Как начать»: `besales_workspace_current` и выбор компании по названию,
61
+ продолжение задачи, `besales_workspace_navigate`.
62
+
63
+ Пункт 4 («Как начать»: `besales_help_search` → `besales_help_get`) границей обрезается, а
64
+ запрет повторного чтения, правила полноты и маршрут настройки лежат за ней целиком. Они остаются
65
+ доступны через тот же реестр ресурсов и `besales_help_search` / `besales_help_get`; модель не
66
+ зависит от UI resources конкретного хоста. Что именно удерживается внутри границы, проверяет
67
+ `src/server.spec.ts`: правило подтверждения и запрет секретов обязаны лежать в первых 2048
68
+ символах, и перенос любого из них ниже границы роняет тест.
93
69
 
94
- Наблюдавшиеся «3 сервера / 642 записи» не являются тремя случайными копиями в одном каталоге:
70
+ Модельной оценки поведения (сравнение версий инструкций на сценариях) для этой линии не
71
+ проводилось.
95
72
 
96
- - Codex имеет один `besales`;
97
- - Claude Code имеет один `besales`;
98
- - Claude Desktop имеет два purpose-specific сервера для разных workspace.
73
+ ## Подключения и дубли
99
74
 
100
- Удалять их автоматически нельзя: это уничтожило бы выбор компании. Случайным дублем считается
101
- только повтор одного executable, API URL и workspace pin внутри одного host. Миграция:
75
+ Дублем считается только повтор одного executable, API URL и workspace pin внутри одного хоста.
76
+ Несколько серверов, прибитых к разным компаниям, — штатная конфигурация (Claude Desktop часто
77
+ держит по одному серверу на компанию), и автоматически их удалять нельзя: это уничтожило бы выбор
78
+ компании. Миграция:
102
79
 
103
80
  1. оставить по одному имени на уникальную тройку executable/API/workspace;
104
81
  2. обновить executable на проверенный пакет;
@@ -107,23 +84,24 @@ Claude Code debug подтвердил stdio connection и capabilities tools/re
107
84
 
108
85
  Профиль `BESALES_MCP_TOOLSETS` уменьшает поверхность одного сервера и одинаково ограничивает
109
86
  list и call; help возвращает скрытые совпадения отдельно, не выдавая их за вызываемые. Профиль не
110
- заменяет workspace pin и не объединяет разные компании.
87
+ заменяет workspace pin и не объединяет разные компании ([tool-surface.md](tool-surface.md)).
111
88
 
112
89
  ## Scopes
113
90
 
114
- | Линия | Запрашивает MCP | Поддерживает API | Фактически выдаёт |
115
- |---|---|---|---|
116
- | main | `mcp:* mcp:platform-setup mcp:funnel-test read:campaigns launch:campaigns read:contacts write:operators` | тот же ratchet-набор | consent-набор с учётом прав пользователя; exchange возвращает `scopes` и `dropped_scopes` |
117
- | v2 beta | `mcp:* mcp:platform-setup read:contacts` | та же тройка; `read:platform-setup` входит в composite read | consent выдаёт только поддержанный v2-набор |
91
+ Пакет запрашивает при подключении набор `MCP_OAUTH_SCOPES` (`src/auth/oauth-client.ts`): `mcp:*`,
92
+ `mcp:platform-setup`, `mcp:funnel-test`, `read:campaigns`, `launch:campaigns`, `read:contacts`,
93
+ `write:operators`. Фактически выдаётся пересечение с правами пользователя в компании; обмен
94
+ возвращает `scopes` и `dropped_scopes`, а `connect` предупреждает о потерянных и невыданных
95
+ правах.
118
96
 
119
97
  `besales_workspace_current.effective_scopes` берётся из конкретного выбранного credential.
120
98
  Union других ключей workspace не используется. 403 сохраняет названный API недостающий scope;
121
- reconnect добавляет права и не должен сужать прежние. Main и beta не копируют scope-set друг
122
- друга.
99
+ reconnect добавляет права и не должен сужать прежние.
123
100
 
124
101
  ## Установка, обновление, отзыв
125
102
 
126
- Поддержанный пользовательский путь сейчас — local stdio и browser OAuth:
103
+ Поддержанный пользовательский путь сейчас — local stdio и browser OAuth
104
+ ([connect.ru.md](connect.ru.md)):
127
105
 
128
106
  1. host запускает `npx -y @besales/mcp@<проверенная-версия>` либо pinned локальный executable;
129
107
  2. `besales-mcp connect` открывает browser consent; секрет в чат не копируется;
@@ -132,21 +110,22 @@ reconnect добавляет права и не должен сужать пре
132
110
  5. reconnect нужен для протухшего credential или новых scopes, а не для неоднозначного выбора;
133
111
  6. отзыв выполняется в настройках подключения, затем проверяется 401 именно этого workspace.
134
112
 
135
- Keytar остаётся частью local distribution и хранит ключи в системном credential store. Remote
136
- HTTP/OAuth не вводится в этом инкременте: для него нет ратифицированной модели размещения,
137
- tenant routing и миграции локальных ключей. Возвращаться к нему следует, когда появится
138
- server-side host и отдельный threat model. Перенос аккаунта выполняется новым browser connect;
139
- credential store не копируется между машинами.
113
+ Keytar (`keytar`) остаётся частью local distribution и хранит ключи в системном credential store.
114
+ Remote HTTP/OAuth не вводится: для него нет ратифицированной модели размещения, tenant routing и
115
+ миграции локальных ключей. Возвращаться к нему следует, когда появится server-side host и
116
+ отдельный threat model. Перенос аккаунта выполняется новым browser connect; credential store не
117
+ копируется между машинами.
140
118
 
141
119
  ## Выпуск
142
120
 
143
- - Аддитивные tools/resources/prompts совместимы в minor main и beta build.
121
+ - Аддитивные tools/resources/prompts совместимы в minor.
144
122
  - Новые обязательные поля, default limits и форма результата требуют отдельного rollout.
145
123
  - `BESALES_MCP_RESULT_ENVELOPE=on` включает одинаковые text/structuredContent и outputSchema;
146
- default остаётся off один совместимый релиз.
147
- - main и `1.0.0-beta.1` не публикуются на один dist-tag.
148
- - Публикация и деплой в этот документ не входят. После публикации обязателен smoke реально
149
- установленного пакета после полного restart host; локальный worktree smoke его не заменяет.
124
+ по умолчанию выключен один совместимый релиз (README).
125
+ - Версии разных линий не публикуются на один dist-tag.
126
+ - Порядок выпуска и откат — [RELEASING.md](../RELEASING.md). После публикации обязателен smoke
127
+ реально установленного пакета после полного restart host; локальный worktree smoke его не
128
+ заменяет.
150
129
 
151
130
  Официальное отображение prompts в Claude Code: MCP prompt становится командой
152
131
  `/mcp__<server>__<prompt>`; resources доступны через `@server:uri`. Источник:
@@ -1,20 +1,21 @@
1
1
  # MCP Host Setup Runbook
2
2
 
3
3
  This runbook covers local development setup for `@besales/mcp` in the MCP hosts
4
- we support during v1.5 validation: MCP Inspector, Claude Desktop, Claude Code,
5
- and Codex CLI.
4
+ we support: MCP Inspector, Claude Desktop, Claude Code, and Codex CLI. Hosts and
5
+ versions that were actually checked are listed in
6
+ [host-compatibility-matrix.md](host-compatibility-matrix.md).
6
7
 
7
8
  ## Scope
8
9
 
9
- `besales-mcp` is a thin MCP server for Animaly v1.5. It never calls
10
- `prompt-services` directly. Every tool call goes through `ai-aniomaly`
11
- `/api/v2/*`, and `ai-aniomaly` decides whether the operation is internal or
10
+ `besales-mcp` is a thin MCP server for Besales. It never calls
11
+ `prompt-services` directly. Every tool call goes through `besales-api`
12
+ `/api/v2/*`, and `besales-api` decides whether the operation is internal or
12
13
  external.
13
14
 
14
15
  External execution is host-neutral:
15
16
 
16
17
  1. The host calls a `*_get_instructions` tool.
17
- 2. `ai-aniomaly` creates an operation request and returns stages.
18
+ 2. `besales-api` creates an operation request and returns stages.
18
19
  3. The host/model executes the stages locally.
19
20
  4. The host calls the matching `*_submit` tool.
20
21
 
@@ -22,34 +23,33 @@ Claude Desktop, Claude Code, and Codex CLI all use this same two-step MCP flow.
22
23
 
23
24
  ## Local Preconditions
24
25
 
25
- Run these from `/Users/peresvets/apps/animaly/besales-mcp`.
26
+ Run these from the `besales-mcp` directory.
26
27
 
27
28
  ```bash
28
29
  yarn install
29
30
  yarn build
30
31
  ```
31
32
 
32
- For live local API testing, `ai-aniomaly` must be running on port `3000` and the
33
- v1.5 migrations must already be applied:
33
+ For live local API testing, `besales-api` must be running (default port `3000`)
34
+ and its migrations must already be applied:
34
35
 
35
36
  ```bash
36
37
  curl -fsS http://localhost:3000/health
37
- curl -fsS http://localhost:3000/.well-known/jwks.json
38
38
  ```
39
39
 
40
40
  Use this base URL for local host configs:
41
41
 
42
42
  ```bash
43
43
  export BESALES_API_BASE_URL=http://localhost:3000/api/v2
44
- export BESALES_OAUTH_AUTHORIZE_URL=http://localhost:5173/settings/mcp/consent
44
+ export BESALES_OAUTH_AUTHORIZE_URL=http://localhost:3000/api/v2/auth/mcp-connect/start
45
45
  ```
46
46
 
47
47
  `prompt-services` is not a host precondition. Hosts talk only to `besales-mcp`,
48
- and `besales-mcp` talks only to `ai-aniomaly`.
48
+ and `besales-mcp` talks only to `besales-api`.
49
49
 
50
50
  For production users, omit both variables. The package defaults to
51
51
  `BESALES_API_BASE_URL=https://core.besales.ai/api/v2` and
52
- `BESALES_OAUTH_AUTHORIZE_URL=https://app.besales.ai/settings/mcp/consent`.
52
+ `BESALES_OAUTH_AUTHORIZE_URL=https://core.besales.ai/api/v2/auth/mcp-connect/start`.
53
53
 
54
54
  ## Credentials
55
55
 
@@ -57,14 +57,15 @@ Live tool calls require an MCP API key stored in the local macOS keychain:
57
57
 
58
58
  ```bash
59
59
  BESALES_API_BASE_URL=http://localhost:3000/api/v2 \
60
- BESALES_OAUTH_AUTHORIZE_URL=http://localhost:5173/settings/mcp/consent \
60
+ BESALES_OAUTH_AUTHORIZE_URL=http://localhost:3000/api/v2/auth/mcp-connect/start \
61
61
  node bin/besales-mcp.js connect
62
62
  BESALES_API_BASE_URL=http://localhost:3000/api/v2 node bin/besales-mcp.js status
63
63
  ```
64
64
 
65
65
  The `connect` command opens the browser and completes
66
- the frontend consent bridge, which forwards to backend
67
- `/api/v2/auth/mcp-connect` through the loopback callback. `disconnect` removes the
66
+ the connect page served by the backend (`/api/v2/auth/mcp-connect/start`: sign in, choose
67
+ the workspace, approve the whole permission set) and receives the one-time code through the
68
+ loopback callback. `disconnect` removes the
68
69
  active workspace (add an id to remove one, or `--all` to clear every workspace):
69
70
 
70
71
  ```bash
@@ -115,7 +116,7 @@ state.
115
116
 
116
117
  ```bash
117
118
  BESALES_API_BASE_URL=http://localhost:3000/api/v2 \
118
- BESALES_OAUTH_AUTHORIZE_URL=http://localhost:5173/settings/mcp/consent \
119
+ BESALES_OAUTH_AUTHORIZE_URL=http://localhost:3000/api/v2/auth/mcp-connect/start \
119
120
  yarn dlx @modelcontextprotocol/inspector node bin/besales-mcp.js
120
121
  ```
121
122
 
@@ -137,11 +138,10 @@ BESALES_API_BASE_URL=http://localhost:3000/api/v2 \
137
138
 
138
139
  Expected:
139
140
 
140
- - 248 tools are listed.
141
- - 38 resources are listed.
142
- - 5 optional task prompts are listed.
141
+ - The tool, resource and prompt counts match the current wire snapshot
142
+ (`docs/evidence/`, produced by `yarn host:probe`).
143
143
  - `besales://concepts/external-execution` opens.
144
- - A direct tool, for example `besales_icp_create`, reaches `ai-aniomaly`.
144
+ - A direct tool, for example `besales_icp_create`, reaches `besales-api`.
145
145
  - An external pair returns instructions and accepts submit.
146
146
 
147
147
  For mock-only protocol checks, point Inspector at `http://127.0.0.1:3100/api/v2`
@@ -164,10 +164,10 @@ timestamped backup:
164
164
  "mcpServers": {
165
165
  "besales": {
166
166
  "command": "/absolute/path/to/node",
167
- "args": ["/Users/peresvets/apps/animaly/besales-mcp/bin/besales-mcp.js"],
167
+ "args": ["/absolute/path/to/besales-mcp/bin/besales-mcp.js"],
168
168
  "env": {
169
169
  "BESALES_API_BASE_URL": "http://localhost:3000/api/v2",
170
- "BESALES_OAUTH_AUTHORIZE_URL": "http://localhost:5173/settings/mcp/consent"
170
+ "BESALES_OAUTH_AUTHORIZE_URL": "http://localhost:3000/api/v2/auth/mcp-connect/start"
171
171
  }
172
172
  }
173
173
  }
@@ -192,8 +192,8 @@ If `claude` is on `PATH`, add the server at user scope:
192
192
  ```bash
193
193
  claude mcp add --scope user \
194
194
  -e BESALES_API_BASE_URL=http://localhost:3000/api/v2 \
195
- -e BESALES_OAUTH_AUTHORIZE_URL=http://localhost:5173/settings/mcp/consent \
196
- -- besales node /Users/peresvets/apps/animaly/besales-mcp/bin/besales-mcp.js
195
+ -e BESALES_OAUTH_AUTHORIZE_URL=http://localhost:3000/api/v2/auth/mcp-connect/start \
196
+ -- besales node /absolute/path/to/besales-mcp/bin/besales-mcp.js
197
197
  ```
198
198
 
199
199
  If the app-managed binary is not on `PATH`, use the absolute Claude Code binary
@@ -205,7 +205,7 @@ Verify:
205
205
  claude mcp list
206
206
  ```
207
207
 
208
- Start a fresh Claude Code session from `/Users/peresvets/apps/animaly`, run
208
+ Start a fresh Claude Code session from any project directory, run
209
209
  `/mcp`, and check that `besales` is connected. Then run the same direct tool and
210
210
  external-pair smoke as Claude Desktop.
211
211
 
@@ -216,8 +216,8 @@ Codex CLI manages stdio MCP servers through `codex mcp`.
216
216
  ```bash
217
217
  codex mcp add besales \
218
218
  --env BESALES_API_BASE_URL=http://localhost:3000/api/v2 \
219
- --env BESALES_OAUTH_AUTHORIZE_URL=http://localhost:5173/settings/mcp/consent \
220
- -- node /Users/peresvets/apps/animaly/besales-mcp/bin/besales-mcp.js
219
+ --env BESALES_OAUTH_AUTHORIZE_URL=http://localhost:3000/api/v2/auth/mcp-connect/start \
220
+ -- node /absolute/path/to/besales-mcp/bin/besales-mcp.js
221
221
  ```
222
222
 
223
223
  Equivalent `~/.codex/config.toml` shape:
@@ -225,11 +225,11 @@ Equivalent `~/.codex/config.toml` shape:
225
225
  ```toml
226
226
  [mcp_servers.besales]
227
227
  command = "node"
228
- args = ["/Users/peresvets/apps/animaly/besales-mcp/bin/besales-mcp.js"]
228
+ args = ["/absolute/path/to/besales-mcp/bin/besales-mcp.js"]
229
229
 
230
230
  [mcp_servers.besales.env]
231
231
  BESALES_API_BASE_URL = "http://localhost:3000/api/v2"
232
- BESALES_OAUTH_AUTHORIZE_URL = "http://localhost:5173/settings/mcp/consent"
232
+ BESALES_OAUTH_AUTHORIZE_URL = "http://localhost:3000/api/v2/auth/mcp-connect/start"
233
233
  ```
234
234
 
235
235
  Verify:
@@ -244,8 +244,6 @@ are present, then run:
244
244
 
245
245
  1. One direct tool (`besales_icp_create`).
246
246
  2. One external pair (`*_get_instructions` then matching `*_submit`).
247
- 3. A natural-language help request through `besales_help_search`, followed by one section through
248
- `besales_help_get`. This check is required when the host does not expose resources to the model.
249
247
 
250
248
  For the ICP analysis pair, `besales_icp_analysis_submit` personas must include
251
249
  `segment_id`. Use either an existing ICP segment id or the `id` of a segment in
@@ -259,7 +257,7 @@ session may need an app/session restart before new tools appear.
259
257
  Codex App can defer MCP tool schemas until the model searches for them. This is
260
258
  host behavior, not a `besales-mcp` server problem: `codex mcp list/get besales`
261
259
  and MCP Inspector `tools/list` are still the source checks for whether the
262
- server is installed and exposing all 248 tools.
260
+ server is installed and exposing the full tool list.
263
261
 
264
262
  User-facing prompts must stay natural. Users should ask for the business action,
265
263
  for example:
@@ -280,12 +278,12 @@ Use this matrix for local validation before staging/prod checks.
280
278
 
281
279
  | Host | Config check | Protocol check | Direct tool | External pair |
282
280
  |---|---|---|---|---|
283
- | MCP Inspector | command launches | 248 tools / 38 resources / 5 prompts | `besales_icp_create` | instructions -> submit |
281
+ | MCP Inspector | command launches | counts match the wire snapshot | `besales_icp_create` | instructions -> submit |
284
282
  | Claude Desktop | config JSON has `besales` | server connected | `besales_icp_create` | instructions -> submit |
285
283
  | Claude Code | `claude mcp list` has `besales` | `/mcp` connected | `besales_icp_create` | instructions -> submit |
286
284
  | Codex CLI | `codex mcp list` has `besales` | new session sees tools | `besales_icp_create` | instructions -> submit |
287
285
 
288
286
  Do not mark the ROADMAP manual E2E acceptance from mock-only checks. Mock mode
289
287
  only verifies host wiring and MCP protocol shape. ROADMAP acceptance requires a
290
- live `ai-aniomaly` backend, real stored MCP credentials, and successful direct
288
+ live `besales-api` backend, real stored MCP credentials, and successful direct
291
289
  plus external tool calls.
@@ -0,0 +1,16 @@
1
+ # Перечни входного контракта моста
2
+
3
+ `DELIBERATE` требует причины словами и ссылки `decision:<task>:<id>`. ACTIVE-решение содержит тот же точный ключ и собственную непустую причину в каталоге API `docs/contract-ledger/cledg-decisions.md`. Одной строки со ссылкой недостаточно. Путь каталога задаётся `BESALES_LAG_DECISIONS_FILE`, по умолчанию читается соседнее API-дерево. Каталог — обязательный вход производителя наряду с планами; отсутствие, отмена решения или изменение ключа роняют сверку. API независимо проверяет тот же договор, включая внутренние расширения входа.
4
+
5
+ Прежние настройки школы принимаются атомарным серверным переводчиком: пустой домен сохраняет идентичность школы, список отделов считается копией живого справочника с пояснением в ответе, номера образцов пишутся в выбранное CRM-подключение той же школы с отдельной проверкой прав. Прежний предпросмотр принимает рассылку и разовый текст вместе; текст переопределяет только предпросмотр. Выбор транспортов шага сохраняет рабочую отгруженную форму `explicit`; в реактивационной цепочке сочетание `all` со списком отвергалось уже отгруженным фильтром.
6
+
7
+ У отгруженного фильтра проверка доставки запускалась только для реактивационной цепочки: прочие типы могли пропустить список рядом с `contact`/`all`, хотя режим его не исполняет, а сервер v2 отвергает. Такой отказ моста v2 объявляется отдельно от сохранённого приёма `explicit`, без переключения режима или игнорирования списка. Объект вместо списка ключевых слов Instagram тоже адресно отвергается: обработчик читает массив, произвольный объект не определяет отбор комментариев. Список строк и `null` сохраняются. Наблюдённый отказ и различие JSON-типа имеют отдельные точные ключи реестра; одна запись не подменяет другую.
8
+
9
+ Все значения enum/const общих путей опубликованного JSON и фактического фильтра zod равны после разворачивания refs и всех альтернатив, включая отдельные скалярные и массивные ветви. null не является расхождением. Односторонний перечень допускается только в поимённом списке с причиной; отказ конвертера и число сравнений проверяются отдельно.
10
+
11
+ Это не обещание полноты всех необязательных полей в обратном направлении zod→JSON и не доказательство живой совместимости сервера. Маршруты и генерируемые типы проверяются отдельными генераторами и контрактными наборами.
12
+ Пределы `minimum`/`maximum`/`maxItems` защищены только отдельными тестами соответствующих инструментов, например `model-comparison.spec.ts`.
13
+
14
+ Каждая строка отставания имеет владельцем открытую задачу рабочего плана либо `DELIBERATE` с той же тяжестью. Выгрузка и тест `scripts/lag-open-task-owners.spec.mjs` требуют `BESALES_WORKING_PLAN` и `BESALES_CLOSED_PLAN`: абсолютные пути к актуальным рабочему и закрытому планам. Номер проверяется по заголовкам, задача в закрытом плане не проходит даже при наличии в рабочем. В CI оба файла предоставляются отдельным checkout документации; отсутствие любого файла — ошибка проверки. Список задач внутри пакета не заменяет эти входы.
15
+
16
+ Прежний `audio_source_type=xlsx_upload` с `audio_source_config: {storedFileId, crmConnectionId, sheets?}` переводится в тот же типизированный источник, что новая форма `source`. Остальные прежние источники переводятся по именованным псевдонимам. Обе формы требуют `request_key`, явное `gdpr_confirmed=true` и обязательное обезличивание. Неизвестные поля конфигурации, смешение двух форм, неверные идентификаторы и отсутствие согласия отвергаются до запроса; секреты и внешние адреса в конфигурацию не принимаются.
@@ -0,0 +1,21 @@
1
+ # Прежние настройки пересказа и поиска
2
+
3
+ `besales_trigger_upsert` принимает настройки действий в прежнем конверте и передаёт их API целиком.
4
+ У `SUMMARIZE_DIALOG` это `summarizeConfig` (также принимается `summarizeAction`): `targetType`,
5
+ `targetName`, `instructions`, `historyLimit`, `maxCharacters`. Тип цели `USER_VARIABLE` выбирает
6
+ текстовую переменную канала; глубина задаётся в сообщениях, предел длины — в кодовых единицах.
7
+ API переводит поля в канонические настройки шага и исполняет их в ходе модели.
8
+ Отказ от `PLATFORM_CONSTANT` действует до HTTP для обоих прежних конвертов
9
+ и при имени действия в `type`, `stepType` или `actionType`; ошибка называет
10
+ именно присланное поле цели. `USER_VARIABLE` передаётся без потерь.
11
+
12
+ У `READ_NAMESPACES` передаётся `readNamespacesConfig`: `dataTypes`, `limit`, `minScore`.
13
+ Типы выбирают источники знаний; число, отличное от 3, заменяет число профиля агента; заполненный
14
+ порог (включая 0) заменяет векторный порог агента. Порог не фильтрует поиск по словам, вопросы-ответы
15
+ со своим порогом и сырые таблицы. Пустой список типов либо все четыре означают поиск без фильтра типов.
16
+
17
+ Семь прежних строк отставания `LIVE_422` сняты. В `legacyActionLag` остаётся только осознанный
18
+ отказ `summarizeConfig.targetType#PLATFORM_CONSTANT`: пересказ одного человека нельзя сохранить
19
+ в константу, общую всем собеседникам канала. API отвечает адресным отказом и предлагает выбрать
20
+ переменную. Доставка остальных полей до тела запроса проверяется тестами схемы инструмента;
21
+ снятие отставания — отдельным сторожем реестра.
@@ -0,0 +1,38 @@
1
+ # Перенос возможностей прежней линии в v2
2
+
3
+ Правило: возможность прежней линии переносится в v2 только вместе с рабочим доменом в
4
+ `besales-api`. Зарегистрированный инструмент без бэкенда — это неработающий инструмент, а не
5
+ перенос. Наличие похожего route или общего scope в большом OpenAPI не заменяет доменную проверку:
6
+ CRM-операторы не являются workspace-операторами, телефонные actions не являются управлением
7
+ телефонией, а broadcast totals не заменяют входящую аналитику.
8
+
9
+ ## Состояние на 2026-10-19
10
+
11
+ Первая редакция документа (2026-09-11) перечисляла семь возможностей, которых в v2 ещё не было ни в
12
+ API, ни в мосте. Все они построены: у каждой есть инструмент в мосте и контроллер в `besales-api`.
13
+
14
+ | Возможность | Инструмент моста | Контроллер `besales-api` |
15
+ |---|---|---|
16
+ | входящая аналитика | `besales_inbound_analytics_get` | `control/inbound-analytics` |
17
+ | аналитика воронки | `besales_funnel_analytics_get` | `control/funnel-analytics` |
18
+ | расход ИИ (ledger) | `besales_ai_costs_get` | `control/ai-costs` |
19
+ | сохранённые отчёты | `besales_custom_report_list`, `_get`, `_run` | `control/custom-reports` |
20
+ | эксплуатационная сводка | `besales_workspace_operational_overview` | `control/operational-overview` |
21
+ | очередь операторов | `besales_workspace_operator_queue_list` | `control/operators` |
22
+ | операторы и назначение | `besales_workspace_operator_list`, `_assignment_get`, `_assignment_set` | `control/operators` |
23
+
24
+ Это проверка наличия, а не работоспособности: живая проверка против настоящих систем выполняется
25
+ после окончания бэкенда отдельной сводной задачей. Поведенческие различия с прежней линией (где
26
+ поле отвергается, где другой адрес) перечислены в реестре отставания
27
+ `src/schemas/shipped-lag.json` с владельцем у каждой строки.
28
+
29
+ ## Порядок переноса новой возможности
30
+
31
+ 1. Реализовать и проверить домен в `besales-api`.
32
+ 2. Добавить точный scope в server constants, DTO, OpenAPI и consent. Новый scope добавляется в
33
+ конец набора и не вытесняет действующие права.
34
+ 3. Сгенерировать API-типы и route map во временный файл, проверить diff и только затем обновить
35
+ tracked contract v2.
36
+ 4. Добавить MCP definition, result contract, проверку исхода и документацию.
37
+ 5. Прогнать scope/route/registry parity и wire-protocol snapshot. До этого возможность остаётся
38
+ `missing API`, а не `partial` или скрытым инструментом.
@@ -0,0 +1,50 @@
1
+ # Продолжение холодного обращения и поиск начатых обращений
2
+
3
+ `besales_getcourse_cold_welcome_preview` и `_start`
4
+ принимают optional `continuation: true` только по `contacts`. Значения false/null/строки/числа,
5
+ аудитория `created_after` и continuation на любом уровне batch отвергаются до HTTP.
6
+ Режим выбирается по явной просьбе человека. Сначала preview с теми же флагом, файлом,
7
+ текстом, сегментом, продуктом и каналами, затем подтверждение и start с `explicit_confirmation:true`.
8
+ До start сохрани UUID `idempotency_key` вместе с подтверждёнными параметрами. Он идёт только
9
+ в заголовок `Idempotency-Key`, не в body. Повтор того же намерения использует тот же ключ;
10
+ новое подтверждённое намерение получает новый UUID. При неизвестном исходе сначала читай статус,
11
+ не создавай новое намерение автоматически. Ключ optional для совместимости прежних вызовов;
12
+ отсутствие ключа не генерирует его. Preview и batch этот новый аргумент не принимают.
13
+ Preview продолжения требует источник текста; пустой выбранный текст, вариант без текста
14
+ или сегмента отвергает API. Обычный preview без текста по-прежнему допустим.
15
+
16
+ Отображения v2: `platform_id → channelId`, `channels → transports`,
17
+ `explicit_confirmation → explicitConfirmation`, `contacts[].contact_id → getcourseUserId`.
18
+ `alreadyWelcomed` — справка. Охват равен `totalContacts − narrowedOutByTransports`
19
+ (прежнее имя `narrowedOutByChannels`), неизвестные каналы не вычитаются. Контрольный ответ
20
+ 100/40/20/10 даёт 80. В текущем v2 неизвестных каналов штатно 0; школа при отправке
21
+ повторно не опрашивается. `touchClaimed` может быть больше нуля. Одинаковый текст тому же
22
+ сегменту повторно не отправляется. Открытый разговор требует прежнюю нашу реплику;
23
+ предохранители и проверка состояния человека сохраняются. Прогноз и постановка не означают доставку:
24
+ итог читается в статусе задачи.
25
+
26
+ `besales_contact_search` принимает optional строковый литерал `outreach: "true"`.
27
+ Отсутствие не превращается в false. Запрос — существующий POST
28
+ `/workspaces/{workspaceId}/contacts/search`, селекторы остаются в body. Это сохранённый
29
+ факт допуска к отправке, а не подтверждение доставки; старая история может быть неполной.
30
+ `outreachInitiatedAt` передаётся как ISO-момент либо null. Пагинация, neverTruncate,
31
+ персональные данные и серверные права не меняются.
32
+
33
+ Проверки: `src/tools/mcp2-parity.spec.ts` использует настоящий handler реестра и HTTP-клиент
34
+ с записью запросов. Явный `PRMCP2_CAPTURE_PATH` экспортирует эти запросы и SHA-256 исходников
35
+ в парную фикстуру API. `mcp2-dispatch-dto.contract.spec.ts` пропускает фикстуру через настоящие
36
+ строгие DTO и production ValidationPipe, сравнивает входы preview/start.
37
+ `mcp2-intent.wire.spec.ts` проводит подтверждённый start через реальный ApiClient до HTTP,
38
+ проверяя ключ вне строгого DTO, повтор и отсутствие переноса ключа на следующий вызов.
39
+ `src/tools/mcp2-api-dto.spec.ts` дополнительно вызывает production ValidationPipe прямо
40
+ из HTTP-клиента настоящего handler, используя читающий загрузчик исходников соседнего API.
41
+ `registry.spec.ts`
42
+ проверяет совпадение опубликованного каталога и runtime-схем. Отрицательные контроли ловят
43
+ потерю поля, ослабление literal-validator, смену POST и потерю даты в ответе.
44
+
45
+ Общий ICP-контракт использует тот же читающий загрузчик DTO API: пути CommonJS и JSON-ресурсы
46
+ разрешаются относительно каждого исходного модуля, корень чтения ограничен `src` API.
47
+ Проверка исторического ledger читает точный коммит `shippedRegistry.commit` подписанного
48
+ экспорта и сверяет весь каталог входных схем. Подвижная remote-ссылка не заменяет этот срез.
49
+ Свежесть текущей отгрузки проверяет отдельный API-контур `mcp-routes-freshness`;
50
+ после коммита подписанную общую выгрузку перевыпускает кресло.