@besales/mcp 0.48.0 → 1.0.0-beta.4

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 (604) hide show
  1. package/README.md +117 -163
  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 +54 -7
  23. package/dist/http/api-client.js +132 -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 +43 -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 +149 -519
  76. package/dist/resources/docs/prompt-anatomy.md +39 -285
  77. package/dist/resources/docs/routing.md +8 -16
  78. package/dist/resources/docs/trigger-actions.md +40 -24
  79. package/dist/resources/docs/variables.md +8 -12
  80. package/dist/resources/operator-edit.contract.d.ts +7 -0
  81. package/dist/resources/operator-edit.contract.js +8 -0
  82. package/dist/resources/operator-edit.contract.js.map +1 -0
  83. package/dist/resources/registry.js +20 -4
  84. package/dist/resources/registry.js.map +1 -1
  85. package/dist/resources/workflows/audit-dialogues.md +23 -12
  86. package/dist/resources/workflows/compare-models.md +6 -6
  87. package/dist/resources/workflows/connect-crm-from-scratch.md +15 -12
  88. package/dist/resources/workflows/connect-datasource-from-scratch.md +5 -4
  89. package/dist/resources/workflows/extract-from-document.md +8 -6
  90. package/dist/resources/workflows/operator-edit.md +15 -0
  91. package/dist/resources/workflows/platform-setup-from-scratch.md +59 -70
  92. package/dist/resources/workflows/production-readiness-check.md +25 -15
  93. package/dist/schemas/mcp-tools.json +12389 -6657
  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 +81 -24
  122. package/dist/tools/definitions/agent-design.js +246 -90
  123. package/dist/tools/definitions/agent-design.js.map +1 -1
  124. package/dist/tools/definitions/agent-model-notice.d.ts +5 -0
  125. package/dist/tools/definitions/agent-model-notice.js +31 -0
  126. package/dist/tools/definitions/agent-model-notice.js.map +1 -0
  127. package/dist/tools/definitions/agent-models.d.ts +5 -0
  128. package/dist/tools/definitions/agent-models.js +26 -0
  129. package/dist/tools/definitions/agent-models.js.map +1 -0
  130. package/dist/tools/definitions/agent-settings.d.ts +85 -0
  131. package/dist/tools/definitions/agent-settings.js +187 -0
  132. package/dist/tools/definitions/agent-settings.js.map +1 -0
  133. package/dist/tools/definitions/ai-costs.d.ts +12 -0
  134. package/dist/tools/definitions/ai-costs.js +142 -0
  135. package/dist/tools/definitions/ai-costs.js.map +1 -0
  136. package/dist/tools/definitions/api-tool-request.d.ts +15 -0
  137. package/dist/tools/definitions/api-tool-request.js +2 -0
  138. package/dist/tools/definitions/api-tool-request.js.map +1 -0
  139. package/dist/tools/definitions/behavior-shipped-form.d.ts +182 -0
  140. package/dist/tools/definitions/behavior-shipped-form.js +185 -0
  141. package/dist/tools/definitions/behavior-shipped-form.js.map +1 -0
  142. package/dist/tools/definitions/broadcast-alerts.d.ts +6 -0
  143. package/dist/tools/definitions/broadcast-alerts.js +72 -0
  144. package/dist/tools/definitions/broadcast-alerts.js.map +1 -0
  145. package/dist/tools/definitions/broadcast-analytics.d.ts +102 -18
  146. package/dist/tools/definitions/broadcast-analytics.js +732 -431
  147. package/dist/tools/definitions/broadcast-analytics.js.map +1 -1
  148. package/dist/tools/definitions/broadcast-scheduler.d.ts +10 -13
  149. package/dist/tools/definitions/broadcast-scheduler.js +196 -154
  150. package/dist/tools/definitions/broadcast-scheduler.js.map +1 -1
  151. package/dist/tools/definitions/call-operator-task.schema.d.ts +11 -0
  152. package/dist/tools/definitions/call-operator-task.schema.js +30 -0
  153. package/dist/tools/definitions/call-operator-task.schema.js.map +1 -0
  154. package/dist/tools/definitions/contacts.d.ts +3 -0
  155. package/dist/tools/definitions/contacts.js +57 -31
  156. package/dist/tools/definitions/contacts.js.map +1 -1
  157. package/dist/tools/definitions/crm-platform.d.ts +29 -39
  158. package/dist/tools/definitions/crm-platform.js +249 -352
  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/dialogue-reprocess.d.ts +5 -0
  197. package/dist/tools/definitions/dialogue-reprocess.js +107 -0
  198. package/dist/tools/definitions/dialogue-reprocess.js.map +1 -0
  199. package/dist/tools/definitions/edit-version-transport.test-fixtures.d.ts +13 -0
  200. package/dist/tools/definitions/edit-version-transport.test-fixtures.js +292 -0
  201. package/dist/tools/definitions/edit-version-transport.test-fixtures.js.map +1 -0
  202. package/dist/tools/definitions/edit-version.d.ts +5 -0
  203. package/dist/tools/definitions/edit-version.js +20 -0
  204. package/dist/tools/definitions/edit-version.js.map +1 -0
  205. package/dist/tools/definitions/external-api-channels.js +17 -15
  206. package/dist/tools/definitions/external-api-channels.js.map +1 -1
  207. package/dist/tools/definitions/feedback-document-access.d.ts +16 -0
  208. package/dist/tools/definitions/feedback-document-access.js +63 -0
  209. package/dist/tools/definitions/feedback-document-access.js.map +1 -0
  210. package/dist/tools/definitions/fixtures/shipped-setup-status.d.ts +3 -0
  211. package/dist/tools/definitions/fixtures/shipped-setup-status.js +9 -0
  212. package/dist/tools/definitions/fixtures/shipped-setup-status.js.map +1 -0
  213. package/dist/tools/definitions/follow-up-config.d.ts +79 -0
  214. package/dist/tools/definitions/follow-up-config.js +258 -0
  215. package/dist/tools/definitions/follow-up-config.js.map +1 -0
  216. package/dist/tools/definitions/follow-up-funnel-test.d.ts +4 -3
  217. package/dist/tools/definitions/follow-up-funnel-test.js +65 -52
  218. package/dist/tools/definitions/follow-up-funnel-test.js.map +1 -1
  219. package/dist/tools/definitions/follow-up-promotion-instructions.d.ts +2 -0
  220. package/dist/tools/definitions/follow-up-promotion-instructions.js +7 -0
  221. package/dist/tools/definitions/follow-up-promotion-instructions.js.map +1 -0
  222. package/dist/tools/definitions/follow-up-setup.d.ts +4 -28
  223. package/dist/tools/definitions/follow-up-setup.js +20 -87
  224. package/dist/tools/definitions/follow-up-setup.js.map +1 -1
  225. package/dist/tools/definitions/follow-up.d.ts +20 -122
  226. package/dist/tools/definitions/follow-up.js +200 -357
  227. package/dist/tools/definitions/follow-up.js.map +1 -1
  228. package/dist/tools/definitions/followup-getcourse-compat.d.ts +29 -0
  229. package/dist/tools/definitions/followup-getcourse-compat.js +62 -0
  230. package/dist/tools/definitions/followup-getcourse-compat.js.map +1 -0
  231. package/dist/tools/definitions/followup-sequence-config.schema.d.ts +10 -0
  232. package/dist/tools/definitions/followup-sequence-config.schema.js +14 -0
  233. package/dist/tools/definitions/followup-sequence-config.schema.js.map +1 -0
  234. package/dist/tools/definitions/funnel-analytics.d.ts +18 -0
  235. package/dist/tools/definitions/funnel-analytics.js +150 -0
  236. package/dist/tools/definitions/funnel-analytics.js.map +1 -0
  237. package/dist/tools/definitions/getcourse-anchor-refresh.d.ts +5 -9
  238. package/dist/tools/definitions/getcourse-anchor-refresh.js +26 -31
  239. package/dist/tools/definitions/getcourse-anchor-refresh.js.map +1 -1
  240. package/dist/tools/definitions/getcourse-cold-outbound-settings.d.ts +46 -0
  241. package/dist/tools/definitions/getcourse-cold-outbound-settings.js +37 -0
  242. package/dist/tools/definitions/getcourse-cold-outbound-settings.js.map +1 -0
  243. package/dist/tools/definitions/getcourse-cold-welcome.d.ts +14 -29
  244. package/dist/tools/definitions/getcourse-cold-welcome.js +190 -253
  245. package/dist/tools/definitions/getcourse-cold-welcome.js.map +1 -1
  246. package/dist/tools/definitions/getcourse-wave-welcome.messages.d.ts +10 -0
  247. package/dist/tools/definitions/getcourse-wave-welcome.messages.js +17 -0
  248. package/dist/tools/definitions/getcourse-wave-welcome.messages.js.map +1 -0
  249. package/dist/tools/definitions/help.js.map +1 -1
  250. package/dist/tools/definitions/icp-import-source.d.ts +75 -0
  251. package/dist/tools/definitions/icp-import-source.js +88 -0
  252. package/dist/tools/definitions/icp-import-source.js.map +1 -0
  253. package/dist/tools/definitions/inbound-analytics.d.ts +13 -0
  254. package/dist/tools/definitions/inbound-analytics.js +55 -0
  255. package/dist/tools/definitions/inbound-analytics.js.map +1 -0
  256. package/dist/tools/definitions/instagram-comment.templates.d.ts +19 -0
  257. package/dist/tools/definitions/instagram-comment.templates.js +34 -0
  258. package/dist/tools/definitions/instagram-comment.templates.js.map +1 -0
  259. package/dist/tools/definitions/instagram-settings-compat.d.ts +33 -0
  260. package/dist/tools/definitions/instagram-settings-compat.js +7 -0
  261. package/dist/tools/definitions/instagram-settings-compat.js.map +1 -0
  262. package/dist/tools/definitions/knowledge-chunking.d.ts +42 -0
  263. package/dist/tools/definitions/knowledge-chunking.js +83 -0
  264. package/dist/tools/definitions/knowledge-chunking.js.map +1 -0
  265. package/dist/tools/definitions/knowledge-space-search-fields.d.ts +12 -0
  266. package/dist/tools/definitions/knowledge-space-search-fields.js +30 -0
  267. package/dist/tools/definitions/knowledge-space-search-fields.js.map +1 -0
  268. package/dist/tools/definitions/knowledge.d.ts +24 -14
  269. package/dist/tools/definitions/knowledge.js +342 -233
  270. package/dist/tools/definitions/knowledge.js.map +1 -1
  271. package/dist/tools/definitions/legacy-trigger-repeat.d.ts +17 -0
  272. package/dist/tools/definitions/legacy-trigger-repeat.js +53 -0
  273. package/dist/tools/definitions/legacy-trigger-repeat.js.map +1 -0
  274. package/dist/tools/definitions/link-tracking.d.ts +8 -0
  275. package/dist/tools/definitions/link-tracking.js +141 -38
  276. package/dist/tools/definitions/link-tracking.js.map +1 -1
  277. package/dist/tools/definitions/mailing-variant-content.d.ts +75 -0
  278. package/dist/tools/definitions/mailing-variant-content.js +73 -0
  279. package/dist/tools/definitions/mailing-variant-content.js.map +1 -0
  280. package/dist/tools/definitions/model-comparison.d.ts +2 -1
  281. package/dist/tools/definitions/model-comparison.js +4 -5
  282. package/dist/tools/definitions/model-comparison.js.map +1 -1
  283. package/dist/tools/definitions/money-currency.d.ts +5 -0
  284. package/dist/tools/definitions/money-currency.js +10 -0
  285. package/dist/tools/definitions/money-currency.js.map +1 -0
  286. package/dist/tools/definitions/operator-workflow.d.ts +5 -5
  287. package/dist/tools/definitions/operator-workflow.js +80 -27
  288. package/dist/tools/definitions/operator-workflow.js.map +1 -1
  289. package/dist/tools/definitions/platform-funnel-analytics.d.ts +42 -0
  290. package/dist/tools/definitions/platform-funnel-analytics.js +72 -0
  291. package/dist/tools/definitions/platform-funnel-analytics.js.map +1 -0
  292. package/dist/tools/definitions/platform-getcourse-wave-field-bindings.d.ts +42 -0
  293. package/dist/tools/definitions/platform-getcourse-wave-field-bindings.js +51 -0
  294. package/dist/tools/definitions/platform-getcourse-wave-field-bindings.js.map +1 -0
  295. package/dist/tools/definitions/platform-settings-limits.d.ts +5 -0
  296. package/dist/tools/definitions/platform-settings-limits.js +6 -0
  297. package/dist/tools/definitions/platform-settings-limits.js.map +1 -0
  298. package/dist/tools/definitions/platform-settings-shipped-form.d.ts +37 -0
  299. package/dist/tools/definitions/platform-settings-shipped-form.js +310 -0
  300. package/dist/tools/definitions/platform-settings-shipped-form.js.map +1 -0
  301. package/dist/tools/definitions/platform-settings-update.d.ts +300 -0
  302. package/dist/tools/definitions/platform-settings-update.js +134 -0
  303. package/dist/tools/definitions/platform-settings-update.js.map +1 -0
  304. package/dist/tools/definitions/{getcourse-wave.d.ts → platform-setup-wave.d.ts} +75 -6
  305. package/dist/tools/definitions/platform-setup-wave.js +1079 -0
  306. package/dist/tools/definitions/platform-setup-wave.js.map +1 -0
  307. package/dist/tools/definitions/platform-setup.d.ts +697 -224
  308. package/dist/tools/definitions/platform-setup.js +313 -752
  309. package/dist/tools/definitions/platform-setup.js.map +1 -1
  310. package/dist/tools/definitions/platform-widget-page-rules.schema.d.ts +10 -0
  311. package/dist/tools/definitions/platform-widget-page-rules.schema.js +7 -0
  312. package/dist/tools/definitions/platform-widget-page-rules.schema.js.map +1 -0
  313. package/dist/tools/definitions/prompt-authoring.constants.d.ts +2 -0
  314. package/dist/tools/definitions/prompt-authoring.constants.js +3 -0
  315. package/dist/tools/definitions/prompt-authoring.constants.js.map +1 -0
  316. package/dist/tools/definitions/prompt-batch-controls.d.ts +5 -0
  317. package/dist/tools/definitions/prompt-batch-controls.js +40 -0
  318. package/dist/tools/definitions/prompt-batch-controls.js.map +1 -0
  319. package/dist/tools/definitions/prompt-draft-authoring.d.ts +5 -0
  320. package/dist/tools/definitions/prompt-draft-authoring.js +24 -0
  321. package/dist/tools/definitions/prompt-draft-authoring.js.map +1 -0
  322. package/dist/tools/definitions/prompt-text-projection.d.ts +11 -0
  323. package/dist/tools/definitions/prompt-text-projection.js +62 -0
  324. package/dist/tools/definitions/prompt-text-projection.js.map +1 -0
  325. package/dist/tools/definitions/reviewer-paid.d.ts +19 -0
  326. package/dist/tools/definitions/reviewer-paid.js +115 -0
  327. package/dist/tools/definitions/reviewer-paid.js.map +1 -0
  328. package/dist/tools/definitions/routing-condition-projection.d.ts +31 -0
  329. package/dist/tools/definitions/routing-condition-projection.js +97 -0
  330. package/dist/tools/definitions/routing-condition-projection.js.map +1 -0
  331. package/dist/tools/definitions/schedule-selection-hints.d.ts +3 -0
  332. package/dist/tools/definitions/schedule-selection-hints.js +42 -0
  333. package/dist/tools/definitions/schedule-selection-hints.js.map +1 -0
  334. package/dist/tools/definitions/{scheduled-tasks.d.ts → scheduled-task-alias.d.ts} +12 -10
  335. package/dist/tools/definitions/scheduled-task-alias.js +207 -0
  336. package/dist/tools/definitions/scheduled-task-alias.js.map +1 -0
  337. package/dist/tools/definitions/session.js +3 -3
  338. package/dist/tools/definitions/session.js.map +1 -1
  339. package/dist/tools/definitions/setup-init-operation.schema.d.ts +2 -0
  340. package/dist/tools/definitions/setup-init-operation.schema.js +6 -0
  341. package/dist/tools/definitions/setup-init-operation.schema.js.map +1 -0
  342. package/dist/tools/definitions/shared-input.helpers.d.ts +51 -0
  343. package/dist/tools/definitions/shared-input.helpers.js +323 -0
  344. package/dist/tools/definitions/shared-input.helpers.js.map +1 -0
  345. package/dist/tools/definitions/shared.d.ts +401 -307
  346. package/dist/tools/definitions/shared.js +430 -652
  347. package/dist/tools/definitions/shared.js.map +1 -1
  348. package/dist/tools/definitions/shipped-output-names.d.ts +19 -0
  349. package/dist/tools/definitions/shipped-output-names.js +123 -0
  350. package/dist/tools/definitions/shipped-output-names.js.map +1 -0
  351. package/dist/tools/definitions/task-state.d.ts +4 -4
  352. package/dist/tools/definitions/task-state.js +2 -1
  353. package/dist/tools/definitions/task-state.js.map +1 -1
  354. package/dist/tools/definitions/telegram-personal-capacity.d.ts +4 -0
  355. package/dist/tools/definitions/telegram-personal-capacity.js +18 -0
  356. package/dist/tools/definitions/telegram-personal-capacity.js.map +1 -0
  357. package/dist/tools/definitions/telegram-personal-management.d.ts +34 -0
  358. package/dist/tools/definitions/telegram-personal-management.js +139 -0
  359. package/dist/tools/definitions/telegram-personal-management.js.map +1 -0
  360. package/dist/tools/definitions/telegram-personal-restrictions.d.ts +19 -0
  361. package/dist/tools/definitions/telegram-personal-restrictions.js +109 -0
  362. package/dist/tools/definitions/telegram-personal-restrictions.js.map +1 -0
  363. package/dist/tools/definitions/telegram-pool-policy.d.ts +8 -0
  364. package/dist/tools/definitions/telegram-pool-policy.js +56 -0
  365. package/dist/tools/definitions/telegram-pool-policy.js.map +1 -0
  366. package/dist/tools/definitions/touch-history-alias.d.ts +4 -0
  367. package/dist/tools/definitions/touch-history-alias.js +99 -0
  368. package/dist/tools/definitions/touch-history-alias.js.map +1 -0
  369. package/dist/tools/definitions/trigger-action-item.schema.d.ts +254 -0
  370. package/dist/tools/definitions/trigger-action-item.schema.js +121 -0
  371. package/dist/tools/definitions/trigger-action-item.schema.js.map +1 -0
  372. package/dist/tools/definitions/trigger-argument.schema.d.ts +14 -0
  373. package/dist/tools/definitions/trigger-argument.schema.js +23 -0
  374. package/dist/tools/definitions/trigger-argument.schema.js.map +1 -0
  375. package/dist/tools/definitions/trigger-claim-alias.d.ts +10 -0
  376. package/dist/tools/definitions/trigger-claim-alias.js +90 -0
  377. package/dist/tools/definitions/trigger-claim-alias.js.map +1 -0
  378. package/dist/tools/definitions/trigger-echo-projection.d.ts +1 -0
  379. package/dist/tools/definitions/trigger-echo-projection.js +41 -0
  380. package/dist/tools/definitions/trigger-echo-projection.js.map +1 -0
  381. package/dist/tools/definitions/trigger-upsert.tool.d.ts +41 -0
  382. package/dist/tools/definitions/trigger-upsert.tool.js +159 -0
  383. package/dist/tools/definitions/trigger-upsert.tool.js.map +1 -0
  384. package/dist/tools/definitions/v15-port-descriptions.d.ts +11 -0
  385. package/dist/tools/definitions/v15-port-descriptions.js +30 -0
  386. package/dist/tools/definitions/v15-port-descriptions.js.map +1 -0
  387. package/dist/tools/definitions/variables.d.ts +44 -0
  388. package/dist/tools/definitions/variables.js +310 -0
  389. package/dist/tools/definitions/variables.js.map +1 -0
  390. package/dist/tools/definitions/voice-action-input.d.ts +9 -0
  391. package/dist/tools/definitions/voice-action-input.js +141 -0
  392. package/dist/tools/definitions/voice-action-input.js.map +1 -0
  393. package/dist/tools/definitions/widget-customization-compat.d.ts +51 -0
  394. package/dist/tools/definitions/widget-customization-compat.js +23 -0
  395. package/dist/tools/definitions/widget-customization-compat.js.map +1 -0
  396. package/dist/tools/definitions.d.ts +1134 -617
  397. package/dist/tools/definitions.js +63 -27
  398. package/dist/tools/definitions.js.map +1 -1
  399. package/dist/tools/description-localization.js +3 -2
  400. package/dist/tools/description-localization.js.map +1 -1
  401. package/dist/tools/follow-up-request.d.ts +19 -0
  402. package/dist/tools/follow-up-request.js +81 -0
  403. package/dist/tools/follow-up-request.js.map +1 -0
  404. package/dist/tools/followup-revision.d.ts +4 -0
  405. package/dist/tools/followup-revision.js +29 -0
  406. package/dist/tools/followup-revision.js.map +1 -0
  407. package/dist/tools/incomplete-list.js +4 -0
  408. package/dist/tools/incomplete-list.js.map +1 -1
  409. package/dist/tools/inventory.js +47 -11
  410. package/dist/tools/inventory.js.map +1 -1
  411. package/dist/tools/operation-recovery.d.ts +4 -0
  412. package/dist/tools/operation-recovery.js +33 -0
  413. package/dist/tools/operation-recovery.js.map +1 -0
  414. package/dist/tools/registry-mapping-primary.cases.d.ts +2 -0
  415. package/dist/tools/registry-mapping-primary.cases.js +765 -0
  416. package/dist/tools/registry-mapping-primary.cases.js.map +1 -0
  417. package/dist/tools/registry-mapping-secondary.cases.d.ts +2 -0
  418. package/dist/tools/registry-mapping-secondary.cases.js +626 -0
  419. package/dist/tools/registry-mapping-secondary.cases.js.map +1 -0
  420. package/dist/tools/registry-mapping.cases.d.ts +8 -0
  421. package/dist/tools/registry-mapping.cases.js +170 -0
  422. package/dist/tools/registry-mapping.cases.js.map +1 -0
  423. package/dist/tools/registry-test-fixtures.d.ts +50 -0
  424. package/dist/tools/registry-test-fixtures.js +120 -0
  425. package/dist/tools/registry-test-fixtures.js.map +1 -0
  426. package/dist/tools/registry.d.ts +2 -0
  427. package/dist/tools/registry.js +84 -52
  428. package/dist/tools/registry.js.map +1 -1
  429. package/dist/tools/result.d.ts +1 -0
  430. package/dist/tools/result.js +90 -22
  431. package/dist/tools/result.js.map +1 -1
  432. package/dist/tools/toolsets.d.ts +16 -0
  433. package/dist/tools/toolsets.js +25 -1
  434. package/dist/tools/toolsets.js.map +1 -1
  435. package/dist/types/api-contract.gen.d.ts +131892 -22453
  436. package/dist/utils/credential-signatures.d.ts +3 -0
  437. package/dist/utils/credential-signatures.js +10 -0
  438. package/dist/utils/credential-signatures.js.map +1 -0
  439. package/dist/utils/data-source-column-name.d.ts +10 -0
  440. package/dist/utils/data-source-column-name.js +36 -0
  441. package/dist/utils/data-source-column-name.js.map +1 -0
  442. package/dist/utils/logger.d.ts +1 -0
  443. package/dist/utils/logger.js +32 -8
  444. package/dist/utils/logger.js.map +1 -1
  445. package/dist/utils/secret-read-boundary.d.ts +2 -0
  446. package/dist/utils/secret-read-boundary.js +88 -0
  447. package/dist/utils/secret-read-boundary.js.map +1 -0
  448. package/dist/utils/setup-secrets.d.ts +4 -0
  449. package/dist/utils/setup-secrets.js +40 -0
  450. package/dist/utils/setup-secrets.js.map +1 -0
  451. package/docs/agent-models.md +9 -0
  452. package/docs/agent-usage-guide.full.ru.md +1 -4
  453. package/docs/analytics-contract.md +67 -0
  454. package/docs/async-operation-lifecycle.md +10 -3
  455. package/docs/connect.ru.md +144 -4
  456. package/docs/contact-company-profile.md +17 -0
  457. package/docs/contact-recommendations.md +7 -0
  458. package/docs/crm-stage-pool.md +73 -0
  459. package/docs/customer-data.md +61 -0
  460. package/docs/dialogue-reprocess.md +37 -0
  461. package/docs/edit-versions.md +36 -0
  462. package/docs/failure-semantics.md +17 -9
  463. package/docs/help-navigation.md +15 -42
  464. package/docs/host-compatibility-matrix.md +72 -93
  465. package/docs/host-setup.md +33 -35
  466. package/docs/invariants/public-api-and-contracts.md +16 -0
  467. package/docs/legacy-action-settings.md +21 -0
  468. package/docs/main-transfer-dependencies.md +38 -0
  469. package/docs/mcp2-parity.md +50 -0
  470. package/docs/modules/analytics.md +79 -0
  471. package/docs/modules/besales-mcp.md +144 -0
  472. package/docs/modules/dialog-review-report.md +38 -0
  473. package/docs/modules/dialogue-followup-adapters.md +39 -0
  474. package/docs/modules/message-reactions.md +17 -0
  475. package/docs/modules/network-mode.md +284 -0
  476. package/docs/modules/prompt-batch-and-dialogue-controls.md +69 -0
  477. package/docs/pii-policy.md +21 -16
  478. package/docs/response-size-budget.md +197 -7
  479. package/docs/secret-read-boundary.md +102 -0
  480. package/docs/task-state.md +7 -2
  481. package/docs/telegram-personal-management.md +50 -0
  482. package/docs/telegram-personal-restrictions.md +87 -0
  483. package/docs/telegram-pool-policy.md +19 -0
  484. package/docs/tool-effects.md +15 -9
  485. package/docs/tool-surface.md +205 -4
  486. package/docs/voice-actions-and-inbox.md +95 -0
  487. package/docs/wazzup-instagram-comments.md +26 -0
  488. package/package.json +17 -10
  489. package/scripts/api-source-loader.spec.mjs +40 -0
  490. package/scripts/audit-bridge-controls.mjs +129 -0
  491. package/scripts/audit-revert-mutants.mjs +107 -0
  492. package/scripts/bridge-api-input.spec.mjs +98 -0
  493. package/scripts/bridge-controls-mutants.mjs +130 -0
  494. package/scripts/brx3-shipped-refusals.spec.mjs +149 -0
  495. package/scripts/brx4-ledger-payload.spec.mjs +127 -0
  496. package/scripts/build-onprem.mjs +108 -0
  497. package/scripts/connect-clients.sh +141 -0
  498. package/scripts/connect-scopes.mjs +166 -0
  499. package/scripts/connect-scopes.spec.mjs +83 -0
  500. package/scripts/emit-personal-link-carrier.mjs +31 -0
  501. package/scripts/emit-setup-init-schemas.mjs +24 -0
  502. package/scripts/emit-tool-routes.mjs +878 -0
  503. package/scripts/emit-tool-routes.spec.mjs +300 -0
  504. package/scripts/followup-registry.spec.mjs +107 -0
  505. package/scripts/generate-crm-rotation-contract.mjs +98 -0
  506. package/scripts/generate-followup-session-contract.mjs +16 -0
  507. package/scripts/getcourse-text-source.spec.mjs +110 -0
  508. package/scripts/icp-import-verification/mutate.cjs +70 -0
  509. package/scripts/import-secret-read-contract.mjs +53 -0
  510. package/scripts/install-claude-desktop.js +1 -1
  511. package/scripts/lag-decisions.mjs +37 -0
  512. package/scripts/lag-decisions.spec.mjs +87 -0
  513. package/scripts/lag-open-task-owners.mjs +46 -0
  514. package/scripts/lag-open-task-owners.spec.mjs +78 -0
  515. package/scripts/lag-payload.mjs +10 -0
  516. package/scripts/legacy-action-lag.spec.mjs +22 -0
  517. package/scripts/legacy-field-refusal.shipped.spec.mjs +99 -0
  518. package/scripts/mcpcompat-handler.mjs +34 -0
  519. package/scripts/mcpcompat-loader.mjs +36 -0
  520. package/scripts/mcpcompat-typescript.mjs +3 -0
  521. package/scripts/platform-settings-shipped-parity.spec.mjs +89 -0
  522. package/scripts/prbr-round1-recheck.spec.mjs +605 -0
  523. package/scripts/prbr-shipped-compatibility.spec.mjs +276 -0
  524. package/scripts/publish-mcp-registry.mjs +98 -0
  525. package/scripts/publish-mcp-registry.spec.mjs +68 -0
  526. package/scripts/record-scheduled-task-call.mjs +26 -0
  527. package/scripts/refusal-probe.mjs +17 -0
  528. package/scripts/refusal-probe.spec.mjs +29 -0
  529. package/scripts/registry-diff.mjs +502 -0
  530. package/scripts/registry-diff.spec.mjs +787 -0
  531. package/scripts/request-query.mjs +43 -0
  532. package/scripts/request-query.spec.mjs +82 -0
  533. package/scripts/route-lag.mjs +23 -0
  534. package/scripts/route-lag.spec.mjs +30 -0
  535. package/scripts/sample-args.mjs +174 -0
  536. package/scripts/sample-args.spec.mjs +160 -0
  537. package/scripts/shipped-definitions.mjs +197 -0
  538. package/scripts/shipped-definitions.spec.mjs +57 -0
  539. package/scripts/shipped-inputs.spec.mjs +136 -0
  540. package/scripts/shipped-recordings.spec.mjs +19 -0
  541. package/scripts/shipped-ref.d.mts +5 -0
  542. package/scripts/shipped-ref.mjs +20 -0
  543. package/scripts/shipped-ref.spec.mjs +59 -0
  544. package/scripts/shipped-registry.mjs +107 -0
  545. package/scripts/shipped-sample-candidates.mjs +69 -0
  546. package/scripts/shipped-sample-candidates.spec.mjs +117 -0
  547. package/scripts/shipped-sample.mjs +871 -0
  548. package/scripts/shipped-sample.spec.mjs +451 -0
  549. package/scripts/sync-agent-model-schemas.mjs +72 -0
  550. package/scripts/sync-api-contracts.mjs +85 -0
  551. package/scripts/sync-api-contracts.spec.mjs +144 -0
  552. package/scripts/sync-contract-ledger-schemas.mjs +161 -0
  553. package/scripts/sync-crm-stage-pool-schema.mjs +85 -0
  554. package/scripts/sync-prompt-draft-schema.mjs +92 -0
  555. package/scripts/sync-route-map.mjs +94 -0
  556. package/scripts/sync-schema-descriptions.mjs +25 -0
  557. package/scripts/sync-tool-inventory.mjs +27 -0
  558. package/scripts/sync-trigger-argument-schema.mjs +97 -0
  559. package/scripts/sync-trigger-argument-schema.spec.mjs +91 -0
  560. package/scripts/sync-trigger-event-schema.mjs +20 -0
  561. package/scripts/sync-trigger-repeat-mapping.mjs +12 -0
  562. package/scripts/sync-trigger-task-schema.mjs +45 -0
  563. package/scripts/sync-voice-actions-contract.mjs +67 -0
  564. package/scripts/sync-voice-actions-tools.mjs +97 -0
  565. package/scripts/sync-wave-id-schemas.mjs +55 -0
  566. package/scripts/telegram-personal-confirmation-mutants.mjs +74 -0
  567. package/scripts/tool-input-schemas.mjs +46 -0
  568. package/scripts/tool-input-schemas.spec.mjs +50 -0
  569. package/scripts/verify-followup-adapters.mjs +235 -0
  570. package/scripts/verify-secret-read-import.mjs +84 -0
  571. package/scripts/verify-secret-read-mutants.mjs +143 -0
  572. package/dist/tools/definitions/analytics.d.ts +0 -40
  573. package/dist/tools/definitions/analytics.js +0 -233
  574. package/dist/tools/definitions/analytics.js.map +0 -1
  575. package/dist/tools/definitions/broadcast-mailing-variants.d.ts +0 -41
  576. package/dist/tools/definitions/broadcast-mailing-variants.js +0 -194
  577. package/dist/tools/definitions/broadcast-mailing-variants.js.map +0 -1
  578. package/dist/tools/definitions/dialogue-audit.d.ts +0 -38
  579. package/dist/tools/definitions/dialogue-audit.js +0 -292
  580. package/dist/tools/definitions/dialogue-audit.js.map +0 -1
  581. package/dist/tools/definitions/getcourse-wave.js +0 -519
  582. package/dist/tools/definitions/getcourse-wave.js.map +0 -1
  583. package/dist/tools/definitions/operational-overview.d.ts +0 -3
  584. package/dist/tools/definitions/operational-overview.js +0 -23
  585. package/dist/tools/definitions/operational-overview.js.map +0 -1
  586. package/dist/tools/definitions/scheduled-tasks.js +0 -173
  587. package/dist/tools/definitions/scheduled-tasks.js.map +0 -1
  588. package/dist/tools/definitions/trigger-contact-claims.d.ts +0 -7
  589. package/dist/tools/definitions/trigger-contact-claims.js +0 -60
  590. package/dist/tools/definitions/trigger-contact-claims.js.map +0 -1
  591. package/dist/tools/registry-mapping-cases-core.d.ts +0 -38
  592. package/dist/tools/registry-mapping-cases-core.js +0 -963
  593. package/dist/tools/registry-mapping-cases-core.js.map +0 -1
  594. package/dist/tools/registry-mapping-cases-platform.d.ts +0 -2
  595. package/dist/tools/registry-mapping-cases-platform.js +0 -1052
  596. package/dist/tools/registry-mapping-cases-platform.js.map +0 -1
  597. package/dist/tools/trigger-action-config.d.ts +0 -49
  598. package/dist/tools/trigger-action-config.js +0 -171
  599. package/dist/tools/trigger-action-config.js.map +0 -1
  600. package/docs/evals/model-behavior-scorecard.md +0 -80
  601. package/docs/operation-coverage.md +0 -114
  602. package/scripts/mock-credentials.js +0 -77
  603. package/scripts/model-eval-server.js +0 -213
  604. package/scripts/run-model-eval.js +0 -447
@@ -1,295 +1,32 @@
1
- # 17. Файлы и медиа: StoredFile + FileSection
1
+ # Файлы и вложения
2
2
 
3
- > **Источник правды:** `ai-aniomaly/docs/ai-prompt-builder/17-files-and-uploads.md` — копия для MCP doc-bridge (v1.5 Increment 6b). Синкать при изменении оригинала.
4
- >
5
- > ⚠️ **MCP-контекст:** это доменная справка, написанная для людей/админ-UI. В MCP-сессии ты выполняешь те же операции **через besales_* tools**, а не через UI (drag-n-drop, клики в админке). Где текст ниже говорит «клиент/админ делает X через UI» — это «что должно получиться»; механику бери из tool (напр. загрузка файла → `besales_file_upload_request`; документ в knowledge → `besales_knowledge_document_upload`; сайт → `besales_knowledge_website_add`) + из workflow-ресурсов. Внутренние ссылки `[NN-name.md]` — относительные пути исходной доки, через MCP НЕ резолвятся: ищи `besales://docs/<slug>` или concept-resource.
3
+ Файл в Besales имеет два разных назначения: источник знаний и вложение сообщения. Само тело
4
+ хранится в S3-совместимом хранилище, а БД содержит устойчивый object key, MIME, размер и связи.
5
+ Короткоживущая подписанная ссылка не является идентичностью файла и не сохраняется в истории.
6
6
 
7
- ## 1. Назначение
7
+ ## Загрузка
8
8
 
9
- В Animaly есть единое хранилище файлов на уровне workspace — `StoredFile`. Сюда загружаются:
10
- - Картинки/PDF/видео для инструмента `send_pic`.
11
- - Приветственные медиа агента (`AgentBehavior.greetingFileId`).
12
- - Аватары `TelegramPersonalAccount`.
13
- - Картинки для `WarmupImage`.
14
- - Медиа в `MessageConfig.attachments[]` follow-up.
15
- - Чанки QA-ответов с медиа (`QaAnswerChunk.storedFileId`).
16
- - Медиа-блоки в `Template` кампаний.
9
+ Клиент запрашивает загрузку, передаёт тело по выданному безопасному каналу и опрашивает статус.
10
+ Сервер проверяет размер, фактический MIME и принадлежность workspace. Имя файла не используется
11
+ как путь объекта и не даёт права читать чужой объект.
17
12
 
18
- Файлы группируются в разделы (`FileSection`) — это удобство для админа в UI.
13
+ Для базы знаний после загрузки создаётся knowledge source и запускается индексация. Для входящего
14
+ медиа адаптер отдаёт только дескриптор источника; скачивание, SSRF-защита, MIME sniffing и запись
15
+ `message_attachments` выполняются общим media-ingest контуром.
19
16
 
20
- ## 2. Архитектура
17
+ ## Исходящее медиа
21
18
 
22
- ```
23
- Workspace
24
- ├── FileSection[] # Разделы (например: «Прайсы», «Сертификаты», «Warmup-мемы»)
25
- │ └── StoredFile[] # Файлы в разделе
26
- └── StoredFile[] # Файлы без раздела (sectionId=null)
27
- ```
19
+ Собственный файл передаётся через единый шов доставки как object key с признаком `fromStorage`.
20
+ Шов сам выбирает тело или подписанную ссылку по capability канала и строит подпись после плана
21
+ частей. Это сохраняет стабильный отпечаток при повторе и не размножает один текст на два носителя.
28
22
 
29
- Все ссылки на файлы в системе — через `StoredFile.id` (uuid).
23
+ Произвольного LLM-инструмента отправки картинки нет. Медиа отправляет серверное действие с
24
+ разрешённым типом шага и обязательным `OutboundIntent`; модель не выбирает object key или UUID.
30
25
 
31
- ## 3. JSON-схема `StoredFile`
26
+ ## Безопасность и хранение
32
27
 
33
- ```json
34
- {
35
- "id": "uuid",
36
- "name": "Прайс-лист 2026",
37
- "originalFilename": "price-list-2026.pdf",
38
- "mimeType": "application/pdf",
39
- "fileType": "DOCUMENT",
40
- "storageType": "s3",
41
- "url": "s3://animaly/files/<workspaceId>/price-list-2026.pdf",
42
- "size": 245678,
43
- "workspaceId": "<workspaceId>",
44
- "sectionId": "<FileSection.id>",
45
- "source": "USER_UPLOAD"
46
- }
47
- ```
48
-
49
- | Поле | Тип | Описание |
50
- |---|---|---|
51
- | `name` | string | Имя, заданное при загрузке (для UI). Уникален в `(workspaceId, name)`. |
52
- | `originalFilename` | string | Реальное имя файла при загрузке. |
53
- | `mimeType` | string | `application/pdf`, `image/jpeg`, `video/mp4` и т.п. |
54
- | `fileType` | enum `StoredFileType` | `IMAGE` / `DOCUMENT` / `VIDEO` / `AUDIO` / `VOICE` / `VIDEO_NOTE` / `OTHER`. |
55
- | `storageType` | string (`local` / `s3`) | Где физически хранится. В проде — `s3`. |
56
- | `url` | string | Путь/URL к файлу. |
57
- | `size` | int | Размер в байтах. |
58
- | `sectionId` | uuid / null | ID `FileSection` (или null — без раздела). |
59
- | `source` | enum `StoredFileSource` | Категория для UI-фильтра. См. ниже. |
60
-
61
- ## 4. `StoredFileSource` — откуда взялся файл
62
-
63
- | Значение | Когда выставляется |
64
- |---|---|
65
- | `USER_UPLOAD` | Загружен админом вручную через UI (default). |
66
- | `CHAT_MEDIA` | Получен от пользователя в диалоге (картинка/видео/документ от клиента). |
67
- | `TELEGRAM_AVATAR` | Скачанный аватар Telegram-аккаунта (для UI отображения). |
68
- | `WARMUP_IMAGE` | Картинка для warmup-сценариев. |
69
- | `AGENT_GREETING` | Приветственное медиа агента (`AgentBehavior.greetingFileId`). |
70
- | `CAMPAIGN` | Медиа из шаблона кампании. |
71
- | `CRM_IMPORT` | Файл, импортированный из CRM (например, документ к сделке). |
72
- | `OTHER` | Прочее. |
73
-
74
- AI-сервис должен задавать корректный `source` при загрузке — это влияет на фильтрацию в админке.
75
-
76
- ## 5. JSON-схема `FileSection`
77
-
78
- ```json
79
- {
80
- "id": "uuid",
81
- "name": "Прайсы и каталоги",
82
- "workspaceId": "<workspaceId>"
83
- }
84
- ```
85
-
86
- `name` уникален в `(workspaceId)`. Раздел — это просто группировка для UI; не влияет на логику работы.
87
-
88
- ## 6. Использование `StoredFile` в системе
89
-
90
- ### 6.1. `send_pic` (builtin tool)
91
-
92
- ```
93
- LLM решает отправить файл → вызывает send_pic("price-list-2026", "delivery-info") или send_pic(["url-1", "url-2"])
94
- ```
95
-
96
- `send_pic` принимает:
97
- - **Имя файла** (`StoredFile.name` без расширения) — система найдёт по имени в workspace.
98
- - **URL** — отправит напрямую без сохранения.
99
- - **Массив** имён/URL — отправит все по очереди.
100
-
101
- См. [`03-tools-catalog.md`](03-tools-catalog.md), раздел 2.12.
102
-
103
- ### 6.2. Приветственное медиа
104
-
105
- ```json
106
- {
107
- "AgentBehavior": {
108
- "botGreeting": "Здравствуйте! Я Анна, помогу с заказом.",
109
- "greetingFileId": "<StoredFile.id>",
110
- "greetingButtons": [...]
111
- }
112
- }
113
- ```
114
-
115
- Файл (картинка / видео / аудио) отправляется вместе с текстом приветствия. `source` рекомендуется `AGENT_GREETING`.
116
-
117
- ### 6.3. Медиа в follow-up
118
-
119
- ```json
120
- {
121
- "MessageConfig": {
122
- "type": "media",
123
- "attachments": [
124
- { "storedFileId": "<StoredFile.id>", "caption": "Прайс на этот месяц" }
125
- ]
126
- }
127
- }
128
- ```
129
-
130
- До 4 вложений в одном шаге. Caption ≤ 1024 символов.
131
-
132
- ### 6.4. Медиа-блоки в кампаниях
133
-
134
- ```json
135
- {
136
- "Template.blocks": [
137
- { "type": "media", "storedFileId": "<StoredFile.id>", "caption": "..." }
138
- ]
139
- }
140
- ```
141
-
142
- См. [`09-campaigns.md`](09-campaigns.md), раздел 3.2.
143
-
144
- ### 6.5. QA-ответы с медиа
145
-
146
- ```json
147
- {
148
- "QaAnswerChunk": {
149
- "orderIndex": 0,
150
- "text": null,
151
- "storedFileId": "<StoredFile.id>",
152
- "buttons": []
153
- }
154
- }
155
- ```
156
-
157
- QA может отдать медиа без текста (только картинку/документ) или текст + медиа в разных чанках. См. [`07-knowledge-base.md`](07-knowledge-base.md), раздел 6.
158
-
159
- ### 6.6. Warmup
160
-
161
- ```json
162
- {
163
- "WarmupImage": {
164
- "warmupSettingsId": "<warmupSettingsId>",
165
- "storedFileId": "<StoredFile.id>"
166
- }
167
- }
168
- ```
169
-
170
- См. [`16-warmup-telegram-personal.md`](16-warmup-telegram-personal.md), раздел 7.
171
-
172
- ## 7. Лимиты и платформенные ограничения
173
-
174
- | Платформа | Image | Video | Document | Audio | Caption |
175
- |---|---|---|---|---|---|
176
- | Telegram Bot | ≤ 10 MB | ≤ 50 MB | ≤ 50 MB | ≤ 50 MB | ≤ 1024 |
177
- | Telegram Personal | ≤ 2 GB | ≤ 2 GB | ≤ 2 GB | ≤ 2 GB | ≤ 1024 |
178
- | Wazzup (WhatsApp) | ≤ 5 MB | ≤ 16 MB | ≤ 100 MB | ≤ 16 MB | ≤ 1024 |
179
- | Avito | ≤ 10 MB | ✗ | ✗ | ✗ | — |
180
- | Instagram | ≤ 8 MB | ≤ 100 MB | ✗ | ≤ 8 MB | ≤ 1000 |
181
- | VK | ≤ 50 MB | ≤ 200 MB | ≤ 200 MB | ≤ 200 MB | — |
182
- | Web Widget | ≤ 25 MB | ≤ 100 MB | ≤ 100 MB | ≤ 25 MB | — |
183
- | SMS | ✗ | ✗ | ✗ | ✗ | — |
184
-
185
- (Лимиты могут отличаться в реальном времени — указаны типовые значения провайдеров.)
186
-
187
- ## 8. Inline-пример: organize files for e-commerce bot
188
-
189
- ```json
190
- {
191
- "fileSections": [
192
- { "name": "Прайсы и каталоги" },
193
- { "name": "Сертификаты" },
194
- { "name": "Welcome-медиа" },
195
- { "name": "Карта проезда" }
196
- ],
197
- "storedFiles": [
198
- {
199
- "name": "Прайс-лист 2026",
200
- "originalFilename": "price-list-2026.pdf",
201
- "mimeType": "application/pdf",
202
- "fileType": "DOCUMENT",
203
- "sectionId": "<id-Прайсы>",
204
- "source": "USER_UPLOAD"
205
- },
206
- {
207
- "name": "Каталог товаров (PDF)",
208
- "originalFilename": "catalog.pdf",
209
- "mimeType": "application/pdf",
210
- "fileType": "DOCUMENT",
211
- "sectionId": "<id-Прайсы>",
212
- "source": "USER_UPLOAD"
213
- },
214
- {
215
- "name": "Welcome video",
216
- "originalFilename": "welcome.mp4",
217
- "mimeType": "video/mp4",
218
- "fileType": "VIDEO",
219
- "sectionId": "<id-Welcome>",
220
- "source": "AGENT_GREETING"
221
- },
222
- {
223
- "name": "Карта офиса",
224
- "originalFilename": "office-map.jpg",
225
- "mimeType": "image/jpeg",
226
- "fileType": "IMAGE",
227
- "sectionId": "<id-Карта>",
228
- "source": "USER_UPLOAD"
229
- }
230
- ]
231
- }
232
- ```
233
-
234
- В `AgentBehavior`:
235
- ```json
236
- { "greetingFileId": "<id-Welcome video>" }
237
- ```
238
-
239
- В `baseSystemPrompt` агента:
240
- ```
241
- Если клиент спрашивает прайс-лист — отправляй его инструментом send_pic("Прайс-лист 2026").
242
- Если клиент спрашивает, как добраться — send_pic("Карта офиса").
243
- Если клиент просит каталог — send_pic("Каталог товаров (PDF)").
244
- ```
245
-
246
- ## 9. Что должен сделать клиент в админке
247
-
248
- AI-сервис не загружает файлы сам — только описывает структуру. Клиенту нужно:
249
-
250
- 1. Открыть `Files` (раздел в навигации админки).
251
- 2. Создать `FileSection` (например, «Прайсы»).
252
- 3. Загрузить файлы через UI (drag-n-drop или file picker).
253
- 4. Указать `name` (как агент будет ссылаться) и `description` (опционально).
254
- 5. Получить `StoredFile.id` или `name` и подставить в:
255
- - `AgentBehavior.greetingFileId`
256
- - `MessageConfig.attachments[].storedFileId`
257
- - `Template.blocks[].storedFileId`
258
- - `WarmupImage.storedFileId`
259
- - `QaAnswerChunk.storedFileId`
260
-
261
- ## 10. Граничные случаи и валидация
262
-
263
- | Правило | Что AI-сервису помнить |
264
- |---|---|
265
- | `name` уникален в `(workspaceId)` | Не назначать два файла с именем «Прайс». |
266
- | `send_pic` ищет по `name` | AI должен использовать тот же `name`, что админ ввёл при загрузке. Чувствителен к точному совпадению. |
267
- | `mimeType` определяет, как платформа отрендерит | PDF в Telegram пойдёт как document, в Wazzup-WhatsApp — тоже document, на Avito — не пройдёт. |
268
- | `source=CHAT_MEDIA` файлы | Растут быстро (от пользователей). Имеют свою retention-политику. AI-сервис не должен ссылаться. |
269
- | `storageType=local` для прода | Не использовать — только для dev. В проде S3. |
270
- | Удаление `FileSection` | `sectionId` файлов внутри становится `null`, файлы остаются. |
271
- | Удаление `StoredFile` | Каскадно удалит ссылки в `AgentBehavior.greetingFile`, `WarmupImage`, `QaAnswerChunk`. |
272
- | Слишком большой файл (>50 MB) | Многие платформы не примут. Для PDF — рекомендовать сжатие. |
273
- | `send_pic` с массивом >5 файлов | Платформы могут флаговать как спам. Реалистичный лимит — 1–3 за один вызов. |
274
- | Voice (Telegram OPUS) vs Audio | `VOICE` и `AUDIO` — разные `fileType`. Голосовые (`VOICE`) авто-транскрибируются через Whisper; аудиофайлы (`AUDIO`) — нет (применяется `audioHandlingBehavior`). См. [`10-agent-behavior.md`](10-agent-behavior.md) §9. |
275
-
276
- ## 11. Что AI-сервис должен спросить у клиента
277
-
278
- При сценариях с медиа:
279
-
280
- 1. «Какие документы/картинки вы хотите, чтобы агент мог отправлять?» (для `send_pic`).
281
- 2. «Нужно ли приветственное видео/картинка вместе с приветствием?» (для `greetingFileId`).
282
- 3. «Есть ли уже подготовленные прайсы / каталоги / сертификаты?» — указать `StoredFile.name` для использования в промпте.
283
- 4. Для warmup: «Загрузите 5–10 нейтральных картинок (мемы, природа) — они нужны для естественной активности warmup-аккаунтов».
284
-
285
- ## 12. Связь с другими подсистемами
286
-
287
- | Подсистема | Связь |
288
- |---|---|
289
- | **Инструменты** ([`03-tools-catalog.md`](03-tools-catalog.md)) | `send_pic` — единственный инструмент, который работает с файлами на чтение. |
290
- | **Поведение** ([`10-agent-behavior.md`](10-agent-behavior.md)) | `greetingFileId` — приветственное медиа. |
291
- | **Follow-up** ([`08-follow-up.md`](08-follow-up.md)) | `MessageConfig.attachments[].storedFileId`. |
292
- | **Кампании** ([`09-campaigns.md`](09-campaigns.md)) | `Template.blocks[type=media].storedFileId`. |
293
- | **База знаний** ([`07-knowledge-base.md`](07-knowledge-base.md)) | `QaAnswerChunk.storedFileId` — медиа в QA-ответах. |
294
- | **Warmup** ([`16-warmup-telegram-personal.md`](16-warmup-telegram-personal.md)) | `WarmupImage.storedFileId`. |
295
- | **Платформы** ([`11-platforms.md`](11-platforms.md)) | Каждая платформа имеет свои лимиты по типам и размерам. |
28
+ - публичная выдача тела использует ограниченную capability-ссылку;
29
+ - пользовательские URL проходят SSRF-проверку;
30
+ - PII во вложениях подчиняется ретеншну и GDPR-диспозиции;
31
+ - удаление метаданных и тела согласуется cleanup-процессом;
32
+ - секреты и подписанные URL не попадают в промпт, трассу или долговременную историю.
@@ -1,19 +1,54 @@
1
1
  # Follow-up и дожимы
2
2
 
3
- ## Чтение
3
+ У календарной цепочки `config.sessionTimeVariable` называет переменную контакта с часом эфира;
4
+ `config.sessionDayOffsets` задаёт непустой список целых дней от 0 до 30 без повторов;
5
+ `config.sessionDurationMinutes` — целые минуты от 1 до 1440. Длительность требует оба соседних поля и не подставляется по умолчанию.
6
+ Поле серии вне календарной цепочки, неизвестное или неоднозначное имя, константа и секрет получают адресный отказ сервера.
7
+ Повтор дня доходит до сервера. Список отдаёт имя и числа; у удалённой переменной выключенной цепочки имя равно `null`.
4
8
 
5
- Начни с `besales_followup_sequence_list`. Для редактирования одной цепочки запроси её полный config;
6
- список без config — только инвентаризация. Статистика шага — `besales_followup_step_stats`, реакции
7
- — `besales_followup_reactions`.
9
+ Начни с `besales_followup_sequence_list`. Для редактирования передай `sequence_id` либо
10
+ `include_config: true`: ответ содержит дословные `type`, `trigger`, `config`. Список без этих
11
+ параметров — инвентаризация. Если `config: null`, причина в `configUnavailableReason`; сначала
12
+ сохрани цепочку целиком формой дожимов. Статистика — `besales_followup_step_stats`, реакции —
13
+ `besales_followup_reactions`.
8
14
 
9
- ## Изменение
15
+ В реакциях единица счёта — касание, а не человек. Операционная доля `replied / resolvedSent`
16
+ считает только ответы до следующего касания (не более 72 часов); шаги по ней не сравнивай.
17
+ Сравнительная доля `horizonEngaged / comparableSent` объединяет живой ответ ИЛИ настоящий клик
18
+ ссылки касания без двойного счёта. Для всех строк сервер выбирает общий `horizonMinutes`;
19
+ сравнивай только строки с `comparableSent > 0` и `comparableReliable: true`.
20
+ Доля прерванных окон — `maturedCensored / (comparableSent + maturedCensored)`: в знаменатель
21
+ входят только созревшие окна, а не все `censored`. Нулевой пул и причины `noData` или
22
+ `noReliableHorizon` не дают основания для сравнения. Для раскрытия через API используй те же
23
+ горизонт и `calculatedAt` как `asOf`; это граница событий, а не неизменяемый снимок хранения.
24
+ Серверные `totals` и `runs` не пересчитывай из строк. `runs` считает прохождения (`grain: passage`,
25
+ `periodBasis: passageStartedAt`) в отдельном окне `windowDays`; клик сам по себе не означает
26
+ ответ агента, глубокий диалог или оплату. Метки транспорта бери из `dimensions.transports`.
10
27
 
11
- `besales_followup_sequence_upsert` заменяет конфигурацию цепочки целиком. Сохрани все существующие
12
- шаги, условия и exclusions. Клонирование — `besales_followup_sequence_clone`; наличие отдельной
13
- правки текста шага проверяй по динамическому каталогу текущей линии.
28
+ `besales_followup_sequence_upsert` заменяет config целиком: сохрани все шаги и exclusions.
29
+ `config.stopOnPayment: true` выключает дожимы у оплатившего (в списке — `triggerConfig.stop_on_payment`);
30
+ при правке такой цепочки передай его снова, иначе стоп выключится.
31
+ Клонирование — `besales_followup_sequence_clone`. Копия дожима сохраняет форму, копия канала
32
+ требует одного полного сохранения формы.
14
33
 
15
- ## Безопасная проверка
34
+ Один текст исправляет `besales_followup_step_message_set`: `step_index` — позиция с нуля в
35
+ `config.steps`, `expected_content` — текст свежего чтения. При 409 перечитай цепочку и найди
36
+ шаг заново. Время, условия и соседние сообщения сохраняются. Незаведённый или архивный
37
+ `{{link:слаг}}` даёт отказ. При правке только текстов уже идущие люди получат новый текст со следующего сообщения; начатая отправка завершится прежним текстом без повтора.
38
+ `runs` называет переведённых, уже отправлявших старый текст и оставленных с причиной; перескажи числа и `summary`.
39
+ Изменение расписания, условий, порядка или заметки CRM оставляет идущих на своей версии.
40
+ Текст вместе с настройками цепочки (стоп при оплате, записка в карточку, круги, продолжение, порог молчания, дата календаря)
41
+ идущим не переводится: новые настройки действуют для всех сразу. Повторное сохранение без изменений доставит им текст.
42
+ Это правило применяется и к полной записи формы; `warnings` относится только к оставленным людям.
43
+ UNKNOWN после отправки нельзя повторять без status.
16
44
 
17
- Перед отправкой живому человеку используй funnel-test plan, если его инструменты есть в каталоге,
18
- покажи transports, тексты, skip reasons и truncated, затем запускай только с явным подтверждением.
19
- Timeout или UNKNOWN не разрешает повторную отправку без status.
45
+ Тест воронки: `besales_followup_funnel_test_plan` (адрес человека в канале `chat_user_id` —
46
+ `identities[].id` из `besales_contact_get`) строит и замораживает план, ничего не отправляя; покажи
47
+ человеку все тексты и причины пропуска. Запуск —
48
+ `besales_followup_funnel_test_start` с explicit_confirmation и причиной: уходят НАСТОЯЩИЕ сообщения с
49
+ паузой 15 секунд. Дальше — `besales_followup_funnel_test_status`; остановка —
50
+ `besales_followup_funnel_test_cancel` (со следующего касания).
51
+
52
+ До запуска покажи также `deliveryMode`, `requestedTransports` и `transportObservation`, если
53
+ они есть в плане: наблюдение не является разрешением доставки. Проверь `truncated` и
54
+ `unchecked` — усечённый план или непроверенные условия не доказывают полный охват.