@opencx/mcp 1.15.14 → 1.15.16
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/dist/companies.spec.d.ts +2 -0
- package/dist/companies.spec.d.ts.map +1 -0
- package/dist/companies.spec.js +191 -0
- package/dist/companies.spec.js.map +1 -0
- package/dist/salesforce-ai-reply-templates.spec.d.ts +2 -0
- package/dist/salesforce-ai-reply-templates.spec.d.ts.map +1 -0
- package/dist/salesforce-ai-reply-templates.spec.js +163 -0
- package/dist/salesforce-ai-reply-templates.spec.js.map +1 -0
- package/dist/schema.d.ts +759 -15
- package/dist/schema.d.ts.map +1 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +4 -0
- package/dist/server.js.map +1 -1
- package/dist/tools/companies.d.ts +4 -0
- package/dist/tools/companies.d.ts.map +1 -0
- package/dist/tools/companies.js +127 -0
- package/dist/tools/companies.js.map +1 -0
- package/dist/tools/salesforce-ai-reply-templates.d.ts +4 -0
- package/dist/tools/salesforce-ai-reply-templates.d.ts.map +1 -0
- package/dist/tools/salesforce-ai-reply-templates.js +95 -0
- package/dist/tools/salesforce-ai-reply-templates.js.map +1 -0
- package/dist/utils/session-channel.d.ts +2 -2
- package/dist/utils/session-channel.d.ts.map +1 -1
- package/dist/utils/session-channel.js +1 -0
- package/dist/utils/session-channel.js.map +1 -1
- package/package.json +1 -1
package/dist/server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AA+CpE,MAAM,WAAW,mBAAmB;IAClC,6FAA6F;IAC7F,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B;;;;OAIG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,wBAAgB,YAAY,CAC1B,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,mBAAwB,GAChC,SAAS,CAwDX"}
|
package/dist/server.js
CHANGED
|
@@ -4,6 +4,7 @@ import { registerActionTools } from './tools/actions.js';
|
|
|
4
4
|
import { registerAvailabilityStatusTools } from './tools/availability-statuses.js';
|
|
5
5
|
import { registerAutopilotTools } from './tools/autopilot.js';
|
|
6
6
|
import { registerBlocklistTools } from './tools/blocklist.js';
|
|
7
|
+
import { registerCompanyTools } from './tools/companies.js';
|
|
7
8
|
import { registerContactTools } from './tools/contacts.js';
|
|
8
9
|
import { registerContactSegmentTools } from './tools/contact-segments.js';
|
|
9
10
|
import { registerSessionTools } from './tools/sessions.js';
|
|
@@ -17,6 +18,7 @@ import { registerTeamTools } from './tools/teams.js';
|
|
|
17
18
|
import { registerEmailTools } from './tools/email.js';
|
|
18
19
|
import { registerEmailTemplateTools } from './tools/email-templates.js';
|
|
19
20
|
import { registerMacroTools } from './tools/macros.js';
|
|
21
|
+
import { registerSalesforceAiReplyTemplateTools } from './tools/salesforce-ai-reply-templates.js';
|
|
20
22
|
import { registerPhoneTools } from './tools/phone.js';
|
|
21
23
|
import { registerOrgTools } from './tools/org.js';
|
|
22
24
|
import { registerSearchTools } from './tools/search.js';
|
|
@@ -55,6 +57,7 @@ export function createServer(apiKey, baseUrl, options = {}) {
|
|
|
55
57
|
registerAvailabilityStatusTools(server, client);
|
|
56
58
|
registerBlocklistTools(server, client);
|
|
57
59
|
registerContactTools(server, client);
|
|
60
|
+
registerCompanyTools(server, client);
|
|
58
61
|
registerContactSegmentTools(server, client);
|
|
59
62
|
registerSessionTools(server, client);
|
|
60
63
|
registerTrainingTools(server, client);
|
|
@@ -67,6 +70,7 @@ export function createServer(apiKey, baseUrl, options = {}) {
|
|
|
67
70
|
registerEmailTools(server, client);
|
|
68
71
|
registerEmailTemplateTools(server, client);
|
|
69
72
|
registerMacroTools(server, client);
|
|
73
|
+
registerSalesforceAiReplyTemplateTools(server, client);
|
|
70
74
|
registerPhoneTools(server, client);
|
|
71
75
|
registerOrgTools(server, client);
|
|
72
76
|
registerSearchTools(server, client);
|
package/dist/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"companies.d.ts","sourceRoot":"","sources":["../../src/tools/companies.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAGzE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAoBrD,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,QA+K3E"}
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { jsonContent } from '../api-client.js';
|
|
3
|
+
/** Name one teammate, by id or email — never both. Shared by both write tools. */
|
|
4
|
+
const ownerInput = z.object({
|
|
5
|
+
id: z.number().int().optional().describe('OpenCX user id of the owning teammate'),
|
|
6
|
+
email: z
|
|
7
|
+
.string()
|
|
8
|
+
.email()
|
|
9
|
+
.optional()
|
|
10
|
+
.describe('Email of the owning teammate, matched case-insensitively against your members'),
|
|
11
|
+
});
|
|
12
|
+
export function registerCompanyTools(server, client) {
|
|
13
|
+
server.registerTool('list_companies', {
|
|
14
|
+
description: 'List the companies in your organization, newest first. Each company carries its external_id (your own key for it), attributes, and its agent_owner — the teammate who owns the account, or null when nobody does.',
|
|
15
|
+
inputSchema: {
|
|
16
|
+
page: z.number().int().min(1).optional().describe('Page number, starting at 1'),
|
|
17
|
+
limit: z.number().int().min(1).max(200).optional().describe('Companies per page, max 200'),
|
|
18
|
+
},
|
|
19
|
+
}, async ({ page, limit }) => {
|
|
20
|
+
const data = (await client.GET('/companies', { params: { query: { page, limit } } })).data;
|
|
21
|
+
return jsonContent(data);
|
|
22
|
+
});
|
|
23
|
+
server.registerTool('get_company', {
|
|
24
|
+
description: 'Retrieve one company by its OpenCX id, including its attributes and its agent_owner.',
|
|
25
|
+
inputSchema: {
|
|
26
|
+
company_id: z.string().describe('The OpenCX company id (a uuid), not your external_id'),
|
|
27
|
+
},
|
|
28
|
+
}, async ({ company_id }) => {
|
|
29
|
+
const data = (await client.GET('/companies/{company_id}', { params: { path: { company_id } } })).data;
|
|
30
|
+
return jsonContent(data);
|
|
31
|
+
});
|
|
32
|
+
server.registerTool('upsert_company', {
|
|
33
|
+
description: 'Create or update a company, keyed on your own identifier (external_id) — a Zoho account id, a merchant id, whatever you use. Creates it when the key is unknown, otherwise merges. `name` is only required when creating. Attributes merge; send an attribute as null to clear that key.',
|
|
34
|
+
inputSchema: {
|
|
35
|
+
external_id: z.string().min(1).describe("Your organization's own key for this company"),
|
|
36
|
+
name: z.string().min(1).optional().describe('Display name. Required only when creating.'),
|
|
37
|
+
custom_data: z
|
|
38
|
+
.record(z.string(), z.union([z.string(), z.number(), z.boolean(), z.null()]))
|
|
39
|
+
.optional()
|
|
40
|
+
.describe('Company attributes to merge. A null value clears that key.'),
|
|
41
|
+
owner: ownerInput
|
|
42
|
+
.nullable()
|
|
43
|
+
.optional()
|
|
44
|
+
.describe('Set the owning teammate while creating or updating. Omit to leave ownership unchanged; null clears it.'),
|
|
45
|
+
},
|
|
46
|
+
}, async (params) => {
|
|
47
|
+
const body = {
|
|
48
|
+
external_id: params.external_id,
|
|
49
|
+
name: params.name,
|
|
50
|
+
custom_data: params.custom_data,
|
|
51
|
+
owner: params.owner,
|
|
52
|
+
};
|
|
53
|
+
const data = (await client.POST('/companies', { body })).data;
|
|
54
|
+
return jsonContent(data);
|
|
55
|
+
});
|
|
56
|
+
server.registerTool('set_company_owner', {
|
|
57
|
+
description: 'Assign the teammate who owns a company. Name them inside `owner` by either `email` or `id` — exactly one, not both. The email is matched against your organization members regardless of capitalisation, so you can pass an address straight from a CRM. Pass `owner` as null to leave the company unowned. Someone who is not a member of your organization is rejected.',
|
|
58
|
+
inputSchema: {
|
|
59
|
+
external_id: z.string().min(1).describe('Your own key for the company'),
|
|
60
|
+
owner: ownerInput
|
|
61
|
+
.nullable()
|
|
62
|
+
.describe('The teammate who owns this account. Null leaves the company unowned.'),
|
|
63
|
+
},
|
|
64
|
+
}, async ({ external_id, owner }) => {
|
|
65
|
+
const body = { owner };
|
|
66
|
+
const data = (await client.PUT('/companies/{external_id}/owner', {
|
|
67
|
+
params: { path: { external_id } },
|
|
68
|
+
body,
|
|
69
|
+
})).data;
|
|
70
|
+
return jsonContent(data);
|
|
71
|
+
});
|
|
72
|
+
server.registerTool('list_contact_companies', {
|
|
73
|
+
description: 'List every company a contact belongs to, newest link first. An empty list is the ordinary state for a contact in no company, not an error.',
|
|
74
|
+
inputSchema: {
|
|
75
|
+
contact_id: z.string().describe('The OpenCX contact id (a uuid)'),
|
|
76
|
+
},
|
|
77
|
+
}, async ({ contact_id }) => {
|
|
78
|
+
const data = (await client.GET('/contacts/{contact_id}/companies', { params: { path: { contact_id } } })).data;
|
|
79
|
+
return jsonContent(data);
|
|
80
|
+
});
|
|
81
|
+
server.registerTool('link_contact_to_company', {
|
|
82
|
+
description: 'Add an EXISTING company to a contact, resolved by your own key (external_id). An unknown key is rejected rather than creating a company. A contact may belong to several companies, so this adds rather than replaces; linking the same pair twice reports `unchanged`.',
|
|
83
|
+
inputSchema: {
|
|
84
|
+
contact_id: z.string().describe('The OpenCX contact id (a uuid)'),
|
|
85
|
+
external_id: z.string().min(1).describe('Your own key for the company to link'),
|
|
86
|
+
},
|
|
87
|
+
}, async ({ contact_id, external_id }) => {
|
|
88
|
+
const body = { external_id };
|
|
89
|
+
const data = (await client.POST('/contacts/{contact_id}/companies', {
|
|
90
|
+
params: { path: { contact_id } },
|
|
91
|
+
body,
|
|
92
|
+
})).data;
|
|
93
|
+
return jsonContent(data);
|
|
94
|
+
});
|
|
95
|
+
server.registerTool('link_contacts_to_companies', {
|
|
96
|
+
description: 'Link up to 100 contacts to companies in one call. Name each contact by contact_id, contact_email, or contact_phone — exactly one. Failures are isolated: a link that fails returns an error in its own entry without affecting the others, so the call succeeds even when some links do not.',
|
|
97
|
+
inputSchema: {
|
|
98
|
+
links: z
|
|
99
|
+
.array(z.object({
|
|
100
|
+
contact_id: z.string().optional().describe('The OpenCX contact id, if you hold it'),
|
|
101
|
+
contact_email: z.string().email().optional().describe('Look the contact up by email'),
|
|
102
|
+
contact_phone: z.string().optional().describe('Look the contact up by phone'),
|
|
103
|
+
external_id: z.string().min(1).describe('Your own key for the company'),
|
|
104
|
+
}))
|
|
105
|
+
.min(1)
|
|
106
|
+
.max(100)
|
|
107
|
+
.describe('One entry per link, at most 100'),
|
|
108
|
+
},
|
|
109
|
+
}, async ({ links }) => {
|
|
110
|
+
const body = { links };
|
|
111
|
+
const data = (await client.POST('/companies/links', { body })).data;
|
|
112
|
+
return jsonContent(data);
|
|
113
|
+
});
|
|
114
|
+
server.registerTool('unlink_contact_from_company', {
|
|
115
|
+
description: 'Remove ONE company from a contact, leaving any others intact. Reports `unchanged` when the contact was not in that company.',
|
|
116
|
+
inputSchema: {
|
|
117
|
+
contact_id: z.string().describe('The OpenCX contact id (a uuid)'),
|
|
118
|
+
external_id: z.string().min(1).describe('Your own key for the company to remove'),
|
|
119
|
+
},
|
|
120
|
+
}, async ({ contact_id, external_id }) => {
|
|
121
|
+
const data = (await client.DELETE('/contacts/{contact_id}/companies/{external_id}', {
|
|
122
|
+
params: { path: { contact_id, external_id } },
|
|
123
|
+
})).data;
|
|
124
|
+
return jsonContent(data);
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
//# sourceMappingURL=companies.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"companies.js","sourceRoot":"","sources":["../../src/tools/companies.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { type McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
2
|
+
import type { OpenCXClient } from '../api-client.js';
|
|
3
|
+
export declare function registerSalesforceAiReplyTemplateTools(server: McpServer, client: OpenCXClient): void;
|
|
4
|
+
//# sourceMappingURL=salesforce-ai-reply-templates.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"salesforce-ai-reply-templates.d.ts","sourceRoot":"","sources":["../../src/tools/salesforce-ai-reply-templates.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAGzE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAoCrD,wBAAgB,sCAAsC,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,QAqG7F"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { jsonContent } from '../api-client.js';
|
|
3
|
+
const SALESFORCE_V2_ONLY = 'Available only to organizations on the Salesforce v2 (Email-to-Case) integration — other organizations get a 400.';
|
|
4
|
+
const templateHtmlDescription = 'Template HTML. Put {{content}} where the AI agent\'s reply goes (text above it is the greeting, text below the signature); without {{content}} the whole template is appended below the reply. Variables: system objects {{contact.full_name}}, {{contact.first_name}}, {{contact.email}}, {{session.number}}, {{session.language}}, {{org.name}} (HTML-escaped) and any session attribute key such as {{sf_case_Regards__c}} or {{sf_case_SixtLogo__c}} (inserted raw — Salesforce Case formula fields hold HTML fragments — then sanitized). Conditions: {{#if sf_case_Language__c == "de"}}…{{else}}…{{/if}}. Unknown variables render empty. Scripts, event handlers and non-https images are stripped; {{content}} may appear at most once. Use preview_salesforce_ai_reply_template to see the exact rendering against a real session before saving.';
|
|
5
|
+
const ruleConditionSchema = z.discriminatedUnion('type', [
|
|
6
|
+
z.object({
|
|
7
|
+
type: z.literal('attribute'),
|
|
8
|
+
key: z.string().min(1).max(200).describe('Session attribute key, e.g. sf_case_Language__c'),
|
|
9
|
+
op: z.enum(['exists', 'not_exists', 'eq', 'neq', 'contains']),
|
|
10
|
+
value: z.string().max(500).optional().describe('Required for eq / neq / contains'),
|
|
11
|
+
}),
|
|
12
|
+
z.object({
|
|
13
|
+
type: z.literal('tag'),
|
|
14
|
+
op: z.enum(['has', 'not_has']),
|
|
15
|
+
value: z.string().min(1).max(200).describe('Tag name'),
|
|
16
|
+
}),
|
|
17
|
+
]);
|
|
18
|
+
const rulesSchema = z
|
|
19
|
+
.object({ conditions: z.array(ruleConditionSchema).min(1).max(10) })
|
|
20
|
+
.describe('Auto-selection rules: ANDed conditions on session attributes/tags. At send time the first rule-bearing template (creation order) whose conditions all match is used, otherwise the default. Most Salesforce setups need no rules — {{#if}} inside one template covers per-language/per-country variants.');
|
|
21
|
+
export function registerSalesforceAiReplyTemplateTools(server, client) {
|
|
22
|
+
server.registerTool('list_salesforce_ai_reply_templates', {
|
|
23
|
+
description: `List the AI agent's reply templates for the organization: greeting/signature HTML with {{variables}} rendered around or below the AI's autopilot Salesforce Case emails, with one default and optional auto-selection rules. ${SALESFORCE_V2_ONLY}`,
|
|
24
|
+
}, async () => {
|
|
25
|
+
const data = (await client.GET('/salesforce/ai-reply-templates')).data;
|
|
26
|
+
return jsonContent(data);
|
|
27
|
+
});
|
|
28
|
+
server.registerTool('create_salesforce_ai_reply_template', {
|
|
29
|
+
description: `Create an AI reply template. The organization's first template becomes the default automatically; is_default=true on a later one moves the default atomically. ${SALESFORCE_V2_ONLY}`,
|
|
30
|
+
inputSchema: {
|
|
31
|
+
name: z.string().min(1).max(100).describe('Template name, unique per organization'),
|
|
32
|
+
template_html: z.string().min(1).max(20_000).describe(templateHtmlDescription),
|
|
33
|
+
is_default: z.boolean().optional().describe('Make this the default template'),
|
|
34
|
+
rules: rulesSchema.nullable().optional(),
|
|
35
|
+
},
|
|
36
|
+
}, async ({ name, template_html, is_default, rules }) => {
|
|
37
|
+
const body = {
|
|
38
|
+
name,
|
|
39
|
+
template_html,
|
|
40
|
+
...(is_default !== undefined ? { is_default } : {}),
|
|
41
|
+
...(rules !== undefined ? { rules } : {}),
|
|
42
|
+
};
|
|
43
|
+
const data = (await client.POST('/salesforce/ai-reply-templates', { body })).data;
|
|
44
|
+
return jsonContent(data);
|
|
45
|
+
});
|
|
46
|
+
server.registerTool('update_salesforce_ai_reply_template', {
|
|
47
|
+
description: `Partially update an AI reply template: name, template_html, is_default (true moves the default onto it), rules (null clears them). ${SALESFORCE_V2_ONLY}`,
|
|
48
|
+
inputSchema: {
|
|
49
|
+
id: z.string().uuid().describe('Template ID'),
|
|
50
|
+
name: z.string().min(1).max(100).optional(),
|
|
51
|
+
template_html: z.string().min(1).max(20_000).optional().describe(templateHtmlDescription),
|
|
52
|
+
is_default: z.boolean().optional(),
|
|
53
|
+
rules: rulesSchema.nullable().optional(),
|
|
54
|
+
},
|
|
55
|
+
}, async ({ id, name, template_html, is_default, rules }) => {
|
|
56
|
+
const body = {
|
|
57
|
+
...(name !== undefined ? { name } : {}),
|
|
58
|
+
...(template_html !== undefined ? { template_html } : {}),
|
|
59
|
+
...(is_default !== undefined ? { is_default } : {}),
|
|
60
|
+
...(rules !== undefined ? { rules } : {}),
|
|
61
|
+
};
|
|
62
|
+
const data = (await client.PATCH('/salesforce/ai-reply-templates/{id}', {
|
|
63
|
+
params: { path: { id } },
|
|
64
|
+
body,
|
|
65
|
+
})).data;
|
|
66
|
+
return jsonContent(data);
|
|
67
|
+
});
|
|
68
|
+
server.registerTool('delete_salesforce_ai_reply_template', {
|
|
69
|
+
description: `Permanently delete an AI reply template. Deleting the default leaves the AI replying plain until another template is made default. ${SALESFORCE_V2_ONLY}`,
|
|
70
|
+
inputSchema: { id: z.string().uuid().describe('Template ID') },
|
|
71
|
+
}, async ({ id }) => {
|
|
72
|
+
await client.DELETE('/salesforce/ai-reply-templates/{id}', { params: { path: { id } } });
|
|
73
|
+
return jsonContent({ deleted: true, id });
|
|
74
|
+
});
|
|
75
|
+
server.registerTool('preview_salesforce_ai_reply_template', {
|
|
76
|
+
description: `Render a template (saved or not) exactly as the AI agent would send it, against a real session: the one with session_number, else the most recent Salesforce-linked session, else an empty context. Returns html, text, the session used and the variables that came out empty. Use it to check variables and {{#if}} branches before creating or updating a template. ${SALESFORCE_V2_ONLY}`,
|
|
77
|
+
inputSchema: {
|
|
78
|
+
template_html: z.string().min(1).max(20_000).describe(templateHtmlDescription),
|
|
79
|
+
session_number: z
|
|
80
|
+
.number()
|
|
81
|
+
.int()
|
|
82
|
+
.positive()
|
|
83
|
+
.optional()
|
|
84
|
+
.describe('Session number to render against (defaults to the latest Salesforce-linked session)'),
|
|
85
|
+
},
|
|
86
|
+
}, async ({ template_html, session_number }) => {
|
|
87
|
+
const body = {
|
|
88
|
+
template_html,
|
|
89
|
+
...(session_number !== undefined ? { session_number } : {}),
|
|
90
|
+
};
|
|
91
|
+
const data = (await client.POST('/salesforce/ai-reply-templates/preview', { body })).data;
|
|
92
|
+
return jsonContent(data);
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
//# sourceMappingURL=salesforce-ai-reply-templates.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"salesforce-ai-reply-templates.js","sourceRoot":"","sources":["../../src/tools/salesforce-ai-reply-templates.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
-
export declare const sessionChannelValues: readonly ["web", "email", "phone_voice", "slack", "sms", "whatsapp", "instagram", "messenger", "api", "web_voice", "twitter", "twitter_mentions"];
|
|
3
|
-
export declare const sessionChannelSchema: z.ZodEnum<["web", "email", "phone_voice", "slack", "sms", "whatsapp", "instagram", "messenger", "api", "web_voice", "twitter", "twitter_mentions"]>;
|
|
2
|
+
export declare const sessionChannelValues: readonly ["web", "email", "phone_voice", "slack", "sms", "whatsapp", "instagram", "messenger", "api", "web_voice", "twitter", "twitter_mentions", "app_review"];
|
|
3
|
+
export declare const sessionChannelSchema: z.ZodEnum<["web", "email", "phone_voice", "slack", "sms", "whatsapp", "instagram", "messenger", "api", "web_voice", "twitter", "twitter_mentions", "app_review"]>;
|
|
4
4
|
//# sourceMappingURL=session-channel.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-channel.d.ts","sourceRoot":"","sources":["../../src/utils/session-channel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,eAAO,MAAM,oBAAoB,
|
|
1
|
+
{"version":3,"file":"session-channel.d.ts","sourceRoot":"","sources":["../../src/utils/session-channel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,eAAO,MAAM,oBAAoB,iKAca,CAAC;AAW/C,eAAO,MAAM,oBAAoB,mKAA+B,CAAC"}
|
|
@@ -12,6 +12,7 @@ export const sessionChannelValues = [
|
|
|
12
12
|
'web_voice',
|
|
13
13
|
'twitter',
|
|
14
14
|
'twitter_mentions',
|
|
15
|
+
'app_review',
|
|
15
16
|
];
|
|
16
17
|
// Compile-time exhaustiveness: if the generated OpenAPI SessionChannel union
|
|
17
18
|
// gains a member missing from the tuple above, MissingSessionChannels becomes
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-channel.js","sourceRoot":"","sources":["../../src/utils/session-channel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,KAAK;IACL,OAAO;IACP,aAAa;IACb,OAAO;IACP,KAAK;IACL,UAAU;IACV,WAAW;IACX,WAAW;IACX,KAAK;IACL,WAAW;IACX,SAAS;IACT,kBAAkB;
|
|
1
|
+
{"version":3,"file":"session-channel.js","sourceRoot":"","sources":["../../src/utils/session-channel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,KAAK;IACL,OAAO;IACP,aAAa;IACb,OAAO;IACP,KAAK;IACL,UAAU;IACV,WAAW;IACX,WAAW;IACX,KAAK;IACL,WAAW;IACX,SAAS;IACT,kBAAkB;IAClB,YAAY;CACgC,CAAC;AAI/C,6EAA6E;AAC7E,8EAA8E;AAC9E,iDAAiD;AACjD,KAAM,oBAEI,CAAC;AAEX,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC"}
|
package/package.json
CHANGED