@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,142 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { defineTool, uuidSchema, withInstructions } from './shared.js';
|
|
3
|
+
/**
|
|
4
|
+
* Расход моделей рабочей области: сводка, экономика задач, разрезы.
|
|
5
|
+
*
|
|
6
|
+
* ⛔ Период в v2 разбирается СТРОГО, и это осознанное сужение отгруженного контракта: параметр не
|
|
7
|
+
* своего режима (`days` при `mode=all`, `from` при `mode=days`), `mode=days` без `days`, диапазон
|
|
8
|
+
* без одной границы — отказ 400 `AI_COSTS_PERIOD_INVALID`. Прежний сервер в этих случаях молча
|
|
9
|
+
* отдавал ВЕСЬ журнал, то есть вызов «за семь дней» без режима возвращал цифры за всё время и
|
|
10
|
+
* выглядел успешным. Схема повторяет это правило здесь, чтобы отказ приходил ДО вызова и называл
|
|
11
|
+
* параметр, а не приезжал кодом с сервера.
|
|
12
|
+
*
|
|
13
|
+
* Исключение одно — `days` при `mode=range`: отгруженный клиент шлёт его вместе с границами, прежний сервер
|
|
14
|
+
* отдавал по границам, и отказ сломал бы вызов, который вчера работал (решение по правилу «как в прежней системе»).
|
|
15
|
+
* Мост его принимает и серверу не передаёт: окно задают границы.
|
|
16
|
+
*
|
|
17
|
+
* ⛔ Форма границ диапазона — дата-время С часовым поясом. Голая дата отвергается обеими
|
|
18
|
+
* сторонами: полночь без пояса молча отрезала бы последний день диапазона.
|
|
19
|
+
*/
|
|
20
|
+
/** Верхняя граница скользящего окна (сто лет) — паритет с сервером. */
|
|
21
|
+
const MAX_DAYS = 36_500;
|
|
22
|
+
/** Потолок страницы разреза — паритет с сервером. */
|
|
23
|
+
const MAX_LIMIT = 100;
|
|
24
|
+
/**
|
|
25
|
+
* Дата-время ISO 8601 с обязательным часовым поясом. Выражение повторяет серверное дословно:
|
|
26
|
+
* разъехавшись, схема принимала бы то, что сервер отвергнет, и наоборот.
|
|
27
|
+
*/
|
|
28
|
+
const DATE_TIME_WITH_OFFSET = /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}(?::\d{2}(?:\.\d{1,6})?)?(?:Z|[+-]\d{2}:\d{2})$/u;
|
|
29
|
+
const REPORTS = ['summary', 'tasks', 'breakdown'];
|
|
30
|
+
const PERIOD_MODES = ['all', 'days', 'range'];
|
|
31
|
+
const SCOPES = ['production', 'with_tests'];
|
|
32
|
+
/** Значение `platform` — отгруженное имя разреза по каналу; переименовывать нельзя. */
|
|
33
|
+
const GROUP_BY = ['customer', 'platform', 'tag', 'operation', 'provider'];
|
|
34
|
+
const costsSchema = z
|
|
35
|
+
.object({
|
|
36
|
+
workspace_id: uuidSchema.optional(),
|
|
37
|
+
report: z.enum(REPORTS),
|
|
38
|
+
mode: z.enum(PERIOD_MODES).optional(),
|
|
39
|
+
days: z.number().int().min(1).max(MAX_DAYS).optional(),
|
|
40
|
+
from: z.string().regex(DATE_TIME_WITH_OFFSET).optional(),
|
|
41
|
+
to: z.string().regex(DATE_TIME_WITH_OFFSET).optional(),
|
|
42
|
+
scope: z.enum(SCOPES).optional(),
|
|
43
|
+
group_by: z.enum(GROUP_BY).optional(),
|
|
44
|
+
page: z.number().int().min(1).optional(),
|
|
45
|
+
limit: z.number().int().min(1).max(MAX_LIMIT).optional(),
|
|
46
|
+
})
|
|
47
|
+
.strict()
|
|
48
|
+
.superRefine((input, ctx) => {
|
|
49
|
+
const mode = input.mode ?? 'all';
|
|
50
|
+
const foreign = (parameter) => ctx.addIssue({
|
|
51
|
+
code: z.ZodIssueCode.custom,
|
|
52
|
+
path: [parameter],
|
|
53
|
+
message: `Параметр ${parameter} не относится к режиму периода ${mode}`,
|
|
54
|
+
});
|
|
55
|
+
// days при range принимается и не уходит серверу — как у прежней системы (границы range побеждают). Отказ — только
|
|
56
|
+
// days без своего режима: там клиент явно ждёт окно «последние N дней», а получил бы весь журнал.
|
|
57
|
+
if (mode !== 'days' && mode !== 'range' && input.days !== undefined)
|
|
58
|
+
foreign('days');
|
|
59
|
+
if (mode !== 'range' && input.from !== undefined)
|
|
60
|
+
foreign('from');
|
|
61
|
+
if (mode !== 'range' && input.to !== undefined)
|
|
62
|
+
foreign('to');
|
|
63
|
+
if (mode === 'days' && input.days === undefined) {
|
|
64
|
+
ctx.addIssue({
|
|
65
|
+
code: z.ZodIssueCode.custom,
|
|
66
|
+
path: ['days'],
|
|
67
|
+
message: 'Режим периода days требует days',
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
if (mode === 'range' && (input.from === undefined || input.to === undefined)) {
|
|
71
|
+
ctx.addIssue({
|
|
72
|
+
code: z.ZodIssueCode.custom,
|
|
73
|
+
path: [input.from === undefined ? 'from' : 'to'],
|
|
74
|
+
message: 'Режим периода range требует обе границы: from и to',
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
// ⛔ Разрез и страница есть ТОЛЬКО у breakdown: у сводки и задач сервер их не читает вовсе, и
|
|
78
|
+
// молча принятый group_by создавал бы впечатление, что отчёт сгруппирован.
|
|
79
|
+
if (input.report === 'breakdown') {
|
|
80
|
+
if (input.group_by === undefined) {
|
|
81
|
+
ctx.addIssue({
|
|
82
|
+
code: z.ZodIssueCode.custom,
|
|
83
|
+
path: ['group_by'],
|
|
84
|
+
message: 'Отчёт breakdown требует group_by',
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
else {
|
|
89
|
+
for (const parameter of ['group_by', 'page', 'limit']) {
|
|
90
|
+
if (input[parameter] !== undefined) {
|
|
91
|
+
ctx.addIssue({
|
|
92
|
+
code: z.ZodIssueCode.custom,
|
|
93
|
+
path: [parameter],
|
|
94
|
+
message: `Параметр ${parameter} есть только у отчёта breakdown`,
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
});
|
|
100
|
+
function costsPath(input) {
|
|
101
|
+
const params = new URLSearchParams();
|
|
102
|
+
if (input.mode !== undefined)
|
|
103
|
+
params.set('mode', input.mode);
|
|
104
|
+
if (input.days !== undefined && input.mode === 'days')
|
|
105
|
+
params.set('days', String(input.days));
|
|
106
|
+
if (input.from !== undefined)
|
|
107
|
+
params.set('from', input.from);
|
|
108
|
+
if (input.to !== undefined)
|
|
109
|
+
params.set('to', input.to);
|
|
110
|
+
if (input.scope !== undefined)
|
|
111
|
+
params.set('scope', input.scope);
|
|
112
|
+
if (input.group_by !== undefined)
|
|
113
|
+
params.set('groupBy', input.group_by);
|
|
114
|
+
if (input.page !== undefined)
|
|
115
|
+
params.set('page', String(input.page));
|
|
116
|
+
if (input.limit !== undefined)
|
|
117
|
+
params.set('limit', String(input.limit));
|
|
118
|
+
const query = params.toString();
|
|
119
|
+
// ⛔ Отчёт живёт ПОД рабочей областью: маршрут сервера — workspaces/:workspaceId/analytics/costs.
|
|
120
|
+
return `/workspaces/${input.workspace_id}/analytics/costs/${input.report}${query ? `?${query}` : ''}`;
|
|
121
|
+
}
|
|
122
|
+
export const aiCostsTools = [
|
|
123
|
+
defineTool({
|
|
124
|
+
name: 'besales_ai_costs_get',
|
|
125
|
+
sideEffect: 'none',
|
|
126
|
+
closedWorld: true,
|
|
127
|
+
requiredFields: ['report'],
|
|
128
|
+
defaultWorkspaceId: true,
|
|
129
|
+
resultPolicy: {
|
|
130
|
+
neverTruncate: true,
|
|
131
|
+
narrowingHint: 'Сузьте период, group_by или страницу.',
|
|
132
|
+
},
|
|
133
|
+
schema: costsSchema,
|
|
134
|
+
createRequest: (input) => ({ method: 'GET', path: costsPath(input) }),
|
|
135
|
+
enhanceResponse: (response) => withInstructions(response, [
|
|
136
|
+
'Это фактический журнал расхода, а не текущий каталог цен моделей.',
|
|
137
|
+
'unpricedEvents > 0 означает неизвестную, а не нулевую стоимость: не называй сумму полной.',
|
|
138
|
+
'Разрез по тегу неаддитивен и не показывает строк без тегов; постранично отдаётся только разрез по клиентам.',
|
|
139
|
+
]),
|
|
140
|
+
}),
|
|
141
|
+
];
|
|
142
|
+
//# sourceMappingURL=ai-costs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ai-costs.js","sourceRoot":"","sources":["../../../src/tools/definitions/ai-costs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAEvE;;;;;;;;;;;;;;;;GAgBG;AAEH,uEAAuE;AACvE,MAAM,QAAQ,GAAG,MAAM,CAAC;AACxB,qDAAqD;AACrD,MAAM,SAAS,GAAG,GAAG,CAAC;AAEtB;;;GAGG;AACH,MAAM,qBAAqB,GACzB,gFAAgF,CAAC;AAEnF,MAAM,OAAO,GAAG,CAAC,SAAS,EAAE,OAAO,EAAE,WAAW,CAAU,CAAC;AAC3D,MAAM,YAAY,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAU,CAAC;AACvD,MAAM,MAAM,GAAG,CAAC,YAAY,EAAE,YAAY,CAAU,CAAC;AACrD,uFAAuF;AACvF,MAAM,QAAQ,GAAG,CAAC,UAAU,EAAE,UAAU,EAAE,KAAK,EAAE,WAAW,EAAE,UAAU,CAAU,CAAC;AAEnF,MAAM,WAAW,GAAG,CAAC;KAClB,MAAM,CAAC;IACN,YAAY,EAAE,UAAU,CAAC,QAAQ,EAAE;IACnC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC;IACvB,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,QAAQ,EAAE;IACrC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,QAAQ,EAAE;IACtD,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC,QAAQ,EAAE;IACxD,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC,QAAQ,EAAE;IACtD,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE;IAChC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,QAAQ,EAAE;IACrC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IACxC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,QAAQ,EAAE;CACzD,CAAC;KACD,MAAM,EAAE;KACR,WAAW,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;IAC1B,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC;IACjC,MAAM,OAAO,GAAG,CAAC,SAAiC,EAAQ,EAAE,CAC1D,GAAG,CAAC,QAAQ,CAAC;QACX,IAAI,EAAE,CAAC,CAAC,YAAY,CAAC,MAAM;QAC3B,IAAI,EAAE,CAAC,SAAS,CAAC;QACjB,OAAO,EAAE,YAAY,SAAS,kCAAkC,IAAI,EAAE;KACvE,CAAC,CAAC;IACL,mHAAmH;IACnH,kGAAkG;IAClG,IAAI,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,OAAO,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS;QAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IACrF,IAAI,IAAI,KAAK,OAAO,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS;QAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IAClE,IAAI,IAAI,KAAK,OAAO,IAAI,KAAK,CAAC,EAAE,KAAK,SAAS;QAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9D,IAAI,IAAI,KAAK,MAAM,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAChD,GAAG,CAAC,QAAQ,CAAC;YACX,IAAI,EAAE,CAAC,CAAC,YAAY,CAAC,MAAM;YAC3B,IAAI,EAAE,CAAC,MAAM,CAAC;YACd,OAAO,EAAE,iCAAiC;SAC3C,CAAC,CAAC;IACL,CAAC;IACD,IAAI,IAAI,KAAK,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS,IAAI,KAAK,CAAC,EAAE,KAAK,SAAS,CAAC,EAAE,CAAC;QAC7E,GAAG,CAAC,QAAQ,CAAC;YACX,IAAI,EAAE,CAAC,CAAC,YAAY,CAAC,MAAM;YAC3B,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;YAChD,OAAO,EAAE,oDAAoD;SAC9D,CAAC,CAAC;IACL,CAAC;IACD,6FAA6F;IAC7F,2EAA2E;IAC3E,IAAI,KAAK,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;QACjC,IAAI,KAAK,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;YACjC,GAAG,CAAC,QAAQ,CAAC;gBACX,IAAI,EAAE,CAAC,CAAC,YAAY,CAAC,MAAM;gBAC3B,IAAI,EAAE,CAAC,UAAU,CAAC;gBAClB,OAAO,EAAE,kCAAkC;aAC5C,CAAC,CAAC;QACL,CAAC;IACH,CAAC;SAAM,CAAC;QACN,KAAK,MAAM,SAAS,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,CAAU,EAAE,CAAC;YAC/D,IAAI,KAAK,CAAC,SAAS,CAAC,KAAK,SAAS,EAAE,CAAC;gBACnC,GAAG,CAAC,QAAQ,CAAC;oBACX,IAAI,EAAE,CAAC,CAAC,YAAY,CAAC,MAAM;oBAC3B,IAAI,EAAE,CAAC,SAAS,CAAC;oBACjB,OAAO,EAAE,YAAY,SAAS,iCAAiC;iBAChE,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC,CAAC,CAAC;AAIL,SAAS,SAAS,CAAC,KAAiB;IAClC,MAAM,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;IACrC,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS;QAAE,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;IAC7D,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM;QAAE,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;IAC9F,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS;QAAE,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;IAC7D,IAAI,KAAK,CAAC,EAAE,KAAK,SAAS;QAAE,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC;IACvD,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS;QAAE,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;IAChE,IAAI,KAAK,CAAC,QAAQ,KAAK,SAAS;QAAE,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;IACxE,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS;QAAE,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;IACrE,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS;QAAE,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;IACxE,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;IAChC,iGAAiG;IACjG,OAAO,eAAe,KAAK,CAAC,YAAY,oBAAoB,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;AACxG,CAAC;AAED,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,UAAU,CAAC;QACT,IAAI,EAAE,sBAAsB;QAC5B,UAAU,EAAE,MAAM;QAClB,WAAW,EAAE,IAAI;QACjB,cAAc,EAAE,CAAC,QAAQ,CAAC;QAC1B,kBAAkB,EAAE,IAAI;QACxB,YAAY,EAAE;YACZ,aAAa,EAAE,IAAI;YACnB,aAAa,EAAE,uCAAuC;SACvD;QACD,MAAM,EAAE,WAAW;QACnB,aAAa,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;QACrE,eAAe,EAAE,CAAC,QAAQ,EAAE,EAAE,CAC5B,gBAAgB,CAAC,QAAQ,EAAE;YACzB,mEAAmE;YACnE,2FAA2F;YAC3F,6GAA6G;SAC9G,CAAC;KACL,CAAC;CACH,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { ApiMethod } from '../../http/api-client.js';
|
|
2
|
+
export interface ApiToolRequest {
|
|
3
|
+
readonly method?: ApiMethod;
|
|
4
|
+
readonly path: string;
|
|
5
|
+
readonly body?: unknown;
|
|
6
|
+
/** Saved launch intent, transported only as Idempotency-Key. */
|
|
7
|
+
readonly idempotencyKey?: string;
|
|
8
|
+
/** Original resource version; only the client builds the strong If-Match header. */
|
|
9
|
+
readonly ifMatch?: string;
|
|
10
|
+
/** Старая форма PATCH цепочки: прочитать ревизию по ID перед единственной записью. */
|
|
11
|
+
readonly followupRevisionLookup?: {
|
|
12
|
+
readonly path: string;
|
|
13
|
+
readonly sequenceId: string;
|
|
14
|
+
};
|
|
15
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api-tool-request.js","sourceRoot":"","sources":["../../../src/tools/definitions/api-tool-request.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export declare const shippedFormErrorHandlingSchema: z.ZodObject<{
|
|
3
|
+
ai_error_behavior: z.ZodOptional<z.ZodEnum<{
|
|
4
|
+
SILENT: "SILENT";
|
|
5
|
+
SEND_ERROR_MESSAGE: "SEND_ERROR_MESSAGE";
|
|
6
|
+
}>>;
|
|
7
|
+
custom_message: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
8
|
+
call_operator: z.ZodOptional<z.ZodBoolean>;
|
|
9
|
+
ai_error_target: z.ZodOptional<z.ZodNullable<z.ZodObject<{
|
|
10
|
+
pipeline_id: z.ZodOptional<z.ZodString>;
|
|
11
|
+
status_id: z.ZodString;
|
|
12
|
+
}, z.core.$strict>>>;
|
|
13
|
+
ai_error_target_stage_id: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
14
|
+
schema_version: z.ZodOptional<z.ZodLiteral<1>>;
|
|
15
|
+
ai_error_custom_message: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
16
|
+
call_operator_with_error: z.ZodOptional<z.ZodBoolean>;
|
|
17
|
+
}, z.core.$strict>;
|
|
18
|
+
export declare const shippedFormGreetingSchema: z.ZodObject<{
|
|
19
|
+
text: z.ZodOptional<z.ZodString>;
|
|
20
|
+
file_id: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
21
|
+
buttons: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
22
|
+
id: z.ZodString;
|
|
23
|
+
label: z.ZodString;
|
|
24
|
+
text: z.ZodString;
|
|
25
|
+
order: z.ZodNumber;
|
|
26
|
+
}, z.core.$strict>>>;
|
|
27
|
+
keyboard_type: z.ZodOptional<z.ZodEnum<{
|
|
28
|
+
INLINE: "INLINE";
|
|
29
|
+
REPLY: "REPLY";
|
|
30
|
+
}>>;
|
|
31
|
+
popup_delay_seconds: z.ZodOptional<z.ZodNumber>;
|
|
32
|
+
send_off_message_when_ai_disabled: z.ZodOptional<z.ZodBoolean>;
|
|
33
|
+
schema_version: z.ZodOptional<z.ZodLiteral<1>>;
|
|
34
|
+
bot_greeting: z.ZodOptional<z.ZodString>;
|
|
35
|
+
greeting_file_id: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
36
|
+
greeting_buttons: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
37
|
+
id: z.ZodString;
|
|
38
|
+
label: z.ZodString;
|
|
39
|
+
text: z.ZodString;
|
|
40
|
+
order: z.ZodNumber;
|
|
41
|
+
}, z.core.$strict>>>;
|
|
42
|
+
greeting_buttons_keyboard_type: z.ZodOptional<z.ZodEnum<{
|
|
43
|
+
INLINE: "INLINE";
|
|
44
|
+
REPLY: "REPLY";
|
|
45
|
+
}>>;
|
|
46
|
+
}, z.core.$strict>;
|
|
47
|
+
/** У прежней формы секция — массив правил; у новой — объект с правилами и признаком «не создавать задачу». */
|
|
48
|
+
export declare const shippedFormMessageFiltersSchema: z.ZodUnion<readonly [z.ZodObject<{
|
|
49
|
+
skip_task_creation_on_call_operator: z.ZodOptional<z.ZodBoolean>;
|
|
50
|
+
schema_version: z.ZodOptional<z.ZodLiteral<1>>;
|
|
51
|
+
rules: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
52
|
+
id: z.ZodString;
|
|
53
|
+
enabled: z.ZodBoolean;
|
|
54
|
+
order: z.ZodNumber;
|
|
55
|
+
source: z.ZodString;
|
|
56
|
+
target: z.ZodString;
|
|
57
|
+
}, z.core.$strict>>>;
|
|
58
|
+
}, z.core.$strict>, z.ZodArray<z.ZodObject<{
|
|
59
|
+
id: z.ZodString;
|
|
60
|
+
enabled: z.ZodBoolean;
|
|
61
|
+
order: z.ZodNumber;
|
|
62
|
+
source: z.ZodString;
|
|
63
|
+
target: z.ZodString;
|
|
64
|
+
}, z.core.$strict>>]>;
|
|
65
|
+
export declare const shippedFormMessageSplittingSchema: z.ZodObject<{
|
|
66
|
+
enabled: z.ZodOptional<z.ZodBoolean>;
|
|
67
|
+
mode: z.ZodOptional<z.ZodEnum<{
|
|
68
|
+
PARAGRAPH: "PARAGRAPH";
|
|
69
|
+
SEPARATOR: "SEPARATOR";
|
|
70
|
+
}>>;
|
|
71
|
+
separator: z.ZodOptional<z.ZodString>;
|
|
72
|
+
max_chunk_size: z.ZodOptional<z.ZodNumber>;
|
|
73
|
+
delay_between_ms: z.ZodOptional<z.ZodNumber>;
|
|
74
|
+
schema_version: z.ZodOptional<z.ZodLiteral<1>>;
|
|
75
|
+
message_chunk_separator: z.ZodOptional<z.ZodString>;
|
|
76
|
+
}, z.core.$strict>;
|
|
77
|
+
export declare const shippedFormOperatorScheduleSchema: z.ZodObject<{
|
|
78
|
+
enabled: z.ZodOptional<z.ZodBoolean>;
|
|
79
|
+
availability: z.ZodOptional<z.ZodObject<{
|
|
80
|
+
MON: z.ZodOptional<z.ZodObject<{
|
|
81
|
+
active: z.ZodBoolean;
|
|
82
|
+
start_time: z.ZodOptional<z.ZodString>;
|
|
83
|
+
end_time: z.ZodOptional<z.ZodString>;
|
|
84
|
+
}, z.core.$strict>>;
|
|
85
|
+
TUE: z.ZodOptional<z.ZodObject<{
|
|
86
|
+
active: z.ZodBoolean;
|
|
87
|
+
start_time: z.ZodOptional<z.ZodString>;
|
|
88
|
+
end_time: z.ZodOptional<z.ZodString>;
|
|
89
|
+
}, z.core.$strict>>;
|
|
90
|
+
WED: z.ZodOptional<z.ZodObject<{
|
|
91
|
+
active: z.ZodBoolean;
|
|
92
|
+
start_time: z.ZodOptional<z.ZodString>;
|
|
93
|
+
end_time: z.ZodOptional<z.ZodString>;
|
|
94
|
+
}, z.core.$strict>>;
|
|
95
|
+
THU: z.ZodOptional<z.ZodObject<{
|
|
96
|
+
active: z.ZodBoolean;
|
|
97
|
+
start_time: z.ZodOptional<z.ZodString>;
|
|
98
|
+
end_time: z.ZodOptional<z.ZodString>;
|
|
99
|
+
}, z.core.$strict>>;
|
|
100
|
+
FRI: z.ZodOptional<z.ZodObject<{
|
|
101
|
+
active: z.ZodBoolean;
|
|
102
|
+
start_time: z.ZodOptional<z.ZodString>;
|
|
103
|
+
end_time: z.ZodOptional<z.ZodString>;
|
|
104
|
+
}, z.core.$strict>>;
|
|
105
|
+
SAT: z.ZodOptional<z.ZodObject<{
|
|
106
|
+
active: z.ZodBoolean;
|
|
107
|
+
start_time: z.ZodOptional<z.ZodString>;
|
|
108
|
+
end_time: z.ZodOptional<z.ZodString>;
|
|
109
|
+
}, z.core.$strict>>;
|
|
110
|
+
SUN: z.ZodOptional<z.ZodObject<{
|
|
111
|
+
active: z.ZodBoolean;
|
|
112
|
+
start_time: z.ZodOptional<z.ZodString>;
|
|
113
|
+
end_time: z.ZodOptional<z.ZodString>;
|
|
114
|
+
}, z.core.$strict>>;
|
|
115
|
+
}, z.core.$strict>>;
|
|
116
|
+
unavailable_message: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
117
|
+
bot_waiting_return_hours: z.ZodOptional<z.ZodUnion<readonly [z.ZodLiteral<-1>, z.ZodLiteral<0>, z.ZodLiteral<1>, z.ZodLiteral<3>, z.ZodLiteral<6>, z.ZodLiteral<12>, z.ZodLiteral<24>]>>;
|
|
118
|
+
followup_waiting_return_hours: z.ZodOptional<z.ZodNumber>;
|
|
119
|
+
pause_agent_on_operator_reply: z.ZodOptional<z.ZodBoolean>;
|
|
120
|
+
schema_version: z.ZodOptional<z.ZodLiteral<1>>;
|
|
121
|
+
follow_up_waiting_return_hours: z.ZodOptional<z.ZodNumber>;
|
|
122
|
+
skip_task_creation_on_call_operator: z.ZodOptional<z.ZodBoolean>;
|
|
123
|
+
}, z.core.$strict>;
|
|
124
|
+
export declare const shippedFormPrivacySchema: z.ZodObject<{
|
|
125
|
+
anonymization_enabled: z.ZodOptional<z.ZodBoolean>;
|
|
126
|
+
personalization_mode: z.ZodOptional<z.ZodEnum<{
|
|
127
|
+
OFF: "OFF";
|
|
128
|
+
SHADOW: "SHADOW";
|
|
129
|
+
ENABLED: "ENABLED";
|
|
130
|
+
}>>;
|
|
131
|
+
anonymization_disabled_types: z.ZodOptional<z.ZodArray<z.ZodEnum<{
|
|
132
|
+
PHONE: "PHONE";
|
|
133
|
+
EMAIL: "EMAIL";
|
|
134
|
+
INN: "INN";
|
|
135
|
+
PASSPORT: "PASSPORT";
|
|
136
|
+
CARD: "CARD";
|
|
137
|
+
DATE_OF_BIRTH: "DATE_OF_BIRTH";
|
|
138
|
+
ACCOUNT: "ACCOUNT";
|
|
139
|
+
SNILS: "SNILS";
|
|
140
|
+
OGRN: "OGRN";
|
|
141
|
+
OGRNIP: "OGRNIP";
|
|
142
|
+
SOCIAL_ID: "SOCIAL_ID";
|
|
143
|
+
}>>>;
|
|
144
|
+
schema_version: z.ZodOptional<z.ZodLiteral<1>>;
|
|
145
|
+
contact_name_personalization_mode: z.ZodOptional<z.ZodEnum<{
|
|
146
|
+
OFF: "OFF";
|
|
147
|
+
SHADOW: "SHADOW";
|
|
148
|
+
ENABLED: "ENABLED";
|
|
149
|
+
}>>;
|
|
150
|
+
}, z.core.$strict>;
|
|
151
|
+
export declare const shippedFormTypingBehaviorSchema: z.ZodObject<{
|
|
152
|
+
typing_speed: z.ZodOptional<z.ZodEnum<{
|
|
153
|
+
medium: "medium";
|
|
154
|
+
slow: "slow";
|
|
155
|
+
fast: "fast";
|
|
156
|
+
instant: "instant";
|
|
157
|
+
}>>;
|
|
158
|
+
waiting_answer_time: z.ZodOptional<z.ZodNumber>;
|
|
159
|
+
can_interrupt: z.ZodOptional<z.ZodBoolean>;
|
|
160
|
+
fake_delay_ms: z.ZodOptional<z.ZodNumber>;
|
|
161
|
+
message_open_delay_ms: z.ZodOptional<z.ZodNumber>;
|
|
162
|
+
schema_version: z.ZodOptional<z.ZodLiteral<1>>;
|
|
163
|
+
fake_delay: z.ZodOptional<z.ZodNumber>;
|
|
164
|
+
message_open_delay: z.ZodOptional<z.ZodNumber>;
|
|
165
|
+
message_devide: z.ZodOptional<z.ZodBoolean>;
|
|
166
|
+
go_offline: z.ZodOptional<z.ZodString>;
|
|
167
|
+
}, z.core.$strict>;
|
|
168
|
+
type SectionName = 'error_handling' | 'greeting' | 'message_filters' | 'message_splitting' | 'operator_schedule' | 'privacy' | 'typing_behavior';
|
|
169
|
+
type Sections = Partial<Record<SectionName, unknown>>;
|
|
170
|
+
/**
|
|
171
|
+
* Конфликты прежнего и нового имени одного поля: присланы оба — отказ с адресом прежнего поля. Молча выбрать одно из
|
|
172
|
+
* двух значений значило бы сохранить не то, что человек имел в виду.
|
|
173
|
+
*/
|
|
174
|
+
export declare function shippedFormConflicts(input: Sections): Array<{
|
|
175
|
+
readonly path: string[];
|
|
176
|
+
readonly message: string;
|
|
177
|
+
}>;
|
|
178
|
+
/** Секции поведения в каноне новой версии: прежние имена переведены, переехавшие поля перенесены. */
|
|
179
|
+
export declare function translateShippedBehavior(input: Sections): Sections;
|
|
180
|
+
/** Прислал ли вызов прежнее поле без исполнителя — ответ называет его отброшенным. */
|
|
181
|
+
export declare function droppedShippedFields(input: Sections): string[];
|
|
182
|
+
export {};
|
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
// Прежняя форма вызова настроек поведения канала: имена полей и форма секций отгруженного моста.
|
|
2
|
+
//
|
|
3
|
+
// ⛔ По ратификации «переносится как есть = имена инструментов И форма входа» переименование поля — не
|
|
4
|
+
// основание для осознанного расхождения: ассистент, настраивающий канал по прежней памяти, инструкции оператора
|
|
5
|
+
// или сохранённому сценарию, получил бы отказ. Поэтому прежние имена ПРИНИМАЮТСЯ и переводятся в канон новой
|
|
6
|
+
// версии здесь, в мосте, — сервер видит только канон.
|
|
7
|
+
//
|
|
8
|
+
// ⛔ Отказ по конфликту имён живёт в СХЕМЕ (`superRefine`), а не в конструкторе запроса: проверка полноты карты
|
|
9
|
+
// маршрутов оборачивает разбор схемы в перехват, а конструктор — нет.
|
|
10
|
+
import { z } from 'zod';
|
|
11
|
+
import { MESSAGE_FILTER_NONCHARACTER_END, MESSAGE_FILTER_NONCHARACTER_START, MESSAGE_FILTER_PLANE_END_FIRST, MESSAGE_FILTER_PLANE_END_MASK, MESSAGE_FILTER_SOURCE_MAX_LENGTH, MESSAGE_FILTER_TARGET_MAX_LENGTH, } from '../../shared/constants/message-filter.constants.js';
|
|
12
|
+
import { behaviorErrorHandlingSchema, behaviorGreetingButtonSchema, behaviorGreetingSchema, behaviorMessageFilterSchema, behaviorMessageFiltersSchema, behaviorMessageSplittingSchema, behaviorOperatorScheduleSchema, behaviorPrivacySchema, behaviorTypingBehaviorSchema, } from './shared.js';
|
|
13
|
+
/** Секунды прежней формы → миллисекунды хранения. */
|
|
14
|
+
const MILLISECONDS_PER_SECOND = 1000;
|
|
15
|
+
export const shippedFormErrorHandlingSchema = behaviorErrorHandlingSchema.extend({
|
|
16
|
+
ai_error_custom_message: z.string().nullable().optional(),
|
|
17
|
+
call_operator_with_error: z.boolean().optional(),
|
|
18
|
+
});
|
|
19
|
+
export const shippedFormGreetingSchema = behaviorGreetingSchema.extend({
|
|
20
|
+
bot_greeting: z.string().optional(),
|
|
21
|
+
greeting_file_id: z.string().uuid().nullable().optional(),
|
|
22
|
+
greeting_buttons: z.array(behaviorGreetingButtonSchema).optional(),
|
|
23
|
+
greeting_buttons_keyboard_type: z.enum(['INLINE', 'REPLY']).optional(),
|
|
24
|
+
});
|
|
25
|
+
/** Несимволы Unicode зарезервированы сервером для маскировки ссылок. */
|
|
26
|
+
function containsMessageFilterNoncharacter(value) {
|
|
27
|
+
return Array.from(value).some((character) => {
|
|
28
|
+
const point = character.codePointAt(0);
|
|
29
|
+
return point !== undefined && ((point >= MESSAGE_FILTER_NONCHARACTER_START && point <= MESSAGE_FILTER_NONCHARACTER_END) ||
|
|
30
|
+
(point & MESSAGE_FILTER_PLANE_END_MASK) >= MESSAGE_FILTER_PLANE_END_FIRST);
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
const messageFilterRuleSchema = behaviorMessageFilterSchema.extend({
|
|
34
|
+
source: z.string().min(1).max(MESSAGE_FILTER_SOURCE_MAX_LENGTH).refine((value) => value.trim().length > 0 && !containsMessageFilterNoncharacter(value), 'Образец должен быть непустым после trim() и не содержать несимволы Unicode'),
|
|
35
|
+
target: z.string().max(MESSAGE_FILTER_TARGET_MAX_LENGTH).refine((value) => !containsMessageFilterNoncharacter(value), 'Замена не должна содержать несимволы Unicode'),
|
|
36
|
+
});
|
|
37
|
+
/** У прежней формы секция — массив правил; у новой — объект с правилами и признаком «не создавать задачу». */
|
|
38
|
+
export const shippedFormMessageFiltersSchema = z.union([
|
|
39
|
+
behaviorMessageFiltersSchema.extend({ rules: z.array(messageFilterRuleSchema).optional() }),
|
|
40
|
+
z.array(messageFilterRuleSchema),
|
|
41
|
+
]);
|
|
42
|
+
export const shippedFormMessageSplittingSchema = behaviorMessageSplittingSchema.extend({
|
|
43
|
+
message_chunk_separator: z.string().optional(),
|
|
44
|
+
});
|
|
45
|
+
export const shippedFormOperatorScheduleSchema = behaviorOperatorScheduleSchema.extend({
|
|
46
|
+
follow_up_waiting_return_hours: z.number().int().optional(),
|
|
47
|
+
skip_task_creation_on_call_operator: z.boolean().optional(),
|
|
48
|
+
});
|
|
49
|
+
export const shippedFormPrivacySchema = behaviorPrivacySchema.extend({
|
|
50
|
+
contact_name_personalization_mode: z.enum(['OFF', 'SHADOW', 'ENABLED']).optional(),
|
|
51
|
+
});
|
|
52
|
+
export const shippedFormTypingBehaviorSchema = behaviorTypingBehaviorSchema.extend({
|
|
53
|
+
// Секунды прежней формы; сохрани мы их как есть — 10 стали бы десятью миллисекундами.
|
|
54
|
+
fake_delay: z.number().int().min(0).optional(),
|
|
55
|
+
message_open_delay: z.number().int().min(0).optional(),
|
|
56
|
+
message_devide: z.boolean().optional(),
|
|
57
|
+
// Хранилось, но не исполнялось и у прежней системы: принимается и отбрасывается с пометкой в ответе.
|
|
58
|
+
go_offline: z.string().optional(),
|
|
59
|
+
});
|
|
60
|
+
/** Прежнее имя → новое внутри одной секции. */
|
|
61
|
+
const RENAMES = {
|
|
62
|
+
error_handling: { ai_error_custom_message: 'custom_message', call_operator_with_error: 'call_operator' },
|
|
63
|
+
greeting: {
|
|
64
|
+
bot_greeting: 'text',
|
|
65
|
+
greeting_file_id: 'file_id',
|
|
66
|
+
greeting_buttons: 'buttons',
|
|
67
|
+
greeting_buttons_keyboard_type: 'keyboard_type',
|
|
68
|
+
},
|
|
69
|
+
message_splitting: { message_chunk_separator: 'separator' },
|
|
70
|
+
operator_schedule: { follow_up_waiting_return_hours: 'followup_waiting_return_hours' },
|
|
71
|
+
privacy: { contact_name_personalization_mode: 'personalization_mode' },
|
|
72
|
+
typing_behavior: { fake_delay: 'fake_delay_ms', message_open_delay: 'message_open_delay_ms' },
|
|
73
|
+
};
|
|
74
|
+
/** Прежние поля в секундах: переводятся умножением. */
|
|
75
|
+
const SECONDS_FIELDS = new Set(['typing_behavior.fake_delay', 'typing_behavior.message_open_delay']);
|
|
76
|
+
/** Поля, переехавшие в другую секцию. */
|
|
77
|
+
const MOVES = [
|
|
78
|
+
{ from: ['typing_behavior', 'message_devide'], to: ['message_splitting', 'enabled'] },
|
|
79
|
+
{
|
|
80
|
+
from: ['operator_schedule', 'skip_task_creation_on_call_operator'],
|
|
81
|
+
to: ['message_filters', 'skip_task_creation_on_call_operator'],
|
|
82
|
+
},
|
|
83
|
+
];
|
|
84
|
+
/** Прежние поля без исполнителя: принимаются и отбрасываются. */
|
|
85
|
+
const DROPPED = [['typing_behavior', 'go_offline']];
|
|
86
|
+
/**
|
|
87
|
+
* Конфликты прежнего и нового имени одного поля: присланы оба — отказ с адресом прежнего поля. Молча выбрать одно из
|
|
88
|
+
* двух значений значило бы сохранить не то, что человек имел в виду.
|
|
89
|
+
*/
|
|
90
|
+
export function shippedFormConflicts(input) {
|
|
91
|
+
const conflicts = [];
|
|
92
|
+
for (const [section, renames] of Object.entries(RENAMES)) {
|
|
93
|
+
const value = recordOf(input[section]);
|
|
94
|
+
for (const [shipped, canonical] of Object.entries(renames)) {
|
|
95
|
+
if (Object.hasOwn(value, shipped) && Object.hasOwn(value, canonical)) {
|
|
96
|
+
conflicts.push({
|
|
97
|
+
path: [section, shipped],
|
|
98
|
+
message: `Пришли и прежнее имя ${section}.${shipped}, и новое ${section}.${canonical}: оставьте одно`,
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
for (const move of MOVES) {
|
|
104
|
+
const from = recordOf(input[move.from[0]]);
|
|
105
|
+
const to = recordOf(input[move.to[0]]);
|
|
106
|
+
if (Object.hasOwn(from, move.from[1]) && Object.hasOwn(to, move.to[1])) {
|
|
107
|
+
conflicts.push({
|
|
108
|
+
path: [...move.from],
|
|
109
|
+
message: `Пришли и прежнее ${move.from.join('.')}, и новое ${move.to.join('.')}: оставьте одно`,
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
return conflicts;
|
|
114
|
+
}
|
|
115
|
+
/** Секции поведения в каноне новой версии: прежние имена переведены, переехавшие поля перенесены. */
|
|
116
|
+
export function translateShippedBehavior(input) {
|
|
117
|
+
const sections = {};
|
|
118
|
+
for (const [name, raw] of Object.entries(input)) {
|
|
119
|
+
if (raw === undefined)
|
|
120
|
+
continue;
|
|
121
|
+
if (name === 'message_filters' && Array.isArray(raw)) {
|
|
122
|
+
sections.message_filters = { rules: raw };
|
|
123
|
+
continue;
|
|
124
|
+
}
|
|
125
|
+
sections[name] = { ...recordOf(raw) };
|
|
126
|
+
}
|
|
127
|
+
for (const [section, renames] of Object.entries(RENAMES)) {
|
|
128
|
+
const value = sections[section];
|
|
129
|
+
if (!isRecord(value))
|
|
130
|
+
continue;
|
|
131
|
+
for (const [shipped, canonical] of Object.entries(renames)) {
|
|
132
|
+
if (!Object.hasOwn(value, shipped))
|
|
133
|
+
continue;
|
|
134
|
+
const shippedValue = value[shipped];
|
|
135
|
+
delete value[shipped];
|
|
136
|
+
value[canonical] =
|
|
137
|
+
SECONDS_FIELDS.has(`${section}.${shipped}`) && typeof shippedValue === 'number'
|
|
138
|
+
? shippedValue * MILLISECONDS_PER_SECOND
|
|
139
|
+
: shippedValue;
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
for (const move of MOVES) {
|
|
143
|
+
const from = sections[move.from[0]];
|
|
144
|
+
if (!isRecord(from) || !Object.hasOwn(from, move.from[1]))
|
|
145
|
+
continue;
|
|
146
|
+
const moved = from[move.from[1]];
|
|
147
|
+
delete from[move.from[1]];
|
|
148
|
+
const to = isRecord(sections[move.to[0]]) ? sections[move.to[0]] : {};
|
|
149
|
+
to[move.to[1]] = moved;
|
|
150
|
+
sections[move.to[0]] = to;
|
|
151
|
+
}
|
|
152
|
+
for (const [section, field] of DROPPED) {
|
|
153
|
+
const value = sections[section];
|
|
154
|
+
if (isRecord(value))
|
|
155
|
+
delete value[field];
|
|
156
|
+
}
|
|
157
|
+
// Секция, от которой после переноса ничего не осталось, не отправляется: пустая запись секции у канала без
|
|
158
|
+
// сохранённого значения отвергалась бы как неполная.
|
|
159
|
+
for (const name of Object.keys(sections)) {
|
|
160
|
+
const value = sections[name];
|
|
161
|
+
if (!isRecord(value))
|
|
162
|
+
continue;
|
|
163
|
+
const meaningful = Object.keys(value).filter((key) => key !== 'schema_version');
|
|
164
|
+
if (meaningful.length === 0 && isOnlyMovedOrDropped(name, input[name]))
|
|
165
|
+
delete sections[name];
|
|
166
|
+
}
|
|
167
|
+
return sections;
|
|
168
|
+
}
|
|
169
|
+
/** Прислал ли вызов прежнее поле без исполнителя — ответ называет его отброшенным. */
|
|
170
|
+
export function droppedShippedFields(input) {
|
|
171
|
+
return DROPPED.filter(([section, field]) => Object.hasOwn(recordOf(input[section]), field)).map(([section, field]) => `${section}.${field}`);
|
|
172
|
+
}
|
|
173
|
+
function isOnlyMovedOrDropped(section, raw) {
|
|
174
|
+
const keys = Object.keys(recordOf(raw)).filter((key) => key !== 'schema_version');
|
|
175
|
+
return (keys.length > 0 &&
|
|
176
|
+
keys.every((key) => MOVES.some((move) => move.from[0] === section && move.from[1] === key) ||
|
|
177
|
+
DROPPED.some(([dropSection, field]) => dropSection === section && field === key)));
|
|
178
|
+
}
|
|
179
|
+
function recordOf(value) {
|
|
180
|
+
return isRecord(value) ? value : {};
|
|
181
|
+
}
|
|
182
|
+
function isRecord(value) {
|
|
183
|
+
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
184
|
+
}
|
|
185
|
+
//# sourceMappingURL=behavior-shipped-form.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"behavior-shipped-form.js","sourceRoot":"","sources":["../../../src/tools/definitions/behavior-shipped-form.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
// Предупреждения о доставляемости волн: чтение привязки и настройка порога срабатывания.
|
|
2
|
+
//
|
|
3
|
+
// Инструменты НОВЫЕ: в отгруженной линии подсистемы нет вовсе (она появилась в проде 01.08.2026
|
|
4
|
+
// уже без мостовой поверхности), поэтому имена v2-канонические и портировать нечего.
|
|
5
|
+
import { z } from 'zod';
|
|
6
|
+
import { compactObject, defineTool, uuidSchema, withInstructions } from './shared.js';
|
|
7
|
+
/** Обе границы доли исключены: 0 сигналил бы всегда, 1 — никогда. */
|
|
8
|
+
const THRESHOLD_EXCLUSIVE_MIN = 0;
|
|
9
|
+
const THRESHOLD_EXCLUSIVE_MAX = 1;
|
|
10
|
+
const settingsPath = (workspaceId) => `/workspaces/${workspaceId}/broadcast-alert-settings`;
|
|
11
|
+
/**
|
|
12
|
+
* Четыре места, где оператор увидит успех и не получит предупреждений. Текст висит на ОБОИХ
|
|
13
|
+
* инструментах: половина видна только после чтения настройки, вторая — только после записи, а
|
|
14
|
+
* спрашивает оператор «почему молчит» одинаково в обоих случаях.
|
|
15
|
+
*/
|
|
16
|
+
const TRAPS = [
|
|
17
|
+
'Без включённой ПРОВЕРКИ ДОСТАВКИ у канала школы предупреждений не будет вовсе: наблюдать за волнами некому. Признак `deliveryCheckConfigured: false` в ответе означает именно это, и настройкой чата он не лечится.',
|
|
18
|
+
'Момент включения — граница исторического хвоста: волны, ушедшие ДО привязки чата, задним числом не разбираются.',
|
|
19
|
+
'Предупреждение одноразовое на волну и без отбоя. Повторная привязка того же чата второго сообщения по разобранной волне не породит.',
|
|
20
|
+
'Бот платформы должен быть в группе и уметь туда писать. Привязка и отключение чата выполняются командой в группе, а не этим инструментом.',
|
|
21
|
+
];
|
|
22
|
+
export const broadcastAlertTools = [
|
|
23
|
+
defineTool({
|
|
24
|
+
name: 'besales_broadcast_alert_settings_get',
|
|
25
|
+
sideEffect: 'none',
|
|
26
|
+
requiredFields: [],
|
|
27
|
+
defaultWorkspaceId: true,
|
|
28
|
+
schema: z
|
|
29
|
+
.object({
|
|
30
|
+
workspace_id: uuidSchema.optional(),
|
|
31
|
+
})
|
|
32
|
+
.strict(),
|
|
33
|
+
createRequest: (input) => ({
|
|
34
|
+
method: 'GET',
|
|
35
|
+
path: settingsPath(input.workspace_id),
|
|
36
|
+
}),
|
|
37
|
+
enhanceResponse: (response) => withInstructions(response, [
|
|
38
|
+
'Настройка одна на воркспейс: адрес служебного чата и доля недоставок, выше которой платформа предупреждает.',
|
|
39
|
+
'`telegramChatId: null` означает, что предупреждения выключены, а не что чат «не задан по умолчанию».',
|
|
40
|
+
...TRAPS,
|
|
41
|
+
]),
|
|
42
|
+
}),
|
|
43
|
+
defineTool({
|
|
44
|
+
name: 'besales_broadcast_alert_settings_update',
|
|
45
|
+
sideEffect: 'write',
|
|
46
|
+
requiredFields: [],
|
|
47
|
+
defaultWorkspaceId: true,
|
|
48
|
+
schema: z
|
|
49
|
+
.object({
|
|
50
|
+
workspace_id: uuidSchema.optional(),
|
|
51
|
+
low_delivery_threshold: z
|
|
52
|
+
.number()
|
|
53
|
+
.gt(THRESHOLD_EXCLUSIVE_MIN)
|
|
54
|
+
.lt(THRESHOLD_EXCLUSIVE_MAX)
|
|
55
|
+
.optional(),
|
|
56
|
+
})
|
|
57
|
+
.strict(),
|
|
58
|
+
createRequest: (input) => ({
|
|
59
|
+
method: 'PATCH',
|
|
60
|
+
path: settingsPath(input.workspace_id),
|
|
61
|
+
body: compactObject({
|
|
62
|
+
lowDeliveryThreshold: input.low_delivery_threshold,
|
|
63
|
+
}),
|
|
64
|
+
}),
|
|
65
|
+
enhanceResponse: (response) => withInstructions(response, [
|
|
66
|
+
'Запись ЧАСТИЧНАЯ: непереданное поле остаётся прежним. Пустое тело ничего не меняет и ничего не пишет в журнал.',
|
|
67
|
+
'Здесь меняется только low_delivery_threshold: доля недоставок строго между 0 и 1. Привязку и отключение служебного чата выполняют командой в самой группе; одноразовый код подключения через этот инструмент не выдаётся.',
|
|
68
|
+
...TRAPS,
|
|
69
|
+
]),
|
|
70
|
+
}),
|
|
71
|
+
];
|
|
72
|
+
//# sourceMappingURL=broadcast-alerts.js.map
|