@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
@@ -0,0 +1,284 @@
1
+ # Сетевой MCP
2
+
3
+ BeSales MCP может работать как HTTP-служба: мост выполняется на сервере, а клиент
4
+ подключается к нему по сети с ключом своей рабочей области. Публичный адрес службы должен использовать
5
+ HTTPS; TLS завершает прокси перед Node.js. Служба предоставляет `/mcp` через Streamable HTTP.
6
+
7
+ ## Онлайн-MCP: подключение коллег
8
+
9
+ Онлайн-MCP позволяет Claude Code и Codex CLI работать с твоей рабочей областью Besales:
10
+ смотреть данные и выполнять действия в пределах выданных прав. Клиенты обращаются к
11
+ `https://mcp.besales.ai/mcp`; держать локальный мост запущенным не нужно.
12
+
13
+ Нужны Node.js 20+ (`node -v`), Claude Code и/или Codex CLI и аккаунт Besales с доступом
14
+ к нужной рабочей области. Выполняй команды сам в своём терминале, не передавай ключ агенту
15
+ и не вставляй его в чат.
16
+
17
+ **Важно:** `beta` — тег предварительной версии. Для этих инструкций нужен именно
18
+ `@besales/mcp@beta`. Обычный `npx -y @besales/mcp` без тега по-прежнему устанавливает
19
+ прежнюю версию 0.48. Пакет этой ветки станет доступен через `beta` после публикации владельцем.
20
+
21
+ ### Шаг 1. Получи ключ своей рабочей области
22
+
23
+ ```bash
24
+ npx -y @besales/mcp@beta connect
25
+ npx -y @besales/mcp@beta connections
26
+ ```
27
+
28
+ Первая команда открывает браузер: войди в Besales, выбери область и подтверди права.
29
+ Ключ `mcp_…` сохранится в локальной связке ключей. Повтори `connect` один раз для каждой
30
+ нужной области; вторая команда покажет их имена и UUID. Ключ получается локальной командой
31
+ `connect` один раз, а дальше локальный мост для работы онлайн-клиентов не нужен.
32
+
33
+ ### Шаг 2. Настрой клиентов скриптом или вручную
34
+
35
+ В репозитории [be-sales/mcp](https://github.com/be-sales/mcp) скачай файл
36
+ `scripts/connect-clients.sh` из ветки с онлайн-MCP и запусти:
37
+
38
+ ```bash
39
+ bash scripts/connect-clients.sh
40
+ ```
41
+
42
+ Или получи скрипт из установленного пакета:
43
+
44
+ ```bash
45
+ npm install -g @besales/mcp@beta
46
+ bash "$(npm root -g)/@besales/mcp/scripts/connect-clients.sh"
47
+ ```
48
+
49
+ Скрипт читает только `connections --json`: это JSON-массив объектов
50
+ `{workspaceId, workspaceName, accountLabel, keyPrefix, active}` одной строкой, без полных ключей.
51
+ В обычном выводе управляющие символы имён и подписей заменяются пробелами; JSON сохраняет
52
+ имя целиком с экранированием. Имена передаются разборщику только через stdin, без исполнения.
53
+ Скрипт принимает UUID только по шаблону `^[0-9a-f-]{36}$` и создаёт запись
54
+ `besales-<слаг имени>` только из букв `a-z`, цифр и дефиса: для слага берутся первые
55
+ 200 символов очищенного имени, сам слаг ограничен 64 символами; пустой слаг заменяется
56
+ первыми 8 символами UUID. При совпадении имён добавляются первые четыре символа UUID,
57
+ при дальнейшей коллизии — полный UUID. Отсутствующий в PATH клиент
58
+ пропускается. Повторный запуск обновляет подключения. Для выбора отдельных областей передай
59
+ имена записей или префиксы UUID:
60
+
61
+ ```bash
62
+ bash scripts/connect-clients.sh besales-sales 1234abcd
63
+ ```
64
+
65
+ Ключи для Codex сохраняются в `~/.besales-secrets/mcp-remote-keys.env` (каталог 700, файл 600).
66
+ Скрипт напечатает строку `source` без ключей: добавь её в `~/.zshrc` или `~/.bashrc` и выполни
67
+ в текущем терминале. Запускай Codex из терминала, где загружены эти переменные.
68
+ При любом запуске сохраняются посторонние строки и переменные остальных областей:
69
+ заменяются или добавляются только `export BESALES_MCP_KEY_<ИМЯ>="…"` успешно подключённых
70
+ в этом запуске областей и отсутствующий заголовок. Повторный запуск не дублирует записи.
71
+ Запись атомарна: временный файл рядом с исходным и `mv`; ошибка клиента сохраняет прежний файл.
72
+
73
+ Адрес можно задать через `BESALES_MCP_URL`, команду получения ключей — через
74
+ `BESALES_MCP_BRIDGE` (по умолчанию `npx -y @besales/mcp@beta`). Для исходников:
75
+
76
+ ```bash
77
+ BESALES_MCP_BRIDGE='node /путь/к/mcp/bin/besales-mcp.js' bash scripts/connect-clients.sh
78
+ ```
79
+
80
+ Здесь команда моста — аргументы через пробелы; путь не должен содержать пробелов.
81
+
82
+ Вместо скрипта можно выполнить три команды вручную. Замени `UUID` идентификатором из
83
+ `connections`, а `besales-sales` — своим уникальным именем записи:
84
+
85
+ ```bash
86
+ claude mcp add --scope user --transport http besales-sales https://mcp.besales.ai/mcp --header "Authorization: Bearer $(npx -y @besales/mcp@beta key UUID)"
87
+ export BESALES_MCP_KEY_SALES="$(npx -y @besales/mcp@beta key UUID)"
88
+ codex mcp add besales-sales --url https://mcp.besales.ai/mcp --bearer-token-env-var BESALES_MCP_KEY_SALES
89
+ ```
90
+
91
+ Для ручной настройки Codex повторяй `export` в каждом новом терминале или добавь именно
92
+ команду с подстановкой `$(…)` в профиль оболочки. При нескольких областях нужны разные
93
+ имена записей, UUID и имена переменных. Для обновления уже существующей записи сначала
94
+ удали её: `claude mcp remove --scope user besales-sales` или `codex mcp remove besales-sales`,
95
+ затем повтори нужную команду добавления. Скрипт делает это сам.
96
+
97
+ Ключ лежит в настройках Claude Code открытым текстом. Codex хранит имя переменной,
98
+ а её значение скрипт записывает открытым текстом в закрытый файл. Не публикуй настройки
99
+ или файл ключей, ограничь доступ к своему компьютеру. Подстановка команды в терминале
100
+ не печатает ключ; отдельная команда `key [UUID]` выводит секрет, поэтому не запускай её
101
+ на общей демонстрации экрана.
102
+
103
+ Известное ограничение: Claude Code принимает заголовок только аргументом команды
104
+ `claude mcp add --header`, поэтому на время её выполнения (доли секунды) ключ виден в
105
+ списке процессов этого же компьютера. Запускай скрипт на личном компьютере, где нет
106
+ посторонних пользователей. У Codex такого нет: ему передаётся только имя переменной.
107
+
108
+ ### Шаг 3. Проверь подключение
109
+
110
+ ```bash
111
+ claude mcp list
112
+ codex mcp list
113
+ ```
114
+
115
+ Проверь установленный у тебя клиент, открой новую сессию агента и спроси:
116
+ «какая у меня рабочая область?». Ответ должен соответствовать выбранной области.
117
+
118
+ | Ответ службы | Что делать |
119
+ | --- | --- |
120
+ | 401 | Ключ просрочен (срок — 90 дней), отозван или потерял доступ. Снова выполни `npx -y @besales/mcp@beta connect`, затем скрипт; для Codex повтори `source`. |
121
+ | 502 | Ядро временно недоступно. Для известного ключа повторная проверка приостановлена до 5 секунд; соблюдай `Retry-After`. |
122
+ | 429 | Достигнут лимит. Подожди число секунд из `Retry-After` и повтори запрос. |
123
+ | 503 | Служба занята или обновляется. Повтори через несколько секунд. |
124
+
125
+ Чтобы отозвать доступ, открой список подключений в Besales и отзови нужное подключение.
126
+ Удаление записи только в Claude Code или Codex не отзывает сам ключ.
127
+ Общая проверка службы учитывает отзыв ключа после истечения кэша, даже если все
128
+ ожидавшие её клиенты отключились до ответа ядра.
129
+
130
+ ## Как работает служба без сессий
131
+
132
+ Каждый POST на `/mcp` независим. Клиент один раз выполняет `initialize`, затем отправляет
133
+ `notifications/initialized`, `tools/list` и `tools/call` отдельными HTTP-запросами.
134
+ В каждом запросе обязателен собственный `Authorization: Bearer mcp_…`.
135
+ Штатный stateless-режим SDK 1.29.0 использует `sessionIdGenerator: undefined` и
136
+ `enableJsonResponse: true`: ответы на вызовы — JSON, уведомления получают HTTP 202.
137
+ Служба не выдаёт `Mcp-Session-Id`, а присланный клиентом старый заголовок игнорирует.
138
+
139
+ Для клиента нет сессий: простой и обновление службы между завершёнными запросами ему
140
+ не видны, повторная инициализация и ручное переподключение не требуются. Во время
141
+ самой недоступности службы запрос может получить сетевую ошибку; незавершённый вызов
142
+ при принудительной остановке сверх срока ожидания также не гарантируется.
143
+ `GET /mcp` и `DELETE /mcp` дают HTTP 405 с `Allow: POST`: постоянного SSE-потока
144
+ и операции удаления подключения нет. Реплики не требуют привязки клиента к процессу.
145
+
146
+ | Код | Что означает и что делать |
147
+ | --- | --- |
148
+ | 200 / 202 | JSON-RPC ответ / принятое уведомление. Ошибку инструмента смотри в JSON-RPC результате. |
149
+ | 400 | Неверный JSON/JSON-RPC или запрещённый POST-массив: отправь отдельный запрос. Для массива код JSON-RPC — -32600. |
150
+ | 401 | Ключ не принят, имеет неверный формат или лишён доступа; ответ содержит `WWW-Authenticate: Bearer`. Повтори `connect` и настройку клиента при необходимости. |
151
+ | 403 | Запрос содержит Origin: браузерные обращения запрещены. |
152
+ | 404 | Неизвестный путь; к сроку жизни подключения этот код не относится. |
153
+ | 405 | На `/mcp` разрешён только POST, смотри `Allow: POST`. |
154
+ | 406 / 415 | Неверный Accept / Content-Type, проверяемый SDK. |
155
+ | 413 | Тело больше 1 МиБ, в том числе chunked; уменьши объём. |
156
+ | 429 | Лимит ключа или адреса; подожди `Retry-After` секунд. |
157
+ | 502 | Ядро недоступно, проверка ключа завершилась таймаутом или непригодным ответом; повтори позже. |
158
+ | 503 | Достигнут потолок работы либо служба останавливается; `Retry-After: 1`. |
159
+
160
+ ## Запуск службы
161
+
162
+ ```sh
163
+ yarn install --immutable
164
+ yarn build
165
+ node bin/besales-mcp-http.js
166
+ ```
167
+
168
+ Для контейнера собери `Dockerfile` и запусти образ. Node.js 22 используется для сборки
169
+ и выполнения. Финальный образ содержит только производственные зависимости. Нативный
170
+ keytar не загружается, libsecret не требуется. Обычный запуск через stdio сохраняется.
171
+
172
+ | Переменная | Назначение | Умолчание |
173
+ | --- | --- | --- |
174
+ | `PORT` | Порт HTTP, в том числе назначаемый прокси | `3000` |
175
+ | `BESALES_API_BASE_URL` | Базовый URL API | `https://core.besales.ai/api/v2` |
176
+
177
+ `BESALES_WORKSPACE_ID` и `BESALES_MCP_TASK_STATE_PATH` не определяют поведение HTTP.
178
+ Область подтверждается через `GET /auth/mcp-context` с ключом текущего запроса.
179
+
180
+ ## Проверка ключа и ограниченная память
181
+
182
+ До чтения тела и обращения к ядру проверяется заголовок `Authorization: Bearer mcp_…`.
183
+ После префикса допустимы латинские буквы, цифры, `_` и `-`, весь ключ — до 512 символов.
184
+ Отказ по формату даёт 401; при исчерпанном лимите адреса действует 429.
185
+ Отказы ядра 401/403 запоминаются на 60 секунд по SHA-256, без исходного ключа:
186
+ не более 1000 записей, вытесняется старейшая. Попадание в память не продлевает срок.
187
+ Повторный отказ не читает тело и не обращается к ядру.
188
+
189
+ Успешный вердикт кэшируется на 60 секунд по SHA-256: идентификатор и имя рабочей
190
+ области, подпись аккаунта и права; сырой ключ в кэше отсутствует. Не более 1000 записей,
191
+ при заполнении вытесняется старейшая, обращения не продлевают TTL. Одновременные
192
+ проверки одного отпечатка склеиваются в один запрос к ядру; каждый ожидающий запрос
193
+ сохраняет собственное подключение и собственный ключ. После TTL выполняется новая проверка.
194
+ Отпечатки ранее принятых ключей дополнительно хранятся до 6 часов (не более 1000,
195
+ с вытеснением самого старого); это не кэш полномочий. Успешная проверка ядром обновляет
196
+ этот срок, отказ 401/403 удаляет отпечаток и запоминает отказ; 5xx/таймаут его не меняют.
197
+ 5xx ядра, сетевые ошибки, таймауты и невалидный контекст дают 502 и не попадают ни в
198
+ успешный кэш, ни в память отвергнутых ключей. Для известного ключа сбой проверки
199
+ запоминается отдельно по SHA-256 на 5 секунд (до 1000 записей с вытеснением старейшей):
200
+ повторы получают 502 с `Retry-After` без обращения к ядру и не продлевают паузу.
201
+ После срока проверка повторяется, успех очищает запись; известный отпечаток при сбое
202
+ сохраняется. Неизвестные ключи по-прежнему ограничены ведром адреса и не заполняют эту
203
+ таблицу. Исход общей проверки обрабатывается один раз в самом обещании: успех сохраняет
204
+ вердикт и известный отпечаток, 401/403 забывает отпечаток и запоминает отказ, даже если
205
+ все ожидающие оборвались. Таблица сбоев очищается по таймеру и при остановке.
206
+
207
+ Отозванный ключ сразу перестаёт работать на вызовах инструментов у ядра: вызов всегда
208
+ передаёт ему текущий ключ клиента. Собственная проверка службы может отставать до TTL
209
+ (60 секунд): до обновления кэша перечисление инструментов ещё доступно, но полномочия
210
+ вызовов проверяет само ядро. Кэш контекста не выдаёт доступ вместо ядра.
211
+
212
+ ## Лимиты и защита от перебора
213
+
214
+ | Ограничение на один процесс | Значение |
215
+ | --- | --- |
216
+ | Одновременные запросы, включая проверку ключа, тело и выполнение | 100, далее 503 |
217
+ | Тело, включая chunked | 1 МиБ |
218
+ | Ведро принятого ключа | 120 запросов; восстановление 1 запроса в секунду |
219
+ | Число вёдер ключей | 10 000; мусорные и отвергнутые ключи их не создают |
220
+ | Ведро адреса для проверок | 20 попыток; восстановление 1 попытки за 3 секунды |
221
+ | Число вёдер адресов | 10 000 |
222
+ | Успешные вердикты / отвергнутые отпечатки | По 1000 записей, TTL 60 секунд |
223
+ | Известные отпечатки ключей | 1000 записей, срок 6 часов |
224
+ | Сбои проверки известных отпечатков | 1000 записей, пауза 5 секунд |
225
+ | Таймаут заголовков / получения HTTP-запроса | 10 / 65 секунд |
226
+ | Таймаут обращения к ядру | 60 секунд |
227
+ | Ожидание принятых запросов при остановке | До 5 секунд |
228
+
229
+ Ведро ключа расходуется только после подтверждения ядром или попадания в успешный кэш.
230
+ Ведро адреса расходуют неизвестные ключи, которым необходима проверка у ядра (включая
231
+ ожидающих общую проверку), и отказы по формату или отвергнутому отпечатку. Успешный кэш
232
+ и повторная проверка известного ключа не расходуют ведро адреса. После проверки для
233
+ известного ключа по-прежнему действуют склейка проверок и собственное ведро ключа.
234
+ 429 содержит `Retry-After` в секундах с округлением вверх: до 3 для адреса, 1 для ключа.
235
+ Заполненная таблица вёдер отказывает новому элементу без вытеснения действующих вёдер.
236
+
237
+ Адрес берётся только из `X-Real-IP`, который должен устанавливать доверенный входной
238
+ прокси (в целевом окружении — Railway). Перед службой стоит Cloudflare: адрес в
239
+ `X-Real-IP` может быть адресом его узла, общим для многих людей. Поэтому защита не
240
+ наказывает известные ключи за перебор других ключей с этого общего адреса. Прямой доступ к Node.js должен быть закрыт,
241
+ иначе этот заголовок можно подделать. `X-Forwarded-For` и адрес сокета не используются;
242
+ без `X-Real-IP` все клиенты делят одно ведро неизвестного адреса. Адрес не передаётся
243
+ ядру и не записывается в журнал. Неактивные вёдра адресов очищаются через 60 секунд,
244
+ ключей — через 120 секунд; таблица известных ключей очищается по сроку и при остановке; общая чистка выполняется каждую минуту, а при заполнении
245
+ таблицы также перед отказом. Кэши дополнительно проверяют срок при обращении.
246
+
247
+ Любой присутствующий `Origin` (включая пустой и `null`) получает JSON 403 до
248
+ авторизации, чтения тела и расхода вёдер. Это защищает службу от браузерных обращений
249
+ и DNS-rebinding; сетевые CLI-клиенты работают без `Origin`.
250
+
251
+ ## Изоляция и завершение запроса
252
+
253
+ Каждый POST создаёт новые MCP Server, транспорт, ConnectionStore и хранилище ровно
254
+ одного подключения. Ключ берётся из заголовка этого запроса, живёт до его завершения
255
+ и не записывается на диск. После закрытия ответа credentials очищаются, транспорт
256
+ и сервер закрываются. Даже совпадающие JSON-RPC id параллельных запросов не разделяют
257
+ состояние SDK. Место в лимите освобождается только после завершения HTTP-обработчика и всех начатых
258
+ им API-вызовов, даже если клиент уже оборвал соединение. При остановке эта работа
259
+ также ожидается до общего срока 5 секунд. Обрыв отслеживается до первого await и проверяется после проверки ядра,
260
+ чтения тела, заполнения store и подключения транспорта. Оборванная проверка ключа
261
+ немедленно отсоединяет ожидающего и освобождает его место; остальные живые ожидающие
262
+ продолжают общую проверку; результат сохраняет сама проверка независимо от ожидающих. Оборванный ожидающий сам
263
+ не создаёт вердикт, credentials или ведро ключа и не пишет предупреждение в журнал.
264
+
265
+ Область фиксирована ключом: явный запрос другой области отклоняется. Число (292) и
266
+ имена инструментов совпадают со stdio. `besales_workspace_current` видит только текущее
267
+ подключение; `besales_workspace_use` отказывает. Локальные `besales_task_*` также
268
+ возвращают отказ: контекст длительной задачи храни у клиента.
269
+
270
+ `GET /health` без ключа возвращает только `{status, version}`. При SIGTERM служба
271
+ перестаёт принимать новые соединения, ждёт принятые запросы до 5 секунд, затем закрывает
272
+ оставшиеся соединения и выходит с кодом 0. Новая работа во время ожидания получает
273
+ 503 с `Retry-After: 1`. Настрой проверку здоровья на `/health`.
274
+
275
+ Журнал скрывает Authorization, MCP-ключи и секреты настройки, включая строки ошибок.
276
+ Не включай журналирование сырых заголовков на внешнем прокси. Маска `mcp_…` применяется
277
+ только к журналу; проверки содержимого локальных stdio-задач сохранены.
278
+ Общего ConnectionStore, файлов задач, БД, Redis, томов или серверного общего ключа нет.
279
+ Автоматический браузерный вход и OAuth для сетевых MCP-клиентов не поддерживаются:
280
+ подключение выполняется через заголовок клиента и HTTPS-прокси.
281
+
282
+ ## Известные ограничения
283
+
284
+ Ядро, бесконечно отдающее тело по капле, может удерживать место запроса до отмены транспорта (абсолютного срока API нет, общий со stdio `src/http/api-client.ts` не меняется); обработчики `Promise.race` оборвавшихся ожидающих остаются на общем обещании до его завершения (оно ограничено таймаутом API 60 с).
@@ -0,0 +1,69 @@
1
+ # Раскатка промптов, пауза дожимов и настройки канала
2
+
3
+ `besales_pipeline_settings_update.auto_finish` сохраняет форму отгруженного клиента:
4
+ мост переводит прежние snake_case-поля в camelCase. Дни — целое число от 1 до 36500.
5
+ Изменение отправки заметки в CRM требует `explicit_confirmation=true`; сервер сверяет
6
+ действующий флаг автозавершения и синхронно сохраняет зеркало заметки CRM. `null` у
7
+ шаблона снимает его. Поле `finish_auto_timeout` остаётся отложенным (422).
8
+
9
+ `besales_prompt_batch_start` сохраняет прежнюю форму. После потери ответа прочитай
10
+ `besales_prompt_batch_by_key` с исходным ключом: он передаётся без нормализации. Тот же
11
+ ключ и состав возвращают прежний прогон; другой состав даёт 409. Новый ключ может
12
+ запустить вторую раскатку. Ответ чтения сохраняет `operations`, `startedBy`, фазы и
13
+ локализованные причины отказа агентов.
14
+
15
+ `besales_prompt_batch_stop` принимает `run_id`. Ответ 202 подтверждает принятие
16
+ остановки после текущего агента. Начатая запись завершается; применённые изменения
17
+ сохраняются. Конечное состояние проверяется через `besales_prompt_batch_status`.
18
+ Повтор остановки идемпотентен. STOPPED может содержать не начатых агентов, поэтому
19
+ ненулевой PENDING сам по себе не означает, что прогон выполняется. 404 означает
20
+ недоступный прогон, 503 — недоступное управление.
21
+
22
+ `besales_prompt_batch_resume` продолжает оставшихся, отказавших и сброшенных
23
+ барьером агентов, включая откатанных подготовкой `allOrNothing`. Уже записанные
24
+ агенты не повторяются. 400 означает живой прогон, 409 — неустановленный исход
25
+ прежней операции: перечитай статус и не создавай новую раскатку автоматически.
26
+
27
+ `besales_dialogue_followup_state_get` читает состояние по `conversation_id` под
28
+ правом чтения диалогов. API разрешает пару «контакт × канал» и возвращает сохранённую
29
+ и действующую паузу, момент измерения, версию, допустимые действия, последствия и
30
+ ограничения. Матрица и её локализованный текст передаются целиком. Ошибки 403/404/503
31
+ сохраняются как отказы; ошибка чтения не превращается в NONE. Внешние ограничения
32
+ остаются NOT_CHECKED. Включение оси не гарантирует отправку и не воскрешает отменённый
33
+ прогон.
34
+
35
+ `besales_dialogue_followup_state_update` записывает явное решение человека через
36
+ PATCH `/conversations/:conversationId/followup-state/bridge`: `expected_version`
37
+ берётся из чтения, `mute_expires_at` передаётся только для `MUTE_TEMPORARY`. Перед
38
+ записью покажи последствия и ограничения. После 409/428 перечитай состояние и
39
+ получи новое решение человека; после неизвестного исхода сначала прочитай состояние
40
+ без автоматического повтора записи.
41
+
42
+ `besales_platform_settings_update` принимает прежние необязательные разделы:
43
+
44
+ - `smsgorod_settings`: `channel` (DIGIT/CHAR) и nullable `sender`, для SMS-канала с
45
+ подключением SMS-город.
46
+ - `bitrix24_bot_settings`: имя и режим работы бота. Смена `ignore_crm_stage_gate`
47
+ требует `explicit_confirmation=true`; неизменное значение допускается без него.
48
+ `bot_id`, `bot_code`, `open_line_id` управляются подключением: точное ненулевое эхо
49
+ допустимо, изменение/null даёт 422 `BITRIX24_BOT_IDENTITY_MANAGED`.
50
+ - `crm_behavior.use_cross_platform_history`: канальный выбор истории одного человека
51
+ между каналами; `false` передаётся явно, omission сохраняет прежний выбор.
52
+
53
+ Все разделы отправляются одним PATCH. Неверный тип канала даёт 400, отсутствие
54
+ подключения, неверный sender и отсутствие подтверждения — адресный 422. Ошибка не
55
+ означает частично сохранённую настройку. `bitrix24BotSettingsApply` различает
56
+ сохранение и применение у провайдера; неизвестное/отложенное применение не является
57
+ подтверждённым успехом провайдера.
58
+
59
+ Создание и изменение агента, клонирование и чтение ICP сохраняют прежние обязательные
60
+ поля. Необязательный `default_icp_profile_id` передаётся как раньше; явный null в
61
+ изменении агента сохраняется. Прямой POST связи ICP не добавлен. Конфликт 409 не
62
+ вызывает автоматический PATCH или DELETE→POST.
63
+
64
+ Откат `besales_audit_revert` передаёт необязательное `explicit_confirmation` в
65
+ `explicitConfirmation` канального запроса. Опасное восстановление поведения,
66
+ включая удаление строки и откат клона, требует отдельного согласия человека и
67
+ значения `true`. Без него сервер возвращает `EXPLICIT_CONFIRMATION_REQUIRED`;
68
+ безопасный откат проходит без подтверждения. Согласие исходной правки не является
69
+ согласием на её откат. Workspace-вход сохраняется без изменений.
@@ -1,20 +1,22 @@
1
1
  # Политика PII в Besales MCP
2
2
 
3
- Дата инвентаризации: 2026-09-11. Секреты и PII — разные контуры: browser handoff не отдаёт
4
- credentials модели, но разрешённые рабочие данные могут оказаться в транскрипте хоста.
3
+ Секреты и PII — разные контуры: browser handoff не отдаёт credentials модели, но разрешённые
4
+ рабочие данные могут оказаться в транскрипте хоста. Какие именно инструменты несут данные клиентов
5
+ и как это помечено в определениях — [customer-data.md](customer-data.md); здесь — инвентарь
6
+ поверхностей и правила.
5
7
 
6
8
  ## Инвентарь
7
9
 
8
10
  | Поверхность | Возможные данные | Зачем нужны | Политика |
9
11
  |---|---|---|---|
10
- | dialogue query/transcript | имя, username/телефон, сообщения, CRM-ссылки | аудит, диагностика, ICP | list по умолчанию краткий; полный transcript только явным get и под `read:conversations` |
11
- | ICP dialogue samples | реплики, outcome, признаки контакта | анализ сегментов и скрипта | import с anonymize по умолчанию; raw источник не копировать в task state |
12
- | wave contacts / run contacts | contact ID, messenger, статус доставки, причина отказа | dry-run, восстановление рассылки | scope кампаний; страницы; не эхоить весь вход после записи |
12
+ | dialogue query/transcript | имя, username/телефон, сообщения, CRM-ссылки | аудит, диагностика, ICP | список краткий, тексты — отдельным явным вызовом `besales_dialogue_transcript`; оба под `read:conversations` |
13
+ | ICP dialogue samples | реплики, outcome, признаки контакта | анализ сегментов и скрипта | импорт принимает `anonymize` только со значением `true`; raw источник не копировать в task state |
14
+ | wave contacts / run contacts | contact ID, messenger, статус доставки, причина отказа | dry-run, восстановление рассылки | право `mcp:platform-setup`; страницы; не эхоить весь вход после записи |
13
15
  | findings/evidence | выдержки сообщений, оценки, scenario evidence | объяснить качество | возвращать минимальный фрагмент, нужный для вывода; полный источник получать точечно |
14
- | link clicks | имя контакта, contact/message IDs, время | атрибуция | описание инструмента явно предупреждает о PII; отдельный scope conversations |
15
- | workspace labels | название компании, email владельца | выбор подключения | email только маскированный; label cache не хранит raw email |
16
- | API keys/webhook secrets | credentials | подключение канала | только одноразовый browser reveal; рекурсивно удаляются из MCP result/log |
17
- | structured errors | operation/object ID, service account email, remediation | продолжение после сбоя | whitelist; неизвестные поля и payload бэкенда наружу не проходят |
16
+ | link clicks | имя контакта, contact/message IDs, время | атрибуция | описание инструмента предупреждает о PII; права `read:analytics` и `read:conversations` вместе |
17
+ | workspace labels | название компании, подпись аккаунта | выбор подключения | подпись приходит от сервера уже маскированной; индекс подключений raw email не хранит |
18
+ | API keys/webhook secrets | credentials | подключение канала | только одноразовый browser reveal; из ответов инструментов удаляются поля-credentials, из лога — поля-секреты по имени на любой глубине |
19
+ | structured errors | operation/object ID, service account email, remediation | продолжение после сбоя | whitelist безопасных полей; неизвестные поля и payload бэкенда наружу не проходят |
18
20
 
19
21
  ## Правила
20
22
 
@@ -26,7 +28,8 @@ credentials модели, но разрешённые рабочие данны
26
28
  требует доставку конкретному человеку или разбор конкретного сообщения, удаление ID разрушило
27
29
  бы разрешённую функцию; доступ ограничивается scope и минимальным ответом.
28
30
  4. MCP не пишет raw dialogue, contact list или findings в локальный progress/task payload.
29
- Допустимы только IDs созданных сущностей, агрегаты, checkpoints и согласованные ограничения.
31
+ Допустимы только IDs созданных сущностей, агрегаты, checkpoints и согласованные ограничения
32
+ ([task-state.md](task-state.md)).
30
33
  5. Host transcript и telemetry находятся под retention-политикой выбранного хоста. MCP не может
31
34
  удалить уже переданный ему текст; поэтому перед полным чтением описания предупреждают о PII,
32
35
  а оператор выбирает корпоративный host/retention. Экспорт в сторонний файл выполняется только
@@ -34,13 +37,15 @@ credentials модели, но разрешённые рабочие данны
34
37
  6. Ошибка не должна удалять полезную безопасную диагностику: `serviceAccountEmail`, operation ID,
35
38
  missing scope и remediation сохраняются. Сырые stack, токены, webhookSecret, apiKey и headers
36
39
  удаляются.
37
- 7. Локальные логи маскируют email/телефоны/ключи; тесты проверяют вложенные объекты, массивы и
38
- ошибки, а не только top-level поля.
40
+ 7. Вызов API в логе моста — это метод, путь (с замаскированными секретами) и статус; тела
41
+ запросов и ответов инструментов в лог не пишутся. Поля-секреты в любых логируемых объектах
42
+ заменяются на любой глубине, включая массивы (`src/utils/logger.ts`); список ведётся от
43
+ обратного — имена секретов, а не имена безопасных полей.
39
44
 
40
45
  ## Retention и удаление
41
46
 
42
47
  API-источники живут по профильным retention/GDPR правилам домена. MCP resources и tool schemas
43
- не содержат customer PII. Keychain хранит credentials до disconnect/revoke. Кэш подключения
44
- хранит только workspace ID/name, маскированный account label, scopes и timestamps. Потерянный
45
- browser reveal не восстанавливается из MCP-транскрипта: пользователь выпускает новый credential
46
- только осознанно, понимая отзыв прежнего.
48
+ не содержат customer PII. Keychain хранит credentials до disconnect/revoke. Индекс подключений
49
+ хранит только workspace ID/name, префикс ключа, маскированную подпись аккаунта, выданные права и
50
+ времена. Потерянный browser reveal не восстанавливается из MCP-транскрипта: пользователь
51
+ выпускает новый credential только осознанно, понимая отзыв прежнего.