@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
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"edit-version-transport.test-fixtures.js","sourceRoot":"","sources":["../../../src/tools/definitions/edit-version-transport.test-fixtures.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
type Locale = 'en' | 'ru' | 'es' | 'id' | 'uz';
|
|
2
|
+
export declare const EDIT_VERSION_INSTRUCTIONS: Readonly<Record<Locale, string>>;
|
|
3
|
+
export declare function editVersionInstruction(): string;
|
|
4
|
+
export declare function withEditVersionInstructions(response: unknown): unknown;
|
|
5
|
+
export {};
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { withInstructions } from './shared.js';
|
|
2
|
+
export const EDIT_VERSION_INSTRUCTIONS = {
|
|
3
|
+
en: 'expected_version is the version of the original form. After 409 preserve the input and wait for an explicit human decision; never retry automatically.',
|
|
4
|
+
ru: 'expected_version относится к исходной форме. После 409 сохрани ввод и дождись явного решения человека; автоматического повтора нет.',
|
|
5
|
+
es: 'expected_version es la versión del formulario original. Tras un 409 conserva los datos y espera una decisión humana explícita; no repitas automáticamente.',
|
|
6
|
+
id: 'expected_version adalah versi formulir awal. Setelah 409 simpan masukan dan tunggu keputusan manusia yang tegas; jangan ulangi otomatis.',
|
|
7
|
+
uz: 'expected_version dastlabki shakl versiyasidir. 409 dan keyin kiritilganlarni saqla va insonning aniq qarorini kut; avtomatik takrorlama.',
|
|
8
|
+
};
|
|
9
|
+
export function editVersionInstruction() {
|
|
10
|
+
const locale = process.env.BESALES_LOCALE?.trim()
|
|
11
|
+
.toLowerCase()
|
|
12
|
+
.split(/[-_,; ]/u)[0] ?? 'ru';
|
|
13
|
+
return Object.hasOwn(EDIT_VERSION_INSTRUCTIONS, locale)
|
|
14
|
+
? EDIT_VERSION_INSTRUCTIONS[locale]
|
|
15
|
+
: EDIT_VERSION_INSTRUCTIONS.ru;
|
|
16
|
+
}
|
|
17
|
+
export function withEditVersionInstructions(response) {
|
|
18
|
+
return withInstructions(response, [editVersionInstruction()]);
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=edit-version.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"edit-version.js","sourceRoot":"","sources":["../../../src/tools/definitions/edit-version.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAG/C,MAAM,CAAC,MAAM,yBAAyB,GAAqC;IACzE,EAAE,EAAE,wJAAwJ;IAC5J,EAAE,EAAE,qIAAqI;IACzI,EAAE,EAAE,4JAA4J;IAChK,EAAE,EAAE,0IAA0I;IAC9I,EAAE,EAAE,0IAA0I;CAC/I,CAAC;AAEF,MAAM,UAAU,sBAAsB;IACpC,MAAM,MAAM,GACV,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,IAAI,EAAE;SAC/B,WAAW,EAAE;SACb,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;IAClC,OAAO,MAAM,CAAC,MAAM,CAAC,yBAAyB,EAAE,MAAM,CAAC;QACrD,CAAC,CAAC,yBAAyB,CAAC,MAAgB,CAAC;QAC7C,CAAC,CAAC,yBAAyB,CAAC,EAAE,CAAC;AACnC,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,QAAiB;IAC3D,OAAO,gBAAgB,CAAC,QAAQ,EAAE,CAAC,sBAAsB,EAAE,CAAC,CAAC,CAAC;AAChE,CAAC"}
|
|
@@ -2,9 +2,11 @@
|
|
|
2
2
|
// Прямые тулы (POST/PATCH), зеркало besales_crm_activate. Backend endpoints требуют
|
|
3
3
|
// scope mcp:platform-setup.
|
|
4
4
|
//
|
|
5
|
-
// Ключ партнёра и подпись
|
|
6
|
-
//
|
|
7
|
-
//
|
|
5
|
+
// ⛔ Ключ партнёра и подпись обратных вызовов через эти инструменты НЕ проходят: ответ тула
|
|
6
|
+
// попадает в транскрипт хоста и в его телеметрию, то есть одноразовый секрет остался бы в
|
|
7
|
+
// истории стороннего приложения. Вместо величин выдаётся одноразовая ссылка; страница за ней
|
|
8
|
+
// требует входа, показывает обе величины один раз и в этот же момент их выпускает. Значит
|
|
9
|
+
// не открытая ссылка ничего не ломает — прежние доступы продолжают работать.
|
|
8
10
|
import { z } from 'zod';
|
|
9
11
|
import { compactObject, defineTool, uuidSchema, withInstructions } from './shared.js';
|
|
10
12
|
const CREDENTIAL_FIELD_NAMES = new Set([
|
|
@@ -45,16 +47,16 @@ export const externalApiChannelTools = [
|
|
|
45
47
|
method: 'POST',
|
|
46
48
|
path: `/workspaces/${input.workspace_id}/external-api-channels`,
|
|
47
49
|
body: compactObject({
|
|
48
|
-
name: input.name,
|
|
50
|
+
name: input.name ?? 'External API',
|
|
49
51
|
callbackUrl: input.callback_url,
|
|
50
52
|
sourceChannel: input.source_channel,
|
|
51
53
|
}),
|
|
52
54
|
}),
|
|
53
55
|
enhanceResponse: (response) => withInstructions(withoutCredentials(response), [
|
|
54
|
-
'Канал создан. Ответ: { channelId, ingestPath, revealUrl, revealExpiresAt }.
|
|
55
|
-
'Передай человеку revealUrl
|
|
56
|
-
'Пока страницу не открыли, канал
|
|
57
|
-
'Партнёру
|
|
56
|
+
'Канал External API создан. Ответ: { channelId, ingestPath, revealUrl, revealExpiresAt }. Ключа партнёра и подписи обратных вызовов в ответе НЕТ и не будет: секреты через ассистента не проходят.',
|
|
57
|
+
'Передай человеку revealUrl и попроси открыть его в браузере. Страница потребует входа и права управлять каналами, покажет обе величины ОДИН раз и в этот же момент их выпустит.',
|
|
58
|
+
'Пока страницу не открыли, канал доступов не отдаёт. Ссылка одноразовая и с ограниченным сроком (revealExpiresAt); если срок вышел — запроси новую через besales_external_api_channel_rotate_key / _rotate_secret.',
|
|
59
|
+
'Партнёру нужны: ingestUrl (host + ingestPath) и обе величины со страницы. Ключ — Bearer для входящих на ingestPath; подпись — для проверки заголовка X-Besales-Webhook-Signature. Его callback_url задаётся при создании или меняется besales_external_api_channel_update.',
|
|
58
60
|
]),
|
|
59
61
|
}),
|
|
60
62
|
defineTool({
|
|
@@ -73,9 +75,9 @@ export const externalApiChannelTools = [
|
|
|
73
75
|
path: `/workspaces/${input.workspace_id}/external-api-channels/${input.channel_id}/rotate-key`,
|
|
74
76
|
}),
|
|
75
77
|
enhanceResponse: (response) => withInstructions(withoutCredentials(response), [
|
|
76
|
-
'Ответ: { revealUrl, revealExpiresAt }. Ключа в нём
|
|
77
|
-
'Ротации
|
|
78
|
-
'Передай человеку revealUrl. После показа новый ключ
|
|
78
|
+
'Ответ: { revealUrl, revealExpiresAt }. Ключа в нём нет — он выпускается в момент, когда человек откроет ссылку в браузере и войдёт.',
|
|
79
|
+
'⚠️ Ротации ЕЩЁ НЕ БЫЛО: прежний ключ продолжает работать, пока страницу не открыли. Именно открытие страницы выпускает новый ключ и отзывает прежний.',
|
|
80
|
+
'Передай человеку revealUrl. После показа он обязан отдать новый ключ партнёру — иначе входящие пойдут с 401/403.',
|
|
79
81
|
]),
|
|
80
82
|
}),
|
|
81
83
|
defineTool({
|
|
@@ -94,9 +96,9 @@ export const externalApiChannelTools = [
|
|
|
94
96
|
path: `/workspaces/${input.workspace_id}/external-api-channels/${input.channel_id}/rotate-secret`,
|
|
95
97
|
}),
|
|
96
98
|
enhanceResponse: (response) => withInstructions(withoutCredentials(response), [
|
|
97
|
-
'Ответ: { revealUrl, revealExpiresAt }. Подписи в нём
|
|
98
|
-
'Замены
|
|
99
|
-
'Передай человеку revealUrl. После показа партнёр
|
|
99
|
+
'Ответ: { revealUrl, revealExpiresAt }. Подписи в нём нет — она заменяется в момент, когда человек откроет ссылку в браузере и войдёт.',
|
|
100
|
+
'⚠️ Замены ЕЩЁ НЕ БЫЛО: прежняя подпись действует, пока страницу не открыли.',
|
|
101
|
+
'Передай человеку revealUrl. После показа партнёр обязан обновить подпись, иначе наши X-Besales-Webhook-Signature перестанут совпадать.',
|
|
100
102
|
]),
|
|
101
103
|
}),
|
|
102
104
|
defineTool({
|
|
@@ -121,7 +123,7 @@ export const externalApiChannelTools = [
|
|
|
121
123
|
}),
|
|
122
124
|
}),
|
|
123
125
|
enhanceResponse: (response) => withInstructions(response, [
|
|
124
|
-
'Несекретные настройки канала обновлены (callback_url / source_channel). Ключ и секрет
|
|
126
|
+
'Несекретные настройки канала обновлены (callback_url / source_channel). Ключ и секрет не меняются.',
|
|
125
127
|
'Смена callback_url применяется немедленно: следующие колбэки уйдут на новый URL.',
|
|
126
128
|
]),
|
|
127
129
|
}),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"external-api-channels.js","sourceRoot":"","sources":["../../../src/tools/definitions/external-api-channels.ts"],"names":[],"mappings":"AAAA,0FAA0F;AAC1F,oFAAoF;AACpF,4BAA4B;AAC5B,EAAE;AACF,0FAA0F;AAC1F,
|
|
1
|
+
{"version":3,"file":"external-api-channels.js","sourceRoot":"","sources":["../../../src/tools/definitions/external-api-channels.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export declare const feedbackDocumentConfirmationSchema: {
|
|
3
|
+
confirm_document_access_change: z.ZodOptional<z.ZodLiteral<true>>;
|
|
4
|
+
expected_document_snapshot: z.ZodOptional<z.ZodString>;
|
|
5
|
+
};
|
|
6
|
+
/** Полный список связей нужен человеку для согласия; обрезка ответа скрыла бы часть последствий. */
|
|
7
|
+
export declare const feedbackDocumentAccessTools: (import("./shared.js").ToolDefinition<{
|
|
8
|
+
agent_id: string;
|
|
9
|
+
source_url: string;
|
|
10
|
+
}> | import("./shared.js").ToolDefinition<{
|
|
11
|
+
agent_id: string;
|
|
12
|
+
source_url: string;
|
|
13
|
+
access_mode: "READ_ONLY" | "EDITABLE";
|
|
14
|
+
confirm_document_access_change: true;
|
|
15
|
+
expected_document_snapshot: string;
|
|
16
|
+
}>)[];
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { compactObject, defineTool, uuidSchema, withInstructions } from './shared.js';
|
|
3
|
+
export const feedbackDocumentConfirmationSchema = {
|
|
4
|
+
confirm_document_access_change: z.literal(true).optional(),
|
|
5
|
+
expected_document_snapshot: z
|
|
6
|
+
.string()
|
|
7
|
+
.regex(/^[a-f0-9]{64}$/)
|
|
8
|
+
.optional(),
|
|
9
|
+
};
|
|
10
|
+
/** Полный список связей нужен человеку для согласия; обрезка ответа скрыла бы часть последствий. */
|
|
11
|
+
export const feedbackDocumentAccessTools = [
|
|
12
|
+
defineTool({
|
|
13
|
+
name: 'besales_feedback_document_access_get',
|
|
14
|
+
sideEffect: 'none',
|
|
15
|
+
resultPolicy: { neverTruncate: true, narrowingHint: 'Выбери другой документ с меньшим числом связей; полный список связей текущего документа нужен для согласия.' },
|
|
16
|
+
requiredFields: ['agent_id', 'source_url'],
|
|
17
|
+
schema: z.object({ agent_id: uuidSchema, source_url: z.string().url() }),
|
|
18
|
+
createRequest: (input) => ({
|
|
19
|
+
method: 'POST',
|
|
20
|
+
path: `/agents/${input.agent_id}/feedback-sheets/document-access`,
|
|
21
|
+
body: { sourceUrl: input.source_url },
|
|
22
|
+
}),
|
|
23
|
+
enhanceResponse: (response) => withInstructions(response, [
|
|
24
|
+
'Покажите человеку весь affectedLinks и affectedLinksCount: агент, вкладка, закреплённая версия. Режим общий для всех вкладок документа.',
|
|
25
|
+
'serviceAccountEmail предназначен для настройки доступа в Google. providerAccess — свежая подсказка о правах, documentAccessMode — локальное намерение.',
|
|
26
|
+
'Смена режима требует согласия человека и documentSnapshot именно этого ответа. При 409 перечитайте список и заново запросите согласие.',
|
|
27
|
+
]),
|
|
28
|
+
}),
|
|
29
|
+
defineTool({
|
|
30
|
+
name: 'besales_feedback_document_access_update',
|
|
31
|
+
sideEffect: 'write',
|
|
32
|
+
resultPolicy: { neverTruncate: true, narrowingHint: 'Выбери другой документ с меньшим числом связей; полный список связей текущего документа нужен для согласия.' },
|
|
33
|
+
requiredFields: [
|
|
34
|
+
'agent_id',
|
|
35
|
+
'source_url',
|
|
36
|
+
'access_mode',
|
|
37
|
+
'confirm_document_access_change',
|
|
38
|
+
'expected_document_snapshot',
|
|
39
|
+
],
|
|
40
|
+
schema: z.object({
|
|
41
|
+
agent_id: uuidSchema,
|
|
42
|
+
source_url: z.string().url(),
|
|
43
|
+
access_mode: z.enum(['READ_ONLY', 'EDITABLE']),
|
|
44
|
+
confirm_document_access_change: z.literal(true),
|
|
45
|
+
expected_document_snapshot: z.string().regex(/^[a-f0-9]{64}$/),
|
|
46
|
+
}),
|
|
47
|
+
createRequest: (input) => ({
|
|
48
|
+
method: 'PATCH',
|
|
49
|
+
path: `/agents/${input.agent_id}/feedback-sheets/document-access`,
|
|
50
|
+
body: compactObject({
|
|
51
|
+
sourceUrl: input.source_url,
|
|
52
|
+
accessMode: input.access_mode,
|
|
53
|
+
confirmDocumentAccessChange: input.confirm_document_access_change,
|
|
54
|
+
expectedDocumentSnapshot: input.expected_document_snapshot,
|
|
55
|
+
}),
|
|
56
|
+
}),
|
|
57
|
+
enhanceResponse: (response) => withInstructions(response, [
|
|
58
|
+
'Изменено локальное намерение всего документа. Google ACL этим инструментом не меняется; фактическая запись по-прежнему зависит от прав Google.',
|
|
59
|
+
'Не повторяйте смену режима автоматически при устаревшем снимке: перечитайте полный список и получите новое согласие.',
|
|
60
|
+
]),
|
|
61
|
+
}),
|
|
62
|
+
];
|
|
63
|
+
//# sourceMappingURL=feedback-document-access.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"feedback-document-access.js","sourceRoot":"","sources":["../../../src/tools/definitions/feedback-document-access.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAEtF,MAAM,CAAC,MAAM,kCAAkC,GAAG;IAChD,8BAA8B,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE;IAC1D,0BAA0B,EAAE,CAAC;SAC1B,MAAM,EAAE;SACR,KAAK,CAAC,gBAAgB,CAAC;SACvB,QAAQ,EAAE;CACd,CAAC;AAEF,oGAAoG;AACpG,MAAM,CAAC,MAAM,2BAA2B,GAAG;IACzC,UAAU,CAAC;QACT,IAAI,EAAE,sCAAsC;QAC5C,UAAU,EAAE,MAAM;QAClB,YAAY,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,aAAa,EAAE,6GAA6G,EAAE;QACnK,cAAc,EAAE,CAAC,UAAU,EAAE,YAAY,CAAC;QAC1C,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC;QACxE,aAAa,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YACzB,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,WAAW,KAAK,CAAC,QAAQ,kCAAkC;YACjE,IAAI,EAAE,EAAE,SAAS,EAAE,KAAK,CAAC,UAAU,EAAE;SACtC,CAAC;QACF,eAAe,EAAE,CAAC,QAAQ,EAAE,EAAE,CAC5B,gBAAgB,CAAC,QAAQ,EAAE;YACzB,yIAAyI;YACzI,wJAAwJ;YACxJ,wIAAwI;SACzI,CAAC;KACL,CAAC;IACF,UAAU,CAAC;QACT,IAAI,EAAE,yCAAyC;QAC/C,UAAU,EAAE,OAAO;QACnB,YAAY,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,aAAa,EAAE,6GAA6G,EAAE;QACnK,cAAc,EAAE;YACd,UAAU;YACV,YAAY;YACZ,aAAa;YACb,gCAAgC;YAChC,4BAA4B;SAC7B;QACD,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;YACf,QAAQ,EAAE,UAAU;YACpB,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE;YAC5B,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;YAC9C,8BAA8B,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC;YAC/C,0BAA0B,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,gBAAgB,CAAC;SAC/D,CAAC;QACF,aAAa,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YACzB,MAAM,EAAE,OAAO;YACf,IAAI,EAAE,WAAW,KAAK,CAAC,QAAQ,kCAAkC;YACjE,IAAI,EAAE,aAAa,CAAC;gBAClB,SAAS,EAAE,KAAK,CAAC,UAAU;gBAC3B,UAAU,EAAE,KAAK,CAAC,WAAW;gBAC7B,2BAA2B,EAAE,KAAK,CAAC,8BAA8B;gBACjE,wBAAwB,EAAE,KAAK,CAAC,0BAA0B;aAC3D,CAAC;SACH,CAAC;QACF,eAAe,EAAE,CAAC,QAAQ,EAAE,EAAE,CAC5B,gBAAgB,CAAC,QAAQ,EAAE;YACzB,gJAAgJ;YAChJ,sHAAsH;SACvH,CAAC;KACL,CAAC;CACH,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { withInstructions } from '../shared.js';
|
|
2
|
+
/** Закреплённый обработчик отгруженной линии, коммит 3b82e3a: граница перехода до перезапуска. */
|
|
3
|
+
export const SHIPPED_SETUP_STATUS_SHA = '3b82e3a';
|
|
4
|
+
export const shippedSetupStatusEnhance = (response) => withInstructions(response, [
|
|
5
|
+
'status: AWAITING_USER → VALIDATING → READY (`platform_id` готов) | VALIDATION_FAILED (`error_message`, напр. невалидный токен — пользователь может повторить) | EXPIRED (создайте новую сессию).',
|
|
6
|
+
'READY = платформа создана + токен онлайн-проверен для TelegramBot/VKon/GetCourse/Wazzup/Bitrix24Bot (битый ключ → VALIDATION_FAILED). Salebot/SmsGorod НЕ проверяются онлайн — для них READY означает «создано»; попросите пользователя проверить работу канала.',
|
|
7
|
+
'OAuth-каналы (Instagram/Avito): после `besales_platform_create_oauth_init` поллите этим же tool по `setup_ref`.',
|
|
8
|
+
]);
|
|
9
|
+
//# sourceMappingURL=shipped-setup-status.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shipped-setup-status.js","sourceRoot":"","sources":["../../../../src/tools/definitions/fixtures/shipped-setup-status.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAEhD,kGAAkG;AAClG,MAAM,CAAC,MAAM,wBAAwB,GAAG,SAAS,CAAC;AAClD,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,QAAiB,EAAW,EAAE,CACtE,gBAAgB,CAAC,QAAQ,EAAE;IACzB,kMAAkM;IAClM,kQAAkQ;IAClQ,iHAAiH;CAClH,CAAC,CAAC"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
export declare const reactivationConfigSchema: z.ZodObject<{
|
|
3
|
+
enabled: z.ZodOptional<z.ZodBoolean>;
|
|
4
|
+
filterMode: z.ZodOptional<z.ZodEnum<{
|
|
5
|
+
status: "status";
|
|
6
|
+
variable: "variable";
|
|
7
|
+
eventType: "eventType";
|
|
8
|
+
}>>;
|
|
9
|
+
sequenceConditions: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
10
|
+
variable: z.ZodString;
|
|
11
|
+
op: z.ZodEnum<{
|
|
12
|
+
in: "in";
|
|
13
|
+
eq: "eq";
|
|
14
|
+
neq: "neq";
|
|
15
|
+
}>;
|
|
16
|
+
value: z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>;
|
|
17
|
+
}, z.core.$loose>>>;
|
|
18
|
+
steps: z.ZodArray<z.ZodObject<{
|
|
19
|
+
stepType: z.ZodOptional<z.ZodEnum<{
|
|
20
|
+
message: "message";
|
|
21
|
+
webhook: "webhook";
|
|
22
|
+
}>>;
|
|
23
|
+
scheduleMode: z.ZodOptional<z.ZodEnum<{
|
|
24
|
+
offset: "offset";
|
|
25
|
+
clock: "clock";
|
|
26
|
+
}>>;
|
|
27
|
+
anchorMode: z.ZodOptional<z.ZodEnum<{
|
|
28
|
+
variable: "variable";
|
|
29
|
+
last_inbound: "last_inbound";
|
|
30
|
+
}>>;
|
|
31
|
+
anchorVariable: z.ZodOptional<z.ZodString>;
|
|
32
|
+
atTime: z.ZodOptional<z.ZodString>;
|
|
33
|
+
dayOffset: z.ZodOptional<z.ZodNumber>;
|
|
34
|
+
validityMinutes: z.ZodOptional<z.ZodNumber>;
|
|
35
|
+
slotGroup: z.ZodOptional<z.ZodString>;
|
|
36
|
+
conditions: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
37
|
+
variable: z.ZodString;
|
|
38
|
+
op: z.ZodEnum<{
|
|
39
|
+
in: "in";
|
|
40
|
+
eq: "eq";
|
|
41
|
+
neq: "neq";
|
|
42
|
+
}>;
|
|
43
|
+
value: z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>;
|
|
44
|
+
}, z.core.$loose>>>;
|
|
45
|
+
skipIfContactRepliedSincePreviousSlot: z.ZodOptional<z.ZodBoolean>;
|
|
46
|
+
delayHours: z.ZodOptional<z.ZodNumber>;
|
|
47
|
+
delayMinutes: z.ZodOptional<z.ZodNumber>;
|
|
48
|
+
messageConfig: z.ZodOptional<z.ZodObject<{
|
|
49
|
+
type: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
50
|
+
content: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
51
|
+
templateId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
52
|
+
templateValues: z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodUnknown>>>;
|
|
53
|
+
contentMode: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
54
|
+
generationContext: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
55
|
+
fallbackContent: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
56
|
+
attachments: z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodUnknown>>>;
|
|
57
|
+
buttons: z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodUnknown>>>;
|
|
58
|
+
crmNote: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
59
|
+
}, z.core.$loose>>;
|
|
60
|
+
}, z.core.$loose>>;
|
|
61
|
+
sessionTimeVariable: z.ZodOptional<z.ZodString>;
|
|
62
|
+
sessionDayOffsets: z.ZodOptional<z.ZodArray<z.ZodNumber>>;
|
|
63
|
+
sessionDurationMinutes: z.ZodOptional<z.ZodNumber>;
|
|
64
|
+
contactVariablesOnSend: z.ZodOptional<z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodString>>>;
|
|
65
|
+
}, z.core.$loose>;
|
|
66
|
+
/**
|
|
67
|
+
* Применяет типизированную схему к `config` ТОЛЬКО для реактивационных цепочек.
|
|
68
|
+
*
|
|
69
|
+
* Через `z.union([reactivationConfigSchema, anyObjectSchema])` это делать нельзя: второй вариант
|
|
70
|
+
* принимает любой объект, поэтому union проходит всегда и ограничения (`steps.min(1)`,
|
|
71
|
+
* `filterMode` enum) не срабатывают ни разу — типизация выглядит рабочей, но её нет.
|
|
72
|
+
*
|
|
73
|
+
* @param input - Разобранный ввод тула
|
|
74
|
+
* @param ctx - Контекст zod для добавления ошибок
|
|
75
|
+
*/
|
|
76
|
+
export declare const refineFollowUpConfig: (input: {
|
|
77
|
+
type?: unknown;
|
|
78
|
+
config?: unknown;
|
|
79
|
+
}, ctx: z.RefinementCtx) => void;
|
|
@@ -0,0 +1,258 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { MAX_CLOCK_DAY_OFFSET, MAX_SESSION_DURATION_MINUTES, } from "../../shared/constants/followup-session.constants.js";
|
|
3
|
+
import { FOLLOWUP_NOTE_MAX_VALUE_CODE_UNITS, FOLLOWUP_NOTE_MAX_VARIABLES, } from "../../shared/constants/followup-note.constants.js";
|
|
4
|
+
/**
|
|
5
|
+
* Схема конфига реактивационной цепочки.
|
|
6
|
+
*
|
|
7
|
+
* ⚠️ Ключи ВНУТРИ `config` — camelCase, в отличие от snake_case параметров тулов: `config`
|
|
8
|
+
* уходит в тело запроса БЕЗ преобразования, а рантайм читает `anchorMode`/`anchorVariable`/
|
|
9
|
+
* `slotGroup`. Назвать их в snake_case значило бы сохранить конфиг, который рантайм не
|
|
10
|
+
* прочитает: календарный шаг молча стал бы обычным offset-шагом.
|
|
11
|
+
*
|
|
12
|
+
* ⚠️ `.passthrough()` на каждом уровне обязателен по двум причинам: legacy-конфиги несут поля
|
|
13
|
+
* вне этой схемы (`finalAction`, `maxCycleCount`, `webhookConfig`, …), и сама схема исполняется
|
|
14
|
+
* на машине оператора — она обновляется независимо от бэкенда и не должна отвергать конфиг,
|
|
15
|
+
* который бэкенд принял бы.
|
|
16
|
+
*/
|
|
17
|
+
const variableConditionSchema = z
|
|
18
|
+
.object({
|
|
19
|
+
variable: z.string().describe("Имя per-contact переменной"),
|
|
20
|
+
op: z.enum(["eq", "neq", "in"]),
|
|
21
|
+
value: z
|
|
22
|
+
.union([z.string(), z.array(z.string())])
|
|
23
|
+
.describe("Строка для eq/neq, непустой массив непустых строк для 'in'"),
|
|
24
|
+
})
|
|
25
|
+
.passthrough();
|
|
26
|
+
/**
|
|
27
|
+
* Сообщение шага. Поля перечислены поимённо не ради валидации, а ради ОБНАРУЖИМОСТИ: раньше
|
|
28
|
+
* здесь стоял безымянный объект, и «как задать в шаге WABA-шаблон вместо текста» неоткуда было
|
|
29
|
+
* узнать — форма не описана ни в схеме тула, ни в OpenAPI.
|
|
30
|
+
*
|
|
31
|
+
* `.passthrough()` обязателен: конфиги несут поля вне этого списка (wabaVariableMapping и др.),
|
|
32
|
+
* а схема живёт на машине оператора и обновляется независимо от бэкенда.
|
|
33
|
+
*/
|
|
34
|
+
const followUpMessageConfigSchema = z
|
|
35
|
+
.object({
|
|
36
|
+
type: z
|
|
37
|
+
.string()
|
|
38
|
+
.nullish()
|
|
39
|
+
.describe("'text' — обычный текст в content; 'template' — ШАБЛОН WABA (Wazzup), тогда обязателен " +
|
|
40
|
+
"templateId; 'media' — вложения. Шаблон уходит и при ЗАКРЫТОМ 24-часовом окне " +
|
|
41
|
+
"переписки, обычный текст — нет (шаг молча ждёт реплики клиента)"),
|
|
42
|
+
content: z.string().nullish().describe("Текст для type=text"),
|
|
43
|
+
templateId: z
|
|
44
|
+
.string()
|
|
45
|
+
.nullish()
|
|
46
|
+
.describe("ID шаблона WABA. Берётся из besales_wazzup_templates_list — это id шаблона канала, " +
|
|
47
|
+
"а не его имя"),
|
|
48
|
+
templateValues: z
|
|
49
|
+
.array(z.unknown())
|
|
50
|
+
.nullish()
|
|
51
|
+
.describe("Значения подстановок шаблона по порядку ({{1}}, {{2}}, …). Поддерживают переменные " +
|
|
52
|
+
"контакта — они резолвятся перед отправкой"),
|
|
53
|
+
contentMode: z
|
|
54
|
+
.string()
|
|
55
|
+
.nullish()
|
|
56
|
+
.describe("'static' (по умолчанию) либо 'dynamic' — текст генерирует LLM"),
|
|
57
|
+
generationContext: z.string().nullish().describe('Инструкция LLM при contentMode=dynamic'),
|
|
58
|
+
fallbackContent: z.string().nullish().describe('Запасной текст, если генерация не удалась'),
|
|
59
|
+
attachments: z.array(z.unknown()).nullish().describe('Вложения: [{ storedFileId, caption? }]'),
|
|
60
|
+
buttons: z.array(z.unknown()).nullish(),
|
|
61
|
+
crmNote: z.string().nullish(),
|
|
62
|
+
})
|
|
63
|
+
.passthrough();
|
|
64
|
+
const reactivationStepSchema = z
|
|
65
|
+
.object({
|
|
66
|
+
stepType: z.enum(["message", "webhook"]).optional(),
|
|
67
|
+
scheduleMode: z
|
|
68
|
+
.enum(["offset", "clock"])
|
|
69
|
+
.optional()
|
|
70
|
+
.describe("'clock' — время суток + сдвиг дней вместо задержки от последней активности"),
|
|
71
|
+
anchorMode: z
|
|
72
|
+
.enum(["last_inbound", "variable"])
|
|
73
|
+
.optional()
|
|
74
|
+
.describe("'variable' — расписание считается от даты из переменной контакта (календарная цепочка)"),
|
|
75
|
+
anchorVariable: z
|
|
76
|
+
.string()
|
|
77
|
+
.optional()
|
|
78
|
+
.describe("Имя переменной с якорной датой. Обязательно при anchorMode=variable; переменная должна " +
|
|
79
|
+
"существовать у платформы и НЕ быть константой"),
|
|
80
|
+
atTime: z
|
|
81
|
+
.string()
|
|
82
|
+
.optional()
|
|
83
|
+
.describe('Время суток "HH:MM" для scheduleMode=clock'),
|
|
84
|
+
// ⚠️ Нижняя граница — зеркало бэкенда (`MIN_CLOCK_DAY_OFFSET = -7`): отрицательный сдвиг —
|
|
85
|
+
// касание ДО якоря («накануне эфира»). С `min(0)` MCP не мог пересохранить ни одну цепочку с
|
|
86
|
+
// такими шагами (21.09.2026: «Светлана» с шагами dayOffset -1 отвергалась целиком).
|
|
87
|
+
dayOffset: z
|
|
88
|
+
.number()
|
|
89
|
+
.int()
|
|
90
|
+
.min(-7)
|
|
91
|
+
.max(30)
|
|
92
|
+
.optional()
|
|
93
|
+
.describe("Сдвиг в днях от якоря для scheduleMode=clock; отрицательный — до якоря"),
|
|
94
|
+
validityMinutes: z
|
|
95
|
+
.number()
|
|
96
|
+
.int()
|
|
97
|
+
.min(1)
|
|
98
|
+
.optional()
|
|
99
|
+
.describe("Касание, опоздавшее дольше окна, пропускается; по умолчанию 45 минут"),
|
|
100
|
+
slotGroup: z
|
|
101
|
+
.string()
|
|
102
|
+
.optional()
|
|
103
|
+
.describe("Метка взаимоисключающих вариантов одного момента (first-match-wins). Варианты ОБЯЗАНЫ " +
|
|
104
|
+
"идти в steps подряд: разнесённые по цепочке перестают быть взаимоисключающими"),
|
|
105
|
+
conditions: z
|
|
106
|
+
.array(variableConditionSchema)
|
|
107
|
+
.max(3)
|
|
108
|
+
.optional()
|
|
109
|
+
.describe('Условия на переменные контакта; не прошли — шаг пропускается'),
|
|
110
|
+
skipIfContactRepliedSincePreviousSlot: z
|
|
111
|
+
.boolean()
|
|
112
|
+
.optional()
|
|
113
|
+
.describe('Не отправлять шаг, если клиент писал ПОСЛЕ предыдущего слота цепочки. Даёт правило «ответил — ближайшее касание пропускаем, через одно продолжаем»: ответ в 13:05 гасит касание в 16:00, а к 17:00 предыдущим слотом становится 16:00, ответ старше него — и цепочка идёт дальше. Прогресс при пропуске двигается, контакт не зависает. Только для календарного шага (scheduleMode=clock + anchorMode=variable): на остальных рантайм и так проверяет свежесть входящего, и флаг там отвергается.'),
|
|
114
|
+
delayHours: z.number().optional(),
|
|
115
|
+
delayMinutes: z.number().optional(),
|
|
116
|
+
messageConfig: followUpMessageConfigSchema.optional(),
|
|
117
|
+
})
|
|
118
|
+
.passthrough()
|
|
119
|
+
// ⚠️ Зеркалит правила бэкенда, чтобы промах ловился ЛОКАЛЬНО. Иначе вызов проходит нашу
|
|
120
|
+
// проверку, пользователь подтверждает запись, и только сервер отвечает 400 — самый дорогой
|
|
121
|
+
// момент, чтобы узнать про опечатку.
|
|
122
|
+
.superRefine((step, ctx) => {
|
|
123
|
+
const message = step.messageConfig;
|
|
124
|
+
const isDynamic = message?.contentMode === "dynamic";
|
|
125
|
+
const hasAttachments = !!message?.attachments?.length;
|
|
126
|
+
if (message?.type === "template" && !message.templateId) {
|
|
127
|
+
ctx.addIssue({
|
|
128
|
+
code: z.ZodIssueCode.custom,
|
|
129
|
+
path: ["messageConfig", "templateId"],
|
|
130
|
+
message: "Для type=template обязателен templateId (id шаблона из besales_wazzup_templates_list)",
|
|
131
|
+
});
|
|
132
|
+
}
|
|
133
|
+
if (message?.type === "text" &&
|
|
134
|
+
!message.content &&
|
|
135
|
+
!isDynamic &&
|
|
136
|
+
!hasAttachments) {
|
|
137
|
+
ctx.addIssue({
|
|
138
|
+
code: z.ZodIssueCode.custom,
|
|
139
|
+
path: ["messageConfig", "content"],
|
|
140
|
+
message: "Для type=text обязателен content — кроме шага из одних вложений и contentMode=dynamic",
|
|
141
|
+
});
|
|
142
|
+
}
|
|
143
|
+
});
|
|
144
|
+
export const reactivationConfigSchema = z
|
|
145
|
+
.object({
|
|
146
|
+
enabled: z.boolean().optional(),
|
|
147
|
+
filterMode: z
|
|
148
|
+
.enum(["status", "eventType", "variable"])
|
|
149
|
+
.optional()
|
|
150
|
+
.describe("БАЗОВЫЙ отбор контактов: по статусу CRM, по типу события платформы либо " +
|
|
151
|
+
"'variable' = базового фильтра нет (отбор только по sequenceConditions). Условия по " +
|
|
152
|
+
"переменным ОРТОГОНАЛЬНЫ этому выбору и добавляются к нему через И — чтобы ветвить " +
|
|
153
|
+
"цепочки по варианту рассылки, сохранив отбор по событию, бери 'eventType' и задай " +
|
|
154
|
+
"sequenceConditions, а НЕ 'variable'. Неизвестное значение НЕ включает ни один фильтр — " +
|
|
155
|
+
"цепочка уйдёт всем контактам канала, поэтому бэкенд отвергает такой конфиг"),
|
|
156
|
+
sequenceConditions: z
|
|
157
|
+
.array(variableConditionSchema)
|
|
158
|
+
.optional()
|
|
159
|
+
.describe("Условия принадлежности контакта цепочке, соединяются через И. Применяются при ЛЮБОМ " +
|
|
160
|
+
"filterMode (при 'variable' обязателен и непуст, иначе цепочка не выберет никого). " +
|
|
161
|
+
"Ветвление по измерениям рассылки GetCourse: WAVE_MAILING_VARIANT — UUID варианта из " +
|
|
162
|
+
"каталога воркспейса, а НЕ его имя («first-ver» будет отвергнут); WAVE_PRODUCT — код " +
|
|
163
|
+
"продукта строчными без пробелов («dbo»); WAVE_FUNNEL — КЛЮЧ воронки (f-код «f11», " +
|
|
164
|
+
"иначе вся строка строчными), а НЕ метка запуска («f11 — ВК NR ДБО» будет отвергнут); " +
|
|
165
|
+
"WAVE_SEGMENT — имя сегмента. Значения проставляет запуск рассылки, у контакта без " +
|
|
166
|
+
"рассылки их нет. " +
|
|
167
|
+
"ВАЖНО: отдельные цепочки НЕ взаимоисключающи — прогресс изолирован по sequenceId, " +
|
|
168
|
+
"поэтому безусловная «ловящая» цепочка рядом с eq A и eq B не подстрахует, а УДВОИТ " +
|
|
169
|
+
"отправку. Набор цепочек обязан быть строгим разбиением: eq A, eq B и fallback " +
|
|
170
|
+
"neq A AND neq B (у контакта без переменной eq/in → false, neq → true)"),
|
|
171
|
+
steps: z.array(reactivationStepSchema).min(1),
|
|
172
|
+
sessionTimeVariable: z
|
|
173
|
+
.string()
|
|
174
|
+
.min(1)
|
|
175
|
+
.optional()
|
|
176
|
+
.describe("Имя переменной контакта с часом эфира; константы и секреты сервер отвергает"),
|
|
177
|
+
sessionDayOffsets: z
|
|
178
|
+
.array(z.number().int().min(0).max(MAX_CLOCK_DAY_OFFSET))
|
|
179
|
+
.min(1)
|
|
180
|
+
.optional()
|
|
181
|
+
.describe("Дни серии от даты первого эфира; повтор дня отвергает сервер с адресом поля"),
|
|
182
|
+
sessionDurationMinutes: z
|
|
183
|
+
.number()
|
|
184
|
+
.int()
|
|
185
|
+
.positive()
|
|
186
|
+
.max(MAX_SESSION_DURATION_MINUTES)
|
|
187
|
+
.optional()
|
|
188
|
+
.describe("Длительность эфира в минутах, не больше суток; требует дни серии и переменную часа"),
|
|
189
|
+
contactVariablesOnSend: z
|
|
190
|
+
.record(z.string().min(1), z.string().min(1).max(500))
|
|
191
|
+
.refine((value) => Object.keys(value).length > 0 && Object.keys(value).length <= 10, {
|
|
192
|
+
message: "от 1 до 10 переменных",
|
|
193
|
+
})
|
|
194
|
+
.nullable()
|
|
195
|
+
.optional()
|
|
196
|
+
.describe('Переменные, которые цепочка ЗАПИСЫВАЕТ контакту, как только РЕАЛЬНО отправила ему шаг-сообщение: { intro: "это снова Светлана." }. Это «записка» для тех, кто будет писать человеку после цепочки. Рабочий пример — фраза знакомства: текст рассылки начинается с {intro}, у площадки рассылки объявлена КОНСТАНТА intro с обычной фразой («здравствуйте! Это Светлана, помощница…»), а цепочка персональной воронки пишет своим людям intro = «это снова Светлана…» — значение контакта в тексте рассылки побеждает умолчание, и человек после недели в воронке не получает знакомство заново. Настраивается НА ЦЕПОЧКУ, а не на шаг: шага, который доходит до всех, нет (лучший — 87 % людей), а запись на любом отправленном шаге покрывает 99 %. Пишется только после ПОДТВЕРЖДЁННОЙ отправки шага-сообщения (вебхук и неудавшаяся отправка не считаются); совпадающее значение повторно не пишется. Каждое имя обязано быть объявлено на площадке цепочки переменной КОНТАКТА (не константой) — иначе сохранение вернёт 400: при отправке опечатка была бы тихой. Не больше 10 переменных, значение — непустая строка до 500 символов (границы бэкенда MAX_CONTACT_VARIABLES_ON_SEND / MAX_CONTACT_VARIABLE_ON_SEND_VALUE_LENGTH).'),
|
|
197
|
+
})
|
|
198
|
+
.passthrough();
|
|
199
|
+
/**
|
|
200
|
+
* Применяет типизированную схему к `config` ТОЛЬКО для реактивационных цепочек.
|
|
201
|
+
*
|
|
202
|
+
* Через `z.union([reactivationConfigSchema, anyObjectSchema])` это делать нельзя: второй вариант
|
|
203
|
+
* принимает любой объект, поэтому union проходит всегда и ограничения (`steps.min(1)`,
|
|
204
|
+
* `filterMode` enum) не срабатывают ни разу — типизация выглядит рабочей, но её нет.
|
|
205
|
+
*
|
|
206
|
+
* @param input - Разобранный ввод тула
|
|
207
|
+
* @param ctx - Контекст zod для добавления ошибок
|
|
208
|
+
*/
|
|
209
|
+
export const refineFollowUpConfig = (input, ctx) => {
|
|
210
|
+
if (input.config !== null &&
|
|
211
|
+
typeof input.config === "object" &&
|
|
212
|
+
!Array.isArray(input.config)) {
|
|
213
|
+
const note = input.config
|
|
214
|
+
.contactVariablesOnSend;
|
|
215
|
+
if (note !== undefined && note !== null) {
|
|
216
|
+
const parsedNote = z.record(z.string(), z.string()).safeParse(note);
|
|
217
|
+
if (!parsedNote.success)
|
|
218
|
+
ctx.addIssue({
|
|
219
|
+
code: 'custom',
|
|
220
|
+
path: ['config', 'contactVariablesOnSend'],
|
|
221
|
+
message: 'Нужен объект строковых значений либо null',
|
|
222
|
+
});
|
|
223
|
+
else {
|
|
224
|
+
const entries = Object.entries(parsedNote.data);
|
|
225
|
+
if (entries.length < 1 || entries.length > FOLLOWUP_NOTE_MAX_VARIABLES)
|
|
226
|
+
ctx.addIssue({
|
|
227
|
+
code: 'custom',
|
|
228
|
+
path: ['config', 'contactVariablesOnSend'],
|
|
229
|
+
message: `Нужны от 1 до ${FOLLOWUP_NOTE_MAX_VARIABLES} переменных`,
|
|
230
|
+
});
|
|
231
|
+
for (const [name, value] of entries)
|
|
232
|
+
if (name.trim().length === 0 ||
|
|
233
|
+
value.trim().length === 0 ||
|
|
234
|
+
value.length > FOLLOWUP_NOTE_MAX_VALUE_CODE_UNITS)
|
|
235
|
+
ctx.addIssue({
|
|
236
|
+
code: 'custom',
|
|
237
|
+
path: ['config', 'contactVariablesOnSend', name],
|
|
238
|
+
message: `Непустое значение не длиннее ${FOLLOWUP_NOTE_MAX_VALUE_CODE_UNITS} кодовых единиц`,
|
|
239
|
+
});
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
if (input.type !== "INACTIVE_USER_REACTIVATION") {
|
|
244
|
+
return;
|
|
245
|
+
}
|
|
246
|
+
const parsed = reactivationConfigSchema.safeParse(input.config);
|
|
247
|
+
if (parsed.success) {
|
|
248
|
+
return;
|
|
249
|
+
}
|
|
250
|
+
for (const issue of parsed.error.issues) {
|
|
251
|
+
ctx.addIssue({
|
|
252
|
+
code: z.ZodIssueCode.custom,
|
|
253
|
+
path: ["config", ...issue.path],
|
|
254
|
+
message: issue.message,
|
|
255
|
+
});
|
|
256
|
+
}
|
|
257
|
+
};
|
|
258
|
+
//# sourceMappingURL=follow-up-config.js.map
|