@besales/mcp 0.46.0 → 0.47.0
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 +96 -55
- package/dist/auth/connection-store.d.ts +21 -1
- package/dist/auth/connection-store.js +46 -2
- package/dist/auth/connection-store.js.map +1 -1
- package/dist/auth/oauth-client.d.ts +5 -1
- package/dist/auth/oauth-client.js +22 -12
- package/dist/auth/oauth-client.js.map +1 -1
- package/dist/cli.js +14 -5
- package/dist/cli.js.map +1 -1
- package/dist/http/api-client.d.ts +16 -1
- package/dist/http/api-client.js +50 -2
- package/dist/http/api-client.js.map +1 -1
- package/dist/instructions/server-instructions.d.ts +4 -13
- package/dist/instructions/server-instructions.js +68 -274
- package/dist/instructions/server-instructions.js.map +1 -1
- package/dist/prompts/registry.d.ts +15 -0
- package/dist/prompts/registry.js +83 -0
- package/dist/prompts/registry.js.map +1 -0
- package/dist/resources/concepts/feedback-sheets.md +7 -4
- package/dist/resources/concepts/handoff.md +4 -1
- package/dist/resources/concepts/sandbox.md +14 -5
- package/dist/resources/concepts/triggers.md +6 -2
- package/dist/resources/concepts/workbook-classification.md +26 -21
- package/dist/resources/docs/campaigns.md +20 -0
- package/dist/resources/docs/follow-up.md +19 -0
- package/dist/resources/docs/platforms.md +2 -2
- package/dist/resources/docs/routing.md +18 -0
- package/dist/resources/docs/task-state.md +30 -0
- package/dist/resources/docs/trigger-actions.md +28 -0
- package/dist/resources/docs/variables.md +18 -0
- package/dist/resources/registry.js +51 -2
- package/dist/resources/registry.js.map +1 -1
- package/dist/resources/workflows/extract-from-document.md +8 -1
- package/dist/resources/workflows/iterate-with-sandbox.md +5 -2
- package/dist/resources/workflows/platform-setup-from-scratch.md +90 -2
- package/dist/resources/workflows/production-readiness-check.md +22 -18
- package/dist/schemas/mcp-tools.json +1058 -99
- package/dist/server.d.ts +2 -0
- package/dist/server.js +8 -2
- package/dist/server.js.map +1 -1
- package/dist/tasks/task-state-store.d.ts +68 -0
- package/dist/tasks/task-state-store.js +278 -0
- package/dist/tasks/task-state-store.js.map +1 -0
- package/dist/tools/annotations.d.ts +7 -0
- package/dist/tools/annotations.js +16 -0
- package/dist/tools/annotations.js.map +1 -0
- package/dist/tools/contracts.js +7 -1
- package/dist/tools/contracts.js.map +1 -1
- package/dist/tools/definitions/agent-design.d.ts +41 -20
- package/dist/tools/definitions/agent-design.js +189 -19
- package/dist/tools/definitions/agent-design.js.map +1 -1
- package/dist/tools/definitions/analytics.d.ts +40 -0
- package/dist/tools/definitions/analytics.js +233 -0
- package/dist/tools/definitions/analytics.js.map +1 -0
- package/dist/tools/definitions/broadcast-analytics.js +12 -0
- package/dist/tools/definitions/broadcast-analytics.js.map +1 -1
- package/dist/tools/definitions/broadcast-mailing-variants.d.ts +2 -0
- package/dist/tools/definitions/broadcast-mailing-variants.js +10 -0
- package/dist/tools/definitions/broadcast-mailing-variants.js.map +1 -1
- package/dist/tools/definitions/broadcast-scheduler.d.ts +7 -1
- package/dist/tools/definitions/broadcast-scheduler.js +71 -4
- package/dist/tools/definitions/broadcast-scheduler.js.map +1 -1
- package/dist/tools/definitions/contacts.d.ts +15 -0
- package/dist/tools/definitions/contacts.js +84 -0
- package/dist/tools/definitions/contacts.js.map +1 -0
- package/dist/tools/definitions/crm-platform.d.ts +2 -0
- package/dist/tools/definitions/crm-platform.js +75 -5
- package/dist/tools/definitions/crm-platform.js.map +1 -1
- package/dist/tools/definitions/datasource.d.ts +1 -0
- package/dist/tools/definitions/datasource.js +16 -1
- package/dist/tools/definitions/datasource.js.map +1 -1
- package/dist/tools/definitions/dialogue-audit.d.ts +2 -2
- package/dist/tools/definitions/dialogue-audit.js +54 -16
- package/dist/tools/definitions/dialogue-audit.js.map +1 -1
- package/dist/tools/definitions/dialogue-export.d.ts +1 -1
- package/dist/tools/definitions/dialogue-export.js +12 -0
- package/dist/tools/definitions/dialogue-export.js.map +1 -1
- package/dist/tools/definitions/external-api-channels.js +39 -12
- package/dist/tools/definitions/external-api-channels.js.map +1 -1
- package/dist/tools/definitions/follow-up-funnel-test.js +4 -0
- package/dist/tools/definitions/follow-up-funnel-test.js.map +1 -1
- package/dist/tools/definitions/follow-up-setup.js +3 -0
- package/dist/tools/definitions/follow-up-setup.js.map +1 -1
- package/dist/tools/definitions/follow-up.d.ts +1 -1
- package/dist/tools/definitions/follow-up.js +4 -0
- package/dist/tools/definitions/follow-up.js.map +1 -1
- package/dist/tools/definitions/getcourse-anchor-refresh.d.ts +3 -0
- package/dist/tools/definitions/getcourse-anchor-refresh.js +29 -2
- package/dist/tools/definitions/getcourse-anchor-refresh.js.map +1 -1
- package/dist/tools/definitions/getcourse-cold-welcome.d.ts +12 -2
- package/dist/tools/definitions/getcourse-cold-welcome.js +79 -4
- package/dist/tools/definitions/getcourse-cold-welcome.js.map +1 -1
- package/dist/tools/definitions/getcourse-wave.js +14 -0
- package/dist/tools/definitions/getcourse-wave.js.map +1 -1
- package/dist/tools/definitions/help.d.ts +8 -0
- package/dist/tools/definitions/help.js +219 -0
- package/dist/tools/definitions/help.js.map +1 -0
- package/dist/tools/definitions/knowledge.d.ts +27 -5
- package/dist/tools/definitions/knowledge.js +200 -33
- package/dist/tools/definitions/knowledge.js.map +1 -1
- package/dist/tools/definitions/link-tracking.js +9 -0
- package/dist/tools/definitions/link-tracking.js.map +1 -1
- package/dist/tools/definitions/model-comparison.js +6 -0
- package/dist/tools/definitions/model-comparison.js.map +1 -1
- package/dist/tools/definitions/operational-overview.d.ts +3 -0
- package/dist/tools/definitions/operational-overview.js +23 -0
- package/dist/tools/definitions/operational-overview.js.map +1 -0
- package/dist/tools/definitions/operator-workflow.d.ts +20 -0
- package/dist/tools/definitions/operator-workflow.js +114 -0
- package/dist/tools/definitions/operator-workflow.js.map +1 -0
- package/dist/tools/definitions/platform-setup.d.ts +25 -3
- package/dist/tools/definitions/platform-setup.js +198 -5
- package/dist/tools/definitions/platform-setup.js.map +1 -1
- package/dist/tools/definitions/scheduled-tasks.js +2 -0
- package/dist/tools/definitions/scheduled-tasks.js.map +1 -1
- package/dist/tools/definitions/session.js +103 -5
- package/dist/tools/definitions/session.js.map +1 -1
- package/dist/tools/definitions/shared.d.ts +153 -11
- package/dist/tools/definitions/shared.js +59 -9
- package/dist/tools/definitions/shared.js.map +1 -1
- package/dist/tools/definitions/task-state.d.ts +76 -0
- package/dist/tools/definitions/task-state.js +301 -0
- package/dist/tools/definitions/task-state.js.map +1 -0
- package/dist/tools/definitions/trigger-contact-claims.js +2 -0
- package/dist/tools/definitions/trigger-contact-claims.js.map +1 -1
- package/dist/tools/definitions.d.ts +265 -31
- package/dist/tools/definitions.js +12 -0
- package/dist/tools/definitions.js.map +1 -1
- package/dist/tools/description-localization.d.ts +2 -0
- package/dist/tools/description-localization.js +46 -0
- package/dist/tools/description-localization.js.map +1 -0
- package/dist/tools/incomplete-list.d.ts +23 -0
- package/dist/tools/incomplete-list.js +39 -0
- package/dist/tools/incomplete-list.js.map +1 -0
- package/dist/tools/inventory.d.ts +10 -0
- package/dist/tools/inventory.js +49 -0
- package/dist/tools/inventory.js.map +1 -0
- package/dist/tools/registry-mapping-cases-core.js +111 -2
- package/dist/tools/registry-mapping-cases-core.js.map +1 -1
- package/dist/tools/registry-mapping-cases-platform.js +69 -0
- package/dist/tools/registry-mapping-cases-platform.js.map +1 -1
- package/dist/tools/registry.d.ts +2 -0
- package/dist/tools/registry.js +60 -8
- package/dist/tools/registry.js.map +1 -1
- package/dist/tools/result-envelope.d.ts +46 -0
- package/dist/tools/result-envelope.js +184 -0
- package/dist/tools/result-envelope.js.map +1 -0
- package/dist/tools/result.d.ts +41 -3
- package/dist/tools/result.js +229 -27
- package/dist/tools/result.js.map +1 -1
- package/dist/tools/tool-title.d.ts +2 -0
- package/dist/tools/tool-title.js +12 -0
- package/dist/tools/tool-title.js.map +1 -0
- package/dist/tools/toolsets.d.ts +37 -0
- package/dist/tools/toolsets.js +64 -0
- package/dist/tools/toolsets.js.map +1 -0
- package/dist/tools/verify-with.d.ts +5 -0
- package/dist/tools/verify-with.js +36 -0
- package/dist/tools/verify-with.js.map +1 -0
- package/dist/types/api-contract.gen.d.ts +1421 -80
- package/dist/utils/logger.d.ts +11 -0
- package/dist/utils/logger.js +64 -8
- package/dist/utils/logger.js.map +1 -1
- package/docs/agent-usage-guide.full.ru.md +20 -15
- package/docs/agent-usage-guide.ru.md +24 -16
- package/docs/async-operation-lifecycle.md +46 -0
- package/docs/connect.ru.md +120 -0
- package/docs/evals/model-behavior-scorecard.md +80 -0
- package/docs/failure-semantics.md +56 -0
- package/docs/help-navigation.md +48 -0
- package/docs/host-compatibility-matrix.md +153 -0
- package/docs/host-setup.md +22 -6
- package/docs/operation-coverage.md +114 -0
- package/docs/pii-policy.md +46 -0
- package/docs/response-size-budget.md +150 -0
- package/docs/task-state.md +58 -0
- package/docs/tool-effects.md +46 -0
- package/docs/tool-surface.md +91 -0
- package/package.json +6 -2
- package/scripts/model-eval-server.js +213 -0
- package/scripts/probe-mcp-protocol.js +134 -0
- package/scripts/run-model-eval.js +447 -0
|
@@ -104,6 +104,7 @@ function buildConfig(input) {
|
|
|
104
104
|
export const scheduledTaskTools = [
|
|
105
105
|
defineTool({
|
|
106
106
|
name: 'besales_scheduled_task_list',
|
|
107
|
+
sideEffect: 'none',
|
|
107
108
|
requiredFields: ['platform_id'],
|
|
108
109
|
schema: z
|
|
109
110
|
.object({
|
|
@@ -123,6 +124,7 @@ export const scheduledTaskTools = [
|
|
|
123
124
|
}),
|
|
124
125
|
defineTool({
|
|
125
126
|
name: 'besales_scheduled_task_update',
|
|
127
|
+
sideEffect: 'write',
|
|
126
128
|
requiredFields: ['platform_id', 'is_enabled'],
|
|
127
129
|
schema: z
|
|
128
130
|
.object({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scheduled-tasks.js","sourceRoot":"","sources":["../../../src/tools/definitions/scheduled-tasks.ts"],"names":[],"mappings":"AAAA,8FAA8F;AAC9F,gGAAgG;AAChG,yFAAyF;AACzF,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAEvE,MAAM,WAAW,GAAG,CAAC;KAClB,MAAM,EAAE;KACR,KAAK,CAAC,2BAA2B,EAAE,gDAAgD,CAAC,CAAC;AAExF,+FAA+F;AAC/F,MAAM,YAAY,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;AAEhD,MAAM,WAAW,GAAG,CAAC;KAClB,MAAM,CAAC;IACN,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE;IACpB,YAAY,EAAE,WAAW,CAAC,QAAQ,EAAE;IACpC,MAAM,EAAE,YAAY,CAAC,QAAQ,EAAE;IAC/B,qFAAqF;IACrF,0DAA0D;IAC1D,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IACnC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;CAC/C,CAAC;KACD,MAAM,EAAE;IACT,0FAA0F;IAC1F,0FAA0F;KACzF,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,YAAY,KAAK,SAAS,EAAE;IACrE,OAAO,EAAE,8DAA8D;CACxE,CAAC,CAAC;AAEL,MAAM,YAAY,GAAG,CAAC;KACnB,MAAM,CAAC;IACN,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE;IACpB,YAAY,EAAE,WAAW,CAAC,QAAQ,EAAE;IACpC,UAAU,EAAE,WAAW,CAAC,QAAQ,EAAE;IAClC,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IAClD,MAAM,EAAE,YAAY,CAAC,QAAQ,EAAE;IAC/B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IACnC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;CAC/C,CAAC;KACD,MAAM,EAAE;KACR,MAAM,CACL,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,KAAK,SAAS,IAAI,KAAK,CAAC,UAAU,KAAK,SAAS,CAAC,EACjG,EAAE,OAAO,EAAE,oFAAoF,EAAE,CAClG,CAAC;AAEJ,4EAA4E;AAC5E;;;;;;GAMG;AACH,MAAM,WAAW,GAAG,CAAC;KAClB,MAAM,CAAC;IACN,eAAe,EAAE,UAAU;IAC3B,wFAAwF;IACxF,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACpC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;CACnC,CAAC;KACD,MAAM,EAAE,CAAC;AAEZ,SAAS,WAAW,CAAC,KAQpB;IACC,MAAM,MAAM,GAA4B,EAAE,CAAC;IAE3C,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;QAChB,MAAM,CAAC,KAAK,GAAG;YACb,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,OAAO;YAC5B,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,KAAK,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC9E,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7D,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC1D,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACzE,CAAC;IACJ,CAAC;IACD,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;QACjB,MAAM,CAAC,MAAM,GAAG;YACd,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,OAAO;YAC7B,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,KAAK,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAChF,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC1E,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,KAAK,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACrF,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC/D,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC5D,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC3E,CAAC;IACJ,CAAC;IACD,IAAI,KAAK,CAAC,OAAO;QAAE,MAAM,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;IAClD,IAAI,KAAK,CAAC,QAAQ;QAAE,MAAM,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;IAErD,yFAAyF;IACzF,oFAAoF;IACpF,kEAAkE;IAClE,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAC/B,MAAM,CAAC,MAAM;YACX,KAAK,CAAC,MAAM,KAAK,IAAI;gBACnB,CAAC,CAAC,IAAI;gBACN,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;oBAC3B,aAAa,EAAE,KAAK,CAAC,eAAe;oBACpC,UAAU,EAAE,KAAK,CAAC,WAAW;oBAC7B,QAAQ,EAAE,KAAK,CAAC,SAAS;iBAC1B,CAAC,CAAC,CAAC;IACZ,CAAC;IAED,4FAA4F;IAC5F,MAAM,OAAO,GAAkC,EAAE,CAAC;IAClD,IAAI,KAAK,CAAC,YAAY,KAAK,SAAS;QAAE,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC,YAAY,CAAC;IACzE,IAAI,KAAK,CAAC,aAAa,KAAK,SAAS;QAAE,OAAO,CAAC,MAAM,GAAG,KAAK,CAAC,aAAa,CAAC;IAC5E,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC;QAAE,MAAM,CAAC,OAAO,GAAG,OAAO,CAAC;IAE9D,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,UAAU,CAAC;QACT,IAAI,EAAE,6BAA6B;QACnC,cAAc,EAAE,CAAC,aAAa,CAAC;QAC/B,MAAM,EAAE,CAAC;aACN,MAAM,CAAC;YACN,WAAW,EAAE,UAAU;SACxB,CAAC;aACD,MAAM,EAAE;QACX,aAAa,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YACzB,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,cAAc,KAAK,CAAC,WAAW,kBAAkB;SACxD,CAAC;QACF,eAAe,EAAE,CAAC,QAAQ,EAAE,EAAE,CAC5B,gBAAgB,CAAC,QAAQ,EAAE;YACzB,mFAAmF;YACnF,iGAAiG;YACjG,iGAAiG;YACjG,iMAAiM;SAClM,CAAC;KACL,CAAC;IACF,UAAU,CAAC;QACT,IAAI,EAAE,+BAA+B;QACrC,cAAc,EAAE,CAAC,aAAa,EAAE,YAAY,CAAC;QAC7C,MAAM,EAAE,CAAC;aACN,MAAM,CAAC;YACN,WAAW,EAAE,UAAU;YACvB,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC,OAAO,CAAC,mBAAmB,CAAC;YACjE,UAAU,EAAE,CAAC,CAAC,OAAO,EAAE;YACvB,KAAK,EAAE,WAAW,CAAC,QAAQ,EAAE;YAC7B,MAAM,EAAE,YAAY,CAAC,QAAQ,EAAE;YAC/B,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;YAC9C,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE;YACzD,uFAAuF;YACvF,oFAAoF;YACpF,gEAAgE;YAChE,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;YAClD,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;YACrD,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;YACtD,qBAAqB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;SAC9C,CAAC;aACD,MAAM,EAAE;aACR,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,qBAAqB,KAAK,IAAI,EAAE;YACvD,OAAO,EACL,iHAAiH;SACpH,CAAC;QACJ,aAAa,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YACzB,MAAM,EAAE,OAAO;YACf,IAAI,EAAE,cAAc,KAAK,CAAC,WAAW,oBAAoB,KAAK,CAAC,IAAI,EAAE;YACrE,IAAI,EAAE,EAAE,SAAS,EAAE,KAAK,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,CAAC,KAAK,CAAC,EAAE;SAClE,CAAC;QACF,eAAe,EAAE,CAAC,QAAQ,EAAE,EAAE,CAC5B,gBAAgB,CAAC,QAAQ,EAAE;YACzB,gIAAgI;YAChI,yEAAyE;YACzE,mLAAmL;YACnL,0FAA0F;YAC1F,mOAAmO;YACnO,sPAAsP;YACtP,+HAA+H;YAC/H,gaAAga;YACha,oSAAoS;YACpS,gQAAgQ;YAChQ,wKAAwK;YACxK,yHAAyH;YACzH,kIAAkI;YAClI,8DAA8D;SAC/D,CAAC;KACL,CAAC;CACH,CAAC"}
|
|
1
|
+
{"version":3,"file":"scheduled-tasks.js","sourceRoot":"","sources":["../../../src/tools/definitions/scheduled-tasks.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
-
import { WorkspaceResolutionError } from '../../auth/connection-store.js';
|
|
2
|
+
import { WorkspaceResolutionError, } from '../../auth/connection-store.js';
|
|
3
3
|
import { getSessionWorkspaceId, setSessionWorkspaceId, } from '../../auth/session-workspace.js';
|
|
4
|
+
import { ApiClientError } from '../../http/api-client.js';
|
|
4
5
|
import { defineTool, uuidSchema } from './shared.js';
|
|
6
|
+
const WORKSPACE_LABEL_TTL_MS = 24 * 60 * 60 * 1000;
|
|
5
7
|
/**
|
|
6
8
|
* v0.5 — пер-сессионная привязка воркспейса для GUI-хостов.
|
|
7
9
|
*
|
|
@@ -13,6 +15,8 @@ import { defineTool, uuidSchema } from './shared.js';
|
|
|
13
15
|
export const sessionTools = [
|
|
14
16
|
defineTool({
|
|
15
17
|
name: 'besales_workspace_use',
|
|
18
|
+
sideEffect: 'write',
|
|
19
|
+
closedWorld: true,
|
|
16
20
|
requiredFields: ['workspace_id'],
|
|
17
21
|
schema: z.object({
|
|
18
22
|
workspace_id: uuidSchema,
|
|
@@ -23,15 +27,25 @@ export const sessionTools = [
|
|
|
23
27
|
throw new WorkspaceResolutionError(`This session is pinned via BESALES_WORKSPACE_ID=${envPin}; in-session switch is disabled. ` +
|
|
24
28
|
'Remove the env pin to use besales_workspace_use.');
|
|
25
29
|
}
|
|
26
|
-
const connections = await ctx
|
|
27
|
-
|
|
28
|
-
|
|
30
|
+
const connections = await refreshConnectionLabels(ctx);
|
|
31
|
+
const selected = connections.find((connection) => connection.workspaceId === input.workspace_id);
|
|
32
|
+
if (!selected) {
|
|
33
|
+
const connected = connections
|
|
34
|
+
.map((connection) => `${connection.workspaceName ?? '(name unknown)'} [${connection.workspaceId}]`)
|
|
35
|
+
.join(', ') || '(none)';
|
|
29
36
|
throw new WorkspaceResolutionError(`Workspace ${input.workspace_id} is not connected. Connected: ${connected}. ` +
|
|
30
37
|
'Run `besales-mcp connect` for it first.');
|
|
31
38
|
}
|
|
32
39
|
setSessionWorkspaceId(input.workspace_id);
|
|
33
40
|
return {
|
|
34
41
|
workspace_id: input.workspace_id,
|
|
42
|
+
workspace_name: selected.workspaceName ?? null,
|
|
43
|
+
account_label: selected.accountLabel ?? null,
|
|
44
|
+
label_status: selected.labelStatus,
|
|
45
|
+
label_updated_at: selected.labelUpdatedAt ?? null,
|
|
46
|
+
label_refresh_error: selected.labelRefreshError,
|
|
47
|
+
effective_scopes: selected.grantedScopes ?? null,
|
|
48
|
+
scopes_source: selected.grantedScopes ? 'current_connection' : 'unknown',
|
|
35
49
|
scope: 'session',
|
|
36
50
|
message: 'This Claude session is now bound to the workspace (in-memory, until the session ends). ' +
|
|
37
51
|
'Other sessions and the global default are unaffected.',
|
|
@@ -40,10 +54,13 @@ export const sessionTools = [
|
|
|
40
54
|
}),
|
|
41
55
|
defineTool({
|
|
42
56
|
name: 'besales_workspace_current',
|
|
57
|
+
// Локальный инструмент без HTTP: только читает выбор сессии и содержимое хранилища ключей.
|
|
58
|
+
sideEffect: 'none',
|
|
59
|
+
closedWorld: true,
|
|
43
60
|
requiredFields: [],
|
|
44
61
|
schema: z.object({}),
|
|
45
62
|
localHandler: async (_input, ctx) => {
|
|
46
|
-
const connections = await ctx
|
|
63
|
+
const connections = await refreshConnectionLabels(ctx);
|
|
47
64
|
const isConnected = (id) => connections.some((connection) => connection.workspaceId === id);
|
|
48
65
|
const envPin = ctx.env.BESALES_WORKSPACE_ID?.trim() || null;
|
|
49
66
|
const sessionOverride = getSessionWorkspaceId() ?? null;
|
|
@@ -70,8 +87,18 @@ export const sessionTools = [
|
|
|
70
87
|
else if (connections.length > 1) {
|
|
71
88
|
source = 'ambiguous';
|
|
72
89
|
}
|
|
90
|
+
const selected = workspaceId
|
|
91
|
+
? connections.find((connection) => connection.workspaceId === workspaceId)
|
|
92
|
+
: undefined;
|
|
73
93
|
return {
|
|
74
94
|
workspace_id: workspaceId,
|
|
95
|
+
workspace_name: selected?.workspaceName ?? null,
|
|
96
|
+
account_label: selected?.accountLabel ?? null,
|
|
97
|
+
label_status: selected?.labelStatus ?? 'unknown',
|
|
98
|
+
label_updated_at: selected?.labelUpdatedAt ?? null,
|
|
99
|
+
label_refresh_error: selected?.labelRefreshError ?? null,
|
|
100
|
+
effective_scopes: selected?.grantedScopes ?? null,
|
|
101
|
+
scopes_source: selected?.grantedScopes ? 'current_connection' : 'unknown',
|
|
75
102
|
source,
|
|
76
103
|
env_pin: envPin,
|
|
77
104
|
session_override: sessionOverride,
|
|
@@ -80,9 +107,80 @@ export const sessionTools = [
|
|
|
80
107
|
workspace_id: connection.workspaceId,
|
|
81
108
|
key_prefix: connection.keyPrefix,
|
|
82
109
|
connected_at: connection.connectedAt,
|
|
110
|
+
workspace_name: connection.workspaceName ?? null,
|
|
111
|
+
account_label: connection.accountLabel ?? null,
|
|
112
|
+
label_status: connection.labelStatus,
|
|
113
|
+
label_updated_at: connection.labelUpdatedAt ?? null,
|
|
114
|
+
label_refresh_error: connection.labelRefreshError,
|
|
115
|
+
effective_scopes: connection.grantedScopes ?? null,
|
|
116
|
+
scopes_source: connection.grantedScopes ? 'current_connection' : 'unknown',
|
|
83
117
|
})),
|
|
84
118
|
};
|
|
85
119
|
},
|
|
86
120
|
}),
|
|
87
121
|
];
|
|
122
|
+
async function refreshConnectionLabels(ctx) {
|
|
123
|
+
const connections = await ctx.store.list();
|
|
124
|
+
return Promise.all(connections.map((connection) => refreshConnectionLabel(connection, ctx)));
|
|
125
|
+
}
|
|
126
|
+
async function refreshConnectionLabel(connection, ctx) {
|
|
127
|
+
if (isLabelFresh(connection.labelUpdatedAt)) {
|
|
128
|
+
return { ...connection, labelStatus: 'cached', labelRefreshError: null };
|
|
129
|
+
}
|
|
130
|
+
const apiKey = await ctx.store.getKey(connection.workspaceId);
|
|
131
|
+
if (!apiKey) {
|
|
132
|
+
return labelRefreshFailure(connection, 'credential_missing');
|
|
133
|
+
}
|
|
134
|
+
try {
|
|
135
|
+
const response = await ctx.apiClient.request('GET', '/auth/mcp-context', apiKey);
|
|
136
|
+
const labels = parseConnectionLabels(response, connection.workspaceId);
|
|
137
|
+
const updated = await ctx.store.updateLabels(connection.workspaceId, labels);
|
|
138
|
+
return { ...updated, labelStatus: 'current', labelRefreshError: null };
|
|
139
|
+
}
|
|
140
|
+
catch (error) {
|
|
141
|
+
return labelRefreshFailure(connection, classifyLabelRefreshError(error));
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
function isLabelFresh(value) {
|
|
145
|
+
if (!value)
|
|
146
|
+
return false;
|
|
147
|
+
const timestamp = Date.parse(value);
|
|
148
|
+
return Number.isFinite(timestamp) && Date.now() - timestamp < WORKSPACE_LABEL_TTL_MS;
|
|
149
|
+
}
|
|
150
|
+
function parseConnectionLabels(value, expectedWorkspaceId) {
|
|
151
|
+
if (!value || typeof value !== 'object') {
|
|
152
|
+
throw new Error('Invalid workspace context response');
|
|
153
|
+
}
|
|
154
|
+
const response = value;
|
|
155
|
+
if (response.workspace_id !== expectedWorkspaceId ||
|
|
156
|
+
typeof response.workspace_name !== 'string' ||
|
|
157
|
+
(response.account_label !== null && typeof response.account_label !== 'string') ||
|
|
158
|
+
!Array.isArray(response.scopes) ||
|
|
159
|
+
!response.scopes.every((scope) => typeof scope === 'string')) {
|
|
160
|
+
throw new Error('Invalid workspace context response');
|
|
161
|
+
}
|
|
162
|
+
return {
|
|
163
|
+
workspaceName: response.workspace_name,
|
|
164
|
+
accountLabel: response.account_label,
|
|
165
|
+
grantedScopes: response.scopes,
|
|
166
|
+
};
|
|
167
|
+
}
|
|
168
|
+
function classifyLabelRefreshError(error) {
|
|
169
|
+
if (error instanceof ApiClientError) {
|
|
170
|
+
if (error.status === 401)
|
|
171
|
+
return 'credential_expired_or_revoked';
|
|
172
|
+
if (error.status === 403)
|
|
173
|
+
return 'insufficient_scope';
|
|
174
|
+
if (error.status === 404)
|
|
175
|
+
return 'backend_update_required';
|
|
176
|
+
}
|
|
177
|
+
return 'refresh_failed';
|
|
178
|
+
}
|
|
179
|
+
function labelRefreshFailure(connection, reason) {
|
|
180
|
+
return {
|
|
181
|
+
...connection,
|
|
182
|
+
labelStatus: connection.labelUpdatedAt ? 'stale' : 'unknown',
|
|
183
|
+
labelRefreshError: reason,
|
|
184
|
+
};
|
|
185
|
+
}
|
|
88
186
|
//# sourceMappingURL=session.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.js","sourceRoot":"","sources":["../../../src/tools/definitions/session.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,
|
|
1
|
+
{"version":3,"file":"session.js","sourceRoot":"","sources":["../../../src/tools/definitions/session.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAEL,wBAAwB,GACzB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EACL,qBAAqB,EACrB,qBAAqB,GACtB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAE1D,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAErD,MAAM,sBAAsB,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAOnD;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,UAAU,CAAC;QACT,IAAI,EAAE,uBAAuB;QAC7B,UAAU,EAAE,OAAO;QACnB,WAAW,EAAE,IAAI;QACjB,cAAc,EAAE,CAAC,cAAc,CAAC;QAChC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;YACf,YAAY,EAAE,UAAU;SACzB,CAAC;QACF,YAAY,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;YACjC,MAAM,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC,oBAAoB,EAAE,IAAI,EAAE,CAAC;YACpD,IAAI,MAAM,EAAE,CAAC;gBACX,MAAM,IAAI,wBAAwB,CAChC,mDAAmD,MAAM,mCAAmC;oBAC1F,kDAAkD,CACrD,CAAC;YACJ,CAAC;YAED,MAAM,WAAW,GAAG,MAAM,uBAAuB,CAAC,GAAG,CAAC,CAAC;YACvD,MAAM,QAAQ,GAAG,WAAW,CAAC,IAAI,CAC/B,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,WAAW,KAAK,KAAK,CAAC,YAAY,CAC9D,CAAC;YACF,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,MAAM,SAAS,GACb,WAAW;qBACR,GAAG,CACF,CAAC,UAAU,EAAE,EAAE,CACb,GAAG,UAAU,CAAC,aAAa,IAAI,gBAAgB,KAAK,UAAU,CAAC,WAAW,GAAG,CAChF;qBACA,IAAI,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC;gBAC5B,MAAM,IAAI,wBAAwB,CAChC,aAAa,KAAK,CAAC,YAAY,iCAAiC,SAAS,IAAI;oBAC3E,yCAAyC,CAC5C,CAAC;YACJ,CAAC;YAED,qBAAqB,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;YAC1C,OAAO;gBACL,YAAY,EAAE,KAAK,CAAC,YAAY;gBAChC,cAAc,EAAE,QAAQ,CAAC,aAAa,IAAI,IAAI;gBAC9C,aAAa,EAAE,QAAQ,CAAC,YAAY,IAAI,IAAI;gBAC5C,YAAY,EAAE,QAAQ,CAAC,WAAW;gBAClC,gBAAgB,EAAE,QAAQ,CAAC,cAAc,IAAI,IAAI;gBACjD,mBAAmB,EAAE,QAAQ,CAAC,iBAAiB;gBAC/C,gBAAgB,EAAE,QAAQ,CAAC,aAAa,IAAI,IAAI;gBAChD,aAAa,EAAE,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,SAAS;gBACxE,KAAK,EAAE,SAAS;gBAChB,OAAO,EACL,yFAAyF;oBACzF,uDAAuD;aAC1D,CAAC;QACJ,CAAC;KACF,CAAC;IACF,UAAU,CAAC;QACT,IAAI,EAAE,2BAA2B;QACjC,2FAA2F;QAC3F,UAAU,EAAE,MAAM;QAClB,WAAW,EAAE,IAAI;QACjB,cAAc,EAAE,EAAE;QAClB,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;QACpB,YAAY,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE;YAClC,MAAM,WAAW,GAAG,MAAM,uBAAuB,CAAC,GAAG,CAAC,CAAC;YACvD,MAAM,WAAW,GAAG,CAAC,EAAU,EAAW,EAAE,CAC1C,WAAW,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,WAAW,KAAK,EAAE,CAAC,CAAC;YAClE,MAAM,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC,oBAAoB,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC;YAC5D,MAAM,eAAe,GAAG,qBAAqB,EAAE,IAAI,IAAI,CAAC;YACxD,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;YAE3C,gFAAgF;YAChF,4EAA4E;YAC5E,2EAA2E;YAC3E,IAAI,WAAW,GAAkB,IAAI,CAAC;YACtC,IAAI,MAAM,GAAG,MAAM,CAAC;YACpB,IAAI,MAAM,EAAE,CAAC;gBACX,+EAA+E;gBAC/E,iFAAiF;gBACjF,WAAW,GAAG,MAAM,CAAC;gBACrB,MAAM,GAAG,KAAK,CAAC;YACjB,CAAC;iBAAM,IAAI,eAAe,IAAI,WAAW,CAAC,eAAe,CAAC,EAAE,CAAC;gBAC3D,WAAW,GAAG,eAAe,CAAC;gBAC9B,MAAM,GAAG,SAAS,CAAC;YACrB,CAAC;iBAAM,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACpC,WAAW,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC;gBACzC,MAAM,GAAG,MAAM,CAAC;YAClB,CAAC;iBAAM,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAClC,MAAM,GAAG,WAAW,CAAC;YACvB,CAAC;YAED,MAAM,QAAQ,GAAG,WAAW;gBAC1B,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,WAAW,KAAK,WAAW,CAAC;gBAC1E,CAAC,CAAC,SAAS,CAAC;YAEd,OAAO;gBACL,YAAY,EAAE,WAAW;gBACzB,cAAc,EAAE,QAAQ,EAAE,aAAa,IAAI,IAAI;gBAC/C,aAAa,EAAE,QAAQ,EAAE,YAAY,IAAI,IAAI;gBAC7C,YAAY,EAAE,QAAQ,EAAE,WAAW,IAAI,SAAS;gBAChD,gBAAgB,EAAE,QAAQ,EAAE,cAAc,IAAI,IAAI;gBAClD,mBAAmB,EAAE,QAAQ,EAAE,iBAAiB,IAAI,IAAI;gBACxD,gBAAgB,EAAE,QAAQ,EAAE,aAAa,IAAI,IAAI;gBACjD,aAAa,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,SAAS;gBACzE,MAAM;gBACN,OAAO,EAAE,MAAM;gBACf,gBAAgB,EAAE,eAAe;gBACjC,MAAM;gBACN,SAAS,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;oBAC1C,YAAY,EAAE,UAAU,CAAC,WAAW;oBACpC,UAAU,EAAE,UAAU,CAAC,SAAS;oBAChC,YAAY,EAAE,UAAU,CAAC,WAAW;oBACpC,cAAc,EAAE,UAAU,CAAC,aAAa,IAAI,IAAI;oBAChD,aAAa,EAAE,UAAU,CAAC,YAAY,IAAI,IAAI;oBAC9C,YAAY,EAAE,UAAU,CAAC,WAAW;oBACpC,gBAAgB,EAAE,UAAU,CAAC,cAAc,IAAI,IAAI;oBACnD,mBAAmB,EAAE,UAAU,CAAC,iBAAiB;oBACjD,gBAAgB,EAAE,UAAU,CAAC,aAAa,IAAI,IAAI;oBAClD,aAAa,EAAE,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,SAAS;iBAC3E,CAAC,CAAC;aACJ,CAAC;QACJ,CAAC;KACF,CAAC;CACH,CAAC;AAEF,KAAK,UAAU,uBAAuB,CACpC,GAAqB;IAErB,MAAM,WAAW,GAAG,MAAM,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;IAC3C,OAAO,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,sBAAsB,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;AAC/F,CAAC;AAED,KAAK,UAAU,sBAAsB,CACnC,UAA0B,EAC1B,GAAqB;IAErB,IAAI,YAAY,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE,CAAC;QAC5C,OAAO,EAAE,GAAG,UAAU,EAAE,WAAW,EAAE,QAAQ,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC;IAC3E,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;IAC9D,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,mBAAmB,CAAC,UAAU,EAAE,oBAAoB,CAAC,CAAC;IAC/D,CAAC;IAED,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,SAAS,CAAC,OAAO,CAAU,KAAK,EAAE,mBAAmB,EAAE,MAAM,CAAC,CAAC;QAC1F,MAAM,MAAM,GAAG,qBAAqB,CAAC,QAAQ,EAAE,UAAU,CAAC,WAAW,CAAC,CAAC;QACvE,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,KAAK,CAAC,YAAY,CAAC,UAAU,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;QAC7E,OAAO,EAAE,GAAG,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC;IACzE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,mBAAmB,CAAC,UAAU,EAAE,yBAAyB,CAAC,KAAK,CAAC,CAAC,CAAC;IAC3E,CAAC;AACH,CAAC;AAED,SAAS,YAAY,CAAC,KAAyB;IAC7C,IAAI,CAAC,KAAK;QAAE,OAAO,KAAK,CAAC;IACzB,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACpC,OAAO,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,GAAG,sBAAsB,CAAC;AACvF,CAAC;AAED,SAAS,qBAAqB,CAC5B,KAAc,EACd,mBAA2B;IAE3B,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACxC,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;IACxD,CAAC;IACD,MAAM,QAAQ,GAAG,KAAgC,CAAC;IAClD,IACE,QAAQ,CAAC,YAAY,KAAK,mBAAmB;QAC7C,OAAO,QAAQ,CAAC,cAAc,KAAK,QAAQ;QAC3C,CAAC,QAAQ,CAAC,aAAa,KAAK,IAAI,IAAI,OAAO,QAAQ,CAAC,aAAa,KAAK,QAAQ,CAAC;QAC/E,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;QAC/B,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC,EAC5D,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;IACxD,CAAC;IACD,OAAO;QACL,aAAa,EAAE,QAAQ,CAAC,cAAc;QACtC,YAAY,EAAE,QAAQ,CAAC,aAAa;QACpC,aAAa,EAAE,QAAQ,CAAC,MAAM;KAC/B,CAAC;AACJ,CAAC;AAED,SAAS,yBAAyB,CAAC,KAAc;IAC/C,IAAI,KAAK,YAAY,cAAc,EAAE,CAAC;QACpC,IAAI,KAAK,CAAC,MAAM,KAAK,GAAG;YAAE,OAAO,+BAA+B,CAAC;QACjE,IAAI,KAAK,CAAC,MAAM,KAAK,GAAG;YAAE,OAAO,oBAAoB,CAAC;QACtD,IAAI,KAAK,CAAC,MAAM,KAAK,GAAG;YAAE,OAAO,yBAAyB,CAAC;IAC7D,CAAC;IACD,OAAO,gBAAgB,CAAC;AAC1B,CAAC;AAED,SAAS,mBAAmB,CAC1B,UAA0B,EAC1B,MAAc;IAEd,OAAO;QACL,GAAG,UAAU;QACb,WAAW,EAAE,UAAU,CAAC,cAAc,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS;QAC5D,iBAAiB,EAAE,MAAM;KAC1B,CAAC;AACJ,CAAC"}
|
|
@@ -10,11 +10,79 @@ export interface ApiToolRequest {
|
|
|
10
10
|
export interface LocalToolContext {
|
|
11
11
|
readonly store: ConnectionStore;
|
|
12
12
|
readonly env: NodeJS.ProcessEnv;
|
|
13
|
+
readonly apiClient: ToolApiClient;
|
|
14
|
+
/** Имена, доступные этой MCP-сессии после применения tool profile. */
|
|
15
|
+
readonly availableToolNames?: ReadonlySet<string>;
|
|
13
16
|
}
|
|
17
|
+
/**
|
|
18
|
+
* Как обходиться с ответом инструмента, если он не влезает в потолок. Общего алгоритма нет:
|
|
19
|
+
* что здесь можно потерять, знает только сам инструмент. Числа и классы — `docs/response-size-budget.md`.
|
|
20
|
+
*/
|
|
21
|
+
export interface ToolResultPolicy {
|
|
22
|
+
/**
|
|
23
|
+
* Ответ обрезать нельзя ни при каких условиях — при превышении уходит отказ, а не данные.
|
|
24
|
+
* Два случая: (1) ответ является снимком для замещающей записи («прочитай всё → пришли всё
|
|
25
|
+
* обратно»), и усечённый снимок молча удалит непрочитанное; (2) у инструмента уже работает
|
|
26
|
+
* постраничная выдача, и конверт подменил бы исправный механизм тихой потерей.
|
|
27
|
+
*/
|
|
28
|
+
readonly neverTruncate?: boolean;
|
|
29
|
+
/**
|
|
30
|
+
* Пути, которые разрешено выбросить при превышении, в порядке готовности расстаться.
|
|
31
|
+
* Путь `agents[].baseSystemPrompt` снимает поле у каждого элемента массива. Объявляется
|
|
32
|
+
* только для того, что читается ОТДЕЛЬНЫМ инструментом, — иначе это потеря, а не сжатие.
|
|
33
|
+
* `requiredPaths` намеренно отсутствует: выбрасывается ровно перечисленное, всё прочее
|
|
34
|
+
* неприкосновенно по построению, и второй список был бы носителем без читателя.
|
|
35
|
+
*/
|
|
36
|
+
readonly droppablePaths?: readonly string[];
|
|
37
|
+
/** Потолок именно этого инструмента; без него берётся общий по классу. */
|
|
38
|
+
readonly maxResultBytes?: number;
|
|
39
|
+
/**
|
|
40
|
+
* Чем сузить запрос — уходит в текст отказа и в маркер. Ставится ТОЛЬКО когда у инструмента
|
|
41
|
+
* действительно есть параметры сужения: общая подсказка там, где сузить нечем, — ложь.
|
|
42
|
+
*/
|
|
43
|
+
readonly narrowingHint?: string;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Что инструмент делает с состоянием. Проставляется РУКАМИ у каждого определения, потому что
|
|
47
|
+
* ни имя, ни HTTP-метод этого не выводят — и врут в обе стороны:
|
|
48
|
+
* семь `*_get_instructions` — POST, создающий долговечную запись операции (подстрока `_get`
|
|
49
|
+
* увела бы их в «только чтение»); список операторов CRM и проверка живости источника — GET,
|
|
50
|
+
* которые пишут; расхождение промптов, линт и поиск по вопросам-ответам — POST, которые читают.
|
|
51
|
+
*
|
|
52
|
+
* `spend` — тратит деньги или квоту на стороне сервера (обращение к модели, векторизация,
|
|
53
|
+
* отправка людям). Отдельно от `write`, потому что цена ошибки другая: повторный вызов
|
|
54
|
+
* не «перезапишет то же самое», а заплатит второй раз.
|
|
55
|
+
*/
|
|
56
|
+
export type ToolSideEffect = 'none' | 'write' | 'spend';
|
|
14
57
|
export interface ToolDefinition<Input> {
|
|
15
58
|
readonly name: string;
|
|
59
|
+
readonly sideEffect: ToolSideEffect;
|
|
60
|
+
/**
|
|
61
|
+
* Операция доказуемо обратима — снимает пометку «разрушительная». По спецификации MCP у
|
|
62
|
+
* не-читающего инструмента она подразумевается ИСТИННОЙ, поэтому опасна не пропущенная
|
|
63
|
+
* пометка, а ошибочно снятая: она сделала бы удаление безопасным в глазах хоста,
|
|
64
|
+
* одобряющего вызовы автоматически.
|
|
65
|
+
*/
|
|
66
|
+
readonly reversible?: boolean;
|
|
67
|
+
/**
|
|
68
|
+
* Повтор с теми же аргументами даёт тот же результат БЕЗУСЛОВНО. Правило «все `*_upsert`
|
|
69
|
+
* идемпотентны» неверно: без идентификатора они уходят в создание, и автоповтор заводит
|
|
70
|
+
* вторую сущность.
|
|
71
|
+
*/
|
|
72
|
+
readonly idempotent?: boolean;
|
|
73
|
+
/** Инструмент заведомо не выходит за пределы Besales. Умолчание — обратное, как худшее. */
|
|
74
|
+
readonly closedWorld?: boolean;
|
|
75
|
+
/**
|
|
76
|
+
* Чем свериться, если исход остался НЕИЗВЕСТЕН: связь оборвалась или сервер ответил отказом
|
|
77
|
+
* уже после того, как запрос до него дошёл. Отсутствие локального подтверждения не
|
|
78
|
+
* доказывает, что операция не состоялась, поэтому вызывающему называют инструмент проверки,
|
|
79
|
+
* а не советуют повтор. Заполняется у неидемпотентных операций, у которых такой инструмент
|
|
80
|
+
* есть; без него текст просто не называет конкретное имя.
|
|
81
|
+
*/
|
|
82
|
+
readonly verifyWithToolName?: string;
|
|
16
83
|
readonly requiredFields: readonly string[];
|
|
17
84
|
readonly schema: ZodType<Input>;
|
|
85
|
+
readonly resultPolicy?: ToolResultPolicy;
|
|
18
86
|
readonly defaultWorkspaceId?: boolean;
|
|
19
87
|
/** API-проксирующие тулы. Взаимоисключающе с `localHandler`. */
|
|
20
88
|
readonly createRequest?: (input: Input) => ApiToolRequest;
|
|
@@ -50,6 +118,13 @@ export declare const modelLaneSchema: z.ZodEnum<{
|
|
|
50
118
|
export declare const MAX_FILE_UPLOAD_BYTES: number;
|
|
51
119
|
/** Верхняя граница `max_lines` в `besales_prompt_diff` — должна совпадать с DTO бэкенда. */
|
|
52
120
|
export declare const PROMPT_DIFF_MAX_LINES_LIMIT = 1000;
|
|
121
|
+
/**
|
|
122
|
+
* Верхняя граница страницы перечня переменных — совпадает с `VARIABLES_LIST_MAX_LIMIT` бэкенда.
|
|
123
|
+
* Больший `limit` сервер отвергнет валидацией, поэтому граница объявлена и здесь.
|
|
124
|
+
*/
|
|
125
|
+
export declare const VARIABLES_MAX_PAGE_SIZE = 200;
|
|
126
|
+
/** Максимальный размер явно запрошенной страницы списка агентов платформы. */
|
|
127
|
+
export declare const PLATFORM_AGENTS_MAX_PAGE_SIZE = 200;
|
|
53
128
|
/** Потолок агентов в одном пакетном прогоне — должен совпадать с `PROMPT_BATCH_MAX_AGENTS`. */
|
|
54
129
|
export declare const PROMPT_BATCH_MAX_AGENTS = 200;
|
|
55
130
|
/** Длина ключа идемпотентности пакетного прогона — должна совпадать с DTO бэкенда. */
|
|
@@ -179,7 +254,7 @@ export declare const promptAnalysisStageOutputSchema: z.ZodObject<{
|
|
|
179
254
|
}>;
|
|
180
255
|
output: z.ZodObject<{}, z.core.$loose>;
|
|
181
256
|
}, z.core.$strip>;
|
|
182
|
-
export declare const icpAnalysisSegmentSchema: z.ZodObject<{
|
|
257
|
+
export declare const icpAnalysisSegmentSchema: z.ZodPipe<z.ZodObject<{
|
|
183
258
|
id: z.ZodOptional<z.ZodString>;
|
|
184
259
|
name: z.ZodString;
|
|
185
260
|
description: z.ZodOptional<z.ZodString>;
|
|
@@ -187,16 +262,76 @@ export declare const icpAnalysisSegmentSchema: z.ZodObject<{
|
|
|
187
262
|
pains: z.ZodOptional<z.ZodArray<z.ZodUnknown>>;
|
|
188
263
|
motivations: z.ZodOptional<z.ZodArray<z.ZodUnknown>>;
|
|
189
264
|
language_style: z.ZodOptional<z.ZodObject<{}, z.core.$loose>>;
|
|
190
|
-
}, z.core.$
|
|
191
|
-
|
|
265
|
+
languageStyle: z.ZodOptional<z.ZodObject<{}, z.core.$loose>>;
|
|
266
|
+
}, z.core.$strip>, z.ZodTransform<{
|
|
267
|
+
language_style: {
|
|
268
|
+
[x: string]: unknown;
|
|
269
|
+
} | undefined;
|
|
270
|
+
name: string;
|
|
271
|
+
id?: string | undefined;
|
|
272
|
+
description?: string | undefined;
|
|
273
|
+
demographics?: {
|
|
274
|
+
[x: string]: unknown;
|
|
275
|
+
} | undefined;
|
|
276
|
+
pains?: unknown[] | undefined;
|
|
277
|
+
motivations?: unknown[] | undefined;
|
|
278
|
+
}, {
|
|
279
|
+
name: string;
|
|
280
|
+
id?: string | undefined;
|
|
281
|
+
description?: string | undefined;
|
|
282
|
+
demographics?: {
|
|
283
|
+
[x: string]: unknown;
|
|
284
|
+
} | undefined;
|
|
285
|
+
pains?: unknown[] | undefined;
|
|
286
|
+
motivations?: unknown[] | undefined;
|
|
287
|
+
language_style?: {
|
|
288
|
+
[x: string]: unknown;
|
|
289
|
+
} | undefined;
|
|
290
|
+
languageStyle?: {
|
|
291
|
+
[x: string]: unknown;
|
|
292
|
+
} | undefined;
|
|
293
|
+
}>>;
|
|
294
|
+
export declare const icpAnalysisPersonaSchema: z.ZodPipe<z.ZodObject<{
|
|
192
295
|
name: z.ZodString;
|
|
193
|
-
segment_id: z.ZodString
|
|
296
|
+
segment_id: z.ZodOptional<z.ZodString>;
|
|
297
|
+
segmentId: z.ZodOptional<z.ZodString>;
|
|
194
298
|
description: z.ZodOptional<z.ZodString>;
|
|
195
299
|
pain_points: z.ZodOptional<z.ZodArray<z.ZodUnknown>>;
|
|
300
|
+
painPoints: z.ZodOptional<z.ZodArray<z.ZodUnknown>>;
|
|
196
301
|
goals: z.ZodOptional<z.ZodArray<z.ZodUnknown>>;
|
|
197
302
|
objections: z.ZodOptional<z.ZodObject<{}, z.core.$loose>>;
|
|
198
303
|
messaging_hints: z.ZodOptional<z.ZodObject<{}, z.core.$loose>>;
|
|
199
|
-
}, z.core.$
|
|
304
|
+
messagingHints: z.ZodOptional<z.ZodObject<{}, z.core.$loose>>;
|
|
305
|
+
}, z.core.$strip>, z.ZodTransform<{
|
|
306
|
+
segment_id: string | undefined;
|
|
307
|
+
pain_points: unknown[] | undefined;
|
|
308
|
+
messaging_hints: {
|
|
309
|
+
[x: string]: unknown;
|
|
310
|
+
} | undefined;
|
|
311
|
+
name: string;
|
|
312
|
+
description?: string | undefined;
|
|
313
|
+
goals?: unknown[] | undefined;
|
|
314
|
+
objections?: {
|
|
315
|
+
[x: string]: unknown;
|
|
316
|
+
} | undefined;
|
|
317
|
+
}, {
|
|
318
|
+
name: string;
|
|
319
|
+
segment_id?: string | undefined;
|
|
320
|
+
segmentId?: string | undefined;
|
|
321
|
+
description?: string | undefined;
|
|
322
|
+
pain_points?: unknown[] | undefined;
|
|
323
|
+
painPoints?: unknown[] | undefined;
|
|
324
|
+
goals?: unknown[] | undefined;
|
|
325
|
+
objections?: {
|
|
326
|
+
[x: string]: unknown;
|
|
327
|
+
} | undefined;
|
|
328
|
+
messaging_hints?: {
|
|
329
|
+
[x: string]: unknown;
|
|
330
|
+
} | undefined;
|
|
331
|
+
messagingHints?: {
|
|
332
|
+
[x: string]: unknown;
|
|
333
|
+
} | undefined;
|
|
334
|
+
}>>;
|
|
200
335
|
/**
|
|
201
336
|
* Машинные ожидания реплики: что раннер песочницы обязан увидеть в ответе агента на неё.
|
|
202
337
|
*
|
|
@@ -283,27 +418,32 @@ export declare const generatedScenarioSchema: z.ZodPipe<z.ZodObject<{
|
|
|
283
418
|
}>>;
|
|
284
419
|
export declare const sandboxFindingSchema: z.ZodObject<{
|
|
285
420
|
scenario_id: z.ZodOptional<z.ZodString>;
|
|
421
|
+
scenarioId: z.ZodOptional<z.ZodString>;
|
|
286
422
|
category: z.ZodEnum<{
|
|
287
423
|
other: "other";
|
|
288
424
|
hallucination: "hallucination";
|
|
289
425
|
wrong_action: "wrong_action";
|
|
290
426
|
bad_tone: "bad_tone";
|
|
427
|
+
missed_context: "missed_context";
|
|
291
428
|
wrong_routing: "wrong_routing";
|
|
292
|
-
missed_trigger: "missed_trigger";
|
|
293
|
-
wrong_pipeline_transition: "wrong_pipeline_transition";
|
|
294
429
|
rag_miss: "rag_miss";
|
|
295
430
|
}>;
|
|
296
431
|
severity: z.ZodEnum<{
|
|
432
|
+
critical: "critical";
|
|
297
433
|
low: "low";
|
|
298
434
|
medium: "medium";
|
|
299
|
-
critical: "critical";
|
|
300
435
|
}>;
|
|
301
|
-
|
|
436
|
+
description: z.ZodOptional<z.ZodString>;
|
|
437
|
+
message: z.ZodOptional<z.ZodString>;
|
|
438
|
+
evidence: z.ZodOptional<z.ZodString>;
|
|
439
|
+
recommendation: z.ZodOptional<z.ZodString>;
|
|
302
440
|
suggestion: z.ZodOptional<z.ZodString>;
|
|
303
441
|
turn_index: z.ZodOptional<z.ZodNumber>;
|
|
442
|
+
turnIndex: z.ZodOptional<z.ZodNumber>;
|
|
304
443
|
}, z.core.$strip>;
|
|
305
444
|
export declare const simulationFindingSchema: z.ZodObject<{
|
|
306
445
|
dialogue_id: z.ZodOptional<z.ZodString>;
|
|
446
|
+
dialogueId: z.ZodOptional<z.ZodString>;
|
|
307
447
|
category: z.ZodEnum<{
|
|
308
448
|
other: "other";
|
|
309
449
|
hallucination: "hallucination";
|
|
@@ -314,13 +454,14 @@ export declare const simulationFindingSchema: z.ZodObject<{
|
|
|
314
454
|
off_topic: "off_topic";
|
|
315
455
|
}>;
|
|
316
456
|
severity: z.ZodEnum<{
|
|
457
|
+
critical: "critical";
|
|
317
458
|
low: "low";
|
|
318
459
|
medium: "medium";
|
|
319
|
-
critical: "critical";
|
|
320
460
|
}>;
|
|
321
461
|
message: z.ZodString;
|
|
322
462
|
suggestion: z.ZodOptional<z.ZodString>;
|
|
323
463
|
reference_message_index: z.ZodOptional<z.ZodNumber>;
|
|
464
|
+
referenceMessageIndex: z.ZodOptional<z.ZodNumber>;
|
|
324
465
|
}, z.core.$strip>;
|
|
325
466
|
export declare const routingRuleLeadStatusSchema: z.ZodObject<{
|
|
326
467
|
lead_status_name: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
@@ -913,6 +1054,7 @@ export declare const platformGetcourseSettingsSchema: z.ZodObject<{
|
|
|
913
1054
|
WARN: "WARN";
|
|
914
1055
|
BLOCK: "BLOCK";
|
|
915
1056
|
}>>>;
|
|
1057
|
+
quiet_days: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
916
1058
|
delivery_field_map: z.ZodOptional<z.ZodRecord<z.ZodEnum<{
|
|
917
1059
|
Site: "Site";
|
|
918
1060
|
Email: "Email";
|
|
@@ -956,7 +1098,7 @@ export declare function setupConfirmation(input: {
|
|
|
956
1098
|
export declare function withInstructions(response: unknown, instructions: readonly string[]): unknown;
|
|
957
1099
|
export declare function buildKnowledgeSpaceListQuery(scopeType?: string, channelId?: string): string;
|
|
958
1100
|
export declare function buildListQuery(params: Record<string, string | number | boolean | string[] | undefined>): string;
|
|
959
|
-
export declare function buildVariableListQuery(scope: 'WORKSPACE' | 'CHANNEL', platformId?: string, filter?: 'all' | 'variables' | 'constants'): string;
|
|
1101
|
+
export declare function buildVariableListQuery(scope: 'WORKSPACE' | 'CHANNEL', platformId?: string, filter?: 'all' | 'variables' | 'constants', limit?: number, cursor?: string): string;
|
|
960
1102
|
export declare function buildVariableScopeQuery(scope: 'WORKSPACE' | 'CHANNEL', platformId?: string): string;
|
|
961
1103
|
export declare function buildFileListQuery(input: {
|
|
962
1104
|
file_type?: string;
|
|
@@ -15,6 +15,13 @@ export const modelLaneSchema = z.enum(['CHEAP', 'STANDARD', 'DEEP']);
|
|
|
15
15
|
export const MAX_FILE_UPLOAD_BYTES = 40 * 1024 * 1024;
|
|
16
16
|
/** Верхняя граница `max_lines` в `besales_prompt_diff` — должна совпадать с DTO бэкенда. */
|
|
17
17
|
export const PROMPT_DIFF_MAX_LINES_LIMIT = 1000;
|
|
18
|
+
/**
|
|
19
|
+
* Верхняя граница страницы перечня переменных — совпадает с `VARIABLES_LIST_MAX_LIMIT` бэкенда.
|
|
20
|
+
* Больший `limit` сервер отвергнет валидацией, поэтому граница объявлена и здесь.
|
|
21
|
+
*/
|
|
22
|
+
export const VARIABLES_MAX_PAGE_SIZE = 200;
|
|
23
|
+
/** Максимальный размер явно запрошенной страницы списка агентов платформы. */
|
|
24
|
+
export const PLATFORM_AGENTS_MAX_PAGE_SIZE = 200;
|
|
18
25
|
/** Потолок агентов в одном пакетном прогоне — должен совпадать с `PROMPT_BATCH_MAX_AGENTS`. */
|
|
19
26
|
export const PROMPT_BATCH_MAX_AGENTS = 200;
|
|
20
27
|
/** Длина ключа идемпотентности пакетного прогона — должна совпадать с DTO бэкенда. */
|
|
@@ -129,7 +136,8 @@ export const promptAnalysisStageOutputSchema = z.object({
|
|
|
129
136
|
name: z.enum(['grammar', 'industry', 'structure', 'aggregation']),
|
|
130
137
|
output: anyObjectSchema,
|
|
131
138
|
});
|
|
132
|
-
export const icpAnalysisSegmentSchema = z
|
|
139
|
+
export const icpAnalysisSegmentSchema = z
|
|
140
|
+
.object({
|
|
133
141
|
id: uuidSchema.optional(),
|
|
134
142
|
name: z.string(),
|
|
135
143
|
description: z.string().optional(),
|
|
@@ -137,16 +145,35 @@ export const icpAnalysisSegmentSchema = z.object({
|
|
|
137
145
|
pains: z.array(z.unknown()).optional(),
|
|
138
146
|
motivations: z.array(z.unknown()).optional(),
|
|
139
147
|
language_style: optionalAnyObjectSchema,
|
|
140
|
-
|
|
141
|
-
|
|
148
|
+
languageStyle: optionalAnyObjectSchema,
|
|
149
|
+
})
|
|
150
|
+
.transform(({ language_style, languageStyle, ...rest }) => ({
|
|
151
|
+
...rest,
|
|
152
|
+
language_style: language_style ?? languageStyle,
|
|
153
|
+
}));
|
|
154
|
+
export const icpAnalysisPersonaSchema = z
|
|
155
|
+
.object({
|
|
142
156
|
name: z.string(),
|
|
143
|
-
segment_id: uuidSchema,
|
|
157
|
+
segment_id: uuidSchema.optional(),
|
|
158
|
+
segmentId: uuidSchema.optional(),
|
|
144
159
|
description: z.string().optional(),
|
|
145
160
|
pain_points: z.array(z.unknown()).optional(),
|
|
161
|
+
painPoints: z.array(z.unknown()).optional(),
|
|
146
162
|
goals: z.array(z.unknown()).optional(),
|
|
147
163
|
objections: optionalAnyObjectSchema,
|
|
148
164
|
messaging_hints: optionalAnyObjectSchema,
|
|
149
|
-
|
|
165
|
+
messagingHints: optionalAnyObjectSchema,
|
|
166
|
+
})
|
|
167
|
+
.refine((persona) => persona.segment_id !== undefined || persona.segmentId !== undefined, {
|
|
168
|
+
message: 'segmentId is required',
|
|
169
|
+
path: ['segmentId'],
|
|
170
|
+
})
|
|
171
|
+
.transform(({ segment_id, segmentId, pain_points, painPoints, messaging_hints, messagingHints, ...rest }) => ({
|
|
172
|
+
...rest,
|
|
173
|
+
segment_id: segment_id ?? segmentId,
|
|
174
|
+
pain_points: pain_points ?? painPoints,
|
|
175
|
+
messaging_hints: messaging_hints ?? messagingHints,
|
|
176
|
+
}));
|
|
150
177
|
/**
|
|
151
178
|
* Машинные ожидания реплики: что раннер песочницы обязан увидеть в ответе агента на неё.
|
|
152
179
|
*
|
|
@@ -184,23 +211,31 @@ export const generatedScenarioSchema = z
|
|
|
184
211
|
}));
|
|
185
212
|
export const sandboxFindingSchema = z.object({
|
|
186
213
|
scenario_id: uuidSchema.optional(),
|
|
214
|
+
scenarioId: uuidSchema.optional(),
|
|
187
215
|
category: z.enum([
|
|
188
216
|
'hallucination',
|
|
189
217
|
'wrong_action',
|
|
190
218
|
'wrong_routing',
|
|
191
|
-
'
|
|
192
|
-
'wrong_pipeline_transition',
|
|
219
|
+
'missed_context',
|
|
193
220
|
'rag_miss',
|
|
194
221
|
'bad_tone',
|
|
195
222
|
'other',
|
|
196
223
|
]),
|
|
197
224
|
severity: z.enum(['low', 'medium', 'critical']),
|
|
198
|
-
|
|
225
|
+
description: z.string().optional(),
|
|
226
|
+
message: z.string().optional(),
|
|
227
|
+
evidence: z.string().optional(),
|
|
228
|
+
recommendation: z.string().optional(),
|
|
199
229
|
suggestion: z.string().optional(),
|
|
200
230
|
turn_index: z.number().int().optional(),
|
|
231
|
+
turnIndex: z.number().int().optional(),
|
|
232
|
+
}).refine((finding) => finding.description !== undefined || finding.message !== undefined, {
|
|
233
|
+
message: 'description is required',
|
|
234
|
+
path: ['description'],
|
|
201
235
|
});
|
|
202
236
|
export const simulationFindingSchema = z.object({
|
|
203
237
|
dialogue_id: uuidSchema.optional(),
|
|
238
|
+
dialogueId: uuidSchema.optional(),
|
|
204
239
|
category: z.enum([
|
|
205
240
|
'hallucination',
|
|
206
241
|
'wrong_action',
|
|
@@ -214,6 +249,7 @@ export const simulationFindingSchema = z.object({
|
|
|
214
249
|
message: z.string(),
|
|
215
250
|
suggestion: z.string().optional(),
|
|
216
251
|
reference_message_index: z.number().int().optional(),
|
|
252
|
+
referenceMessageIndex: z.number().int().optional(),
|
|
217
253
|
});
|
|
218
254
|
export const routingRuleLeadStatusSchema = z.object({
|
|
219
255
|
lead_status_name: z.string().nullable().optional(),
|
|
@@ -668,6 +704,13 @@ export const platformGetcourseSettingsSchema = z
|
|
|
668
704
|
guard_active_series: guardModeEnum.nullable().optional(),
|
|
669
705
|
guard_active_application: guardModeEnum.nullable().optional(),
|
|
670
706
|
guard_paid: guardModeEnum.nullable().optional(),
|
|
707
|
+
/**
|
|
708
|
+
* ТИХИЙ ПЕРИОД площадки в сутках: не писать человеку N суток после НАШЕГО касания —
|
|
709
|
+
* отправки или шага календарной цепочки. Считается ПО ЧЕЛОВЕКУ; волна школы касанием НЕ
|
|
710
|
+
* считается. `null` = «не настраивали», действующее значение 0 (правила нет); рекомендация
|
|
711
|
+
* владельца — 7. Расписание судится своим `cooldown_days`, а не этим числом.
|
|
712
|
+
*/
|
|
713
|
+
quiet_days: z.number().int().min(0).nullable().optional(),
|
|
671
714
|
// «Транспорт → точное НАЗВАНИЕ кастомного поля сделки» (id в read-API GetCourse нет):
|
|
672
715
|
// { "Telegram": "Отправлено ТГ", "VK": "Отправлено ВК" }. Очистка — пустым объектом {}.
|
|
673
716
|
delivery_field_map: z.record(getcourseTransportEnum, z.string()).optional(),
|
|
@@ -764,7 +807,7 @@ export function buildListQuery(params) {
|
|
|
764
807
|
const query = search.toString();
|
|
765
808
|
return query.length > 0 ? `?${query}` : '';
|
|
766
809
|
}
|
|
767
|
-
export function buildVariableListQuery(scope, platformId, filter) {
|
|
810
|
+
export function buildVariableListQuery(scope, platformId, filter, limit, cursor) {
|
|
768
811
|
const params = new URLSearchParams();
|
|
769
812
|
params.set('scope', scope);
|
|
770
813
|
if (platformId) {
|
|
@@ -773,6 +816,12 @@ export function buildVariableListQuery(scope, platformId, filter) {
|
|
|
773
816
|
if (filter) {
|
|
774
817
|
params.set('filter', filter);
|
|
775
818
|
}
|
|
819
|
+
if (limit !== undefined) {
|
|
820
|
+
params.set('limit', String(limit));
|
|
821
|
+
}
|
|
822
|
+
if (cursor) {
|
|
823
|
+
params.set('cursor', cursor);
|
|
824
|
+
}
|
|
776
825
|
const queryString = params.toString();
|
|
777
826
|
return queryString ? `?${queryString}` : '';
|
|
778
827
|
}
|
|
@@ -1072,6 +1121,7 @@ export function mapPlatformGetcourseSettingsInput(input) {
|
|
|
1072
1121
|
guardActiveSeries: input.guard_active_series,
|
|
1073
1122
|
guardActiveApplication: input.guard_active_application,
|
|
1074
1123
|
guardPaid: input.guard_paid,
|
|
1124
|
+
quietDays: input.quiet_days,
|
|
1075
1125
|
// Ключи map — значения enum транспортов (совпадают с camelCase-контрактом бэка) → as-is
|
|
1076
1126
|
deliveryFieldMap: input.delivery_field_map,
|
|
1077
1127
|
// Ручной мьют GetCourse: null → очистить поле; undefined → не трогать (compactObject стрипнет).
|