@agifyai/leadify-mcp 9.7.0 → 9.7.1
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 +146 -0
- package/dist/server.js +2 -0
- package/dist/tools/agent_outreach.d.ts +19 -0
- package/dist/tools/agent_outreach.js +88 -0
- package/dist/tools/agent_outreach_schemas.d.ts +1394 -0
- package/dist/tools/agent_outreach_schemas.js +94 -0
- package/dist/tools/auth.js +15 -2
- package/dist/tools/context_entities.d.ts +70 -70
- package/dist/tools/lead_move.d.ts +64 -64
- package/package.json +1 -1
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
// Portable Zod 3 projection of the Leadify agent-outreach contracts (PRD-2592).
|
|
3
|
+
export const identifier = z.string().min(1).max(200).regex(/^\S+(?![\s\S])/);
|
|
4
|
+
const exactText = z.string().max(20000);
|
|
5
|
+
const version = z.string().min(1).max(200);
|
|
6
|
+
const date = z.string().datetime({ offset: true });
|
|
7
|
+
export const scope = { organization_id: identifier, program_id: identifier };
|
|
8
|
+
export const channel = z.enum(["GMAIL", "LINKEDIN"]);
|
|
9
|
+
const targetShape = { channel, kind: z.enum(["MESSAGE", "INVITATION"]) };
|
|
10
|
+
const validTarget = (v) => v.kind !== "INVITATION" || v.channel === "LINKEDIN";
|
|
11
|
+
const target = z.object(targetShape).strict().refine(validTarget, "Les invitations concernent LinkedIn.");
|
|
12
|
+
const count = z.object({ ...targetShape, min: z.number().int().min(0).max(1000000).optional(), max: z.number().int().min(0).max(1000000).optional() }).strict()
|
|
13
|
+
.refine(validTarget, "Les invitations concernent LinkedIn.")
|
|
14
|
+
.refine(v => (v.min !== undefined || v.max !== undefined) && (v.min === undefined || v.max === undefined || v.min <= v.max), "Vérifiez les bornes du compteur.");
|
|
15
|
+
export const filters = z.object({
|
|
16
|
+
group_id: identifier.optional(),
|
|
17
|
+
signal_filter: z.object({ detected_since: date.optional(), detected_before: date.optional(),
|
|
18
|
+
levels: z.array(z.enum(["STRONG", "GOLDEN", "CRITICAL"])).min(1).max(3).optional(),
|
|
19
|
+
scope: z.enum(["PERSON", "COMPANY", "BOTH"]).optional(),
|
|
20
|
+
}).strict().refine(v => !v.detected_since || !v.detected_before || Date.parse(v.detected_since) < Date.parse(v.detected_before), "Le début doit précéder la fin.").optional(),
|
|
21
|
+
last_confirmed_outbound_before: z.object({ channel: z.enum(["any", "GMAIL", "LINKEDIN"]), before: date }).strict().optional(),
|
|
22
|
+
counts: z.array(count).max(6).optional(), never_on: z.array(target).max(3).optional(),
|
|
23
|
+
pending: z.boolean().optional(), unknown: z.boolean().optional(), reply: z.enum(["TO_HANDLE", "WAITING", "NONE"]).optional(), excluded: z.boolean().optional(),
|
|
24
|
+
}).strict();
|
|
25
|
+
export const context = z.object({
|
|
26
|
+
contract_version: z.literal("agent-writing-context.v1"), context_version: version, facts_version: version, read_at: date,
|
|
27
|
+
versions: z.object({ identity: version, qualification: version, signals: version, conversation: version,
|
|
28
|
+
contactState: version, exclusion: version, authorization: version, workspace: version }).strict()
|
|
29
|
+
.describe("Copy the versions object from get_outreach_prospect_context unchanged, including contactState."),
|
|
30
|
+
}).strict();
|
|
31
|
+
export const message = z.object({
|
|
32
|
+
channel, action: z.enum(["MESSAGE", "INVITATION"]), sender_id: identifier, account_key: z.string().min(1).max(1000),
|
|
33
|
+
recipient: exactText.min(1), subject: exactText.nullable(), body: exactText,
|
|
34
|
+
thread_id: identifier.nullable(), expected_inbound_id: identifier.nullable(),
|
|
35
|
+
technical_parts: z.object({ signature: exactText, unsubscribe: exactText }).strict(),
|
|
36
|
+
}).strict().superRefine((v, ctx) => {
|
|
37
|
+
const issue = (path, message) => ctx.addIssue({ code: "custom", path, message });
|
|
38
|
+
if (v.channel === "GMAIL") {
|
|
39
|
+
if (v.action !== "MESSAGE")
|
|
40
|
+
issue(["action"], "Une invitation concerne seulement LinkedIn.");
|
|
41
|
+
if (!v.subject)
|
|
42
|
+
issue(["subject"], "Renseignez le sujet de cet e-mail.");
|
|
43
|
+
}
|
|
44
|
+
else {
|
|
45
|
+
if (v.subject !== null)
|
|
46
|
+
issue(["subject"], "Le sujet LinkedIn doit être null.");
|
|
47
|
+
for (const part of ["signature", "unsubscribe"])
|
|
48
|
+
if (v.technical_parts[part] !== "")
|
|
49
|
+
issue(["technical_parts", part], "Ce champ doit rester vide pour LinkedIn.");
|
|
50
|
+
}
|
|
51
|
+
if (v.action === "MESSAGE" && !v.body.length)
|
|
52
|
+
issue(["body"], "Renseignez le texte du message.");
|
|
53
|
+
});
|
|
54
|
+
export const decision = z.object({
|
|
55
|
+
request_key: z.string().min(1).max(200), lead_id: identifier, person_id: identifier,
|
|
56
|
+
purpose: z.enum(["FIRST_CONTACT", "FOLLOW_UP", "REPLY"]), reason: z.string().min(1).max(2000),
|
|
57
|
+
sources: z.array(z.object({ label: exactText.min(1), url: z.string().url().max(20000) }).strict()).max(20),
|
|
58
|
+
context, authorization_revision: z.number().int().positive(), messages: z.array(message).min(1).max(2),
|
|
59
|
+
}).strict().superRefine((v, ctx) => {
|
|
60
|
+
const channels = new Set();
|
|
61
|
+
v.messages.forEach((m, index) => {
|
|
62
|
+
if (channels.has(m.channel))
|
|
63
|
+
ctx.addIssue({ code: "custom", path: ["messages", index, "channel"], message: "Au plus un message par canal et par décision." });
|
|
64
|
+
channels.add(m.channel);
|
|
65
|
+
if (v.purpose === "REPLY")
|
|
66
|
+
for (const field of ["thread_id", "expected_inbound_id"]) {
|
|
67
|
+
if (m[field] === null)
|
|
68
|
+
ctx.addIssue({ code: "custom", path: ["messages", index, field], message: "Une réponse désigne le fil et le message reçu." });
|
|
69
|
+
}
|
|
70
|
+
});
|
|
71
|
+
});
|
|
72
|
+
export const querySchema = z.object({ ...scope, recipe: z.enum(["never_contacted", "followup_due", "channel_gap", "replies_to_handle"]).optional(),
|
|
73
|
+
filters: filters.default({}), limit: z.number().int().min(1).max(50).default(25), cursor: z.string().min(1).max(300).optional(),
|
|
74
|
+
}).strict();
|
|
75
|
+
export const submitSchema = z.object({ ...scope, decisions: z.array(decision).min(1).max(20) }).strict();
|
|
76
|
+
export const acknowledgeSchema = z.object({ ...scope, cursor: z.string().min(1).max(2000),
|
|
77
|
+
receipts: z.array(z.object({ change_id: z.string().regex(/^[1-9]\d{0,18}$/).refine(v => /^[1-9]\d{0,18}$/.test(v) && BigInt(v) <= 9223372036854775807n),
|
|
78
|
+
status: z.enum(["PROCESSED", "DISMISSED"]), reason: z.string().trim().min(1).max(2000) }).strict()).min(1).max(100),
|
|
79
|
+
}).strict().refine(v => new Set(v.receipts.map(r => r.change_id)).size === v.receipts.length, "Chaque changement doit être indiqué une seule fois.");
|
|
80
|
+
export function queryBody(v) {
|
|
81
|
+
const f = v.filters;
|
|
82
|
+
return { recipe: v.recipe, limit: v.limit, cursor: v.cursor, filters: {
|
|
83
|
+
groupId: f.group_id, signalFilter: f.signal_filter && { detectedSince: f.signal_filter.detected_since, detectedBefore: f.signal_filter.detected_before, levels: f.signal_filter.levels, scope: f.signal_filter.scope },
|
|
84
|
+
lastConfirmedOutboundBefore: f.last_confirmed_outbound_before, counts: f.counts, neverOn: f.never_on,
|
|
85
|
+
pending: f.pending, unknown: f.unknown, reply: f.reply, excluded: f.excluded,
|
|
86
|
+
} };
|
|
87
|
+
}
|
|
88
|
+
export function decisionBody(d) {
|
|
89
|
+
return { requestKey: d.request_key, leadId: d.lead_id, personId: d.person_id, purpose: d.purpose, reason: d.reason, sources: d.sources,
|
|
90
|
+
context: { contractVersion: d.context.contract_version, contextVersion: d.context.context_version, factsVersion: d.context.facts_version,
|
|
91
|
+
readAt: d.context.read_at, versions: d.context.versions }, authorizationRevision: d.authorization_revision,
|
|
92
|
+
messages: d.messages.map(m => ({ channel: m.channel, action: m.action, senderId: m.sender_id, accountKey: m.account_key,
|
|
93
|
+
recipient: m.recipient, subject: m.subject, body: m.body, threadId: m.thread_id, expectedInboundId: m.expected_inbound_id, technicalParts: m.technical_parts })) };
|
|
94
|
+
}
|
package/dist/tools/auth.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { OUTREACH_MCP_CONTRACT, OUTREACH_SERVER_CONTRACTS, OUTREACH_TOOL_NAMES, requireOutreachVersion, outreachError } from "./agent_outreach.js";
|
|
1
2
|
import { getClient } from "../client.js";
|
|
2
3
|
import { toolResult, handleToolError } from "../types.js";
|
|
3
4
|
import { z } from "zod";
|
|
@@ -12,6 +13,7 @@ export function projectMcpRuntimeInfo(data, organizationId) {
|
|
|
12
13
|
version: MCP_VERSION,
|
|
13
14
|
organization: organization ? { id: organization.id, name: organization.name ?? null, slug: organization.slug ?? null } : null,
|
|
14
15
|
organizationAccessible: Boolean(organization),
|
|
16
|
+
outreach: { contract: OUTREACH_MCP_CONTRACT, tools: OUTREACH_TOOL_NAMES, expectedServerContracts: OUTREACH_SERVER_CONTRACTS, serverCompatibility: "NOT_CHECKED", administrativeAuthority: false },
|
|
15
17
|
readOnly: true,
|
|
16
18
|
writes: 0,
|
|
17
19
|
sends: 0,
|
|
@@ -33,10 +35,21 @@ export function registerAuthTools(server, injectedClient) {
|
|
|
33
35
|
});
|
|
34
36
|
server.tool("get_mcp_runtime_info", "Read the exact Leadify MCP package/server version and verify that one explicitly selected organization is accessible to the configured API key. This diagnostic is read-only: it never reads prospects and never writes, sends, schedules, publishes, or activates anything.", {
|
|
35
37
|
organization_id: z.string().min(1).describe("Exact organization ID selected by the caller. The server never chooses an organization implicitly."),
|
|
36
|
-
|
|
38
|
+
probe_outreach: z.boolean().default(false).describe("Also probe the program contract without reading prospects. This does not prove every server capability or authorize sends."),
|
|
39
|
+
}, async ({ organization_id, probe_outreach }) => {
|
|
37
40
|
try {
|
|
38
41
|
const data = await (injectedClient ?? getClient()).get("/api/organizations");
|
|
39
|
-
|
|
42
|
+
const result = projectMcpRuntimeInfo(data, organization_id);
|
|
43
|
+
if (probe_outreach && result.organizationAccessible) {
|
|
44
|
+
try {
|
|
45
|
+
const observed = requireOutreachVersion(await (injectedClient ?? getClient()).get("/api/agent-outreach/programs", new URLSearchParams({ organizationId: organization_id, limit: "1" })), "1.0.0");
|
|
46
|
+
result.outreach = { ...result.outreach, serverCompatibility: "PROGRAM_CONTRACT_VERIFIED", observedProgramContract: observed.contractVersion, otherServerCapabilities: "NOT_CHECKED" };
|
|
47
|
+
}
|
|
48
|
+
catch (error) {
|
|
49
|
+
result.outreach = { ...result.outreach, serverCompatibility: "UNAVAILABLE_OR_INCOMPATIBLE", error: JSON.parse(outreachError(error).content[0].text) };
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
return toolResult(result);
|
|
40
53
|
}
|
|
41
54
|
catch (error) {
|
|
42
55
|
return handleToolError(error);
|
|
@@ -31,13 +31,13 @@ export declare const verticalContextContentSchema: z.ZodEffects<z.ZodObject<{
|
|
|
31
31
|
explanation: z.ZodOptional<z.ZodString>;
|
|
32
32
|
}, "strict", z.ZodTypeAny, {
|
|
33
33
|
value: string;
|
|
34
|
-
id: string;
|
|
35
34
|
label: string;
|
|
35
|
+
id: string;
|
|
36
36
|
explanation?: string | undefined;
|
|
37
37
|
}, {
|
|
38
38
|
value: string;
|
|
39
|
-
id: string;
|
|
40
39
|
label: string;
|
|
40
|
+
id: string;
|
|
41
41
|
explanation?: string | undefined;
|
|
42
42
|
}>, "many">>;
|
|
43
43
|
customerCaseIds: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
@@ -47,13 +47,13 @@ export declare const verticalContextContentSchema: z.ZodEffects<z.ZodObject<{
|
|
|
47
47
|
description: z.ZodOptional<z.ZodString>;
|
|
48
48
|
customerCaseIds: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
49
49
|
}, "strict", z.ZodTypeAny, {
|
|
50
|
-
title: string;
|
|
51
50
|
id: string;
|
|
51
|
+
title: string;
|
|
52
52
|
description?: string | undefined;
|
|
53
53
|
customerCaseIds?: string[] | undefined;
|
|
54
54
|
}, {
|
|
55
|
-
title: string;
|
|
56
55
|
id: string;
|
|
56
|
+
title: string;
|
|
57
57
|
description?: string | undefined;
|
|
58
58
|
customerCaseIds?: string[] | undefined;
|
|
59
59
|
}>, "many">>;
|
|
@@ -64,14 +64,14 @@ export declare const verticalContextContentSchema: z.ZodEffects<z.ZodObject<{
|
|
|
64
64
|
useCaseIds: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
65
65
|
customerCaseIds: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
66
66
|
}, "strict", z.ZodTypeAny, {
|
|
67
|
-
title: string;
|
|
68
67
|
id: string;
|
|
68
|
+
title: string;
|
|
69
69
|
description?: string | undefined;
|
|
70
70
|
customerCaseIds?: string[] | undefined;
|
|
71
71
|
useCaseIds?: string[] | undefined;
|
|
72
72
|
}, {
|
|
73
|
-
title: string;
|
|
74
73
|
id: string;
|
|
74
|
+
title: string;
|
|
75
75
|
description?: string | undefined;
|
|
76
76
|
customerCaseIds?: string[] | undefined;
|
|
77
77
|
useCaseIds?: string[] | undefined;
|
|
@@ -82,13 +82,13 @@ export declare const verticalContextContentSchema: z.ZodEffects<z.ZodObject<{
|
|
|
82
82
|
example: z.ZodOptional<z.ZodString>;
|
|
83
83
|
meaning: z.ZodOptional<z.ZodString>;
|
|
84
84
|
}, "strict", z.ZodTypeAny, {
|
|
85
|
-
title: string;
|
|
86
85
|
id: string;
|
|
86
|
+
title: string;
|
|
87
87
|
example?: string | undefined;
|
|
88
88
|
meaning?: string | undefined;
|
|
89
89
|
}, {
|
|
90
|
-
title: string;
|
|
91
90
|
id: string;
|
|
91
|
+
title: string;
|
|
92
92
|
example?: string | undefined;
|
|
93
93
|
meaning?: string | undefined;
|
|
94
94
|
}>, "many">>;
|
|
@@ -97,12 +97,12 @@ export declare const verticalContextContentSchema: z.ZodEffects<z.ZodObject<{
|
|
|
97
97
|
title: z.ZodString;
|
|
98
98
|
description: z.ZodOptional<z.ZodString>;
|
|
99
99
|
}, "strict", z.ZodTypeAny, {
|
|
100
|
-
title: string;
|
|
101
100
|
id: string;
|
|
101
|
+
title: string;
|
|
102
102
|
description?: string | undefined;
|
|
103
103
|
}, {
|
|
104
|
-
title: string;
|
|
105
104
|
id: string;
|
|
105
|
+
title: string;
|
|
106
106
|
description?: string | undefined;
|
|
107
107
|
}>, "many">>;
|
|
108
108
|
competitors: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
@@ -110,12 +110,12 @@ export declare const verticalContextContentSchema: z.ZodEffects<z.ZodObject<{
|
|
|
110
110
|
title: z.ZodString;
|
|
111
111
|
description: z.ZodOptional<z.ZodString>;
|
|
112
112
|
}, "strict", z.ZodTypeAny, {
|
|
113
|
-
title: string;
|
|
114
113
|
id: string;
|
|
114
|
+
title: string;
|
|
115
115
|
description?: string | undefined;
|
|
116
116
|
}, {
|
|
117
|
-
title: string;
|
|
118
117
|
id: string;
|
|
118
|
+
title: string;
|
|
119
119
|
description?: string | undefined;
|
|
120
120
|
}>, "many">>;
|
|
121
121
|
objections: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
@@ -138,12 +138,12 @@ export declare const verticalContextContentSchema: z.ZodEffects<z.ZodObject<{
|
|
|
138
138
|
title: z.ZodString;
|
|
139
139
|
description: z.ZodOptional<z.ZodString>;
|
|
140
140
|
}, "strict", z.ZodTypeAny, {
|
|
141
|
-
title: string;
|
|
142
141
|
id: string;
|
|
142
|
+
title: string;
|
|
143
143
|
description?: string | undefined;
|
|
144
144
|
}, {
|
|
145
|
-
title: string;
|
|
146
145
|
id: string;
|
|
146
|
+
title: string;
|
|
147
147
|
description?: string | undefined;
|
|
148
148
|
}>, "many">>;
|
|
149
149
|
regulatoryInformation: z.ZodOptional<z.ZodString>;
|
|
@@ -162,8 +162,8 @@ export declare const verticalContextContentSchema: z.ZodEffects<z.ZodObject<{
|
|
|
162
162
|
}>, "many">>;
|
|
163
163
|
}, "strict", z.ZodTypeAny, {
|
|
164
164
|
painPoints?: {
|
|
165
|
-
title: string;
|
|
166
165
|
id: string;
|
|
166
|
+
title: string;
|
|
167
167
|
description?: string | undefined;
|
|
168
168
|
customerCaseIds?: string[] | undefined;
|
|
169
169
|
useCaseIds?: string[] | undefined;
|
|
@@ -171,8 +171,8 @@ export declare const verticalContextContentSchema: z.ZodEffects<z.ZodObject<{
|
|
|
171
171
|
allowedVocabulary?: string[] | undefined;
|
|
172
172
|
prohibitedVocabulary?: string[] | undefined;
|
|
173
173
|
legalConstraints?: {
|
|
174
|
-
title: string;
|
|
175
174
|
id: string;
|
|
175
|
+
title: string;
|
|
176
176
|
description?: string | undefined;
|
|
177
177
|
}[] | undefined;
|
|
178
178
|
customerCaseIds?: string[] | undefined;
|
|
@@ -188,30 +188,30 @@ export declare const verticalContextContentSchema: z.ZodEffects<z.ZodObject<{
|
|
|
188
188
|
} | undefined;
|
|
189
189
|
marketMetrics?: {
|
|
190
190
|
value: string;
|
|
191
|
-
id: string;
|
|
192
191
|
label: string;
|
|
192
|
+
id: string;
|
|
193
193
|
explanation?: string | undefined;
|
|
194
194
|
}[] | undefined;
|
|
195
195
|
useCases?: {
|
|
196
|
-
title: string;
|
|
197
196
|
id: string;
|
|
197
|
+
title: string;
|
|
198
198
|
description?: string | undefined;
|
|
199
199
|
customerCaseIds?: string[] | undefined;
|
|
200
200
|
}[] | undefined;
|
|
201
201
|
qualificationSignals?: {
|
|
202
|
-
title: string;
|
|
203
202
|
id: string;
|
|
203
|
+
title: string;
|
|
204
204
|
example?: string | undefined;
|
|
205
205
|
meaning?: string | undefined;
|
|
206
206
|
}[] | undefined;
|
|
207
207
|
competitiveAdvantages?: {
|
|
208
|
-
title: string;
|
|
209
208
|
id: string;
|
|
209
|
+
title: string;
|
|
210
210
|
description?: string | undefined;
|
|
211
211
|
}[] | undefined;
|
|
212
212
|
competitors?: {
|
|
213
|
-
title: string;
|
|
214
213
|
id: string;
|
|
214
|
+
title: string;
|
|
215
215
|
description?: string | undefined;
|
|
216
216
|
}[] | undefined;
|
|
217
217
|
objections?: {
|
|
@@ -227,8 +227,8 @@ export declare const verticalContextContentSchema: z.ZodEffects<z.ZodObject<{
|
|
|
227
227
|
}[] | undefined;
|
|
228
228
|
}, {
|
|
229
229
|
painPoints?: {
|
|
230
|
-
title: string;
|
|
231
230
|
id: string;
|
|
231
|
+
title: string;
|
|
232
232
|
description?: string | undefined;
|
|
233
233
|
customerCaseIds?: string[] | undefined;
|
|
234
234
|
useCaseIds?: string[] | undefined;
|
|
@@ -236,8 +236,8 @@ export declare const verticalContextContentSchema: z.ZodEffects<z.ZodObject<{
|
|
|
236
236
|
allowedVocabulary?: string[] | undefined;
|
|
237
237
|
prohibitedVocabulary?: string[] | undefined;
|
|
238
238
|
legalConstraints?: {
|
|
239
|
-
title: string;
|
|
240
239
|
id: string;
|
|
240
|
+
title: string;
|
|
241
241
|
description?: string | undefined;
|
|
242
242
|
}[] | undefined;
|
|
243
243
|
customerCaseIds?: string[] | undefined;
|
|
@@ -253,30 +253,30 @@ export declare const verticalContextContentSchema: z.ZodEffects<z.ZodObject<{
|
|
|
253
253
|
} | undefined;
|
|
254
254
|
marketMetrics?: {
|
|
255
255
|
value: string;
|
|
256
|
-
id: string;
|
|
257
256
|
label: string;
|
|
257
|
+
id: string;
|
|
258
258
|
explanation?: string | undefined;
|
|
259
259
|
}[] | undefined;
|
|
260
260
|
useCases?: {
|
|
261
|
-
title: string;
|
|
262
261
|
id: string;
|
|
262
|
+
title: string;
|
|
263
263
|
description?: string | undefined;
|
|
264
264
|
customerCaseIds?: string[] | undefined;
|
|
265
265
|
}[] | undefined;
|
|
266
266
|
qualificationSignals?: {
|
|
267
|
-
title: string;
|
|
268
267
|
id: string;
|
|
268
|
+
title: string;
|
|
269
269
|
example?: string | undefined;
|
|
270
270
|
meaning?: string | undefined;
|
|
271
271
|
}[] | undefined;
|
|
272
272
|
competitiveAdvantages?: {
|
|
273
|
-
title: string;
|
|
274
273
|
id: string;
|
|
274
|
+
title: string;
|
|
275
275
|
description?: string | undefined;
|
|
276
276
|
}[] | undefined;
|
|
277
277
|
competitors?: {
|
|
278
|
-
title: string;
|
|
279
278
|
id: string;
|
|
279
|
+
title: string;
|
|
280
280
|
description?: string | undefined;
|
|
281
281
|
}[] | undefined;
|
|
282
282
|
objections?: {
|
|
@@ -292,8 +292,8 @@ export declare const verticalContextContentSchema: z.ZodEffects<z.ZodObject<{
|
|
|
292
292
|
}[] | undefined;
|
|
293
293
|
}>, {
|
|
294
294
|
painPoints?: {
|
|
295
|
-
title: string;
|
|
296
295
|
id: string;
|
|
296
|
+
title: string;
|
|
297
297
|
description?: string | undefined;
|
|
298
298
|
customerCaseIds?: string[] | undefined;
|
|
299
299
|
useCaseIds?: string[] | undefined;
|
|
@@ -301,8 +301,8 @@ export declare const verticalContextContentSchema: z.ZodEffects<z.ZodObject<{
|
|
|
301
301
|
allowedVocabulary?: string[] | undefined;
|
|
302
302
|
prohibitedVocabulary?: string[] | undefined;
|
|
303
303
|
legalConstraints?: {
|
|
304
|
-
title: string;
|
|
305
304
|
id: string;
|
|
305
|
+
title: string;
|
|
306
306
|
description?: string | undefined;
|
|
307
307
|
}[] | undefined;
|
|
308
308
|
customerCaseIds?: string[] | undefined;
|
|
@@ -318,30 +318,30 @@ export declare const verticalContextContentSchema: z.ZodEffects<z.ZodObject<{
|
|
|
318
318
|
} | undefined;
|
|
319
319
|
marketMetrics?: {
|
|
320
320
|
value: string;
|
|
321
|
-
id: string;
|
|
322
321
|
label: string;
|
|
322
|
+
id: string;
|
|
323
323
|
explanation?: string | undefined;
|
|
324
324
|
}[] | undefined;
|
|
325
325
|
useCases?: {
|
|
326
|
-
title: string;
|
|
327
326
|
id: string;
|
|
327
|
+
title: string;
|
|
328
328
|
description?: string | undefined;
|
|
329
329
|
customerCaseIds?: string[] | undefined;
|
|
330
330
|
}[] | undefined;
|
|
331
331
|
qualificationSignals?: {
|
|
332
|
-
title: string;
|
|
333
332
|
id: string;
|
|
333
|
+
title: string;
|
|
334
334
|
example?: string | undefined;
|
|
335
335
|
meaning?: string | undefined;
|
|
336
336
|
}[] | undefined;
|
|
337
337
|
competitiveAdvantages?: {
|
|
338
|
-
title: string;
|
|
339
338
|
id: string;
|
|
339
|
+
title: string;
|
|
340
340
|
description?: string | undefined;
|
|
341
341
|
}[] | undefined;
|
|
342
342
|
competitors?: {
|
|
343
|
-
title: string;
|
|
344
343
|
id: string;
|
|
344
|
+
title: string;
|
|
345
345
|
description?: string | undefined;
|
|
346
346
|
}[] | undefined;
|
|
347
347
|
objections?: {
|
|
@@ -357,8 +357,8 @@ export declare const verticalContextContentSchema: z.ZodEffects<z.ZodObject<{
|
|
|
357
357
|
}[] | undefined;
|
|
358
358
|
}, {
|
|
359
359
|
painPoints?: {
|
|
360
|
-
title: string;
|
|
361
360
|
id: string;
|
|
361
|
+
title: string;
|
|
362
362
|
description?: string | undefined;
|
|
363
363
|
customerCaseIds?: string[] | undefined;
|
|
364
364
|
useCaseIds?: string[] | undefined;
|
|
@@ -366,8 +366,8 @@ export declare const verticalContextContentSchema: z.ZodEffects<z.ZodObject<{
|
|
|
366
366
|
allowedVocabulary?: string[] | undefined;
|
|
367
367
|
prohibitedVocabulary?: string[] | undefined;
|
|
368
368
|
legalConstraints?: {
|
|
369
|
-
title: string;
|
|
370
369
|
id: string;
|
|
370
|
+
title: string;
|
|
371
371
|
description?: string | undefined;
|
|
372
372
|
}[] | undefined;
|
|
373
373
|
customerCaseIds?: string[] | undefined;
|
|
@@ -383,30 +383,30 @@ export declare const verticalContextContentSchema: z.ZodEffects<z.ZodObject<{
|
|
|
383
383
|
} | undefined;
|
|
384
384
|
marketMetrics?: {
|
|
385
385
|
value: string;
|
|
386
|
-
id: string;
|
|
387
386
|
label: string;
|
|
387
|
+
id: string;
|
|
388
388
|
explanation?: string | undefined;
|
|
389
389
|
}[] | undefined;
|
|
390
390
|
useCases?: {
|
|
391
|
-
title: string;
|
|
392
391
|
id: string;
|
|
392
|
+
title: string;
|
|
393
393
|
description?: string | undefined;
|
|
394
394
|
customerCaseIds?: string[] | undefined;
|
|
395
395
|
}[] | undefined;
|
|
396
396
|
qualificationSignals?: {
|
|
397
|
-
title: string;
|
|
398
397
|
id: string;
|
|
398
|
+
title: string;
|
|
399
399
|
example?: string | undefined;
|
|
400
400
|
meaning?: string | undefined;
|
|
401
401
|
}[] | undefined;
|
|
402
402
|
competitiveAdvantages?: {
|
|
403
|
-
title: string;
|
|
404
403
|
id: string;
|
|
404
|
+
title: string;
|
|
405
405
|
description?: string | undefined;
|
|
406
406
|
}[] | undefined;
|
|
407
407
|
competitors?: {
|
|
408
|
-
title: string;
|
|
409
408
|
id: string;
|
|
409
|
+
title: string;
|
|
410
410
|
description?: string | undefined;
|
|
411
411
|
}[] | undefined;
|
|
412
412
|
objections?: {
|
|
@@ -429,12 +429,12 @@ export declare const offerContextContentSchema: z.ZodEffects<z.ZodObject<{
|
|
|
429
429
|
title: z.ZodString;
|
|
430
430
|
description: z.ZodOptional<z.ZodString>;
|
|
431
431
|
}, "strict", z.ZodTypeAny, {
|
|
432
|
-
title: string;
|
|
433
432
|
id: string;
|
|
433
|
+
title: string;
|
|
434
434
|
description?: string | undefined;
|
|
435
435
|
}, {
|
|
436
|
-
title: string;
|
|
437
436
|
id: string;
|
|
437
|
+
title: string;
|
|
438
438
|
description?: string | undefined;
|
|
439
439
|
}>, "many">>;
|
|
440
440
|
activationConditions: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
@@ -442,12 +442,12 @@ export declare const offerContextContentSchema: z.ZodEffects<z.ZodObject<{
|
|
|
442
442
|
title: z.ZodString;
|
|
443
443
|
description: z.ZodOptional<z.ZodString>;
|
|
444
444
|
}, "strict", z.ZodTypeAny, {
|
|
445
|
-
title: string;
|
|
446
445
|
id: string;
|
|
446
|
+
title: string;
|
|
447
447
|
description?: string | undefined;
|
|
448
448
|
}, {
|
|
449
|
-
title: string;
|
|
450
449
|
id: string;
|
|
450
|
+
title: string;
|
|
451
451
|
description?: string | undefined;
|
|
452
452
|
}>, "many">>;
|
|
453
453
|
claims: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
@@ -470,13 +470,13 @@ export declare const offerContextContentSchema: z.ZodEffects<z.ZodObject<{
|
|
|
470
470
|
details: z.ZodOptional<z.ZodString>;
|
|
471
471
|
}, "strict", z.ZodTypeAny, {
|
|
472
472
|
value: string;
|
|
473
|
-
id: string;
|
|
474
473
|
label: string;
|
|
474
|
+
id: string;
|
|
475
475
|
details?: string | undefined;
|
|
476
476
|
}, {
|
|
477
477
|
value: string;
|
|
478
|
-
id: string;
|
|
479
478
|
label: string;
|
|
479
|
+
id: string;
|
|
480
480
|
details?: string | undefined;
|
|
481
481
|
}>, "many">>;
|
|
482
482
|
customerCases: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
@@ -506,25 +506,25 @@ export declare const offerContextContentSchema: z.ZodEffects<z.ZodObject<{
|
|
|
506
506
|
title: z.ZodString;
|
|
507
507
|
description: z.ZodOptional<z.ZodString>;
|
|
508
508
|
}, "strict", z.ZodTypeAny, {
|
|
509
|
-
title: string;
|
|
510
509
|
id: string;
|
|
510
|
+
title: string;
|
|
511
511
|
description?: string | undefined;
|
|
512
512
|
}, {
|
|
513
|
-
title: string;
|
|
514
513
|
id: string;
|
|
514
|
+
title: string;
|
|
515
515
|
description?: string | undefined;
|
|
516
516
|
}>, "many">>;
|
|
517
517
|
}, "strict", z.ZodTypeAny, {
|
|
518
|
-
description?: string | undefined;
|
|
519
518
|
promise?: string | undefined;
|
|
519
|
+
description?: string | undefined;
|
|
520
520
|
capabilities?: {
|
|
521
|
-
title: string;
|
|
522
521
|
id: string;
|
|
522
|
+
title: string;
|
|
523
523
|
description?: string | undefined;
|
|
524
524
|
}[] | undefined;
|
|
525
525
|
activationConditions?: {
|
|
526
|
-
title: string;
|
|
527
526
|
id: string;
|
|
527
|
+
title: string;
|
|
528
528
|
description?: string | undefined;
|
|
529
529
|
}[] | undefined;
|
|
530
530
|
claims?: {
|
|
@@ -534,8 +534,8 @@ export declare const offerContextContentSchema: z.ZodEffects<z.ZodObject<{
|
|
|
534
534
|
}[] | undefined;
|
|
535
535
|
demonstratedResults?: {
|
|
536
536
|
value: string;
|
|
537
|
-
id: string;
|
|
538
537
|
label: string;
|
|
538
|
+
id: string;
|
|
539
539
|
details?: string | undefined;
|
|
540
540
|
}[] | undefined;
|
|
541
541
|
customerCases?: {
|
|
@@ -547,21 +547,21 @@ export declare const offerContextContentSchema: z.ZodEffects<z.ZodObject<{
|
|
|
547
547
|
testimonial?: string | undefined;
|
|
548
548
|
}[] | undefined;
|
|
549
549
|
constraints?: {
|
|
550
|
-
title: string;
|
|
551
550
|
id: string;
|
|
551
|
+
title: string;
|
|
552
552
|
description?: string | undefined;
|
|
553
553
|
}[] | undefined;
|
|
554
554
|
}, {
|
|
555
|
-
description?: string | undefined;
|
|
556
555
|
promise?: string | undefined;
|
|
556
|
+
description?: string | undefined;
|
|
557
557
|
capabilities?: {
|
|
558
|
-
title: string;
|
|
559
558
|
id: string;
|
|
559
|
+
title: string;
|
|
560
560
|
description?: string | undefined;
|
|
561
561
|
}[] | undefined;
|
|
562
562
|
activationConditions?: {
|
|
563
|
-
title: string;
|
|
564
563
|
id: string;
|
|
564
|
+
title: string;
|
|
565
565
|
description?: string | undefined;
|
|
566
566
|
}[] | undefined;
|
|
567
567
|
claims?: {
|
|
@@ -571,8 +571,8 @@ export declare const offerContextContentSchema: z.ZodEffects<z.ZodObject<{
|
|
|
571
571
|
}[] | undefined;
|
|
572
572
|
demonstratedResults?: {
|
|
573
573
|
value: string;
|
|
574
|
-
id: string;
|
|
575
574
|
label: string;
|
|
575
|
+
id: string;
|
|
576
576
|
details?: string | undefined;
|
|
577
577
|
}[] | undefined;
|
|
578
578
|
customerCases?: {
|
|
@@ -584,21 +584,21 @@ export declare const offerContextContentSchema: z.ZodEffects<z.ZodObject<{
|
|
|
584
584
|
testimonial?: string | undefined;
|
|
585
585
|
}[] | undefined;
|
|
586
586
|
constraints?: {
|
|
587
|
-
title: string;
|
|
588
587
|
id: string;
|
|
588
|
+
title: string;
|
|
589
589
|
description?: string | undefined;
|
|
590
590
|
}[] | undefined;
|
|
591
591
|
}>, {
|
|
592
|
-
description?: string | undefined;
|
|
593
592
|
promise?: string | undefined;
|
|
593
|
+
description?: string | undefined;
|
|
594
594
|
capabilities?: {
|
|
595
|
-
title: string;
|
|
596
595
|
id: string;
|
|
596
|
+
title: string;
|
|
597
597
|
description?: string | undefined;
|
|
598
598
|
}[] | undefined;
|
|
599
599
|
activationConditions?: {
|
|
600
|
-
title: string;
|
|
601
600
|
id: string;
|
|
601
|
+
title: string;
|
|
602
602
|
description?: string | undefined;
|
|
603
603
|
}[] | undefined;
|
|
604
604
|
claims?: {
|
|
@@ -608,8 +608,8 @@ export declare const offerContextContentSchema: z.ZodEffects<z.ZodObject<{
|
|
|
608
608
|
}[] | undefined;
|
|
609
609
|
demonstratedResults?: {
|
|
610
610
|
value: string;
|
|
611
|
-
id: string;
|
|
612
611
|
label: string;
|
|
612
|
+
id: string;
|
|
613
613
|
details?: string | undefined;
|
|
614
614
|
}[] | undefined;
|
|
615
615
|
customerCases?: {
|
|
@@ -621,21 +621,21 @@ export declare const offerContextContentSchema: z.ZodEffects<z.ZodObject<{
|
|
|
621
621
|
testimonial?: string | undefined;
|
|
622
622
|
}[] | undefined;
|
|
623
623
|
constraints?: {
|
|
624
|
-
title: string;
|
|
625
624
|
id: string;
|
|
625
|
+
title: string;
|
|
626
626
|
description?: string | undefined;
|
|
627
627
|
}[] | undefined;
|
|
628
628
|
}, {
|
|
629
|
-
description?: string | undefined;
|
|
630
629
|
promise?: string | undefined;
|
|
630
|
+
description?: string | undefined;
|
|
631
631
|
capabilities?: {
|
|
632
|
-
title: string;
|
|
633
632
|
id: string;
|
|
633
|
+
title: string;
|
|
634
634
|
description?: string | undefined;
|
|
635
635
|
}[] | undefined;
|
|
636
636
|
activationConditions?: {
|
|
637
|
-
title: string;
|
|
638
637
|
id: string;
|
|
638
|
+
title: string;
|
|
639
639
|
description?: string | undefined;
|
|
640
640
|
}[] | undefined;
|
|
641
641
|
claims?: {
|
|
@@ -645,8 +645,8 @@ export declare const offerContextContentSchema: z.ZodEffects<z.ZodObject<{
|
|
|
645
645
|
}[] | undefined;
|
|
646
646
|
demonstratedResults?: {
|
|
647
647
|
value: string;
|
|
648
|
-
id: string;
|
|
649
648
|
label: string;
|
|
649
|
+
id: string;
|
|
650
650
|
details?: string | undefined;
|
|
651
651
|
}[] | undefined;
|
|
652
652
|
customerCases?: {
|
|
@@ -658,8 +658,8 @@ export declare const offerContextContentSchema: z.ZodEffects<z.ZodObject<{
|
|
|
658
658
|
testimonial?: string | undefined;
|
|
659
659
|
}[] | undefined;
|
|
660
660
|
constraints?: {
|
|
661
|
-
title: string;
|
|
662
661
|
id: string;
|
|
662
|
+
title: string;
|
|
663
663
|
description?: string | undefined;
|
|
664
664
|
}[] | undefined;
|
|
665
665
|
}>;
|