@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.
- package/README.md +117 -163
- package/README.onprem.ru.md +35 -0
- package/bin/besales-mcp-http.js +9 -0
- package/bin/besales-onprem.mjs +19 -0
- package/dist/auth/connection-store.d.ts +3 -1
- package/dist/auth/connection-store.js +9 -3
- package/dist/auth/connection-store.js.map +1 -1
- package/dist/auth/oauth-client.d.ts +20 -27
- package/dist/auth/oauth-client.js +31 -23
- package/dist/auth/oauth-client.js.map +1 -1
- package/dist/auth/session-workspace.d.ts +1 -0
- package/dist/auth/session-workspace.js +10 -1
- package/dist/auth/session-workspace.js.map +1 -1
- package/dist/auth/token-storage.js +4 -1
- package/dist/auth/token-storage.js.map +1 -1
- package/dist/cli.d.ts +1 -0
- package/dist/cli.js +80 -19
- package/dist/cli.js.map +1 -1
- package/dist/constants/crm-catalog.d.ts +2 -0
- package/dist/constants/crm-catalog.js +3 -0
- package/dist/constants/crm-catalog.js.map +1 -0
- package/dist/http/api-client.d.ts +54 -7
- package/dist/http/api-client.js +132 -66
- package/dist/http/api-client.js.map +1 -1
- package/dist/http/feedback-document-error.d.ts +26 -0
- package/dist/http/feedback-document-error.js +22 -0
- package/dist/http/feedback-document-error.js.map +1 -0
- package/dist/http-server.d.ts +15 -0
- package/dist/http-server.js +378 -0
- package/dist/http-server.js.map +1 -0
- package/dist/instructions/server-instructions.d.ts +1 -1
- package/dist/instructions/server-instructions.js +6 -3
- package/dist/instructions/server-instructions.js.map +1 -1
- package/dist/network/constants.d.ts +25 -0
- package/dist/network/constants.js +26 -0
- package/dist/network/constants.js.map +1 -0
- package/dist/network/failed-verifications.d.ts +10 -0
- package/dist/network/failed-verifications.js +37 -0
- package/dist/network/failed-verifications.js.map +1 -0
- package/dist/network/http-test-fixture.d.ts +3 -0
- package/dist/network/http-test-fixture.js +86 -0
- package/dist/network/http-test-fixture.js.map +1 -0
- package/dist/network/known-keys.d.ts +10 -0
- package/dist/network/known-keys.js +38 -0
- package/dist/network/known-keys.js.map +1 -0
- package/dist/network/memory-credentials.d.ts +11 -0
- package/dist/network/memory-credentials.js +24 -0
- package/dist/network/memory-credentials.js.map +1 -0
- package/dist/network/rate-limit.d.ts +23 -0
- package/dist/network/rate-limit.js +62 -0
- package/dist/network/rate-limit.js.map +1 -0
- package/dist/network/rejected-keys.d.ts +9 -0
- package/dist/network/rejected-keys.js +39 -0
- package/dist/network/rejected-keys.js.map +1 -0
- package/dist/network/request-work.d.ts +8 -0
- package/dist/network/request-work.js +20 -0
- package/dist/network/request-work.js.map +1 -0
- package/dist/network/successful-keys.d.ts +17 -0
- package/dist/network/successful-keys.js +47 -0
- package/dist/network/successful-keys.js.map +1 -0
- package/dist/resources/concepts/external-execution.md +3 -1
- package/dist/resources/concepts/feedback-sheets.md +21 -12
- package/dist/resources/concepts/icp.md +8 -1
- package/dist/resources/concepts/sandbox.md +15 -6
- package/dist/resources/concepts/triggers.md +43 -0
- package/dist/resources/concepts/workbook-classification.md +104 -50
- package/dist/resources/docs/agent-behavior.md +51 -382
- package/dist/resources/docs/campaigns.md +9 -16
- package/dist/resources/docs/crm-integration.md +39 -523
- package/dist/resources/docs/files-and-uploads.md +23 -286
- package/dist/resources/docs/follow-up.md +47 -12
- package/dist/resources/docs/knowledge-base.md +52 -521
- package/dist/resources/docs/pipeline-builder.md +26 -216
- package/dist/resources/docs/pipeline-settings-deep.md +27 -220
- package/dist/resources/docs/platforms.md +149 -519
- package/dist/resources/docs/prompt-anatomy.md +39 -285
- package/dist/resources/docs/routing.md +8 -16
- package/dist/resources/docs/trigger-actions.md +40 -24
- package/dist/resources/docs/variables.md +8 -12
- package/dist/resources/operator-edit.contract.d.ts +7 -0
- package/dist/resources/operator-edit.contract.js +8 -0
- package/dist/resources/operator-edit.contract.js.map +1 -0
- package/dist/resources/registry.js +20 -4
- package/dist/resources/registry.js.map +1 -1
- package/dist/resources/workflows/audit-dialogues.md +23 -12
- package/dist/resources/workflows/compare-models.md +6 -6
- package/dist/resources/workflows/connect-crm-from-scratch.md +15 -12
- package/dist/resources/workflows/connect-datasource-from-scratch.md +5 -4
- package/dist/resources/workflows/extract-from-document.md +8 -6
- package/dist/resources/workflows/operator-edit.md +15 -0
- package/dist/resources/workflows/platform-setup-from-scratch.md +59 -70
- package/dist/resources/workflows/production-readiness-check.md +25 -15
- package/dist/schemas/mcp-tools.json +12389 -6657
- package/dist/schemas/voice-actions-api.contract.json +248 -0
- package/dist/shared/constants/broadcast-reason.constants.d.ts +2 -0
- package/dist/shared/constants/broadcast-reason.constants.js +47 -0
- package/dist/shared/constants/broadcast-reason.constants.js.map +1 -0
- package/dist/shared/constants/crm-stage-pool.constants.d.ts +2 -0
- package/dist/shared/constants/crm-stage-pool.constants.js +3 -0
- package/dist/shared/constants/crm-stage-pool.constants.js.map +1 -0
- package/dist/shared/constants/followup-note.constants.d.ts +3 -0
- package/dist/shared/constants/followup-note.constants.js +4 -0
- package/dist/shared/constants/followup-note.constants.js.map +1 -0
- package/dist/shared/constants/followup-session.constants.d.ts +2 -0
- package/dist/shared/constants/followup-session.constants.js +3 -0
- package/dist/shared/constants/followup-session.constants.js.map +1 -0
- package/dist/shared/constants/funnel-analytics.constants.d.ts +2 -0
- package/dist/shared/constants/funnel-analytics.constants.js +3 -0
- package/dist/shared/constants/funnel-analytics.constants.js.map +1 -0
- package/dist/shared/constants/message-filter.constants.d.ts +7 -0
- package/dist/shared/constants/message-filter.constants.js +8 -0
- package/dist/shared/constants/message-filter.constants.js.map +1 -0
- package/dist/shared/utils/trigger-repeat-mapping.d.ts +72 -0
- package/dist/shared/utils/trigger-repeat-mapping.js +53 -0
- package/dist/shared/utils/trigger-repeat-mapping.js.map +1 -0
- package/dist/skills/besales-dialogue-audit/SKILL.md +31 -20
- package/dist/tasks/task-state-store.js +5 -0
- package/dist/tasks/task-state-store.js.map +1 -1
- package/dist/tools/annotations.js +4 -3
- package/dist/tools/annotations.js.map +1 -1
- package/dist/tools/definitions/agent-design.d.ts +81 -24
- package/dist/tools/definitions/agent-design.js +246 -90
- package/dist/tools/definitions/agent-design.js.map +1 -1
- package/dist/tools/definitions/agent-model-notice.d.ts +5 -0
- package/dist/tools/definitions/agent-model-notice.js +31 -0
- package/dist/tools/definitions/agent-model-notice.js.map +1 -0
- package/dist/tools/definitions/agent-models.d.ts +5 -0
- package/dist/tools/definitions/agent-models.js +26 -0
- package/dist/tools/definitions/agent-models.js.map +1 -0
- package/dist/tools/definitions/agent-settings.d.ts +85 -0
- package/dist/tools/definitions/agent-settings.js +187 -0
- package/dist/tools/definitions/agent-settings.js.map +1 -0
- package/dist/tools/definitions/ai-costs.d.ts +12 -0
- package/dist/tools/definitions/ai-costs.js +142 -0
- package/dist/tools/definitions/ai-costs.js.map +1 -0
- package/dist/tools/definitions/api-tool-request.d.ts +15 -0
- package/dist/tools/definitions/api-tool-request.js +2 -0
- package/dist/tools/definitions/api-tool-request.js.map +1 -0
- package/dist/tools/definitions/behavior-shipped-form.d.ts +182 -0
- package/dist/tools/definitions/behavior-shipped-form.js +185 -0
- package/dist/tools/definitions/behavior-shipped-form.js.map +1 -0
- package/dist/tools/definitions/broadcast-alerts.d.ts +6 -0
- package/dist/tools/definitions/broadcast-alerts.js +72 -0
- package/dist/tools/definitions/broadcast-alerts.js.map +1 -0
- package/dist/tools/definitions/broadcast-analytics.d.ts +102 -18
- package/dist/tools/definitions/broadcast-analytics.js +732 -431
- package/dist/tools/definitions/broadcast-analytics.js.map +1 -1
- package/dist/tools/definitions/broadcast-scheduler.d.ts +10 -13
- package/dist/tools/definitions/broadcast-scheduler.js +196 -154
- package/dist/tools/definitions/broadcast-scheduler.js.map +1 -1
- package/dist/tools/definitions/call-operator-task.schema.d.ts +11 -0
- package/dist/tools/definitions/call-operator-task.schema.js +30 -0
- package/dist/tools/definitions/call-operator-task.schema.js.map +1 -0
- package/dist/tools/definitions/contacts.d.ts +3 -0
- package/dist/tools/definitions/contacts.js +57 -31
- package/dist/tools/definitions/contacts.js.map +1 -1
- package/dist/tools/definitions/crm-platform.d.ts +29 -39
- package/dist/tools/definitions/crm-platform.js +249 -352
- package/dist/tools/definitions/crm-platform.js.map +1 -1
- package/dist/tools/definitions/crm-stage-pool.messages.d.ts +39 -0
- package/dist/tools/definitions/crm-stage-pool.messages.js +43 -0
- package/dist/tools/definitions/crm-stage-pool.messages.js.map +1 -0
- package/dist/tools/definitions/crm-stage-pool.schema.d.ts +64 -0
- package/dist/tools/definitions/crm-stage-pool.schema.js +109 -0
- package/dist/tools/definitions/crm-stage-pool.schema.js.map +1 -0
- package/dist/tools/definitions/custom-reports.d.ts +12 -0
- package/dist/tools/definitions/custom-reports.js +68 -0
- package/dist/tools/definitions/custom-reports.js.map +1 -0
- package/dist/tools/definitions/datasource.d.ts +2 -1
- package/dist/tools/definitions/datasource.js +28 -13
- package/dist/tools/definitions/datasource.js.map +1 -1
- package/dist/tools/definitions/dialog-review-findings-response.d.ts +14 -0
- package/dist/tools/definitions/dialog-review-findings-response.js +23 -0
- package/dist/tools/definitions/dialog-review-findings-response.js.map +1 -0
- package/dist/tools/definitions/dialog-review-safe-response.d.ts +5 -0
- package/dist/tools/definitions/dialog-review-safe-response.js +152 -0
- package/dist/tools/definitions/dialog-review-safe-response.js.map +1 -0
- package/dist/tools/definitions/dialog-review.d.ts +49 -0
- package/dist/tools/definitions/dialog-review.js +383 -0
- package/dist/tools/definitions/dialog-review.js.map +1 -0
- package/dist/tools/definitions/dialogue-analysis.d.ts +46 -0
- package/dist/tools/definitions/dialogue-analysis.js +170 -0
- package/dist/tools/definitions/dialogue-analysis.js.map +1 -0
- package/dist/tools/definitions/dialogue-audit-agent-scope.d.ts +7 -0
- package/dist/tools/definitions/dialogue-audit-agent-scope.js +41 -0
- package/dist/tools/definitions/dialogue-audit-agent-scope.js.map +1 -0
- package/dist/tools/definitions/dialogue-audit-alias.d.ts +67 -0
- package/dist/tools/definitions/dialogue-audit-alias.js +559 -0
- package/dist/tools/definitions/dialogue-audit-alias.js.map +1 -0
- package/dist/tools/definitions/dialogue-export.d.ts +7 -1
- package/dist/tools/definitions/dialogue-export.js +89 -32
- package/dist/tools/definitions/dialogue-export.js.map +1 -1
- package/dist/tools/definitions/dialogue-followup-state.d.ts +9 -0
- package/dist/tools/definitions/dialogue-followup-state.js +69 -0
- package/dist/tools/definitions/dialogue-followup-state.js.map +1 -0
- package/dist/tools/definitions/dialogue-reprocess.d.ts +5 -0
- package/dist/tools/definitions/dialogue-reprocess.js +107 -0
- package/dist/tools/definitions/dialogue-reprocess.js.map +1 -0
- package/dist/tools/definitions/edit-version-transport.test-fixtures.d.ts +13 -0
- package/dist/tools/definitions/edit-version-transport.test-fixtures.js +292 -0
- package/dist/tools/definitions/edit-version-transport.test-fixtures.js.map +1 -0
- package/dist/tools/definitions/edit-version.d.ts +5 -0
- package/dist/tools/definitions/edit-version.js +20 -0
- package/dist/tools/definitions/edit-version.js.map +1 -0
- package/dist/tools/definitions/external-api-channels.js +17 -15
- package/dist/tools/definitions/external-api-channels.js.map +1 -1
- package/dist/tools/definitions/feedback-document-access.d.ts +16 -0
- package/dist/tools/definitions/feedback-document-access.js +63 -0
- package/dist/tools/definitions/feedback-document-access.js.map +1 -0
- package/dist/tools/definitions/fixtures/shipped-setup-status.d.ts +3 -0
- package/dist/tools/definitions/fixtures/shipped-setup-status.js +9 -0
- package/dist/tools/definitions/fixtures/shipped-setup-status.js.map +1 -0
- package/dist/tools/definitions/follow-up-config.d.ts +79 -0
- package/dist/tools/definitions/follow-up-config.js +258 -0
- package/dist/tools/definitions/follow-up-config.js.map +1 -0
- package/dist/tools/definitions/follow-up-funnel-test.d.ts +4 -3
- package/dist/tools/definitions/follow-up-funnel-test.js +65 -52
- package/dist/tools/definitions/follow-up-funnel-test.js.map +1 -1
- package/dist/tools/definitions/follow-up-promotion-instructions.d.ts +2 -0
- package/dist/tools/definitions/follow-up-promotion-instructions.js +7 -0
- package/dist/tools/definitions/follow-up-promotion-instructions.js.map +1 -0
- package/dist/tools/definitions/follow-up-setup.d.ts +4 -28
- package/dist/tools/definitions/follow-up-setup.js +20 -87
- package/dist/tools/definitions/follow-up-setup.js.map +1 -1
- package/dist/tools/definitions/follow-up.d.ts +20 -122
- package/dist/tools/definitions/follow-up.js +200 -357
- package/dist/tools/definitions/follow-up.js.map +1 -1
- package/dist/tools/definitions/followup-getcourse-compat.d.ts +29 -0
- package/dist/tools/definitions/followup-getcourse-compat.js +62 -0
- package/dist/tools/definitions/followup-getcourse-compat.js.map +1 -0
- package/dist/tools/definitions/followup-sequence-config.schema.d.ts +10 -0
- package/dist/tools/definitions/followup-sequence-config.schema.js +14 -0
- package/dist/tools/definitions/followup-sequence-config.schema.js.map +1 -0
- package/dist/tools/definitions/funnel-analytics.d.ts +18 -0
- package/dist/tools/definitions/funnel-analytics.js +150 -0
- package/dist/tools/definitions/funnel-analytics.js.map +1 -0
- package/dist/tools/definitions/getcourse-anchor-refresh.d.ts +5 -9
- package/dist/tools/definitions/getcourse-anchor-refresh.js +26 -31
- package/dist/tools/definitions/getcourse-anchor-refresh.js.map +1 -1
- package/dist/tools/definitions/getcourse-cold-outbound-settings.d.ts +46 -0
- package/dist/tools/definitions/getcourse-cold-outbound-settings.js +37 -0
- package/dist/tools/definitions/getcourse-cold-outbound-settings.js.map +1 -0
- package/dist/tools/definitions/getcourse-cold-welcome.d.ts +14 -29
- package/dist/tools/definitions/getcourse-cold-welcome.js +190 -253
- package/dist/tools/definitions/getcourse-cold-welcome.js.map +1 -1
- package/dist/tools/definitions/getcourse-wave-welcome.messages.d.ts +10 -0
- package/dist/tools/definitions/getcourse-wave-welcome.messages.js +17 -0
- package/dist/tools/definitions/getcourse-wave-welcome.messages.js.map +1 -0
- package/dist/tools/definitions/help.js.map +1 -1
- package/dist/tools/definitions/icp-import-source.d.ts +75 -0
- package/dist/tools/definitions/icp-import-source.js +88 -0
- package/dist/tools/definitions/icp-import-source.js.map +1 -0
- package/dist/tools/definitions/inbound-analytics.d.ts +13 -0
- package/dist/tools/definitions/inbound-analytics.js +55 -0
- package/dist/tools/definitions/inbound-analytics.js.map +1 -0
- package/dist/tools/definitions/instagram-comment.templates.d.ts +19 -0
- package/dist/tools/definitions/instagram-comment.templates.js +34 -0
- package/dist/tools/definitions/instagram-comment.templates.js.map +1 -0
- package/dist/tools/definitions/instagram-settings-compat.d.ts +33 -0
- package/dist/tools/definitions/instagram-settings-compat.js +7 -0
- package/dist/tools/definitions/instagram-settings-compat.js.map +1 -0
- package/dist/tools/definitions/knowledge-chunking.d.ts +42 -0
- package/dist/tools/definitions/knowledge-chunking.js +83 -0
- package/dist/tools/definitions/knowledge-chunking.js.map +1 -0
- package/dist/tools/definitions/knowledge-space-search-fields.d.ts +12 -0
- package/dist/tools/definitions/knowledge-space-search-fields.js +30 -0
- package/dist/tools/definitions/knowledge-space-search-fields.js.map +1 -0
- package/dist/tools/definitions/knowledge.d.ts +24 -14
- package/dist/tools/definitions/knowledge.js +342 -233
- package/dist/tools/definitions/knowledge.js.map +1 -1
- package/dist/tools/definitions/legacy-trigger-repeat.d.ts +17 -0
- package/dist/tools/definitions/legacy-trigger-repeat.js +53 -0
- package/dist/tools/definitions/legacy-trigger-repeat.js.map +1 -0
- package/dist/tools/definitions/link-tracking.d.ts +8 -0
- package/dist/tools/definitions/link-tracking.js +141 -38
- package/dist/tools/definitions/link-tracking.js.map +1 -1
- package/dist/tools/definitions/mailing-variant-content.d.ts +75 -0
- package/dist/tools/definitions/mailing-variant-content.js +73 -0
- package/dist/tools/definitions/mailing-variant-content.js.map +1 -0
- package/dist/tools/definitions/model-comparison.d.ts +2 -1
- package/dist/tools/definitions/model-comparison.js +4 -5
- package/dist/tools/definitions/model-comparison.js.map +1 -1
- package/dist/tools/definitions/money-currency.d.ts +5 -0
- package/dist/tools/definitions/money-currency.js +10 -0
- package/dist/tools/definitions/money-currency.js.map +1 -0
- package/dist/tools/definitions/operator-workflow.d.ts +5 -5
- package/dist/tools/definitions/operator-workflow.js +80 -27
- package/dist/tools/definitions/operator-workflow.js.map +1 -1
- package/dist/tools/definitions/platform-funnel-analytics.d.ts +42 -0
- package/dist/tools/definitions/platform-funnel-analytics.js +72 -0
- package/dist/tools/definitions/platform-funnel-analytics.js.map +1 -0
- package/dist/tools/definitions/platform-getcourse-wave-field-bindings.d.ts +42 -0
- package/dist/tools/definitions/platform-getcourse-wave-field-bindings.js +51 -0
- package/dist/tools/definitions/platform-getcourse-wave-field-bindings.js.map +1 -0
- package/dist/tools/definitions/platform-settings-limits.d.ts +5 -0
- package/dist/tools/definitions/platform-settings-limits.js +6 -0
- package/dist/tools/definitions/platform-settings-limits.js.map +1 -0
- package/dist/tools/definitions/platform-settings-shipped-form.d.ts +37 -0
- package/dist/tools/definitions/platform-settings-shipped-form.js +310 -0
- package/dist/tools/definitions/platform-settings-shipped-form.js.map +1 -0
- package/dist/tools/definitions/platform-settings-update.d.ts +300 -0
- package/dist/tools/definitions/platform-settings-update.js +134 -0
- package/dist/tools/definitions/platform-settings-update.js.map +1 -0
- package/dist/tools/definitions/{getcourse-wave.d.ts → platform-setup-wave.d.ts} +75 -6
- package/dist/tools/definitions/platform-setup-wave.js +1079 -0
- package/dist/tools/definitions/platform-setup-wave.js.map +1 -0
- package/dist/tools/definitions/platform-setup.d.ts +697 -224
- package/dist/tools/definitions/platform-setup.js +313 -752
- package/dist/tools/definitions/platform-setup.js.map +1 -1
- package/dist/tools/definitions/platform-widget-page-rules.schema.d.ts +10 -0
- package/dist/tools/definitions/platform-widget-page-rules.schema.js +7 -0
- package/dist/tools/definitions/platform-widget-page-rules.schema.js.map +1 -0
- package/dist/tools/definitions/prompt-authoring.constants.d.ts +2 -0
- package/dist/tools/definitions/prompt-authoring.constants.js +3 -0
- package/dist/tools/definitions/prompt-authoring.constants.js.map +1 -0
- package/dist/tools/definitions/prompt-batch-controls.d.ts +5 -0
- package/dist/tools/definitions/prompt-batch-controls.js +40 -0
- package/dist/tools/definitions/prompt-batch-controls.js.map +1 -0
- package/dist/tools/definitions/prompt-draft-authoring.d.ts +5 -0
- package/dist/tools/definitions/prompt-draft-authoring.js +24 -0
- package/dist/tools/definitions/prompt-draft-authoring.js.map +1 -0
- package/dist/tools/definitions/prompt-text-projection.d.ts +11 -0
- package/dist/tools/definitions/prompt-text-projection.js +62 -0
- package/dist/tools/definitions/prompt-text-projection.js.map +1 -0
- package/dist/tools/definitions/reviewer-paid.d.ts +19 -0
- package/dist/tools/definitions/reviewer-paid.js +115 -0
- package/dist/tools/definitions/reviewer-paid.js.map +1 -0
- package/dist/tools/definitions/routing-condition-projection.d.ts +31 -0
- package/dist/tools/definitions/routing-condition-projection.js +97 -0
- package/dist/tools/definitions/routing-condition-projection.js.map +1 -0
- package/dist/tools/definitions/schedule-selection-hints.d.ts +3 -0
- package/dist/tools/definitions/schedule-selection-hints.js +42 -0
- package/dist/tools/definitions/schedule-selection-hints.js.map +1 -0
- package/dist/tools/definitions/{scheduled-tasks.d.ts → scheduled-task-alias.d.ts} +12 -10
- package/dist/tools/definitions/scheduled-task-alias.js +207 -0
- package/dist/tools/definitions/scheduled-task-alias.js.map +1 -0
- package/dist/tools/definitions/session.js +3 -3
- package/dist/tools/definitions/session.js.map +1 -1
- package/dist/tools/definitions/setup-init-operation.schema.d.ts +2 -0
- package/dist/tools/definitions/setup-init-operation.schema.js +6 -0
- package/dist/tools/definitions/setup-init-operation.schema.js.map +1 -0
- package/dist/tools/definitions/shared-input.helpers.d.ts +51 -0
- package/dist/tools/definitions/shared-input.helpers.js +323 -0
- package/dist/tools/definitions/shared-input.helpers.js.map +1 -0
- package/dist/tools/definitions/shared.d.ts +401 -307
- package/dist/tools/definitions/shared.js +430 -652
- package/dist/tools/definitions/shared.js.map +1 -1
- package/dist/tools/definitions/shipped-output-names.d.ts +19 -0
- package/dist/tools/definitions/shipped-output-names.js +123 -0
- package/dist/tools/definitions/shipped-output-names.js.map +1 -0
- package/dist/tools/definitions/task-state.d.ts +4 -4
- package/dist/tools/definitions/task-state.js +2 -1
- package/dist/tools/definitions/task-state.js.map +1 -1
- package/dist/tools/definitions/telegram-personal-capacity.d.ts +4 -0
- package/dist/tools/definitions/telegram-personal-capacity.js +18 -0
- package/dist/tools/definitions/telegram-personal-capacity.js.map +1 -0
- package/dist/tools/definitions/telegram-personal-management.d.ts +34 -0
- package/dist/tools/definitions/telegram-personal-management.js +139 -0
- package/dist/tools/definitions/telegram-personal-management.js.map +1 -0
- package/dist/tools/definitions/telegram-personal-restrictions.d.ts +19 -0
- package/dist/tools/definitions/telegram-personal-restrictions.js +109 -0
- package/dist/tools/definitions/telegram-personal-restrictions.js.map +1 -0
- package/dist/tools/definitions/telegram-pool-policy.d.ts +8 -0
- package/dist/tools/definitions/telegram-pool-policy.js +56 -0
- package/dist/tools/definitions/telegram-pool-policy.js.map +1 -0
- package/dist/tools/definitions/touch-history-alias.d.ts +4 -0
- package/dist/tools/definitions/touch-history-alias.js +99 -0
- package/dist/tools/definitions/touch-history-alias.js.map +1 -0
- package/dist/tools/definitions/trigger-action-item.schema.d.ts +254 -0
- package/dist/tools/definitions/trigger-action-item.schema.js +121 -0
- package/dist/tools/definitions/trigger-action-item.schema.js.map +1 -0
- package/dist/tools/definitions/trigger-argument.schema.d.ts +14 -0
- package/dist/tools/definitions/trigger-argument.schema.js +23 -0
- package/dist/tools/definitions/trigger-argument.schema.js.map +1 -0
- package/dist/tools/definitions/trigger-claim-alias.d.ts +10 -0
- package/dist/tools/definitions/trigger-claim-alias.js +90 -0
- package/dist/tools/definitions/trigger-claim-alias.js.map +1 -0
- package/dist/tools/definitions/trigger-echo-projection.d.ts +1 -0
- package/dist/tools/definitions/trigger-echo-projection.js +41 -0
- package/dist/tools/definitions/trigger-echo-projection.js.map +1 -0
- package/dist/tools/definitions/trigger-upsert.tool.d.ts +41 -0
- package/dist/tools/definitions/trigger-upsert.tool.js +159 -0
- package/dist/tools/definitions/trigger-upsert.tool.js.map +1 -0
- package/dist/tools/definitions/v15-port-descriptions.d.ts +11 -0
- package/dist/tools/definitions/v15-port-descriptions.js +30 -0
- package/dist/tools/definitions/v15-port-descriptions.js.map +1 -0
- package/dist/tools/definitions/variables.d.ts +44 -0
- package/dist/tools/definitions/variables.js +310 -0
- package/dist/tools/definitions/variables.js.map +1 -0
- package/dist/tools/definitions/voice-action-input.d.ts +9 -0
- package/dist/tools/definitions/voice-action-input.js +141 -0
- package/dist/tools/definitions/voice-action-input.js.map +1 -0
- package/dist/tools/definitions/widget-customization-compat.d.ts +51 -0
- package/dist/tools/definitions/widget-customization-compat.js +23 -0
- package/dist/tools/definitions/widget-customization-compat.js.map +1 -0
- package/dist/tools/definitions.d.ts +1134 -617
- package/dist/tools/definitions.js +63 -27
- package/dist/tools/definitions.js.map +1 -1
- package/dist/tools/description-localization.js +3 -2
- package/dist/tools/description-localization.js.map +1 -1
- package/dist/tools/follow-up-request.d.ts +19 -0
- package/dist/tools/follow-up-request.js +81 -0
- package/dist/tools/follow-up-request.js.map +1 -0
- package/dist/tools/followup-revision.d.ts +4 -0
- package/dist/tools/followup-revision.js +29 -0
- package/dist/tools/followup-revision.js.map +1 -0
- package/dist/tools/incomplete-list.js +4 -0
- package/dist/tools/incomplete-list.js.map +1 -1
- package/dist/tools/inventory.js +47 -11
- package/dist/tools/inventory.js.map +1 -1
- package/dist/tools/operation-recovery.d.ts +4 -0
- package/dist/tools/operation-recovery.js +33 -0
- package/dist/tools/operation-recovery.js.map +1 -0
- package/dist/tools/registry-mapping-primary.cases.d.ts +2 -0
- package/dist/tools/registry-mapping-primary.cases.js +765 -0
- package/dist/tools/registry-mapping-primary.cases.js.map +1 -0
- package/dist/tools/registry-mapping-secondary.cases.d.ts +2 -0
- package/dist/tools/registry-mapping-secondary.cases.js +626 -0
- package/dist/tools/registry-mapping-secondary.cases.js.map +1 -0
- package/dist/tools/registry-mapping.cases.d.ts +8 -0
- package/dist/tools/registry-mapping.cases.js +170 -0
- package/dist/tools/registry-mapping.cases.js.map +1 -0
- package/dist/tools/registry-test-fixtures.d.ts +50 -0
- package/dist/tools/registry-test-fixtures.js +120 -0
- package/dist/tools/registry-test-fixtures.js.map +1 -0
- package/dist/tools/registry.d.ts +2 -0
- package/dist/tools/registry.js +84 -52
- package/dist/tools/registry.js.map +1 -1
- package/dist/tools/result.d.ts +1 -0
- package/dist/tools/result.js +90 -22
- package/dist/tools/result.js.map +1 -1
- package/dist/tools/toolsets.d.ts +16 -0
- package/dist/tools/toolsets.js +25 -1
- package/dist/tools/toolsets.js.map +1 -1
- package/dist/types/api-contract.gen.d.ts +131892 -22453
- package/dist/utils/credential-signatures.d.ts +3 -0
- package/dist/utils/credential-signatures.js +10 -0
- package/dist/utils/credential-signatures.js.map +1 -0
- package/dist/utils/data-source-column-name.d.ts +10 -0
- package/dist/utils/data-source-column-name.js +36 -0
- package/dist/utils/data-source-column-name.js.map +1 -0
- package/dist/utils/logger.d.ts +1 -0
- package/dist/utils/logger.js +32 -8
- package/dist/utils/logger.js.map +1 -1
- package/dist/utils/secret-read-boundary.d.ts +2 -0
- package/dist/utils/secret-read-boundary.js +88 -0
- package/dist/utils/secret-read-boundary.js.map +1 -0
- package/dist/utils/setup-secrets.d.ts +4 -0
- package/dist/utils/setup-secrets.js +40 -0
- package/dist/utils/setup-secrets.js.map +1 -0
- package/docs/agent-models.md +9 -0
- package/docs/agent-usage-guide.full.ru.md +1 -4
- package/docs/analytics-contract.md +67 -0
- package/docs/async-operation-lifecycle.md +10 -3
- package/docs/connect.ru.md +144 -4
- package/docs/contact-company-profile.md +17 -0
- package/docs/contact-recommendations.md +7 -0
- package/docs/crm-stage-pool.md +73 -0
- package/docs/customer-data.md +61 -0
- package/docs/dialogue-reprocess.md +37 -0
- package/docs/edit-versions.md +36 -0
- package/docs/failure-semantics.md +17 -9
- package/docs/help-navigation.md +15 -42
- package/docs/host-compatibility-matrix.md +72 -93
- package/docs/host-setup.md +33 -35
- package/docs/invariants/public-api-and-contracts.md +16 -0
- package/docs/legacy-action-settings.md +21 -0
- package/docs/main-transfer-dependencies.md +38 -0
- package/docs/mcp2-parity.md +50 -0
- package/docs/modules/analytics.md +79 -0
- package/docs/modules/besales-mcp.md +144 -0
- package/docs/modules/dialog-review-report.md +38 -0
- package/docs/modules/dialogue-followup-adapters.md +39 -0
- package/docs/modules/message-reactions.md +17 -0
- package/docs/modules/network-mode.md +284 -0
- package/docs/modules/prompt-batch-and-dialogue-controls.md +69 -0
- package/docs/pii-policy.md +21 -16
- package/docs/response-size-budget.md +197 -7
- package/docs/secret-read-boundary.md +102 -0
- package/docs/task-state.md +7 -2
- package/docs/telegram-personal-management.md +50 -0
- package/docs/telegram-personal-restrictions.md +87 -0
- package/docs/telegram-pool-policy.md +19 -0
- package/docs/tool-effects.md +15 -9
- package/docs/tool-surface.md +205 -4
- package/docs/voice-actions-and-inbox.md +95 -0
- package/docs/wazzup-instagram-comments.md +26 -0
- package/package.json +17 -10
- package/scripts/api-source-loader.spec.mjs +40 -0
- package/scripts/audit-bridge-controls.mjs +129 -0
- package/scripts/audit-revert-mutants.mjs +107 -0
- package/scripts/bridge-api-input.spec.mjs +98 -0
- package/scripts/bridge-controls-mutants.mjs +130 -0
- package/scripts/brx3-shipped-refusals.spec.mjs +149 -0
- package/scripts/brx4-ledger-payload.spec.mjs +127 -0
- package/scripts/build-onprem.mjs +108 -0
- package/scripts/connect-clients.sh +141 -0
- package/scripts/connect-scopes.mjs +166 -0
- package/scripts/connect-scopes.spec.mjs +83 -0
- package/scripts/emit-personal-link-carrier.mjs +31 -0
- package/scripts/emit-setup-init-schemas.mjs +24 -0
- package/scripts/emit-tool-routes.mjs +878 -0
- package/scripts/emit-tool-routes.spec.mjs +300 -0
- package/scripts/followup-registry.spec.mjs +107 -0
- package/scripts/generate-crm-rotation-contract.mjs +98 -0
- package/scripts/generate-followup-session-contract.mjs +16 -0
- package/scripts/getcourse-text-source.spec.mjs +110 -0
- package/scripts/icp-import-verification/mutate.cjs +70 -0
- package/scripts/import-secret-read-contract.mjs +53 -0
- package/scripts/install-claude-desktop.js +1 -1
- package/scripts/lag-decisions.mjs +37 -0
- package/scripts/lag-decisions.spec.mjs +87 -0
- package/scripts/lag-open-task-owners.mjs +46 -0
- package/scripts/lag-open-task-owners.spec.mjs +78 -0
- package/scripts/lag-payload.mjs +10 -0
- package/scripts/legacy-action-lag.spec.mjs +22 -0
- package/scripts/legacy-field-refusal.shipped.spec.mjs +99 -0
- package/scripts/mcpcompat-handler.mjs +34 -0
- package/scripts/mcpcompat-loader.mjs +36 -0
- package/scripts/mcpcompat-typescript.mjs +3 -0
- package/scripts/platform-settings-shipped-parity.spec.mjs +89 -0
- package/scripts/prbr-round1-recheck.spec.mjs +605 -0
- package/scripts/prbr-shipped-compatibility.spec.mjs +276 -0
- package/scripts/publish-mcp-registry.mjs +98 -0
- package/scripts/publish-mcp-registry.spec.mjs +68 -0
- package/scripts/record-scheduled-task-call.mjs +26 -0
- package/scripts/refusal-probe.mjs +17 -0
- package/scripts/refusal-probe.spec.mjs +29 -0
- package/scripts/registry-diff.mjs +502 -0
- package/scripts/registry-diff.spec.mjs +787 -0
- package/scripts/request-query.mjs +43 -0
- package/scripts/request-query.spec.mjs +82 -0
- package/scripts/route-lag.mjs +23 -0
- package/scripts/route-lag.spec.mjs +30 -0
- package/scripts/sample-args.mjs +174 -0
- package/scripts/sample-args.spec.mjs +160 -0
- package/scripts/shipped-definitions.mjs +197 -0
- package/scripts/shipped-definitions.spec.mjs +57 -0
- package/scripts/shipped-inputs.spec.mjs +136 -0
- package/scripts/shipped-recordings.spec.mjs +19 -0
- package/scripts/shipped-ref.d.mts +5 -0
- package/scripts/shipped-ref.mjs +20 -0
- package/scripts/shipped-ref.spec.mjs +59 -0
- package/scripts/shipped-registry.mjs +107 -0
- package/scripts/shipped-sample-candidates.mjs +69 -0
- package/scripts/shipped-sample-candidates.spec.mjs +117 -0
- package/scripts/shipped-sample.mjs +871 -0
- package/scripts/shipped-sample.spec.mjs +451 -0
- package/scripts/sync-agent-model-schemas.mjs +72 -0
- package/scripts/sync-api-contracts.mjs +85 -0
- package/scripts/sync-api-contracts.spec.mjs +144 -0
- package/scripts/sync-contract-ledger-schemas.mjs +161 -0
- package/scripts/sync-crm-stage-pool-schema.mjs +85 -0
- package/scripts/sync-prompt-draft-schema.mjs +92 -0
- package/scripts/sync-route-map.mjs +94 -0
- package/scripts/sync-schema-descriptions.mjs +25 -0
- package/scripts/sync-tool-inventory.mjs +27 -0
- package/scripts/sync-trigger-argument-schema.mjs +97 -0
- package/scripts/sync-trigger-argument-schema.spec.mjs +91 -0
- package/scripts/sync-trigger-event-schema.mjs +20 -0
- package/scripts/sync-trigger-repeat-mapping.mjs +12 -0
- package/scripts/sync-trigger-task-schema.mjs +45 -0
- package/scripts/sync-voice-actions-contract.mjs +67 -0
- package/scripts/sync-voice-actions-tools.mjs +97 -0
- package/scripts/sync-wave-id-schemas.mjs +55 -0
- package/scripts/telegram-personal-confirmation-mutants.mjs +74 -0
- package/scripts/tool-input-schemas.mjs +46 -0
- package/scripts/tool-input-schemas.spec.mjs +50 -0
- package/scripts/verify-followup-adapters.mjs +235 -0
- package/scripts/verify-secret-read-import.mjs +84 -0
- package/scripts/verify-secret-read-mutants.mjs +143 -0
- package/dist/tools/definitions/analytics.d.ts +0 -40
- package/dist/tools/definitions/analytics.js +0 -233
- package/dist/tools/definitions/analytics.js.map +0 -1
- package/dist/tools/definitions/broadcast-mailing-variants.d.ts +0 -41
- package/dist/tools/definitions/broadcast-mailing-variants.js +0 -194
- package/dist/tools/definitions/broadcast-mailing-variants.js.map +0 -1
- package/dist/tools/definitions/dialogue-audit.d.ts +0 -38
- package/dist/tools/definitions/dialogue-audit.js +0 -292
- package/dist/tools/definitions/dialogue-audit.js.map +0 -1
- package/dist/tools/definitions/getcourse-wave.js +0 -519
- package/dist/tools/definitions/getcourse-wave.js.map +0 -1
- package/dist/tools/definitions/operational-overview.d.ts +0 -3
- package/dist/tools/definitions/operational-overview.js +0 -23
- package/dist/tools/definitions/operational-overview.js.map +0 -1
- package/dist/tools/definitions/scheduled-tasks.js +0 -173
- package/dist/tools/definitions/scheduled-tasks.js.map +0 -1
- package/dist/tools/definitions/trigger-contact-claims.d.ts +0 -7
- package/dist/tools/definitions/trigger-contact-claims.js +0 -60
- package/dist/tools/definitions/trigger-contact-claims.js.map +0 -1
- package/dist/tools/registry-mapping-cases-core.d.ts +0 -38
- package/dist/tools/registry-mapping-cases-core.js +0 -963
- package/dist/tools/registry-mapping-cases-core.js.map +0 -1
- package/dist/tools/registry-mapping-cases-platform.d.ts +0 -2
- package/dist/tools/registry-mapping-cases-platform.js +0 -1052
- package/dist/tools/registry-mapping-cases-platform.js.map +0 -1
- package/dist/tools/trigger-action-config.d.ts +0 -49
- package/dist/tools/trigger-action-config.js +0 -171
- package/dist/tools/trigger-action-config.js.map +0 -1
- package/docs/evals/model-behavior-scorecard.md +0 -80
- package/docs/operation-coverage.md +0 -114
- package/scripts/mock-credentials.js +0 -77
- package/scripts/model-eval-server.js +0 -213
- package/scripts/run-model-eval.js +0 -447
package/docs/connect.ru.md
CHANGED
|
@@ -1,5 +1,134 @@
|
|
|
1
1
|
# Подключение Besales MCP к Claude Code и Codex
|
|
2
2
|
|
|
3
|
+
## Онлайн-MCP: подключение коллег
|
|
4
|
+
|
|
5
|
+
Онлайн-MCP позволяет Claude Code и Codex CLI работать с твоей рабочей областью Besales:
|
|
6
|
+
смотреть данные и выполнять действия в пределах выданных прав. Клиенты обращаются к
|
|
7
|
+
`https://mcp.besales.ai/mcp`; держать локальный мост запущенным не нужно.
|
|
8
|
+
|
|
9
|
+
Нужны Node.js 20+ (`node -v`), Claude Code и/или Codex CLI и аккаунт Besales с доступом
|
|
10
|
+
к нужной рабочей области. Выполняй команды сам в своём терминале, не передавай ключ агенту
|
|
11
|
+
и не вставляй его в чат.
|
|
12
|
+
|
|
13
|
+
**Важно:** `beta` — тег предварительной версии. Для этих инструкций нужен именно
|
|
14
|
+
`@besales/mcp@beta`. Обычный `npx -y @besales/mcp` без тега по-прежнему устанавливает
|
|
15
|
+
прежнюю версию 0.48. Пакет этой ветки станет доступен через `beta` после публикации владельцем.
|
|
16
|
+
|
|
17
|
+
### Шаг 1. Получи ключ своей рабочей области
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
npx -y @besales/mcp@beta connect
|
|
21
|
+
npx -y @besales/mcp@beta connections
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
Первая команда открывает браузер: войди в Besales, выбери область и подтверди права.
|
|
25
|
+
Ключ `mcp_…` сохранится в локальной связке ключей. Повтори `connect` один раз для каждой
|
|
26
|
+
нужной области; вторая команда покажет их имена и UUID. Ключ получается локальной командой
|
|
27
|
+
`connect` один раз, а дальше локальный мост для работы онлайн-клиентов не нужен.
|
|
28
|
+
|
|
29
|
+
### Шаг 2. Настрой клиентов скриптом или вручную
|
|
30
|
+
|
|
31
|
+
В репозитории [be-sales/mcp](https://github.com/be-sales/mcp) скачай файл
|
|
32
|
+
`scripts/connect-clients.sh` из ветки с онлайн-MCP и запусти:
|
|
33
|
+
|
|
34
|
+
```bash
|
|
35
|
+
bash scripts/connect-clients.sh
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
Или получи скрипт из установленного пакета:
|
|
39
|
+
|
|
40
|
+
```bash
|
|
41
|
+
npm install -g @besales/mcp@beta
|
|
42
|
+
bash "$(npm root -g)/@besales/mcp/scripts/connect-clients.sh"
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
Скрипт читает только `connections --json`: это JSON-массив объектов
|
|
46
|
+
`{workspaceId, workspaceName, accountLabel, keyPrefix, active}` одной строкой, без полных ключей.
|
|
47
|
+
В обычном выводе управляющие символы имён и подписей заменяются пробелами; JSON сохраняет
|
|
48
|
+
имя целиком с экранированием. Имена передаются разборщику только через stdin, без исполнения.
|
|
49
|
+
Скрипт принимает UUID только по шаблону `^[0-9a-f-]{36}$` и создаёт запись
|
|
50
|
+
`besales-<слаг имени>` только из букв `a-z`, цифр и дефиса: для слага берутся первые
|
|
51
|
+
200 символов очищенного имени, сам слаг ограничен 64 символами; пустой слаг заменяется
|
|
52
|
+
первыми 8 символами UUID. При совпадении имён добавляются первые четыре символа UUID,
|
|
53
|
+
при дальнейшей коллизии — полный UUID. Отсутствующий в PATH клиент
|
|
54
|
+
пропускается. Повторный запуск обновляет подключения. Для выбора отдельных областей передай
|
|
55
|
+
имена записей или префиксы UUID:
|
|
56
|
+
|
|
57
|
+
```bash
|
|
58
|
+
bash scripts/connect-clients.sh besales-sales 1234abcd
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
Ключи для Codex сохраняются в `~/.besales-secrets/mcp-remote-keys.env` (каталог 700, файл 600).
|
|
62
|
+
Скрипт напечатает строку `source` без ключей: добавь её в `~/.zshrc` или `~/.bashrc` и выполни
|
|
63
|
+
в текущем терминале. Запускай Codex из терминала, где загружены эти переменные.
|
|
64
|
+
При любом запуске сохраняются посторонние строки и переменные остальных областей:
|
|
65
|
+
заменяются или добавляются только `export BESALES_MCP_KEY_<ИМЯ>="…"` успешно подключённых
|
|
66
|
+
в этом запуске областей и отсутствующий заголовок. Повторный запуск не дублирует записи.
|
|
67
|
+
Запись атомарна: временный файл рядом с исходным и `mv`; ошибка клиента сохраняет прежний файл.
|
|
68
|
+
|
|
69
|
+
Адрес можно задать через `BESALES_MCP_URL`, команду получения ключей — через
|
|
70
|
+
`BESALES_MCP_BRIDGE` (по умолчанию `npx -y @besales/mcp@beta`). Для исходников:
|
|
71
|
+
|
|
72
|
+
```bash
|
|
73
|
+
BESALES_MCP_BRIDGE='node /путь/к/mcp/bin/besales-mcp.js' bash scripts/connect-clients.sh
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
Здесь команда моста — аргументы через пробелы; путь не должен содержать пробелов.
|
|
77
|
+
|
|
78
|
+
Вместо скрипта можно выполнить три команды вручную. Замени `UUID` идентификатором из
|
|
79
|
+
`connections`, а `besales-sales` — своим уникальным именем записи:
|
|
80
|
+
|
|
81
|
+
```bash
|
|
82
|
+
claude mcp add --scope user --transport http besales-sales https://mcp.besales.ai/mcp --header "Authorization: Bearer $(npx -y @besales/mcp@beta key UUID)"
|
|
83
|
+
export BESALES_MCP_KEY_SALES="$(npx -y @besales/mcp@beta key UUID)"
|
|
84
|
+
codex mcp add besales-sales --url https://mcp.besales.ai/mcp --bearer-token-env-var BESALES_MCP_KEY_SALES
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
Для ручной настройки Codex повторяй `export` в каждом новом терминале или добавь именно
|
|
88
|
+
команду с подстановкой `$(…)` в профиль оболочки. При нескольких областях нужны разные
|
|
89
|
+
имена записей, UUID и имена переменных. Для обновления уже существующей записи сначала
|
|
90
|
+
удали её: `claude mcp remove --scope user besales-sales` или `codex mcp remove besales-sales`,
|
|
91
|
+
затем повтори нужную команду добавления. Скрипт делает это сам.
|
|
92
|
+
|
|
93
|
+
Ключ лежит в настройках Claude Code открытым текстом. Codex хранит имя переменной,
|
|
94
|
+
а её значение скрипт записывает открытым текстом в закрытый файл. Не публикуй настройки
|
|
95
|
+
или файл ключей, ограничь доступ к своему компьютеру. Подстановка команды в терминале
|
|
96
|
+
не печатает ключ; отдельная команда `key [UUID]` выводит секрет, поэтому не запускай её
|
|
97
|
+
на общей демонстрации экрана.
|
|
98
|
+
|
|
99
|
+
Известное ограничение: Claude Code принимает заголовок только аргументом команды
|
|
100
|
+
`claude mcp add --header`, поэтому на время её выполнения (доли секунды) ключ виден в
|
|
101
|
+
списке процессов этого же компьютера. Запускай скрипт на личном компьютере, где нет
|
|
102
|
+
посторонних пользователей. У Codex такого нет: ему передаётся только имя переменной.
|
|
103
|
+
|
|
104
|
+
### Шаг 3. Проверь подключение
|
|
105
|
+
|
|
106
|
+
```bash
|
|
107
|
+
claude mcp list
|
|
108
|
+
codex mcp list
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
Проверь установленный у тебя клиент, открой новую сессию агента и спроси:
|
|
112
|
+
«какая у меня рабочая область?». Ответ должен соответствовать выбранной области.
|
|
113
|
+
|
|
114
|
+
| Ответ службы | Что делать |
|
|
115
|
+
| --- | --- |
|
|
116
|
+
| 401 | Ключ просрочен (срок — 90 дней), отозван или потерял доступ. Снова выполни `npx -y @besales/mcp@beta connect`, затем скрипт; для Codex повтори `source`. |
|
|
117
|
+
| 502 | Ядро временно недоступно. Для известного ключа повторная проверка приостановлена до 5 секунд; соблюдай `Retry-After`. |
|
|
118
|
+
| 429 | Достигнут лимит. Подожди число секунд из `Retry-After` и повтори запрос. |
|
|
119
|
+
| 503 | Служба занята или обновляется. Повтори через несколько секунд. |
|
|
120
|
+
|
|
121
|
+
Чтобы отозвать доступ, открой список подключений в Besales и отзови нужное подключение.
|
|
122
|
+
Удаление записи только в Claude Code или Codex не отзывает сам ключ.
|
|
123
|
+
Общая проверка службы учитывает отзыв ключа после истечения кэша, даже если все
|
|
124
|
+
ожидавшие её клиенты отключились до ответа ядра.
|
|
125
|
+
|
|
126
|
+
## Локальное подключение через stdio
|
|
127
|
+
|
|
128
|
+
Ниже — прежний способ: мост работает локально при каждом запуске клиента.
|
|
129
|
+
Для онлайн-службы используй три шага выше.
|
|
130
|
+
|
|
131
|
+
|
|
3
132
|
Три шага: добавить сервер в программу → один раз войти через браузер → открыть новую сессию и
|
|
4
133
|
проверить. Пароли и токены в чат не вводятся никогда — вход только через браузер.
|
|
5
134
|
|
|
@@ -85,14 +214,22 @@ Code или Codex.
|
|
|
85
214
|
труднее найти нужный. Во вкладке Code десктоп-приложения Claude видны ещё и серверы, добавленные в
|
|
86
215
|
Claude Desktop, — учитывай их тоже.
|
|
87
216
|
|
|
217
|
+
## Другие команды
|
|
218
|
+
|
|
219
|
+
| Команда | Что делает |
|
|
220
|
+
|---|---|
|
|
221
|
+
| `npx -y @besales/mcp status` | показать выбранную компанию и все подключения |
|
|
222
|
+
| `npx -y @besales/mcp connections` | список подключённых компаний с их ID |
|
|
223
|
+
| `npx -y @besales/mcp disconnect <id>` | отключить одну компанию (`--all` — все) |
|
|
224
|
+
|
|
88
225
|
## Обновление
|
|
89
226
|
|
|
90
227
|
1. Закрой и снова открой программу.
|
|
91
228
|
2. Один раз для каждой компании: `npx -y @besales/mcp@latest connect`.
|
|
92
229
|
|
|
93
230
|
Новые права помощнику выдаются только при подключении, поэтому шаг 2 обязателен, когда в версии
|
|
94
|
-
появились новые
|
|
95
|
-
|
|
231
|
+
появились новые возможности. `@latest` нужен потому, что npx хранит старую копию пакета в кэше.
|
|
232
|
+
Уже работающие настройки от этого не сбрасываются.
|
|
96
233
|
|
|
97
234
|
## Как проверить, что всё работает
|
|
98
235
|
|
|
@@ -100,7 +237,8 @@ Claude Desktop, — учитывай их тоже.
|
|
|
100
237
|
В ответе должны быть:
|
|
101
238
|
|
|
102
239
|
- названия компаний и какая выбрана сейчас;
|
|
103
|
-
- в `effective_scopes` —
|
|
240
|
+
- в `effective_scopes` — права, которые ты выдал при подключении. Если нужного права нет (например
|
|
241
|
+
`read:contacts` или `write:operators`), выполни `connect` ещё раз и дай его на странице согласия.
|
|
104
242
|
|
|
105
243
|
## Если что-то не так
|
|
106
244
|
|
|
@@ -110,7 +248,9 @@ Claude Desktop, — учитывай их тоже.
|
|
|
110
248
|
| Просит ID рабочего пространства | Скажи «покажи мои рабочие пространства» и выбери по названию. Вводить ID не нужно. |
|
|
111
249
|
| «Не хватает прав» (403) | `npx -y @besales/mcp@latest connect` и перезапуск программы. |
|
|
112
250
|
| После обновления нет новых инструментов | npx взял старую копию: `npx -y @besales/mcp@latest connect`, затем перезапуск. |
|
|
113
|
-
| Страница входа пишет, что
|
|
251
|
+
| Страница входа пишет, что набор прав недопустим, и называет право | Пакет новее сервера Besales: он просит право, которого сервер ещё не знает. Подожди обновления сервера или напиши в поддержку. |
|
|
252
|
+
| `connect` пишет `WARNING: this key has FEWER permissions than the one it replaced` | Новый ключ получил меньше прав, чем прежний ключ в этой компании (`Lost:` — какие). Обнови пакет и подключись ещё раз: `npx -y @besales/mcp@latest connect`. |
|
|
253
|
+
| `connect` пишет `WARNING: some requested permissions were not granted` | Роль в этой компании не разрешает часть прав (`Not granted:` — какие). Попроси владельца компании или администратора расширить роль и подключись ещё раз. |
|
|
114
254
|
|
|
115
255
|
## Для разработчиков: запуск из исходников
|
|
116
256
|
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# Компания и должность в карточке человека
|
|
2
|
+
|
|
3
|
+
Редактор компании принадлежит операторскому интерфейсу API. Он читает выбранный адрес человека
|
|
4
|
+
и сохраняет только изменённые поля с обязательной непрозрачной `profileVersion`.
|
|
5
|
+
Его GET/PATCH не вызываются инструментами моста и не добавляются в карту маршрутов MCP.
|
|
6
|
+
|
|
7
|
+
`besales_contact_get` по-прежнему читает `/contacts/{contact_id}`. Поиск и пакетное чтение
|
|
8
|
+
профилей сохраняют свой разрешённый состав ответа; они не получают права изменения.
|
|
9
|
+
Новый инструмент записи компании не вводится. Ключ `read:contacts` не открывает операторский
|
|
10
|
+
редактор, даже если вызывающий знает его адрес.
|
|
11
|
+
|
|
12
|
+
Контракт формы и сценарий восстановления после 409 описаны в API:
|
|
13
|
+
`docs/modules/contact-company-profile.md`. Базовый путь формы:
|
|
14
|
+
`/api/v2/workspaces/{workspaceId}/contacts/{contactId}/identities/{identityId}/company-profile`.
|
|
15
|
+
Нужны пользовательская сессия и текущие права `CONVERSATION_VIEW`/`CONVERSATION_REPLY`.
|
|
16
|
+
|
|
17
|
+
Регрессия границы: `src/tools/definitions/contacts.spec.ts`.
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
# Рекомендации между людьми
|
|
2
|
+
|
|
3
|
+
Рекомендации связывают выбранные адреса разных людей и не объединяют их карточки. Их редактор принадлежит пользовательскому API Besales. Ключи моста и публичного API не получают маршруты списка, поиска кандидатов, записи и удаления рекомендаций.
|
|
4
|
+
|
|
5
|
+
Состав `besales_contact_get`, `besales_contact_search` и `besales_contact_diagnostics_get` сохраняется. Нового инструмента записи или фиктивной записи в реестре маршрутов нет. Исходный `operatorContactLinks` не является частью контрактов этих инструментов; API удаляет этот служебный ключ из канальных данных, включая вложенные значения.
|
|
6
|
+
|
|
7
|
+
Переход к диалогу выполняет интерфейс по `target.conversationId`, полученному от отдельного API рекомендаций. Это существующий диалог именно `target.identityId` и `target.channelId`; при `null` интерфейс не выбирает случайный другой канал и не создаёт диалог запросом чтения.
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
# Ответственные при смене стадии amoCRM
|
|
2
|
+
|
|
3
|
+
Настройку передают существующие `besales_trigger_upsert` и
|
|
4
|
+
`besales_followup_sequence_upsert`. Новых инструментов и прав нет. Список относится к
|
|
5
|
+
подключению amoCRM целевой стадии; принадлежность каналу, пространству и подключению
|
|
6
|
+
проверяет API. Сотруднику не обязательно иметь рабочее место Besales.
|
|
7
|
+
|
|
8
|
+
Каноническое поле `assign_responsible_operator_ids` содержит уникальные UUID из каталога
|
|
9
|
+
`crm_operators.id`. Порядок значим: сервер выбирает сотрудника по номеру сделки. Прежнее
|
|
10
|
+
`assignResponsibleOperatorIds` содержит положительные безопасные целые номера пользователей
|
|
11
|
+
amoCRM; API разрешает их в том же подключении. Два формата одновременно запрещены.
|
|
12
|
+
Это настройка администратора, а не аргумент выбора сотрудника моделью во время исполнения.
|
|
13
|
+
|
|
14
|
+
Пример действия:
|
|
15
|
+
|
|
16
|
+
```json
|
|
17
|
+
{
|
|
18
|
+
"stepType": "CRM_MOVE_STAGE",
|
|
19
|
+
"config": {
|
|
20
|
+
"schema_version": 1,
|
|
21
|
+
"step_type": "CRM_MOVE_STAGE",
|
|
22
|
+
"pipeline_external_id": "700",
|
|
23
|
+
"status_external_id": "701",
|
|
24
|
+
"assign_responsible_operator_ids": [
|
|
25
|
+
"10000000-0000-4000-8000-000000000031",
|
|
26
|
+
"10000000-0000-4000-8000-000000000017"
|
|
27
|
+
]
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
Пул действия — максимум 20 сотрудников. `config`, `crmConfig`, `crmMoveStage` и
|
|
33
|
+
`crmMoveStageConfig` несут одну настройку; одновременно несколько оболочек запрещены.
|
|
34
|
+
Прежняя `crmConfig.extra.assignResponsibleOperatorIds` разворачивается в
|
|
35
|
+
`crmConfig.assignResponsibleOperatorIds` до HTTP. Неизвестные поля `extra` и канонического
|
|
36
|
+
конфига стадии отвергаются; числа из строк не приводятся автоматически. Ошибочный список
|
|
37
|
+
не становится командой снятия.
|
|
38
|
+
|
|
39
|
+
У цепочки поле лежит прямо в `config`, без предела 20. Инструмент поддерживает
|
|
40
|
+
`trigger=USER_INACTIVITY` и `trigger=LOST_CLIENTS`; второй соответствует внутреннему виду
|
|
41
|
+
`CONTACT_INACTIVE`. Календарная форма молчания использует тот же список. Применение к
|
|
42
|
+
собственным переходам с прямым номером стадии определяет API. Пул цепочки не заменяет
|
|
43
|
+
пул вызываемого действия и не оживляет инертные поля источника.
|
|
44
|
+
|
|
45
|
+
При правке других полей цепочки **не передавай ключ пула**: HTTP-тело сохраняет отсутствие,
|
|
46
|
+
а API переносит прежний пул до перевода конфигурации. `[]` или `null` — явное снятие.
|
|
47
|
+
Для действия правка метаданных без `actions` сохраняет шаги. Полная замена `actions`
|
|
48
|
+
задаёт их заново: сначала прочитай контекст, затем передай желаемый набор вместе с пулом.
|
|
49
|
+
Мост не получает `stepId` или `keepSecretFields`; ссылки интерактивного редактора отвергаются.
|
|
50
|
+
|
|
51
|
+
Контекст канала, каталог действий и чтение цепочек сохраняют список без сортировки.
|
|
52
|
+
Для чтения исходной формы цепочки передай `sequence_id`.
|
|
53
|
+
Ответ `data` содержит `type`, `trigger`, `config` и `configUnavailableReason`; при
|
|
54
|
+
`config=null` требуется восстановление полной формы. Исполняемые `latestVersion.steps`
|
|
55
|
+
нельзя подставлять в `config`.
|
|
56
|
+
Копирование цепочки и отдельная правка текста выполняются существующими маршрутами API;
|
|
57
|
+
мост не переписывает их конфигурацию. Подсказки и отказы списка доступны на ru/en/es/id/uz,
|
|
58
|
+
язык задаётся `BESALES_LOCALE`; HTTP передаёт его через штатный `Accept-Language`.
|
|
59
|
+
|
|
60
|
+
Типы обновляются `yarn types:gen:api` из канона соседнего принятого API. Реестр пула
|
|
61
|
+
обновляется после `yarn build` командой `yarn schemas:sync:crm-stage-pool`.
|
|
62
|
+
Генератор сверяет UUID, уникальность и отсутствие общего цепочного предела с
|
|
63
|
+
`openapi-generated.yaml`; он сохраняет объявления других полей. Каталог контрактов можно
|
|
64
|
+
задать через `BESALES_API_CONTRACTS_DIR`.
|
|
65
|
+
|
|
66
|
+
Карту маршрутов выпускает `yarn publish:mcp-registry` из закоммиченного дерева.
|
|
67
|
+
Штатный отказ грязного дерева сохраняется: текущий рабочий код нельзя подписать старым
|
|
68
|
+
коммитом. Реестр `shipped-lag.json` этим изменением не очищается.
|
|
69
|
+
|
|
70
|
+
Проверки `crm-stage-pool.spec.ts` контролируют тела, чтение и отказы до HTTP;
|
|
71
|
+
`crm-stage-pool.http.spec.ts` проверяет сериализованное тело через настоящий локальный
|
|
72
|
+
HTTP-сервер и Axios. Серверные проверки принадлежности и сохранения идут по действующим
|
|
73
|
+
API-наборам. Эти проверки не подтверждают поведение живой CRM или допуск школы.
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
# Данные клиентов на пути моста
|
|
2
|
+
|
|
3
|
+
## В чём проблема — и в чём её нет
|
|
4
|
+
|
|
5
|
+
**Это не про право доступа.** Тот, кто зовёт мост, — сотрудник воркспейса; те же переписки он
|
|
6
|
+
видит в интерфейсе продукта. Отбирать у него доступ не за чем.
|
|
7
|
+
|
|
8
|
+
**Это про периметр.** Ответ инструмента оседает в транскрипте стороннего приложения (Claude
|
|
9
|
+
Desktop, Cursor, другой хост) и в его телеметрии. Сроком хранения там владелец воркспейса не
|
|
10
|
+
управляет и согласия у своих клиентов на такую передачу не спрашивал. Раньше тем же путём
|
|
11
|
+
уходили партнёрские ключи — это уже исправлено; данные людей идут по нему до сих пор.
|
|
12
|
+
|
|
13
|
+
## Носители — поимённо
|
|
14
|
+
|
|
15
|
+
Разобрано по тому, что маршруты реально отдают, а не по названиям инструментов.
|
|
16
|
+
|
|
17
|
+
План теста воронки тоже несёт данные конкретного человека. Его вызов сохраняет черновик
|
|
18
|
+
на сервере и удаляет прежний черновик автора для этого человека, хотя сообщений человеку не
|
|
19
|
+
отправляет. Поэтому у него одновременно есть пометка данных клиента и побочного эффекта.
|
|
20
|
+
|
|
21
|
+
| Инструмент | Что именно уходит |
|
|
22
|
+
|---|---|
|
|
23
|
+
| `besales_dialogue_transcript` | реплики переписки целиком — всё, что человек написал сам: в тексте бывают телефон, адрес, номер заказа |
|
|
24
|
+
| `besales_dialogues_query` | имя контакта и его идентификатор в канале (у части каналов это номер телефона), плюс суммы оплат |
|
|
25
|
+
| `besales_getcourse_wave_run_contacts` | перечень контактов волны — это и есть назначение инструмента |
|
|
26
|
+
| `besales_icp_sample_messages` | тексты реплик из отобранных диалогов |
|
|
27
|
+
| `besales_dialog_review_findings` | находки со свободным полем подробностей: цитата из переписки туда попасть **может**, гарантий обратного нет |
|
|
28
|
+
| `besales_dialogue_analysis_notes` | служебный разбор конкретной переписки: текст пересказывает сказанное клиентом и менеджером |
|
|
29
|
+
| `besales_broadcast_analytics_get` | отчёты получателей, сделок, отказов действий и отсеянных отдают имя человека и его идентификатор в кабинете школы. До возврата выбора отчёта фасад умел только сводку и носителем не был |
|
|
30
|
+
| `besales_broadcast_payment_candidates_list` | имя человека, его идентификатор в кабинете школы и ссылка на карточку — то же содержимое, что у фасада с отчётом оплат |
|
|
31
|
+
| `besales_tracked_link_clicks` | лента переходов: имя контакта, его идентификатор и идентификатор сообщения, в котором ссылка была выдана. Соседние инструменты каталога ссылок носителями НЕ являются — там только сводные числа |
|
|
32
|
+
|
|
33
|
+
Пометка живёт у определения (`carriesCustomerData`), а не списком имён в каждом новом месте:
|
|
34
|
+
будущая политика применится к одному объявленному множеству. Тест держит, что пометка и
|
|
35
|
+
предупреждение в описании описывают одно и то же множество — иначе помеченный без
|
|
36
|
+
предупреждения молча отдаёт данные, а предупреждённый без пометки выпадет из политики.
|
|
37
|
+
|
|
38
|
+
## Что сделано сейчас
|
|
39
|
+
|
|
40
|
+
1. **Перечень носителей объявлен** и закреплён тестом: новый носитель не появится незамеченным.
|
|
41
|
+
2. **Описание каждого носителя предупреждает** прямым текстом, что ответ содержит персональные
|
|
42
|
+
данные и сохранится в транскрипте хоста. Модель читает описания и передаёт это человеку.
|
|
43
|
+
3. **Проверено, что мост не пишет эти данные в собственный лог**: наружу идёт только метод,
|
|
44
|
+
путь и код ответа.
|
|
45
|
+
|
|
46
|
+
## Что НЕ сделано и почему это решение владельца
|
|
47
|
+
|
|
48
|
+
Ограничить саму передачу можно тремя способами, и они несовместимы по цене:
|
|
49
|
+
|
|
50
|
+
- **Обезличивать на стороне сервера.** Защищает сильнее всех, но ломает работу: по
|
|
51
|
+
обезличенному перечню волны некому написать, а это назначение инструмента. Часть смысла
|
|
52
|
+
теряют и разборы диалогов.
|
|
53
|
+
- **Отдельная область доступа у ключа** (например `read:customer-data`). Передача становится
|
|
54
|
+
осознанным действием того, кто выпускает ключ, и видна в аудите. ⚠️ **Цена: в день включения
|
|
55
|
+
все существующие ключи теряют доступ к пяти инструментам**, пока область не выдадут заново.
|
|
56
|
+
- **Согласие владельца воркспейса, записанное один раз.** Ничего не ломает и ничего не
|
|
57
|
+
ограничивает: фиксирует, что передача согласована.
|
|
58
|
+
|
|
59
|
+
Выбор — не инженерный: он про обязательства перед клиентами школ и про то, чей это риск.
|
|
60
|
+
Поэтому политика не выбрана в коде, а вынесена владельцу; объявленная пометка делает любой из
|
|
61
|
+
трёх вариантов правкой в одном месте.
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# Повтор ответа на последнее входящее
|
|
2
|
+
|
|
3
|
+
`besales_dialogue_reprocess_last_inbound` заново запускает ответ бота на сохранённое последнее
|
|
4
|
+
сообщение клиента. Нового входящего в истории не появляется. Клиент получит настоящее сообщение;
|
|
5
|
+
генерация ответа расходует квоту. Нужен администратор с правом управления каналом и явное «да» человека.
|
|
6
|
+
|
|
7
|
+
Перед вызовом покажи человеку выбранные диалоги и последствие: бот ответит каждому клиенту.
|
|
8
|
+
После подтверждения передай `conversation_ids` — от одного до 50 UUID без дублей — и
|
|
9
|
+
`explicit_confirmation: true`. Поле `workspace_id` выбирает подключение по обычным правилам моста.
|
|
10
|
+
Без подтверждения, при дублях, невалидном UUID или превышении лимита ни один запрос не отправляется.
|
|
11
|
+
|
|
12
|
+
Не применяй, если клиент уже видел ответ, бот заглушён или ход идёт. Сервер проверяет эти условия,
|
|
13
|
+
а также более новое входящее, отказ клиента, закрытое окно переписки и остальные ограничения кнопки.
|
|
14
|
+
Инструмент вызывает тот же `POST /conversations/:conversationId/reprocess-last-inbound`, сохраняя
|
|
15
|
+
серверные правила допуска, дедупликации и брони. Область `run:conversation-reprocess` входит в `mcp:*`;
|
|
16
|
+
роль человека за ключом проверяется сервером. Личные ключи публичного API и интеграции не допускаются.
|
|
17
|
+
|
|
18
|
+
Запросы идут строго последовательно. В `results` для каждого диалога возвращается:
|
|
19
|
+
|
|
20
|
+
- `ENQUEUED`: исходное `messageId` и уведомление сервера. Это постановка в очередь, не доставка.
|
|
21
|
+
- `REFUSED`: `httpStatus`, `code` и `message` сервера. Отказы одного диалога не скрывают остальные.
|
|
22
|
+
- `UNKNOWN`: исход отправленного запроса неизвестен (таймаут, 5xx или неразобранное подтверждение).
|
|
23
|
+
- `NOT_PROCESSED`: запрос не отправлялся, потому что перед ним получен 429.
|
|
24
|
+
|
|
25
|
+
Сводка `summary` содержит `enqueued`, `refused`, `unknown`, `notProcessed`; сумма равна размеру списка.
|
|
26
|
+
При 429 пакет останавливается без ожидания и автоповтора, доступный срок ожидания возвращается как
|
|
27
|
+
`retryAfterSeconds`. Не повторяй весь пакет: уже принятые диалоги остаются принятыми.
|
|
28
|
+
|
|
29
|
+
При `UNKNOWN` сначала найди квитанцию или статус хода и проверь переписку через
|
|
30
|
+
`besales_dialogue_transcript`. Отсутствие ответа в истории сразу после вызова не доказывает,
|
|
31
|
+
что постановка не состоялась. Отдельного маршрута receipt у этой операции нет; до выяснения
|
|
32
|
+
исхода не повторяй мутацию автоматически. Результат пакета не усекать.
|
|
33
|
+
При отказе по размеру передавай меньше `conversation_ids` в следующих вызовах; уже отправленный пакет не повторяй, сначала проверь квитанции, статус хода и переписку.
|
|
34
|
+
|
|
35
|
+
Версия пакета остаётся предварительной. Выпуск — после выкладки API и серверной проверки,
|
|
36
|
+
по решению владельца и правилам [RELEASING.md](../RELEASING.md). Подписанную выгрузку маршрутов
|
|
37
|
+
перевыпускают из чистого коммита моста; локальный диагностический экспорт её не заменяет.
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
# Versions of settings forms
|
|
2
|
+
|
|
3
|
+
Keep the version returned with the original form until the person decides to save
|
|
4
|
+
that form. The tools below accept an optional `expected_version`. Omitting it
|
|
5
|
+
preserves the existing API behavior; passing it protects the original snapshot.
|
|
6
|
+
|
|
7
|
+
| Tool | Version sent to the API |
|
|
8
|
+
| ----------------------------------- | ---------------------------------------------------------------------------------------------------------------------- |
|
|
9
|
+
| `besales_followup_step_message_set` | Sequence revision in `expectedVersion`; `expected_content` remains required |
|
|
10
|
+
| `besales_router_update` | Routing token in `expectedVersion` |
|
|
11
|
+
| `besales_routing_rule_upsert` | Routing token in `expectedVersion`, for create and update |
|
|
12
|
+
| `besales_behavior_update` | Routing token in `expectedVersion` |
|
|
13
|
+
| `besales_pipeline_settings_update` | Routing token in `expectedVersion` |
|
|
14
|
+
| `besales_platform_settings_update` | Routing token in `expectedVersion` |
|
|
15
|
+
| `besales_platform_pipeline_link` | Routing token in `expectedVersion` |
|
|
16
|
+
| `besales_platform_pipeline_unlink` | Routing token in a strong `If-Match` header |
|
|
17
|
+
| `besales_variable_update` | Variable UUID in `expectedVersion`, for CHANNEL and WORKSPACE |
|
|
18
|
+
| `besales_variable_delete` | Variable UUID in a strong `If-Match` header, for CHANNEL and WORKSPACE |
|
|
19
|
+
| `besales_agent_update` | Settings UUID in `expectedVersion`; optional `expected_routing_version` is sent separately as `expectedRoutingVersion` |
|
|
20
|
+
| `besales_agent_facts_set` | Facts UUID in `expectedVersion`, independent of settings and Routing |
|
|
21
|
+
|
|
22
|
+
The original required arguments, deletion confirmations, null resets and false
|
|
23
|
+
values retain their meaning. `If-Match` and the idempotency key are independent;
|
|
24
|
+
the HTTP client quotes the original version without substituting a newly read
|
|
25
|
+
token. The bridge does not expose arbitrary HTTP headers to tool arguments.
|
|
26
|
+
|
|
27
|
+
After a 409, preserve the person's input, read the current state for comparison
|
|
28
|
+
and wait for an explicit human decision. Do not automatically repeat the old
|
|
29
|
+
change using a new version or new `expected_content`. Conflict instructions are
|
|
30
|
+
available in en, ru, es, id and uz.
|
|
31
|
+
|
|
32
|
+
`src/schemas/mcp-tools.json` is the input registry. The transport regression suite
|
|
33
|
+
executes the real Zod schemas, request builders, dispatcher and HTTP client with
|
|
34
|
+
only the network transport replaced. The API route snapshot must be republished
|
|
35
|
+
from the committed bridge with the project's `publish:mcp-registry` command;
|
|
36
|
+
its completeness baseline remains the shipped ref.
|
|
@@ -9,13 +9,13 @@
|
|
|
9
9
|
в базу или постановки задачи в очередь. Для читающего вызова это не важно — повторить его
|
|
10
10
|
ничего не стоит. Для меняющего важно всё:
|
|
11
11
|
|
|
12
|
-
| Операция
|
|
13
|
-
|
|
14
|
-
| создание канала, агента, переменной | второй экземпляр, который никто не заказывал
|
|
15
|
-
| перевыпуск ключа партнёра
|
|
16
|
-
| импорт и запуск волны
|
|
17
|
-
| раскатка правки промптов
|
|
18
|
-
| всё, что тратит модель или квоту
|
|
12
|
+
| Операция | Что делает повтор после неизвестного исхода |
|
|
13
|
+
| ----------------------------------- | ------------------------------------------------- |
|
|
14
|
+
| создание канала, агента, переменной | второй экземпляр, который никто не заказывал |
|
|
15
|
+
| перевыпуск ключа партнёра | отзывает ключ, который партнёр только что получил |
|
|
16
|
+
| импорт и запуск волны | отправляет сообщения людям второй раз |
|
|
17
|
+
| раскатка правки промптов | применяет правки к уже пропатченному тексту |
|
|
18
|
+
| всё, что тратит модель или квоту | платит второй раз |
|
|
19
19
|
|
|
20
20
|
## Как это выражено
|
|
21
21
|
|
|
@@ -26,8 +26,16 @@
|
|
|
26
26
|
⚠️ **Идемпотентность объявляется явно, умолчание — худшее.** Правило «все `*_upsert`
|
|
27
27
|
идемпотентны» неверно: без идентификатора они уходят в создание.
|
|
28
28
|
|
|
29
|
-
|
|
30
|
-
|
|
29
|
+
Для обычных 4xx сервер отверг текущий запрос. Но отказ приёма результата длинной операции не доказывает, что прежняя работа не оплачена. Мост сначала читает известную операцию промптового семейства через `/llm-operations/:operationId`. Только при COMPLETED с живым результатом он повторяет тот же submit: сервер сверяет тело и возвращает сохранённый успех без исполнения. Другое тело получает 409; незавершённая, скрытая, отредактированная строка или недоступное чтение не повторяют submit.
|
|
30
|
+
|
|
31
|
+
На 410 платного инструмента (`sideEffect=spend` или объявлен `restartToolName`) текст предупреждает о возможной оплате без сохранённого результата и отдельной цене нового запуска. Подсказка требует сообщить человеку и дождаться его решения; новое задание мост не создаёт. Семейства, которым промптовое чтение недоступно, получают это предупреждение без запроса чужого семейства.
|
|
32
|
+
|
|
33
|
+
На 410 бесплатного инструмента мост сохраняет причину из ответа API, например истечение срока черновика, и предлагает продолжить по указанию ответа. Если причины нет, даёт нейтральное сообщение о недоступной ссылке, токене или предварительном просмотре. Предупреждения об оплате в этой ветке нет.
|
|
34
|
+
|
|
35
|
+
409 при сохранении настроек с исходной версией требует сохранить ввод и дождаться
|
|
36
|
+
явного решения человека после сравнения со свежим снимком. Мост не подменяет версию
|
|
37
|
+
и не повторяет прежнюю правку автоматически. Поля всех таких инструментов и
|
|
38
|
+
независимые версии настроек, фактов и Routing описаны в [протоколе версий](edit-versions.md).
|
|
31
39
|
|
|
32
40
|
## Чем свериться — выводится, а не перечисляется
|
|
33
41
|
|
package/docs/help-navigation.md
CHANGED
|
@@ -1,48 +1,21 @@
|
|
|
1
1
|
# Навигация по справке Besales MCP
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Некоторые MCP-хосты показывают модели tools, но не передают resources. Поэтому справка доступна
|
|
4
|
+
двумя равноправными путями: по URI `besales://...` и через `besales_help_search` /
|
|
5
|
+
`besales_help_get`, которые читают те же файлы пакета.
|
|
4
6
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
+
`besales_help_search({query})` принимает обычную русскую или английскую формулировку. Синонимы
|
|
8
|
+
связывают «дожим» с follow-up, «волна» с broadcast, «бот молчит» с silence/handoff. Ответ отдельно
|
|
9
|
+
возвращает операции (`operations`) и документы (`results`); у операции есть `score` и `matchedBy`
|
|
10
|
+
для совпадения по имени или пользовательскому намерению.
|
|
7
11
|
|
|
8
|
-
|
|
9
|
-
|
|
12
|
+
Каждый активный инструмент получает короткую русскую формулировку намерения в описании из
|
|
13
|
+
`tools/list`. Английская часть сохраняется для совместимости и поиска. Поэтому создание агента,
|
|
14
|
+
изменение маршрутизации, запуск GetCourse-волны и финализация промпта находятся обычным русским
|
|
15
|
+
запросом без знания технического имени.
|
|
10
16
|
|
|
11
|
-
|
|
12
|
-
|
|
17
|
+
`besales_help_get({uri})` возвращает индекс. Параметр `section` отдаёт один раздел, `full=true` —
|
|
18
|
+
весь документ. Ответы содержат version/source/complete; неоднозначный раздел не выбирается молча.
|
|
13
19
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
`besales_help_search({query})` принимает обычную русскую или английскую формулировку. Встроенные
|
|
17
|
-
синонимы связывают лексику пользователя и продукта: «дожим» с follow-up, «волна» с broadcast,
|
|
18
|
-
«бот молчит» с silence/handoff. Ответ разделяет найденные операции (`operations`) и документы
|
|
19
|
-
(`results`). Для операции также возвращаются `score` и `matchedBy`: совпадение по имени или по
|
|
20
|
-
пользовательскому намерению.
|
|
21
|
-
|
|
22
|
-
Все активные инструменты получают короткую русскую формулировку намерения в описании, которое
|
|
23
|
-
публикуется через `tools/list`. Английская часть сохраняется для существующих клиентов и поиска.
|
|
24
|
-
Так модель может найти создание агента, изменение маршрутизации, запуск GetCourse-волны или
|
|
25
|
-
финализацию промпта по обычному русскому запросу без знания технического имени инструмента.
|
|
26
|
-
|
|
27
|
-
Поиск не вызывает API и не читает данные workspace. Если результатов нет, нужно уточнить объект
|
|
28
|
-
или цель, а не угадывать имя инструмента.
|
|
29
|
-
|
|
30
|
-
## Точечное и полное чтение
|
|
31
|
-
|
|
32
|
-
`besales_help_get({uri})` возвращает индекс заголовков. Затем можно запросить один раздел через
|
|
33
|
-
`section` или весь документ через `full=true`. Неоднозначный фрагмент заголовка возвращает список
|
|
34
|
-
кандидатов; отсутствующий раздел возвращает `found=false`.
|
|
35
|
-
|
|
36
|
-
Полная версия остаётся доступной, но для небольшой операции лучше читать один релевантный раздел.
|
|
37
|
-
Содержимое resource и tool-ответа берётся из одного файла, поэтому две копии документа не
|
|
38
|
-
расходятся.
|
|
39
|
-
|
|
40
|
-
## Проверка
|
|
41
|
-
|
|
42
|
-
- `src/tools/definitions/help.spec.ts` проверяет паритет русских и английских намерений, индекс,
|
|
43
|
-
раздел и полное чтение.
|
|
44
|
-
- `src/tools/description-localization.spec.ts` не допускает активный инструмент без русской
|
|
45
|
-
формулировки в опубликованном описании.
|
|
46
|
-
- `src/resources/registry.spec.ts` проверяет ссылки на реальные инструменты во всех resources и
|
|
47
|
-
коротких server instructions.
|
|
48
|
-
- `src/server.spec.ts` проверяет публикацию server instructions через MCP initialize.
|
|
20
|
+
Проверки: `src/tools/definitions/help.spec.ts`, `src/tools/description-localization.spec.ts`,
|
|
21
|
+
`src/resources/registry.spec.ts` и `src/server.spec.ts`.
|