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