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