@besales/mcp 0.48.0 → 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 -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 +9902 -4734
- 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 -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 +28 -41
- package/dist/tools/definitions/crm-platform.js +235 -368
- 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 -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 +180 -254
- 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 +686 -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 +396 -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 +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 +1089 -636
- 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 +105875 -22205
- 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 -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,30 +1,22 @@
|
|
|
1
|
-
import type { paths } from '../types/api-contract.gen.js';
|
|
2
|
-
/** Union допустимых строк `scope` из OpenAPI-контракта `/api/v2/auth/mcp-connect`. */
|
|
3
|
-
type ContractConnectScope = paths['/api/v2/auth/mcp-connect']['get']['parameters']['query']['scope'];
|
|
4
1
|
export declare const DEFAULT_API_BASE_URL = "https://core.besales.ai/api/v2";
|
|
5
|
-
|
|
2
|
+
/**
|
|
3
|
+
* Страница подключения живёт на самом API (вход, выбор рабочей области, согласие), а не во
|
|
4
|
+
* фронтенде: адрес выводится из адреса API, чтобы переопределённый API не отправлял человека на
|
|
5
|
+
* чужую страницу согласия.
|
|
6
|
+
*/
|
|
7
|
+
export declare const OAUTH_AUTHORIZE_PATH = "/auth/mcp-connect/start";
|
|
8
|
+
export declare const DEFAULT_OAUTH_AUTHORIZE_URL = "https://core.besales.ai/api/v2/auth/mcp-connect/start";
|
|
6
9
|
export declare const OAUTH_CALLBACK_HOST = "127.0.0.1";
|
|
7
10
|
export declare const OAUTH_CALLBACK_PATH = "/oauth-callback";
|
|
8
11
|
/**
|
|
9
|
-
* Права, которые `besales-mcp connect`
|
|
10
|
-
* (совпадает с `MCP_OPTIONAL_CONNECT_SCOPES` бэкенда и `OPTIONAL_OAUTH_SCOPES` фронта).
|
|
11
|
-
*
|
|
12
|
-
* ⚠️ ИНВАРИАНТ: новый scope ДОБАВЛЯЕТСЯ в конец. Существующие не удаляются — набор
|
|
13
|
-
* только растёт. Раньше это была плоская строка, и добавление `mcp:funnel-test`
|
|
14
|
-
* ПЕРЕПИСАЛО её вместе с `read:campaigns` + `launch:campaigns`: каждый реконнект молча
|
|
15
|
-
* выпускал ключ уже предыдущего, connect отрабатывал успешно, а потеря всплывала позже
|
|
16
|
-
* как 403 одного тула (`besales_getcourse_cold_welcome_preview`, 2026-08-19).
|
|
12
|
+
* Права, которые `besales-mcp connect` запрашивает, в каноническом порядке отгруженного моста.
|
|
17
13
|
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
14
|
+
* ⚠️ ИНВАРИАНТ: набор только растёт — новое право добавляется, существующие не удаляются. Сужение
|
|
15
|
+
* здесь не ломает connect: обмен проходит, а потеря всплывает позже как 403 одного инструмента.
|
|
16
|
+
* Форма `СПИСОК.join(' ')` — та, которую разбирает сторож отгружаемого набора прав.
|
|
20
17
|
*/
|
|
21
18
|
export declare const MCP_OAUTH_SCOPES: readonly ["mcp:*", "mcp:platform-setup", "mcp:funnel-test", "read:campaigns", "launch:campaigns", "read:contacts", "write:operators"];
|
|
22
|
-
|
|
23
|
-
* Строка `scope` запроса согласия. Аннотация типом из OpenAPI не косметическая: если клиент
|
|
24
|
-
* начнёт просить комбинацию, которой бэкенд не принимает, падает КОМПИЛЯЦИЯ (`yarn build`),
|
|
25
|
-
* а не боевой `connect` с невнятным 400 у пользователя.
|
|
26
|
-
*/
|
|
27
|
-
export declare const OAUTH_SCOPE: ContractConnectScope;
|
|
19
|
+
export declare const OAUTH_SCOPE: string;
|
|
28
20
|
export declare const OAUTH_TIMEOUT_MS: number;
|
|
29
21
|
export declare const TOKEN_EXCHANGE_TIMEOUT_MS: number;
|
|
30
22
|
export interface OAuthConnectResult {
|
|
@@ -32,13 +24,14 @@ export interface OAuthConnectResult {
|
|
|
32
24
|
readonly workspaceId: string;
|
|
33
25
|
readonly workspaceName?: string;
|
|
34
26
|
readonly accountLabel?: string | null;
|
|
35
|
-
|
|
36
|
-
readonly scopes: readonly string[];
|
|
27
|
+
readonly scopes?: readonly string[];
|
|
37
28
|
/**
|
|
38
|
-
*
|
|
39
|
-
* тихое сужение: connect прошёл, но часть
|
|
29
|
+
* Права заменяемого ключа того же человека в этой рабочей области, которых новый ключ не несёт.
|
|
30
|
+
* Непустой список — тихое сужение: connect прошёл, но часть инструментов будет отвечать 403.
|
|
40
31
|
*/
|
|
41
|
-
readonly droppedScopes
|
|
32
|
+
readonly droppedScopes?: readonly string[];
|
|
33
|
+
/** Запрошенные права, которые роль согласившегося в рабочей области не позволяет. */
|
|
34
|
+
readonly notGrantedScopes?: readonly string[];
|
|
42
35
|
}
|
|
43
36
|
export interface AuthorizationCodeExchange {
|
|
44
37
|
readonly code: string;
|
|
@@ -61,9 +54,10 @@ export declare function generateCodeVerifier(): string;
|
|
|
61
54
|
export declare function createCodeChallenge(codeVerifier: string): string;
|
|
62
55
|
export declare function generateState(): string;
|
|
63
56
|
export declare function normalizeApiBaseUrl(apiBaseUrl?: string): string;
|
|
64
|
-
export declare function normalizeOauthAuthorizeUrl(oauthAuthorizeUrl?: string): string;
|
|
57
|
+
export declare function normalizeOauthAuthorizeUrl(oauthAuthorizeUrl?: string, apiBaseUrl?: string): string;
|
|
65
58
|
export declare function createAuthorizationUrl(input: {
|
|
66
59
|
readonly oauthAuthorizeUrl?: string;
|
|
60
|
+
readonly apiBaseUrl?: string;
|
|
67
61
|
readonly state: string;
|
|
68
62
|
readonly redirectUri: string;
|
|
69
63
|
readonly codeChallenge: string;
|
|
@@ -95,4 +89,3 @@ export declare class OauthClient {
|
|
|
95
89
|
}
|
|
96
90
|
/** Парсит token response с backward compatibility для API без label-полей. */
|
|
97
91
|
export declare function parseTokenExchangeResponse(data: unknown): OAuthConnectResult;
|
|
98
|
-
export {};
|
|
@@ -4,21 +4,21 @@ import axios from 'axios';
|
|
|
4
4
|
import open from 'open';
|
|
5
5
|
import { logger } from '../utils/logger.js';
|
|
6
6
|
export const DEFAULT_API_BASE_URL = 'https://core.besales.ai/api/v2';
|
|
7
|
-
|
|
7
|
+
/**
|
|
8
|
+
* Страница подключения живёт на самом API (вход, выбор рабочей области, согласие), а не во
|
|
9
|
+
* фронтенде: адрес выводится из адреса API, чтобы переопределённый API не отправлял человека на
|
|
10
|
+
* чужую страницу согласия.
|
|
11
|
+
*/
|
|
12
|
+
export const OAUTH_AUTHORIZE_PATH = '/auth/mcp-connect/start';
|
|
13
|
+
export const DEFAULT_OAUTH_AUTHORIZE_URL = `${DEFAULT_API_BASE_URL}${OAUTH_AUTHORIZE_PATH}`;
|
|
8
14
|
export const OAUTH_CALLBACK_HOST = '127.0.0.1';
|
|
9
15
|
export const OAUTH_CALLBACK_PATH = '/oauth-callback';
|
|
10
16
|
/**
|
|
11
|
-
* Права, которые `besales-mcp connect`
|
|
12
|
-
* (совпадает с `MCP_OPTIONAL_CONNECT_SCOPES` бэкенда и `OPTIONAL_OAUTH_SCOPES` фронта).
|
|
17
|
+
* Права, которые `besales-mcp connect` запрашивает, в каноническом порядке отгруженного моста.
|
|
13
18
|
*
|
|
14
|
-
* ⚠️ ИНВАРИАНТ:
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
* выпускал ключ уже предыдущего, connect отрабатывал успешно, а потеря всплывала позже
|
|
18
|
-
* как 403 одного тула (`besales_getcourse_cold_welcome_preview`, 2026-08-19).
|
|
19
|
-
*
|
|
20
|
-
* Сужение теперь не только запрещено правилом: `connect` сверяет выданный набор с набором
|
|
21
|
-
* заменяемого ключа (`droppedScopes` в ответе `/auth/mcp-token`) и печатает потерю.
|
|
19
|
+
* ⚠️ ИНВАРИАНТ: набор только растёт — новое право добавляется, существующие не удаляются. Сужение
|
|
20
|
+
* здесь не ломает connect: обмен проходит, а потеря всплывает позже как 403 одного инструмента.
|
|
21
|
+
* Форма `СПИСОК.join(' ')` — та, которую разбирает сторож отгружаемого набора прав.
|
|
22
22
|
*/
|
|
23
23
|
export const MCP_OAUTH_SCOPES = [
|
|
24
24
|
'mcp:*',
|
|
@@ -29,11 +29,6 @@ export const MCP_OAUTH_SCOPES = [
|
|
|
29
29
|
'read:contacts',
|
|
30
30
|
'write:operators',
|
|
31
31
|
];
|
|
32
|
-
/**
|
|
33
|
-
* Строка `scope` запроса согласия. Аннотация типом из OpenAPI не косметическая: если клиент
|
|
34
|
-
* начнёт просить комбинацию, которой бэкенд не принимает, падает КОМПИЛЯЦИЯ (`yarn build`),
|
|
35
|
-
* а не боевой `connect` с невнятным 400 у пользователя.
|
|
36
|
-
*/
|
|
37
32
|
export const OAUTH_SCOPE = MCP_OAUTH_SCOPES.join(' ');
|
|
38
33
|
export const OAUTH_TIMEOUT_MS = 5 * 60 * 1000;
|
|
39
34
|
export const TOKEN_EXCHANGE_TIMEOUT_MS = 30 * 1000;
|
|
@@ -49,13 +44,13 @@ export function generateState() {
|
|
|
49
44
|
export function normalizeApiBaseUrl(apiBaseUrl) {
|
|
50
45
|
return (apiBaseUrl ?? process.env.BESALES_API_BASE_URL ?? DEFAULT_API_BASE_URL).replace(/\/+$/, '');
|
|
51
46
|
}
|
|
52
|
-
export function normalizeOauthAuthorizeUrl(oauthAuthorizeUrl) {
|
|
47
|
+
export function normalizeOauthAuthorizeUrl(oauthAuthorizeUrl, apiBaseUrl) {
|
|
53
48
|
return (oauthAuthorizeUrl ??
|
|
54
49
|
process.env.BESALES_OAUTH_AUTHORIZE_URL ??
|
|
55
|
-
|
|
50
|
+
`${normalizeApiBaseUrl(apiBaseUrl)}${OAUTH_AUTHORIZE_PATH}`).replace(/\/+$/, '');
|
|
56
51
|
}
|
|
57
52
|
export function createAuthorizationUrl(input) {
|
|
58
|
-
const url = new URL(normalizeOauthAuthorizeUrl(input.oauthAuthorizeUrl));
|
|
53
|
+
const url = new URL(normalizeOauthAuthorizeUrl(input.oauthAuthorizeUrl, input.apiBaseUrl));
|
|
59
54
|
url.searchParams.set('state', input.state);
|
|
60
55
|
url.searchParams.set('redirect_uri', input.redirectUri);
|
|
61
56
|
url.searchParams.set('code_challenge', input.codeChallenge);
|
|
@@ -71,8 +66,8 @@ export class OauthClient {
|
|
|
71
66
|
exchange;
|
|
72
67
|
timeoutMs;
|
|
73
68
|
constructor(options = {}) {
|
|
74
|
-
this.oauthAuthorizeUrl = normalizeOauthAuthorizeUrl(options.oauthAuthorizeUrl);
|
|
75
69
|
this.apiBaseUrl = normalizeApiBaseUrl(options.apiBaseUrl);
|
|
70
|
+
this.oauthAuthorizeUrl = normalizeOauthAuthorizeUrl(options.oauthAuthorizeUrl, this.apiBaseUrl);
|
|
76
71
|
this.openUrl = options.openUrl ?? ((url) => open(url));
|
|
77
72
|
this.onAuthorizationUrl = options.onAuthorizationUrl;
|
|
78
73
|
this.exchange =
|
|
@@ -189,6 +184,16 @@ export class OauthClient {
|
|
|
189
184
|
rejectCallback(400, 'Invalid state parameter', 'OAuth state mismatch', response);
|
|
190
185
|
return;
|
|
191
186
|
}
|
|
187
|
+
// Сервер вернул отказ вместо кода. `invalid_scope` — сервер не принял запрошенный набор
|
|
188
|
+
// прав: это старый или испорченный клиент, а не протухшая ссылка, и совет — обновиться.
|
|
189
|
+
const authorizationError = requestUrl.searchParams.get('error');
|
|
190
|
+
if (authorizationError !== null) {
|
|
191
|
+
rejectCallback(400, 'Connection was refused by the server', authorizationError === 'invalid_scope'
|
|
192
|
+
? 'The server did not accept the permissions this client requests (invalid_scope). ' +
|
|
193
|
+
'Update the client (npx -y @besales/mcp@latest) and run `besales-mcp connect` again.'
|
|
194
|
+
: `OAuth authorization failed (${authorizationError})`, response);
|
|
195
|
+
return;
|
|
196
|
+
}
|
|
192
197
|
const code = requestUrl.searchParams.get('code');
|
|
193
198
|
if (!code) {
|
|
194
199
|
rejectCallback(400, 'Missing authorization code', 'OAuth callback missing authorization code', response);
|
|
@@ -269,10 +274,13 @@ export function parseTokenExchangeResponse(data) {
|
|
|
269
274
|
accountLabel: typeof payload.account_label === 'string' || payload.account_label === null
|
|
270
275
|
? payload.account_label
|
|
271
276
|
: undefined,
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
277
|
+
scopes: Array.isArray(payload.scopes) && payload.scopes.every((scope) => typeof scope === 'string')
|
|
278
|
+
? payload.scopes
|
|
279
|
+
: undefined,
|
|
280
|
+
// Поля появились позже самого обмена: сервер старше клиента их не пришлёт — это не повод
|
|
281
|
+
// рушить connect, просто разбора прав не будет.
|
|
275
282
|
droppedScopes: toStringArray(payload.dropped_scopes),
|
|
283
|
+
notGrantedScopes: toStringArray(payload.not_granted_scopes),
|
|
276
284
|
};
|
|
277
285
|
}
|
|
278
286
|
function toStringArray(value) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oauth-client.js","sourceRoot":"","sources":["../../src/auth/oauth-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,EAAE,YAAY,EAAuB,MAAM,WAAW,CAAC;AAG9D,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,IAAI,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"oauth-client.js","sourceRoot":"","sources":["../../src/auth/oauth-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { AsyncLocalStorage } from 'node:async_hooks';
|
|
1
2
|
/**
|
|
2
3
|
* In-memory, per-process workspace override для текущей MCP-сессии.
|
|
3
4
|
*
|
|
@@ -11,10 +12,18 @@
|
|
|
11
12
|
* одна Claude-сессия = один воркспейс, без env-переменных и без отдельных папок.
|
|
12
13
|
*/
|
|
13
14
|
let sessionWorkspaceId;
|
|
15
|
+
// HTTP-вызовы получают неизменяемую область в собственном асинхронном контексте.
|
|
16
|
+
const networkWorkspace = new AsyncLocalStorage();
|
|
17
|
+
export function withSessionWorkspace(workspaceId, run) {
|
|
18
|
+
return workspaceId === undefined ? run() : networkWorkspace.run(workspaceId, run);
|
|
19
|
+
}
|
|
14
20
|
export function getSessionWorkspaceId() {
|
|
15
|
-
return sessionWorkspaceId;
|
|
21
|
+
return networkWorkspace.getStore() ?? sessionWorkspaceId;
|
|
16
22
|
}
|
|
17
23
|
export function setSessionWorkspaceId(workspaceId) {
|
|
24
|
+
if (networkWorkspace.getStore() !== undefined) {
|
|
25
|
+
throw new Error('HTTP workspace is fixed by the Authorization key; workspace switching is unavailable.');
|
|
26
|
+
}
|
|
18
27
|
sessionWorkspaceId = workspaceId;
|
|
19
28
|
}
|
|
20
29
|
//# sourceMappingURL=session-workspace.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-workspace.js","sourceRoot":"","sources":["../../src/auth/session-workspace.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,IAAI,kBAAsC,CAAC;
|
|
1
|
+
{"version":3,"file":"session-workspace.js","sourceRoot":"","sources":["../../src/auth/session-workspace.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAErD;;;;;;;;;;;GAWG;AACH,IAAI,kBAAsC,CAAC;AAC3C,iFAAiF;AACjF,MAAM,gBAAgB,GAAG,IAAI,iBAAiB,EAAU,CAAC;AAEzD,MAAM,UAAU,oBAAoB,CAAI,WAA+B,EAAE,GAAY;IACnF,OAAO,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,GAAG,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;AACpF,CAAC;AAED,MAAM,UAAU,qBAAqB;IACnC,OAAO,gBAAgB,CAAC,QAAQ,EAAE,IAAI,kBAAkB,CAAC;AAC3D,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,WAA+B;IACnE,IAAI,gBAAgB,CAAC,QAAQ,EAAE,KAAK,SAAS,EAAE,CAAC;QAC9C,MAAM,IAAI,KAAK,CAAC,uFAAuF,CAAC,CAAC;IAC3G,CAAC;IACD,kBAAkB,GAAG,WAAW,CAAC;AACnC,CAAC"}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import keytar from 'keytar';
|
|
2
1
|
export const TOKEN_STORAGE_SERVICE = '@besales/mcp';
|
|
3
2
|
// Legacy single-workspace accounts (до мульти-воркспейс). Сохранены только для
|
|
4
3
|
// одноразовой миграции в новую схему — см. ConnectionStore.migrateLegacy().
|
|
@@ -6,15 +5,19 @@ export const LEGACY_API_KEY_ACCOUNT = 'api_key';
|
|
|
6
5
|
export const LEGACY_WORKSPACE_ID_ACCOUNT = 'workspace_id';
|
|
7
6
|
export class TokenStorage {
|
|
8
7
|
async set(account, value) {
|
|
8
|
+
const { default: keytar } = await import('keytar');
|
|
9
9
|
await keytar.setPassword(TOKEN_STORAGE_SERVICE, account, value);
|
|
10
10
|
}
|
|
11
11
|
async get(account) {
|
|
12
|
+
const { default: keytar } = await import('keytar');
|
|
12
13
|
return keytar.getPassword(TOKEN_STORAGE_SERVICE, account);
|
|
13
14
|
}
|
|
14
15
|
async delete(account) {
|
|
16
|
+
const { default: keytar } = await import('keytar');
|
|
15
17
|
await keytar.deletePassword(TOKEN_STORAGE_SERVICE, account);
|
|
16
18
|
}
|
|
17
19
|
async accounts() {
|
|
20
|
+
const { default: keytar } = await import('keytar');
|
|
18
21
|
const credentials = await keytar.findCredentials(TOKEN_STORAGE_SERVICE);
|
|
19
22
|
return credentials.map(({ account }) => account);
|
|
20
23
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"token-storage.js","sourceRoot":"","sources":["../../src/auth/token-storage.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"token-storage.js","sourceRoot":"","sources":["../../src/auth/token-storage.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,qBAAqB,GAAG,cAAc,CAAC;AAEpD,+EAA+E;AAC/E,4EAA4E;AAC5E,MAAM,CAAC,MAAM,sBAAsB,GAAG,SAAS,CAAC;AAChD,MAAM,CAAC,MAAM,2BAA2B,GAAG,cAAc,CAAC;AAe1D,MAAM,OAAO,YAAY;IACvB,KAAK,CAAC,GAAG,CAAC,OAAe,EAAE,KAAa;QACtC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC;QACnD,MAAM,MAAM,CAAC,WAAW,CAAC,qBAAqB,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;IAClE,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,OAAe;QACvB,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC;QACnD,OAAO,MAAM,CAAC,WAAW,CAAC,qBAAqB,EAAE,OAAO,CAAC,CAAC;IAC5D,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,OAAe;QAC1B,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC;QACnD,MAAM,MAAM,CAAC,cAAc,CAAC,qBAAqB,EAAE,OAAO,CAAC,CAAC;IAC9D,CAAC;IAED,KAAK,CAAC,QAAQ;QACZ,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC;QACnD,MAAM,WAAW,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,qBAAqB,CAAC,CAAC;QACxE,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC;IACnD,CAAC;CACF"}
|
package/dist/cli.d.ts
CHANGED
|
@@ -5,6 +5,7 @@ import { type InstallSkillOptions } from './skills/install-skill.js';
|
|
|
5
5
|
export interface CliIo {
|
|
6
6
|
readonly log: (message: string) => void;
|
|
7
7
|
readonly error: (message: string) => void;
|
|
8
|
+
readonly stdoutIsTTY?: boolean;
|
|
8
9
|
}
|
|
9
10
|
export interface OAuthConnector {
|
|
10
11
|
connect(): Promise<OAuthConnectResult>;
|
package/dist/cli.js
CHANGED
|
@@ -5,19 +5,22 @@ import { startMcpServer } from './server.js';
|
|
|
5
5
|
import { installCodexSkill } from './skills/install-skill.js';
|
|
6
6
|
import { maskApiKey } from './utils/mask.js';
|
|
7
7
|
const defaultIo = {
|
|
8
|
-
log: (message) =>
|
|
9
|
-
error: (message) =>
|
|
8
|
+
log: (message) => { process.stdout.write(`${message}\n`); },
|
|
9
|
+
error: (message) => { process.stderr.write(`${message}\n`); },
|
|
10
|
+
get stdoutIsTTY() { return process.stdout.isTTY === true; },
|
|
10
11
|
};
|
|
11
12
|
const STORAGE_COMMANDS = new Set(['connect', 'connections', 'use', 'disconnect', 'status']);
|
|
13
|
+
const KEY_WARNING = 'Это секрет: не вставляйте его в чат и не сохраняйте в файлах, кроме настроек клиента.';
|
|
12
14
|
export function getHelpText(version = readPackageVersion()) {
|
|
13
15
|
return `besales-mcp ${version}
|
|
14
16
|
|
|
15
17
|
Usage:
|
|
16
18
|
besales-mcp Start MCP server
|
|
17
|
-
besales-mcp connect Connect (or refresh)
|
|
18
|
-
besales-mcp connections
|
|
19
|
-
besales-mcp
|
|
20
|
-
besales-mcp
|
|
19
|
+
besales-mcp connect Connect (or refresh) a Besales workspace
|
|
20
|
+
besales-mcp connections [--json] List connected workspaces
|
|
21
|
+
besales-mcp key [workspace-id] Read a workspace key (stdout contains only the secret)
|
|
22
|
+
besales-mcp use <workspaceId> Mark a workspace active (CLI default; tools require an explicit choice)
|
|
23
|
+
besales-mcp status Show the active workspace and connections
|
|
21
24
|
besales-mcp disconnect Disconnect the active workspace
|
|
22
25
|
besales-mcp disconnect <id> Disconnect one workspace
|
|
23
26
|
besales-mcp disconnect --all Disconnect every workspace
|
|
@@ -32,6 +35,15 @@ config; it overrides the global active workspace set by \`use\`.`;
|
|
|
32
35
|
}
|
|
33
36
|
export async function runCli(argv = process.argv.slice(2), io = defaultIo, deps = {}) {
|
|
34
37
|
const command = argv[0];
|
|
38
|
+
const store = deps.store ?? new ConnectionStore();
|
|
39
|
+
// Выдача секрета только читает хранилище, без миграции и обновления подписей.
|
|
40
|
+
if (command === 'key') {
|
|
41
|
+
if (argv.length > 2) {
|
|
42
|
+
io.error('Использование: besales-mcp key [workspace-id]');
|
|
43
|
+
return 1;
|
|
44
|
+
}
|
|
45
|
+
return keyCommand(argv[1], io, store);
|
|
46
|
+
}
|
|
35
47
|
const oauthClient = deps.oauthClient ??
|
|
36
48
|
new OauthClient({
|
|
37
49
|
onAuthorizationUrl: (url) => {
|
|
@@ -41,7 +53,6 @@ export async function runCli(argv = process.argv.slice(2), io = defaultIo, deps
|
|
|
41
53
|
io.log('Waiting for you to finish in the browser (up to 5 minutes)…');
|
|
42
54
|
},
|
|
43
55
|
});
|
|
44
|
-
const store = deps.store ?? new ConnectionStore();
|
|
45
56
|
const runMcpServer = deps.startMcpServer ?? startMcpServer;
|
|
46
57
|
const runSkillInstaller = deps.installCodexSkill ?? installCodexSkill;
|
|
47
58
|
if (command === '--help' || command === '-h') {
|
|
@@ -63,7 +74,7 @@ export async function runCli(argv = process.argv.slice(2), io = defaultIo, deps
|
|
|
63
74
|
case 'connect':
|
|
64
75
|
return connectCommand(io, oauthClient, store);
|
|
65
76
|
case 'connections':
|
|
66
|
-
return connectionsCommand(io, store);
|
|
77
|
+
return connectionsCommand(io, store, argv.includes('--json'));
|
|
67
78
|
case 'use':
|
|
68
79
|
return useCommand(argv[1], io, store);
|
|
69
80
|
case 'disconnect':
|
|
@@ -80,6 +91,40 @@ export async function runCli(argv = process.argv.slice(2), io = defaultIo, deps
|
|
|
80
91
|
await runMcpServer({ stdio: true });
|
|
81
92
|
return 0;
|
|
82
93
|
}
|
|
94
|
+
async function keyCommand(workspaceId, io, store) {
|
|
95
|
+
try {
|
|
96
|
+
const connections = await store.list({ strict: true });
|
|
97
|
+
const target = workspaceId ?? (process.env.BESALES_WORKSPACE_ID || undefined) ??
|
|
98
|
+
(connections.length === 1 ? connections[0].workspaceId : undefined);
|
|
99
|
+
if (!target) {
|
|
100
|
+
io.error(connections.length === 0
|
|
101
|
+
? 'Нет подключённых рабочих областей. Выполни `besales-mcp connect`.'
|
|
102
|
+
: 'Укажи рабочую область: `besales-mcp key <workspace-id>` или BESALES_WORKSPACE_ID.');
|
|
103
|
+
for (const connection of connections) {
|
|
104
|
+
io.error(` ${connection.workspaceName ?? '(имя неизвестно)'} [${connection.workspaceId}]`);
|
|
105
|
+
}
|
|
106
|
+
return 1;
|
|
107
|
+
}
|
|
108
|
+
if (!connections.some((connection) => connection.workspaceId === target)) {
|
|
109
|
+
io.error('Указанная рабочая область не подключена. Проверь `besales-mcp connections` или выполни `besales-mcp connect`.');
|
|
110
|
+
return 1;
|
|
111
|
+
}
|
|
112
|
+
const key = await store.getKey(target);
|
|
113
|
+
if (!key) {
|
|
114
|
+
io.error('Ключ подключённой рабочей области отсутствует. Выполни `besales-mcp connect` повторно.');
|
|
115
|
+
return 1;
|
|
116
|
+
}
|
|
117
|
+
if (io.stdoutIsTTY)
|
|
118
|
+
io.error(KEY_WARNING);
|
|
119
|
+
io.log(key);
|
|
120
|
+
return 0;
|
|
121
|
+
}
|
|
122
|
+
catch {
|
|
123
|
+
// Исключение хранилища может содержать секрет; не передаём его ни в вывод, ни в журнал.
|
|
124
|
+
io.error('Не удалось прочитать ключ или индекс подключений. Проверь индекс и доступ к связке ключей, затем повтори команду.');
|
|
125
|
+
return 1;
|
|
126
|
+
}
|
|
127
|
+
}
|
|
83
128
|
async function installSkillCommand(name, force, io, installer) {
|
|
84
129
|
if (!name || name === '--force') {
|
|
85
130
|
io.error('Usage: besales-mcp install-skill <name> [--force]');
|
|
@@ -96,7 +141,7 @@ async function installSkillCommand(name, force, io, installer) {
|
|
|
96
141
|
}
|
|
97
142
|
}
|
|
98
143
|
async function connectCommand(io, oauthClient, store) {
|
|
99
|
-
const { apiKey, workspaceId, workspaceName, accountLabel, scopes, droppedScopes } = await oauthClient.connect();
|
|
144
|
+
const { apiKey, workspaceId, workspaceName, accountLabel, scopes, droppedScopes = [], notGrantedScopes = [], } = await oauthClient.connect();
|
|
100
145
|
await store.addOrReplace(workspaceId, apiKey, {
|
|
101
146
|
workspaceName,
|
|
102
147
|
accountLabel,
|
|
@@ -106,33 +151,49 @@ async function connectCommand(io, oauthClient, store) {
|
|
|
106
151
|
const readableWorkspace = workspaceName ? `${workspaceName} [${workspaceId}]` : workspaceId;
|
|
107
152
|
const readableAccount = accountLabel ? `, account: ${accountLabel}` : '';
|
|
108
153
|
io.log(`Connected to workspace ${readableWorkspace} (key: ${maskApiKey(apiKey)}${readableAccount}).`);
|
|
109
|
-
if (scopes.length > 0) {
|
|
154
|
+
if (scopes !== undefined && scopes.length > 0) {
|
|
110
155
|
io.log(`Scopes: ${scopes.join(' ')}`);
|
|
111
156
|
}
|
|
112
157
|
io.log(`Active workspace: ${active ?? workspaceId}.`);
|
|
113
158
|
io.log('Tip: set BESALES_WORKSPACE_ID in your MCP host config to pin this session to a workspace.');
|
|
114
|
-
// Сужение прав НЕ ломает connect: обмен
|
|
115
|
-
//
|
|
116
|
-
//
|
|
159
|
+
// Сужение прав НЕ ломает connect: обмен проходит, а отказ всплывает позже как 403 одного
|
|
160
|
+
// инструмента. Единственный момент, когда видны оба набора, — здесь, поэтому пишем в stderr.
|
|
161
|
+
// Причины у двух списков разные, и советы тоже: потерянное — обновить клиент, невыданное — роль.
|
|
117
162
|
if (droppedScopes.length > 0) {
|
|
118
163
|
io.error(`WARNING: this key has FEWER permissions than the one it replaced.\n` +
|
|
119
164
|
` Lost: ${droppedScopes.join(', ')}\n` +
|
|
120
|
-
` Tools needing them will fail with 403
|
|
165
|
+
` Tools needing them will fail with 403.\n` +
|
|
121
166
|
` Update the client (npx -y @besales/mcp@latest) and run \`besales-mcp connect\` again.`);
|
|
122
167
|
}
|
|
168
|
+
if (notGrantedScopes.length > 0) {
|
|
169
|
+
io.error(`WARNING: some requested permissions were not granted: your role in this workspace does not allow them.\n` +
|
|
170
|
+
` Not granted: ${notGrantedScopes.join(', ')}\n` +
|
|
171
|
+
` Tools needing them will fail with 403.\n` +
|
|
172
|
+
` Ask the workspace owner or an admin to extend your role, then run \`besales-mcp connect\` again.`);
|
|
173
|
+
}
|
|
123
174
|
return 0;
|
|
124
175
|
}
|
|
125
|
-
async function connectionsCommand(io, store) {
|
|
176
|
+
async function connectionsCommand(io, store, json = false) {
|
|
126
177
|
const connections = await store.list();
|
|
178
|
+
const active = await store.getActive();
|
|
179
|
+
if (json) {
|
|
180
|
+
io.log(JSON.stringify(connections.map((connection) => ({
|
|
181
|
+
workspaceId: connection.workspaceId,
|
|
182
|
+
workspaceName: connection.workspaceName ?? null,
|
|
183
|
+
accountLabel: connection.accountLabel ?? null,
|
|
184
|
+
keyPrefix: connection.keyPrefix,
|
|
185
|
+
active: connection.workspaceId === active,
|
|
186
|
+
}))));
|
|
187
|
+
return 0;
|
|
188
|
+
}
|
|
127
189
|
if (connections.length === 0) {
|
|
128
190
|
io.log('No connected workspaces. Run `besales-mcp connect`.');
|
|
129
191
|
return 0;
|
|
130
192
|
}
|
|
131
|
-
const active = await store.getActive();
|
|
132
193
|
for (const connection of connections) {
|
|
133
194
|
const marker = connection.workspaceId === active ? '*' : ' ';
|
|
134
|
-
const name = connection.workspaceName ?? '(name unknown)';
|
|
135
|
-
const account = connection.accountLabel ? `, account: ${connection.accountLabel}` : '';
|
|
195
|
+
const name = (connection.workspaceName ?? '(name unknown)').replace(/[\u0000-\u001f\u007f]/gu, ' ');
|
|
196
|
+
const account = connection.accountLabel ? `, account: ${connection.accountLabel.replace(/[\u0000-\u001f\u007f]/gu, ' ')}` : '';
|
|
136
197
|
io.log(`${marker} ${name} [${connection.workspaceId}] (key: ${connection.keyPrefix}${account})`);
|
|
137
198
|
}
|
|
138
199
|
return 0;
|
|
@@ -192,7 +253,7 @@ async function statusCommand(io, store) {
|
|
|
192
253
|
io.log(`Active workspace: ${name} [${activeConnection.workspaceId}] (key: ${activeConnection.keyPrefix}). ${connections.length} connected.`);
|
|
193
254
|
}
|
|
194
255
|
else {
|
|
195
|
-
io.log(`No active workspace
|
|
256
|
+
io.log(`No active workspace marked. ${connections.length} connected — run \`besales-mcp use <workspaceId>\` to mark one for CLI commands. MCP tools do not fall back to it: with several workspaces connected each session must choose explicitly (besales_workspace_use or BESALES_WORKSPACE_ID).`);
|
|
196
257
|
}
|
|
197
258
|
return 0;
|
|
198
259
|
}
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,WAAW,EAA2B,MAAM,wBAAwB,CAAC;AAC9E,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAA4B,MAAM,2BAA2B,CAAC;AACxF,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"crm-catalog.js","sourceRoot":"","sources":["../../src/constants/crm-catalog.ts"],"names":[],"mappings":"AAAA,2DAA2D;AAC3D,MAAM,CAAC,MAAM,2BAA2B,GAAG,GAAG,CAAC"}
|