ponch-mcp-server 1.0.21 → 1.0.23
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/schemas/index.d.ts +968 -118
- package/dist/schemas/index.d.ts.map +1 -1
- package/dist/schemas/index.js +31 -21
- package/dist/schemas/index.js.map +1 -1
- package/dist/schemas/marketing/brandBrief.d.ts +916 -0
- package/dist/schemas/marketing/brandBrief.d.ts.map +1 -0
- package/dist/schemas/marketing/brandBrief.js +206 -0
- package/dist/schemas/marketing/brandBrief.js.map +1 -0
- package/dist/schemas/marketing/brandConfig.d.ts +1886 -0
- package/dist/schemas/marketing/brandConfig.d.ts.map +1 -0
- package/dist/schemas/marketing/brandConfig.js +114 -0
- package/dist/schemas/marketing/brandConfig.js.map +1 -0
- package/dist/schemas/marketing/calendario.d.ts +1093 -0
- package/dist/schemas/marketing/calendario.d.ts.map +1 -0
- package/dist/schemas/marketing/calendario.js +60 -0
- package/dist/schemas/marketing/calendario.js.map +1 -0
- package/dist/schemas/marketing/collectionSuggestions.d.ts +274 -0
- package/dist/schemas/marketing/collectionSuggestions.d.ts.map +1 -0
- package/dist/schemas/marketing/collectionSuggestions.js +125 -0
- package/dist/schemas/marketing/collectionSuggestions.js.map +1 -0
- package/dist/schemas/marketing/contenido.d.ts +203 -0
- package/dist/schemas/marketing/contenido.d.ts.map +1 -0
- package/dist/schemas/marketing/contenido.js +84 -0
- package/dist/schemas/marketing/contenido.js.map +1 -0
- package/dist/schemas/marketing/foto.d.ts +242 -0
- package/dist/schemas/marketing/foto.d.ts.map +1 -0
- package/dist/schemas/marketing/foto.js +40 -0
- package/dist/schemas/marketing/foto.js.map +1 -0
- package/dist/schemas/marketing/plan.d.ts +574 -0
- package/dist/schemas/marketing/plan.d.ts.map +1 -1
- package/dist/schemas/marketing/plan.js +137 -0
- package/dist/schemas/marketing/plan.js.map +1 -1
- package/dist/tools/marketing.d.ts.map +1 -1
- package/dist/tools/marketing.js +46 -18
- package/dist/tools/marketing.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"calendario.d.ts","sourceRoot":"","sources":["../../../src/schemas/marketing/calendario.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAcxB,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;gCAKjB,CAAC;AACjB,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAMlE,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gCAUjB,CAAC;AAEjB,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAMlE,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gCAKnB,CAAC;AAMjB,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gCASb,CAAC;AAEjB,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* mcp-server/src/schemas/marketing/calendario.ts
|
|
3
|
+
*
|
|
4
|
+
* Schemas Zod para marketing_calendario y sus items.
|
|
5
|
+
*
|
|
6
|
+
* Sub-deuda 2.5 (sesion 176B).
|
|
7
|
+
*/
|
|
8
|
+
import { z } from 'zod';
|
|
9
|
+
const ESTADOS_CALENDARIO_ITEM = [
|
|
10
|
+
'planificado', 'pre_aprobado', 'generado', 'revisar',
|
|
11
|
+
'aprobado', 'publicado', 'rechazado',
|
|
12
|
+
];
|
|
13
|
+
const PLATAFORMAS = ['gbp', 'shopify_blog', 'instagram', 'review'];
|
|
14
|
+
const TIPOS_CONTENIDO = ['post', 'blog', 'carousel', 'reel', 'story', 'review_response'];
|
|
15
|
+
// ═══════════════════════════════════════════════════════════
|
|
16
|
+
// NOTA DEL CALENDARIO (sub-objeto reutilizable)
|
|
17
|
+
// ═══════════════════════════════════════════════════════════
|
|
18
|
+
export const NotaCalendarioSchema = z.object({
|
|
19
|
+
texto: z.string().min(1),
|
|
20
|
+
fecha: z.string(),
|
|
21
|
+
autorId: z.string(),
|
|
22
|
+
autorNombre: z.string(),
|
|
23
|
+
}).passthrough();
|
|
24
|
+
// ═══════════════════════════════════════════════════════════
|
|
25
|
+
// CALENDARIO ITEM (un slot)
|
|
26
|
+
// ═══════════════════════════════════════════════════════════
|
|
27
|
+
export const CalendarioItemSchema = z.object({
|
|
28
|
+
dia: z.string().nullable().optional(),
|
|
29
|
+
plataforma: z.enum(PLATAFORMAS).nullable().optional(),
|
|
30
|
+
tipo: z.enum(TIPOS_CONTENIDO).nullable().optional(),
|
|
31
|
+
keyword: z.string().nullable().optional(),
|
|
32
|
+
tema: z.string().nullable().optional(),
|
|
33
|
+
productoId: z.string().nullable().optional(),
|
|
34
|
+
estado: z.enum(ESTADOS_CALENDARIO_ITEM),
|
|
35
|
+
contenidoRef: z.string().nullable().optional(),
|
|
36
|
+
notas: z.array(NotaCalendarioSchema).optional(),
|
|
37
|
+
}).passthrough();
|
|
38
|
+
// ═══════════════════════════════════════════════════════════
|
|
39
|
+
// SEMANA (sub-objeto del calendario)
|
|
40
|
+
// ═══════════════════════════════════════════════════════════
|
|
41
|
+
export const SemanaCalendarioSchema = z.object({
|
|
42
|
+
numero: z.number().int().positive(),
|
|
43
|
+
fechaInicio: z.string().optional(),
|
|
44
|
+
fechaFin: z.string().optional(),
|
|
45
|
+
items: z.array(CalendarioItemSchema).optional(),
|
|
46
|
+
}).passthrough();
|
|
47
|
+
// ═══════════════════════════════════════════════════════════
|
|
48
|
+
// CALENDARIO RAIZ
|
|
49
|
+
// ═══════════════════════════════════════════════════════════
|
|
50
|
+
export const CalendarioSchema = z.object({
|
|
51
|
+
id: z.string().min(1, 'id es obligatorio'),
|
|
52
|
+
tenantId: z.string().min(1, 'tenantId es obligatorio'),
|
|
53
|
+
brandId: z.string().min(1, 'brandId es obligatorio'),
|
|
54
|
+
mes: z.string().regex(/^\d{4}-\d{2}$/, 'mes debe ser formato YYYY-MM').nullable(),
|
|
55
|
+
semanas: z.array(SemanaCalendarioSchema).optional(),
|
|
56
|
+
creadoAt: z.unknown().nullable().optional(),
|
|
57
|
+
creadoPorId: z.string().nullable().optional(),
|
|
58
|
+
updatedAt: z.unknown().nullable().optional(),
|
|
59
|
+
}).passthrough();
|
|
60
|
+
//# sourceMappingURL=calendario.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"calendario.js","sourceRoot":"","sources":["../../../src/schemas/marketing/calendario.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,274 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* mcp-server/src/schemas/marketing/collectionSuggestions.ts
|
|
3
|
+
*
|
|
4
|
+
* Schemas Zod para sugerencias SEO de colecciones de Shopify.
|
|
5
|
+
*
|
|
6
|
+
* Vive en marketing_config.brands[brandId].collectionSuggestions.{collectionId}
|
|
7
|
+
* Generado por Cowork via save_collection_suggestions.
|
|
8
|
+
*
|
|
9
|
+
* DEUDA 2 expandida (sesion 176B): collection suggestions migradas con
|
|
10
|
+
* reglas de negocio (max chars de meta title/description, etc).
|
|
11
|
+
*/
|
|
12
|
+
import { z } from 'zod';
|
|
13
|
+
/**
|
|
14
|
+
* Una sola sugerencia de colección. Strict en max lengths
|
|
15
|
+
* (Google las trunca y la UI los marca como overflow).
|
|
16
|
+
*
|
|
17
|
+
* SEO best practices 2026:
|
|
18
|
+
* - meta title 50-60 chars (max 600px width)
|
|
19
|
+
* - meta description 120-158 chars (mobile 120, desktop 158)
|
|
20
|
+
* - image alt < 125 chars (Google Images limit)
|
|
21
|
+
*/
|
|
22
|
+
export declare const CollectionSuggestionInputSchema: z.ZodObject<{
|
|
23
|
+
collectionId: z.ZodUnion<[z.ZodString, z.ZodNumber]>;
|
|
24
|
+
suggestedTitle: z.ZodOptional<z.ZodString>;
|
|
25
|
+
suggestedDescription: z.ZodOptional<z.ZodString>;
|
|
26
|
+
suggestedMetaTitle: z.ZodOptional<z.ZodString>;
|
|
27
|
+
suggestedMetaDescription: z.ZodOptional<z.ZodString>;
|
|
28
|
+
suggestedHandle: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
29
|
+
suggestedImageAlt: z.ZodOptional<z.ZodString>;
|
|
30
|
+
keyword: z.ZodOptional<z.ZodString>;
|
|
31
|
+
notas: z.ZodOptional<z.ZodString>;
|
|
32
|
+
}, "passthrough", z.ZodTypeAny, z.objectOutputType<{
|
|
33
|
+
collectionId: z.ZodUnion<[z.ZodString, z.ZodNumber]>;
|
|
34
|
+
suggestedTitle: z.ZodOptional<z.ZodString>;
|
|
35
|
+
suggestedDescription: z.ZodOptional<z.ZodString>;
|
|
36
|
+
suggestedMetaTitle: z.ZodOptional<z.ZodString>;
|
|
37
|
+
suggestedMetaDescription: z.ZodOptional<z.ZodString>;
|
|
38
|
+
suggestedHandle: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
39
|
+
suggestedImageAlt: z.ZodOptional<z.ZodString>;
|
|
40
|
+
keyword: z.ZodOptional<z.ZodString>;
|
|
41
|
+
notas: z.ZodOptional<z.ZodString>;
|
|
42
|
+
}, z.ZodTypeAny, "passthrough">, z.objectInputType<{
|
|
43
|
+
collectionId: z.ZodUnion<[z.ZodString, z.ZodNumber]>;
|
|
44
|
+
suggestedTitle: z.ZodOptional<z.ZodString>;
|
|
45
|
+
suggestedDescription: z.ZodOptional<z.ZodString>;
|
|
46
|
+
suggestedMetaTitle: z.ZodOptional<z.ZodString>;
|
|
47
|
+
suggestedMetaDescription: z.ZodOptional<z.ZodString>;
|
|
48
|
+
suggestedHandle: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
49
|
+
suggestedImageAlt: z.ZodOptional<z.ZodString>;
|
|
50
|
+
keyword: z.ZodOptional<z.ZodString>;
|
|
51
|
+
notas: z.ZodOptional<z.ZodString>;
|
|
52
|
+
}, z.ZodTypeAny, "passthrough">>;
|
|
53
|
+
export type CollectionSuggestionInput = z.infer<typeof CollectionSuggestionInputSchema>;
|
|
54
|
+
/**
|
|
55
|
+
* Array de sugerencias (lo que viene en el parametro `suggestions`).
|
|
56
|
+
*/
|
|
57
|
+
export declare const CollectionSuggestionsInputArraySchema: z.ZodArray<z.ZodObject<{
|
|
58
|
+
collectionId: z.ZodUnion<[z.ZodString, z.ZodNumber]>;
|
|
59
|
+
suggestedTitle: z.ZodOptional<z.ZodString>;
|
|
60
|
+
suggestedDescription: z.ZodOptional<z.ZodString>;
|
|
61
|
+
suggestedMetaTitle: z.ZodOptional<z.ZodString>;
|
|
62
|
+
suggestedMetaDescription: z.ZodOptional<z.ZodString>;
|
|
63
|
+
suggestedHandle: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
64
|
+
suggestedImageAlt: z.ZodOptional<z.ZodString>;
|
|
65
|
+
keyword: z.ZodOptional<z.ZodString>;
|
|
66
|
+
notas: z.ZodOptional<z.ZodString>;
|
|
67
|
+
}, "passthrough", z.ZodTypeAny, z.objectOutputType<{
|
|
68
|
+
collectionId: z.ZodUnion<[z.ZodString, z.ZodNumber]>;
|
|
69
|
+
suggestedTitle: z.ZodOptional<z.ZodString>;
|
|
70
|
+
suggestedDescription: z.ZodOptional<z.ZodString>;
|
|
71
|
+
suggestedMetaTitle: z.ZodOptional<z.ZodString>;
|
|
72
|
+
suggestedMetaDescription: z.ZodOptional<z.ZodString>;
|
|
73
|
+
suggestedHandle: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
74
|
+
suggestedImageAlt: z.ZodOptional<z.ZodString>;
|
|
75
|
+
keyword: z.ZodOptional<z.ZodString>;
|
|
76
|
+
notas: z.ZodOptional<z.ZodString>;
|
|
77
|
+
}, z.ZodTypeAny, "passthrough">, z.objectInputType<{
|
|
78
|
+
collectionId: z.ZodUnion<[z.ZodString, z.ZodNumber]>;
|
|
79
|
+
suggestedTitle: z.ZodOptional<z.ZodString>;
|
|
80
|
+
suggestedDescription: z.ZodOptional<z.ZodString>;
|
|
81
|
+
suggestedMetaTitle: z.ZodOptional<z.ZodString>;
|
|
82
|
+
suggestedMetaDescription: z.ZodOptional<z.ZodString>;
|
|
83
|
+
suggestedHandle: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
84
|
+
suggestedImageAlt: z.ZodOptional<z.ZodString>;
|
|
85
|
+
keyword: z.ZodOptional<z.ZodString>;
|
|
86
|
+
notas: z.ZodOptional<z.ZodString>;
|
|
87
|
+
}, z.ZodTypeAny, "passthrough">>, "many">;
|
|
88
|
+
export type CollectionSuggestionsInputArray = z.infer<typeof CollectionSuggestionsInputArraySchema>;
|
|
89
|
+
/**
|
|
90
|
+
* Una sugerencia tal como queda guardada en Firestore.
|
|
91
|
+
* Tiene campos extra que el tool agrega: estado, generadoAt, generadoPor, appliedFields.
|
|
92
|
+
* Útil si en el futuro queremos validar lecturas del doc.
|
|
93
|
+
*/
|
|
94
|
+
export declare const CollectionSuggestionStoredSchema: z.ZodObject<{
|
|
95
|
+
collectionId: z.ZodUnion<[z.ZodString, z.ZodNumber]>;
|
|
96
|
+
suggestedTitle: z.ZodOptional<z.ZodString>;
|
|
97
|
+
suggestedDescription: z.ZodOptional<z.ZodString>;
|
|
98
|
+
suggestedMetaTitle: z.ZodOptional<z.ZodString>;
|
|
99
|
+
suggestedMetaDescription: z.ZodOptional<z.ZodString>;
|
|
100
|
+
suggestedHandle: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
101
|
+
suggestedImageAlt: z.ZodOptional<z.ZodString>;
|
|
102
|
+
keyword: z.ZodOptional<z.ZodString>;
|
|
103
|
+
notas: z.ZodOptional<z.ZodString>;
|
|
104
|
+
} & {
|
|
105
|
+
estado: z.ZodEnum<["pendiente", "rechazado", "aplicado_parcial", "aplicado_total"]>;
|
|
106
|
+
generadoAt: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodDate, z.ZodObject<{
|
|
107
|
+
seconds: z.ZodNumber;
|
|
108
|
+
}, "passthrough", z.ZodTypeAny, z.objectOutputType<{
|
|
109
|
+
seconds: z.ZodNumber;
|
|
110
|
+
}, z.ZodTypeAny, "passthrough">, z.objectInputType<{
|
|
111
|
+
seconds: z.ZodNumber;
|
|
112
|
+
}, z.ZodTypeAny, "passthrough">>]>>;
|
|
113
|
+
generadoPor: z.ZodOptional<z.ZodString>;
|
|
114
|
+
appliedFields: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
115
|
+
before: z.ZodUnknown;
|
|
116
|
+
after: z.ZodUnknown;
|
|
117
|
+
appliedAt: z.ZodUnion<[z.ZodString, z.ZodDate, z.ZodObject<{
|
|
118
|
+
seconds: z.ZodNumber;
|
|
119
|
+
}, "passthrough", z.ZodTypeAny, z.objectOutputType<{
|
|
120
|
+
seconds: z.ZodNumber;
|
|
121
|
+
}, z.ZodTypeAny, "passthrough">, z.objectInputType<{
|
|
122
|
+
seconds: z.ZodNumber;
|
|
123
|
+
}, z.ZodTypeAny, "passthrough">>]>;
|
|
124
|
+
}, "passthrough", z.ZodTypeAny, z.objectOutputType<{
|
|
125
|
+
before: z.ZodUnknown;
|
|
126
|
+
after: z.ZodUnknown;
|
|
127
|
+
appliedAt: z.ZodUnion<[z.ZodString, z.ZodDate, z.ZodObject<{
|
|
128
|
+
seconds: z.ZodNumber;
|
|
129
|
+
}, "passthrough", z.ZodTypeAny, z.objectOutputType<{
|
|
130
|
+
seconds: z.ZodNumber;
|
|
131
|
+
}, z.ZodTypeAny, "passthrough">, z.objectInputType<{
|
|
132
|
+
seconds: z.ZodNumber;
|
|
133
|
+
}, z.ZodTypeAny, "passthrough">>]>;
|
|
134
|
+
}, z.ZodTypeAny, "passthrough">, z.objectInputType<{
|
|
135
|
+
before: z.ZodUnknown;
|
|
136
|
+
after: z.ZodUnknown;
|
|
137
|
+
appliedAt: z.ZodUnion<[z.ZodString, z.ZodDate, z.ZodObject<{
|
|
138
|
+
seconds: z.ZodNumber;
|
|
139
|
+
}, "passthrough", z.ZodTypeAny, z.objectOutputType<{
|
|
140
|
+
seconds: z.ZodNumber;
|
|
141
|
+
}, z.ZodTypeAny, "passthrough">, z.objectInputType<{
|
|
142
|
+
seconds: z.ZodNumber;
|
|
143
|
+
}, z.ZodTypeAny, "passthrough">>]>;
|
|
144
|
+
}, z.ZodTypeAny, "passthrough">>>>;
|
|
145
|
+
}, "passthrough", z.ZodTypeAny, z.objectOutputType<{
|
|
146
|
+
collectionId: z.ZodUnion<[z.ZodString, z.ZodNumber]>;
|
|
147
|
+
suggestedTitle: z.ZodOptional<z.ZodString>;
|
|
148
|
+
suggestedDescription: z.ZodOptional<z.ZodString>;
|
|
149
|
+
suggestedMetaTitle: z.ZodOptional<z.ZodString>;
|
|
150
|
+
suggestedMetaDescription: z.ZodOptional<z.ZodString>;
|
|
151
|
+
suggestedHandle: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
152
|
+
suggestedImageAlt: z.ZodOptional<z.ZodString>;
|
|
153
|
+
keyword: z.ZodOptional<z.ZodString>;
|
|
154
|
+
notas: z.ZodOptional<z.ZodString>;
|
|
155
|
+
} & {
|
|
156
|
+
estado: z.ZodEnum<["pendiente", "rechazado", "aplicado_parcial", "aplicado_total"]>;
|
|
157
|
+
generadoAt: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodDate, z.ZodObject<{
|
|
158
|
+
seconds: z.ZodNumber;
|
|
159
|
+
}, "passthrough", z.ZodTypeAny, z.objectOutputType<{
|
|
160
|
+
seconds: z.ZodNumber;
|
|
161
|
+
}, z.ZodTypeAny, "passthrough">, z.objectInputType<{
|
|
162
|
+
seconds: z.ZodNumber;
|
|
163
|
+
}, z.ZodTypeAny, "passthrough">>]>>;
|
|
164
|
+
generadoPor: z.ZodOptional<z.ZodString>;
|
|
165
|
+
appliedFields: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
166
|
+
before: z.ZodUnknown;
|
|
167
|
+
after: z.ZodUnknown;
|
|
168
|
+
appliedAt: z.ZodUnion<[z.ZodString, z.ZodDate, z.ZodObject<{
|
|
169
|
+
seconds: z.ZodNumber;
|
|
170
|
+
}, "passthrough", z.ZodTypeAny, z.objectOutputType<{
|
|
171
|
+
seconds: z.ZodNumber;
|
|
172
|
+
}, z.ZodTypeAny, "passthrough">, z.objectInputType<{
|
|
173
|
+
seconds: z.ZodNumber;
|
|
174
|
+
}, z.ZodTypeAny, "passthrough">>]>;
|
|
175
|
+
}, "passthrough", z.ZodTypeAny, z.objectOutputType<{
|
|
176
|
+
before: z.ZodUnknown;
|
|
177
|
+
after: z.ZodUnknown;
|
|
178
|
+
appliedAt: z.ZodUnion<[z.ZodString, z.ZodDate, z.ZodObject<{
|
|
179
|
+
seconds: z.ZodNumber;
|
|
180
|
+
}, "passthrough", z.ZodTypeAny, z.objectOutputType<{
|
|
181
|
+
seconds: z.ZodNumber;
|
|
182
|
+
}, z.ZodTypeAny, "passthrough">, z.objectInputType<{
|
|
183
|
+
seconds: z.ZodNumber;
|
|
184
|
+
}, z.ZodTypeAny, "passthrough">>]>;
|
|
185
|
+
}, z.ZodTypeAny, "passthrough">, z.objectInputType<{
|
|
186
|
+
before: z.ZodUnknown;
|
|
187
|
+
after: z.ZodUnknown;
|
|
188
|
+
appliedAt: z.ZodUnion<[z.ZodString, z.ZodDate, z.ZodObject<{
|
|
189
|
+
seconds: z.ZodNumber;
|
|
190
|
+
}, "passthrough", z.ZodTypeAny, z.objectOutputType<{
|
|
191
|
+
seconds: z.ZodNumber;
|
|
192
|
+
}, z.ZodTypeAny, "passthrough">, z.objectInputType<{
|
|
193
|
+
seconds: z.ZodNumber;
|
|
194
|
+
}, z.ZodTypeAny, "passthrough">>]>;
|
|
195
|
+
}, z.ZodTypeAny, "passthrough">>>>;
|
|
196
|
+
}, z.ZodTypeAny, "passthrough">, z.objectInputType<{
|
|
197
|
+
collectionId: z.ZodUnion<[z.ZodString, z.ZodNumber]>;
|
|
198
|
+
suggestedTitle: z.ZodOptional<z.ZodString>;
|
|
199
|
+
suggestedDescription: z.ZodOptional<z.ZodString>;
|
|
200
|
+
suggestedMetaTitle: z.ZodOptional<z.ZodString>;
|
|
201
|
+
suggestedMetaDescription: z.ZodOptional<z.ZodString>;
|
|
202
|
+
suggestedHandle: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
203
|
+
suggestedImageAlt: z.ZodOptional<z.ZodString>;
|
|
204
|
+
keyword: z.ZodOptional<z.ZodString>;
|
|
205
|
+
notas: z.ZodOptional<z.ZodString>;
|
|
206
|
+
} & {
|
|
207
|
+
estado: z.ZodEnum<["pendiente", "rechazado", "aplicado_parcial", "aplicado_total"]>;
|
|
208
|
+
generadoAt: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodDate, z.ZodObject<{
|
|
209
|
+
seconds: z.ZodNumber;
|
|
210
|
+
}, "passthrough", z.ZodTypeAny, z.objectOutputType<{
|
|
211
|
+
seconds: z.ZodNumber;
|
|
212
|
+
}, z.ZodTypeAny, "passthrough">, z.objectInputType<{
|
|
213
|
+
seconds: z.ZodNumber;
|
|
214
|
+
}, z.ZodTypeAny, "passthrough">>]>>;
|
|
215
|
+
generadoPor: z.ZodOptional<z.ZodString>;
|
|
216
|
+
appliedFields: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
217
|
+
before: z.ZodUnknown;
|
|
218
|
+
after: z.ZodUnknown;
|
|
219
|
+
appliedAt: z.ZodUnion<[z.ZodString, z.ZodDate, z.ZodObject<{
|
|
220
|
+
seconds: z.ZodNumber;
|
|
221
|
+
}, "passthrough", z.ZodTypeAny, z.objectOutputType<{
|
|
222
|
+
seconds: z.ZodNumber;
|
|
223
|
+
}, z.ZodTypeAny, "passthrough">, z.objectInputType<{
|
|
224
|
+
seconds: z.ZodNumber;
|
|
225
|
+
}, z.ZodTypeAny, "passthrough">>]>;
|
|
226
|
+
}, "passthrough", z.ZodTypeAny, z.objectOutputType<{
|
|
227
|
+
before: z.ZodUnknown;
|
|
228
|
+
after: z.ZodUnknown;
|
|
229
|
+
appliedAt: z.ZodUnion<[z.ZodString, z.ZodDate, z.ZodObject<{
|
|
230
|
+
seconds: z.ZodNumber;
|
|
231
|
+
}, "passthrough", z.ZodTypeAny, z.objectOutputType<{
|
|
232
|
+
seconds: z.ZodNumber;
|
|
233
|
+
}, z.ZodTypeAny, "passthrough">, z.objectInputType<{
|
|
234
|
+
seconds: z.ZodNumber;
|
|
235
|
+
}, z.ZodTypeAny, "passthrough">>]>;
|
|
236
|
+
}, z.ZodTypeAny, "passthrough">, z.objectInputType<{
|
|
237
|
+
before: z.ZodUnknown;
|
|
238
|
+
after: z.ZodUnknown;
|
|
239
|
+
appliedAt: z.ZodUnion<[z.ZodString, z.ZodDate, z.ZodObject<{
|
|
240
|
+
seconds: z.ZodNumber;
|
|
241
|
+
}, "passthrough", z.ZodTypeAny, z.objectOutputType<{
|
|
242
|
+
seconds: z.ZodNumber;
|
|
243
|
+
}, z.ZodTypeAny, "passthrough">, z.objectInputType<{
|
|
244
|
+
seconds: z.ZodNumber;
|
|
245
|
+
}, z.ZodTypeAny, "passthrough">>]>;
|
|
246
|
+
}, z.ZodTypeAny, "passthrough">>>>;
|
|
247
|
+
}, z.ZodTypeAny, "passthrough">>;
|
|
248
|
+
export type CollectionSuggestionStored = z.infer<typeof CollectionSuggestionStoredSchema>;
|
|
249
|
+
export type CollectionSuggestionsValidationResult = {
|
|
250
|
+
ok: true;
|
|
251
|
+
parsed: CollectionSuggestionsInputArray;
|
|
252
|
+
} | {
|
|
253
|
+
ok: false;
|
|
254
|
+
error: string;
|
|
255
|
+
path: string;
|
|
256
|
+
received: unknown;
|
|
257
|
+
example: unknown;
|
|
258
|
+
};
|
|
259
|
+
/**
|
|
260
|
+
* Valida un array de collection suggestions con reglas de negocio.
|
|
261
|
+
*/
|
|
262
|
+
export declare function validateCollectionSuggestions(value: unknown): CollectionSuggestionsValidationResult;
|
|
263
|
+
export declare const COLLECTION_SUGGESTION_EXAMPLE: {
|
|
264
|
+
collectionId: number;
|
|
265
|
+
suggestedTitle: string;
|
|
266
|
+
suggestedDescription: string;
|
|
267
|
+
suggestedMetaTitle: string;
|
|
268
|
+
suggestedMetaDescription: string;
|
|
269
|
+
suggestedHandle: null;
|
|
270
|
+
suggestedImageAlt: string;
|
|
271
|
+
keyword: string;
|
|
272
|
+
notas: string;
|
|
273
|
+
}[];
|
|
274
|
+
//# sourceMappingURL=collectionSuggestions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"collectionSuggestions.d.ts","sourceRoot":"","sources":["../../../src/schemas/marketing/collectionSuggestions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAMxB;;;;;;;;GAQG;AACH,eAAO,MAAM,+BAA+B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gCA4B5B,CAAC;AAEjB,MAAM,MAAM,yBAAyB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,+BAA+B,CAAC,CAAC;AAExF;;GAEG;AACH,eAAO,MAAM,qCAAqC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;yCAAuF,CAAC;AAC1I,MAAM,MAAM,+BAA+B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qCAAqC,CAAC,CAAC;AAMpG;;;;GAIG;AACH,eAAO,MAAM,gCAAgC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gCAiB7B,CAAC;AACjB,MAAM,MAAM,0BAA0B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gCAAgC,CAAC,CAAC;AAM1F,MAAM,MAAM,qCAAqC,GAC7C;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,MAAM,EAAE,+BAA+B,CAAA;CAAE,GACrD;IACE,EAAE,EAAE,KAAK,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC;AAEN;;GAEG;AACH,wBAAgB,6BAA6B,CAC3C,KAAK,EAAE,OAAO,GACb,qCAAqC,CAiBvC;AAmBD,eAAO,MAAM,6BAA6B;;;;;;;;;;GAYzC,CAAC"}
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* mcp-server/src/schemas/marketing/collectionSuggestions.ts
|
|
3
|
+
*
|
|
4
|
+
* Schemas Zod para sugerencias SEO de colecciones de Shopify.
|
|
5
|
+
*
|
|
6
|
+
* Vive en marketing_config.brands[brandId].collectionSuggestions.{collectionId}
|
|
7
|
+
* Generado por Cowork via save_collection_suggestions.
|
|
8
|
+
*
|
|
9
|
+
* DEUDA 2 expandida (sesion 176B): collection suggestions migradas con
|
|
10
|
+
* reglas de negocio (max chars de meta title/description, etc).
|
|
11
|
+
*/
|
|
12
|
+
import { z } from 'zod';
|
|
13
|
+
// ═══════════════════════════════════════════════════════════
|
|
14
|
+
// SCHEMA INPUT (lo que Cowork manda a save_collection_suggestions)
|
|
15
|
+
// ═══════════════════════════════════════════════════════════
|
|
16
|
+
/**
|
|
17
|
+
* Una sola sugerencia de colección. Strict en max lengths
|
|
18
|
+
* (Google las trunca y la UI los marca como overflow).
|
|
19
|
+
*
|
|
20
|
+
* SEO best practices 2026:
|
|
21
|
+
* - meta title 50-60 chars (max 600px width)
|
|
22
|
+
* - meta description 120-158 chars (mobile 120, desktop 158)
|
|
23
|
+
* - image alt < 125 chars (Google Images limit)
|
|
24
|
+
*/
|
|
25
|
+
export const CollectionSuggestionInputSchema = z.object({
|
|
26
|
+
collectionId: z.union([z.string(), z.number()], {
|
|
27
|
+
errorMap: () => ({ message: 'collectionId debe ser string o number (ID de Shopify, no GID)' }),
|
|
28
|
+
}),
|
|
29
|
+
suggestedTitle: z.string().min(1).max(120).optional()
|
|
30
|
+
.describe('H1 de la página. Keyword al inicio.'),
|
|
31
|
+
suggestedDescription: z.string().min(1).optional()
|
|
32
|
+
.describe('HTML 200-400 palabras. Incluir links internos.'),
|
|
33
|
+
suggestedMetaTitle: z.string().min(1).max(60, 'meta title NO debe exceder 60 chars (Google trunca)').optional()
|
|
34
|
+
.describe('50-60 chars. Keyword al inicio. Formato: {Keyword} | {Brand}'),
|
|
35
|
+
suggestedMetaDescription: z.string().min(1).max(158, 'meta description NO debe exceder 158 chars (Google trunca)').optional()
|
|
36
|
+
.describe('120-158 chars. Keyword + CTA + value prop'),
|
|
37
|
+
suggestedHandle: z.string().nullable().optional()
|
|
38
|
+
.describe('Solo cambiar si el handle actual es malo. null = no cambiar (preserva URL indexado)'),
|
|
39
|
+
suggestedImageAlt: z.string().min(1).max(125, 'image alt NO debe exceder 125 chars (Google Images)').optional()
|
|
40
|
+
.describe('Descriptivo con keyword. Accesibilidad + Google Images + AEO'),
|
|
41
|
+
keyword: z.string().min(1).optional()
|
|
42
|
+
.describe('Keyword target de esta colección (del plan de marketing)'),
|
|
43
|
+
notas: z.string().optional()
|
|
44
|
+
.describe('Explicación breve de qué cambiaste y por qué'),
|
|
45
|
+
}).passthrough();
|
|
46
|
+
/**
|
|
47
|
+
* Array de sugerencias (lo que viene en el parametro `suggestions`).
|
|
48
|
+
*/
|
|
49
|
+
export const CollectionSuggestionsInputArraySchema = z.array(CollectionSuggestionInputSchema).min(1, 'Debe enviar al menos 1 sugerencia');
|
|
50
|
+
// ═══════════════════════════════════════════════════════════
|
|
51
|
+
// SCHEMA STORED (como queda en Firestore con meta agregada)
|
|
52
|
+
// ═══════════════════════════════════════════════════════════
|
|
53
|
+
/**
|
|
54
|
+
* Una sugerencia tal como queda guardada en Firestore.
|
|
55
|
+
* Tiene campos extra que el tool agrega: estado, generadoAt, generadoPor, appliedFields.
|
|
56
|
+
* Útil si en el futuro queremos validar lecturas del doc.
|
|
57
|
+
*/
|
|
58
|
+
export const CollectionSuggestionStoredSchema = CollectionSuggestionInputSchema.extend({
|
|
59
|
+
estado: z.enum(['pendiente', 'rechazado', 'aplicado_parcial', 'aplicado_total']),
|
|
60
|
+
generadoAt: z.union([
|
|
61
|
+
z.string(),
|
|
62
|
+
z.date(),
|
|
63
|
+
z.object({ seconds: z.number() }).passthrough(),
|
|
64
|
+
]).optional(),
|
|
65
|
+
generadoPor: z.string().optional(),
|
|
66
|
+
appliedFields: z.record(z.object({
|
|
67
|
+
before: z.unknown(),
|
|
68
|
+
after: z.unknown(),
|
|
69
|
+
appliedAt: z.union([
|
|
70
|
+
z.string(),
|
|
71
|
+
z.date(),
|
|
72
|
+
z.object({ seconds: z.number() }).passthrough(),
|
|
73
|
+
]),
|
|
74
|
+
}).passthrough()).optional(),
|
|
75
|
+
}).passthrough();
|
|
76
|
+
/**
|
|
77
|
+
* Valida un array de collection suggestions con reglas de negocio.
|
|
78
|
+
*/
|
|
79
|
+
export function validateCollectionSuggestions(value) {
|
|
80
|
+
const result = CollectionSuggestionsInputArraySchema.safeParse(value);
|
|
81
|
+
if (result.success) {
|
|
82
|
+
return { ok: true, parsed: result.data };
|
|
83
|
+
}
|
|
84
|
+
const firstError = result.error.errors[0];
|
|
85
|
+
const path = ['suggestions', ...firstError.path].join('.');
|
|
86
|
+
const received = getValueAtPath(value, firstError.path);
|
|
87
|
+
return {
|
|
88
|
+
ok: false,
|
|
89
|
+
error: firstError.message,
|
|
90
|
+
path,
|
|
91
|
+
received,
|
|
92
|
+
example: COLLECTION_SUGGESTION_EXAMPLE,
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
function getValueAtPath(obj, path) {
|
|
96
|
+
let current = obj;
|
|
97
|
+
for (const key of path) {
|
|
98
|
+
if (current == null)
|
|
99
|
+
return current;
|
|
100
|
+
if (typeof current === 'object') {
|
|
101
|
+
current = current[key];
|
|
102
|
+
}
|
|
103
|
+
else {
|
|
104
|
+
return undefined;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
return current;
|
|
108
|
+
}
|
|
109
|
+
// ═══════════════════════════════════════════════════════════
|
|
110
|
+
// EJEMPLO HUMAN-READABLE
|
|
111
|
+
// ═══════════════════════════════════════════════════════════
|
|
112
|
+
export const COLLECTION_SUGGESTION_EXAMPLE = [
|
|
113
|
+
{
|
|
114
|
+
collectionId: 471581688126,
|
|
115
|
+
suggestedTitle: 'Flores Moradas | Envío CDMX',
|
|
116
|
+
suggestedDescription: '<p>Descubre nuestra colección de flores moradas con rosas, tulipanes y lirios...</p>',
|
|
117
|
+
suggestedMetaTitle: 'Flores Moradas CDMX | Envío Mismo Día',
|
|
118
|
+
suggestedMetaDescription: 'Envía flores moradas a domicilio en CDMX. Arreglos frescos con rosas, tulipanes y lirios. Entrega el mismo día.',
|
|
119
|
+
suggestedHandle: null,
|
|
120
|
+
suggestedImageAlt: 'Ramo de flores moradas con rosas y tulipanes - Ponch florería CDMX',
|
|
121
|
+
keyword: 'flores moradas cdmx',
|
|
122
|
+
notas: 'Meta title con keyword local. Description con long-tail. Handle preservado.',
|
|
123
|
+
},
|
|
124
|
+
];
|
|
125
|
+
//# sourceMappingURL=collectionSuggestions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"collectionSuggestions.js","sourceRoot":"","sources":["../../../src/schemas/marketing/collectionSuggestions.ts"],"names":[],"mappings":"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"}
|