@apex-inc/mcp-server 0.42.0 → 0.44.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.
@@ -7,7 +7,9 @@ import { z } from "zod";
7
7
  * top-level tool params.
8
8
  */
9
9
  export declare const letterBlockSchema: z.ZodObject<{
10
- type: z.ZodEnum<["heading", "text", "image", "button", "html", "spacer", "divider"]>;
10
+ type: z.ZodEnum<["heading", "text", "image", "button", "html", "spacer", "divider", "keep"]>;
11
+ id: z.ZodOptional<z.ZodString>;
12
+ kind: z.ZodOptional<z.ZodString>;
11
13
  text: z.ZodOptional<z.ZodString>;
12
14
  heading_level: z.ZodOptional<z.ZodEnum<["h1", "h2", "h3"]>>;
13
15
  align: z.ZodOptional<z.ZodEnum<["left", "center", "right"]>>;
@@ -23,8 +25,10 @@ export declare const letterBlockSchema: z.ZodObject<{
23
25
  color: z.ZodOptional<z.ZodString>;
24
26
  thickness: z.ZodOptional<z.ZodNumber>;
25
27
  }, "strip", z.ZodTypeAny, {
26
- type: "text" | "heading" | "image" | "button" | "html" | "spacer" | "divider";
28
+ type: "text" | "heading" | "image" | "button" | "html" | "spacer" | "divider" | "keep";
29
+ id?: string | undefined;
27
30
  label?: string | undefined;
31
+ kind?: string | undefined;
28
32
  text?: string | undefined;
29
33
  url?: string | undefined;
30
34
  html?: string | undefined;
@@ -39,8 +43,10 @@ export declare const letterBlockSchema: z.ZodObject<{
39
43
  color?: string | undefined;
40
44
  thickness?: number | undefined;
41
45
  }, {
42
- type: "text" | "heading" | "image" | "button" | "html" | "spacer" | "divider";
46
+ type: "text" | "heading" | "image" | "button" | "html" | "spacer" | "divider" | "keep";
47
+ id?: string | undefined;
43
48
  label?: string | undefined;
49
+ kind?: string | undefined;
44
50
  text?: string | undefined;
45
51
  url?: string | undefined;
46
52
  html?: string | undefined;
@@ -74,19 +80,24 @@ interface ComposeInput {
74
80
  /**
75
81
  * The reverse of composeLetterDocument: a stored builder document as the
76
82
  * sections edit_communication accepts. Brand header and footer are left out
77
- * (edits keep them); any other block type is named in `skipped`.
83
+ * (edits keep them). A block the sections can't describe (a repeater, a
84
+ * product grid) comes back as `keep`, so passing the list back leaves it as
85
+ * stored.
78
86
  */
79
87
  export declare function letterBlocksFromDocument(doc: {
80
88
  blocks?: Block[];
81
89
  } | null | undefined): {
82
90
  blocks: LetterBlockInput[];
83
- skipped: string[];
84
91
  };
85
92
  /**
86
- * Build the builder document and slot map for a full-body edit. The first
87
- * heading, text and button take the ids the theme's Title / Body / Button
88
- * roles point at, so the letter keeps its look. Slots mirror those three so
89
- * inbox and push previews match the email.
93
+ * Build the builder document and slot map for a full-body edit. A section
94
+ * that carries a stored block's id keeps that block's other settings (theme
95
+ * overrides, catalog slot); `keep` puts a stored block back unchanged. Of
96
+ * the rest, the first heading, text and button take the ids the theme's
97
+ * Title / Body / Button roles point at, so the letter keeps its look. Slots
98
+ * mirror those three so inbox and push previews match the email.
99
+ *
100
+ * Throws when a `keep` names a block the letter doesn't have.
90
101
  */
91
102
  export declare function composeLetterDocument(input: ComposeInput): {
92
103
  builderDocument: {
@@ -1 +1 @@
1
- {"version":3,"file":"letter-blocks.d.ts","sourceRoot":"","sources":["../src/letter-blocks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;;;GAMG;AACH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAqB5B,CAAC;AAEH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAEjE,UAAU,KAAK;IACb,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,UAAU,YAAY;IACpB,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,KAAK,EAAE,CAAA;KAAE,GAAG,IAAI,CAAC;IACtC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;IACtC,OAAO,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,OAAO,GAAG,MAAM,GAAG,QAAQ,EAAE,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC;IACtE,MAAM,EAAE,gBAAgB,EAAE,CAAC;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AA0CD;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,GAAG,EAAE;IAAE,MAAM,CAAC,EAAE,KAAK,EAAE,CAAA;CAAE,GAAG,IAAI,GAAG,SAAS,GAAG;IACtF,MAAM,EAAE,gBAAgB,EAAE,CAAC;IAC3B,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB,CAgDA;AAUD;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,YAAY,GAAG;IAC1D,eAAe,EAAE;QAAE,MAAM,EAAE,KAAK,EAAE,CAAC;QAAC,OAAO,EAAE,CAAC,CAAA;KAAE,CAAC;IACjD,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC/B,CAuCA"}
1
+ {"version":3,"file":"letter-blocks.d.ts","sourceRoot":"","sources":["../src/letter-blocks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;;;GAMG;AACH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA+B5B,CAAC;AAEH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAEjE,UAAU,KAAK;IACb,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,UAAU,YAAY;IACpB,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,KAAK,EAAE,CAAA;KAAE,GAAG,IAAI,CAAC;IACtC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;IACtC,OAAO,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,OAAO,GAAG,MAAM,GAAG,QAAQ,EAAE,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC;IACtE,MAAM,EAAE,gBAAgB,EAAE,CAAC;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AA4DD;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CAAC,GAAG,EAAE;IAAE,MAAM,CAAC,EAAE,KAAK,EAAE,CAAA;CAAE,GAAG,IAAI,GAAG,SAAS,GAAG;IACtF,MAAM,EAAE,gBAAgB,EAAE,CAAC;CAC5B,CAgDA;AAUD;;;;;;;;;GASG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,YAAY,GAAG;IAC1D,eAAe,EAAE;QAAE,MAAM,EAAE,KAAK,EAAE,CAAC;QAAC,OAAO,EAAE,CAAC,CAAA;KAAE,CAAC;IACjD,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC/B,CAqEA"}
@@ -7,11 +7,19 @@ import { z } from "zod";
7
7
  * top-level tool params.
8
8
  */
9
9
  export const letterBlockSchema = z.object({
10
- type: z.enum(["heading", "text", "image", "button", "html", "spacer", "divider"]),
10
+ type: z.enum(["heading", "text", "image", "button", "html", "spacer", "divider", "keep"]),
11
+ id: z
12
+ .string()
13
+ .optional()
14
+ .describe("The section's id from get_communication. Pass it back unchanged so the section keeps its saved settings. Leave it out for a new section. Required for keep."),
15
+ kind: z
16
+ .string()
17
+ .optional()
18
+ .describe("keep only: what the kept section is (e.g. repeater). Read-only; it is ignored on edit."),
11
19
  text: z
12
20
  .string()
13
21
  .optional()
14
- .describe("heading: the words. text: HTML limited to p, ul, ol, li, strong, em, u, b, i (no attributes, so no links; use a button or html block for links). {{first_name ?? \"friend\"}} style tokens work."),
22
+ .describe("heading: the words. text: HTML limited to p, ul, ol, li, strong, em, u, b, i, and <a href=\"...\"> links (https, mailto, a /path in the app, or a {{token}}). No other attributes. {{first_name ?? \"friend\"}} style tokens work."),
15
23
  heading_level: z.enum(["h1", "h2", "h3"]).optional(),
16
24
  align: z.enum(["left", "center", "right"]).optional(),
17
25
  url: z.string().optional().describe("image: public image URL. button: where it goes, e.g. {{app_url}}/experiments."),
@@ -73,18 +81,36 @@ function contentFor(b) {
73
81
  }
74
82
  const num = (v) => (typeof v === "number" && Number.isFinite(v) ? v : undefined);
75
83
  const str = (v) => (typeof v === "string" ? v : undefined);
84
+ /** Content keys the section fields own. Anything else on a stored block is kept. */
85
+ const EDITABLE_KEYS = [
86
+ "text",
87
+ "headingLevel",
88
+ "align",
89
+ "url",
90
+ "alt",
91
+ "imageHeight",
92
+ "imageNaturalWidth",
93
+ "imageNaturalHeight",
94
+ "label",
95
+ "buttonWidth",
96
+ "html",
97
+ "height",
98
+ "color",
99
+ "thickness",
100
+ ];
76
101
  /**
77
102
  * The reverse of composeLetterDocument: a stored builder document as the
78
103
  * sections edit_communication accepts. Brand header and footer are left out
79
- * (edits keep them); any other block type is named in `skipped`.
104
+ * (edits keep them). A block the sections can't describe (a repeater, a
105
+ * product grid) comes back as `keep`, so passing the list back leaves it as
106
+ * stored.
80
107
  */
81
108
  export function letterBlocksFromDocument(doc) {
82
109
  const blocks = [];
83
- const skipped = [];
84
110
  for (const b of doc?.blocks ?? []) {
85
111
  const c = b.content ?? {};
86
112
  const align = str(c.align);
87
- const base = align ? { align } : {};
113
+ const base = { ...(b.id ? { id: b.id } : {}), ...(align ? { align } : {}) };
88
114
  switch (b.type) {
89
115
  case "brand-header":
90
116
  case "brand-footer":
@@ -109,23 +135,24 @@ export function letterBlocksFromDocument(doc) {
109
135
  blocks.push({ type: "button", ...base, label: str(c.label) ?? "", url: str(c.url) ?? "", ...(str(c.buttonWidth) ? { button_width: str(c.buttonWidth) } : {}) });
110
136
  break;
111
137
  case "html":
112
- blocks.push({ type: "html", html: str(c.html) ?? "" });
138
+ blocks.push({ type: "html", ...(b.id ? { id: b.id } : {}), html: str(c.html) ?? "" });
113
139
  break;
114
140
  case "spacer":
115
- blocks.push({ type: "spacer", height: num(c.height) ?? 24 });
141
+ blocks.push({ type: "spacer", ...(b.id ? { id: b.id } : {}), height: num(c.height) ?? 24 });
116
142
  break;
117
143
  case "divider":
118
144
  blocks.push({
119
145
  type: "divider",
146
+ ...(b.id ? { id: b.id } : {}),
120
147
  ...(str(c.color) ? { color: str(c.color) } : {}),
121
148
  ...(num(c.thickness) ? { thickness: num(c.thickness) } : {}),
122
149
  });
123
150
  break;
124
151
  default:
125
- skipped.push(b.type);
152
+ blocks.push({ type: "keep", id: b.id, kind: b.type });
126
153
  }
127
154
  }
128
- return { blocks, skipped };
155
+ return { blocks };
129
156
  }
130
157
  function plain(html) {
131
158
  return html
@@ -135,13 +162,18 @@ function plain(html) {
135
162
  .trim();
136
163
  }
137
164
  /**
138
- * Build the builder document and slot map for a full-body edit. The first
139
- * heading, text and button take the ids the theme's Title / Body / Button
140
- * roles point at, so the letter keeps its look. Slots mirror those three so
141
- * inbox and push previews match the email.
165
+ * Build the builder document and slot map for a full-body edit. A section
166
+ * that carries a stored block's id keeps that block's other settings (theme
167
+ * overrides, catalog slot); `keep` puts a stored block back unchanged. Of
168
+ * the rest, the first heading, text and button take the ids the theme's
169
+ * Title / Body / Button roles point at, so the letter keeps its look. Slots
170
+ * mirror those three so inbox and push previews match the email.
171
+ *
172
+ * Throws when a `keep` names a block the letter doesn't have.
142
173
  */
143
174
  export function composeLetterDocument(input) {
144
175
  const existing = input.current?.blocks ?? [];
176
+ const byId = new Map(existing.map((b) => [b.id, b]));
145
177
  const header = existing.find((b) => b.type === "brand-header");
146
178
  const footer = existing.find((b) => b.type === "brand-footer");
147
179
  const roleIds = {
@@ -149,14 +181,43 @@ export function composeLetterDocument(input) {
149
181
  text: input.roleMap?.body,
150
182
  button: input.roleMap?.button,
151
183
  };
152
- const used = new Set();
184
+ const claimed = new Set();
185
+ const reusable = (b) => {
186
+ const stored = b.id ? byId.get(b.id) : undefined;
187
+ return stored && (b.type === "keep" || stored.type === b.type) ? stored : undefined;
188
+ };
189
+ for (const b of input.blocks) {
190
+ const stored = reusable(b);
191
+ if (stored)
192
+ claimed.add(stored.id);
193
+ }
194
+ const usedRoles = new Set();
195
+ const usedIds = new Set();
153
196
  const seed = input.idSeed ?? Date.now().toString(36);
154
197
  const body = input.blocks.map((b, i) => {
198
+ const stored = reusable(b);
199
+ if (b.type === "keep") {
200
+ if (!stored || usedIds.has(stored.id)) {
201
+ throw new Error(`Section ${b.id ?? "(no id)"} isn't in this letter. Read it again with get_communication and pass its keep sections back as they are.`);
202
+ }
203
+ usedIds.add(stored.id);
204
+ return stored;
205
+ }
206
+ if (stored && !usedIds.has(stored.id)) {
207
+ usedIds.add(stored.id);
208
+ const kept = { ...stored.content };
209
+ for (const key of EDITABLE_KEYS)
210
+ delete kept[key];
211
+ return {
212
+ ...stored,
213
+ content: { ...kept, ...contentFor(b) },
214
+ };
215
+ }
155
216
  let id = `blk-${seed}-${i}`;
156
217
  const roleId = roleIds[b.type];
157
- if (roleId && !used.has(b.type)) {
218
+ if (roleId && !usedRoles.has(b.type) && !claimed.has(roleId)) {
158
219
  id = roleId;
159
- used.add(b.type);
220
+ usedRoles.add(b.type);
160
221
  }
161
222
  return { id, type: b.type, content: contentFor(b) };
162
223
  });
@@ -1 +1 @@
1
- {"version":3,"file":"letter-blocks.js","sourceRoot":"","sources":["../src/letter-blocks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IACxC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;IACjF,IAAI,EAAE,CAAC;SACJ,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CACP,kMAAkM,CACnM;IACH,aAAa,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,QAAQ,EAAE;IACpD,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,QAAQ,EAAE;IACrD,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,+EAA+E,CAAC;IACpH,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC1B,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uBAAuB,CAAC;IACrE,mBAAmB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC1C,oBAAoB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC3C,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC;IACrD,YAAY,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,EAAE;IAChD,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,8DAA8D,CAAC;IACpG,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qBAAqB,CAAC;IAC7D,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,2DAA2D,CAAC;IAClG,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uEAAuE,CAAC;CACnH,CAAC,CAAC;AAmBH,SAAS,UAAU,CAAC,CAAmB;IACrC,MAAM,CAAC,GAA4B,EAAE,CAAC;IACtC,IAAI,CAAC,CAAC,KAAK;QAAE,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC;IAC/B,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;QACf,KAAK,SAAS;YACZ,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC;YACtB,IAAI,CAAC,CAAC,aAAa;gBAAE,CAAC,CAAC,YAAY,GAAG,CAAC,CAAC,aAAa,CAAC;YACtD,MAAM;QACR,KAAK,MAAM;YACT,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC;YACtB,MAAM;QACR,KAAK,OAAO;YACV,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC;YACpB,IAAI,CAAC,CAAC,GAAG;gBAAE,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC;YACzB,IAAI,CAAC,CAAC,YAAY;gBAAE,CAAC,CAAC,WAAW,GAAG,CAAC,CAAC,YAAY,CAAC;YACnD,IAAI,CAAC,CAAC,mBAAmB;gBAAE,CAAC,CAAC,iBAAiB,GAAG,CAAC,CAAC,mBAAmB,CAAC;YACvE,IAAI,CAAC,CAAC,oBAAoB;gBAAE,CAAC,CAAC,kBAAkB,GAAG,CAAC,CAAC,oBAAoB,CAAC;YAC1E,MAAM;QACR,KAAK,QAAQ;YACX,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;YACxB,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC;YACpB,IAAI,CAAC,CAAC,YAAY;gBAAE,CAAC,CAAC,WAAW,GAAG,CAAC,CAAC,YAAY,CAAC;YACnD,MAAM;QACR,KAAK,MAAM;YACT,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC;YACtB,MAAM;QACR,KAAK,QAAQ;YACX,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC;YAC1B,MAAM;QACR,KAAK,SAAS;YACZ,IAAI,CAAC,CAAC,KAAK;gBAAE,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC;YAC/B,IAAI,CAAC,CAAC,SAAS;gBAAE,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,CAAC;YAC3C,MAAM;IACV,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC;AAED,MAAM,GAAG,GAAG,CAAC,CAAU,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;AAC1F,MAAM,GAAG,GAAG,CAAC,CAAU,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;AAEpE;;;;GAIG;AACH,MAAM,UAAU,wBAAwB,CAAC,GAA4C;IAInF,MAAM,MAAM,GAAuB,EAAE,CAAC;IACtC,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,KAAK,MAAM,CAAC,IAAI,GAAG,EAAE,MAAM,IAAI,EAAE,EAAE,CAAC;QAClC,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,IAAI,EAAE,CAAC;QAC1B,MAAM,KAAK,GAAG,GAAG,CAAC,CAAC,CAAC,KAAK,CAA8B,CAAC;QACxD,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACpC,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;YACf,KAAK,cAAc,CAAC;YACpB,KAAK,cAAc;gBACjB,MAAM;YACR,KAAK,SAAS;gBACZ,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,GAAG,CAAC,CAAC,CAAC,YAAY,CAAsC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;gBAChL,MAAM;YACR,KAAK,MAAM;gBACT,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;gBAChE,MAAM;YACR,KAAK,OAAO;gBACV,MAAM,CAAC,IAAI,CAAC;oBACV,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;oBACtB,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE;oBACrB,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBAC1C,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBACnE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,EAAE,mBAAmB,EAAE,GAAG,CAAC,CAAC,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBACtF,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,EAAE,oBAAoB,EAAE,GAAG,CAAC,CAAC,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBAC1F,CAAC,CAAC;gBACH,MAAM;YACR,KAAK,QAAQ;gBACX,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,GAAG,CAAC,CAAC,CAAC,WAAW,CAAqC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;gBACpM,MAAM;YACR,KAAK,MAAM;gBACT,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;gBACvD,MAAM;YACR,KAAK,QAAQ;gBACX,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;gBAC7D,MAAM;YACR,KAAK,SAAS;gBACZ,MAAM,CAAC,IAAI,CAAC;oBACV,IAAI,EAAE,SAAS;oBACf,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBAChD,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBAC7D,CAAC,CAAC;gBACH,MAAM;YACR;gBACE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACzB,CAAC;IACH,CAAC;IACD,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;AAC7B,CAAC;AAED,SAAS,KAAK,CAAC,IAAY;IACzB,OAAO,IAAI;SACR,OAAO,CAAC,cAAc,EAAE,IAAI,CAAC;SAC7B,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC;SACvB,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC;SACxB,IAAI,EAAE,CAAC;AACZ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,qBAAqB,CAAC,KAAmB;IAIvD,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,EAAE,MAAM,IAAI,EAAE,CAAC;IAC7C,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,cAAc,CAAC,CAAC;IAC/D,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,cAAc,CAAC,CAAC;IAC/D,MAAM,OAAO,GAAuC;QAClD,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,KAAK;QAC7B,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,IAAI;QACzB,MAAM,EAAE,KAAK,CAAC,OAAO,EAAE,MAAM;KAC9B,CAAC;IACF,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IAErD,MAAM,IAAI,GAAY,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QAC9C,IAAI,EAAE,GAAG,OAAO,IAAI,IAAI,CAAC,EAAE,CAAC;QAC5B,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAC/B,IAAI,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;YAChC,EAAE,GAAG,MAAM,CAAC;YACZ,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACnB,CAAC;QACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;IACtD,CAAC,CAAC,CAAC;IAEH,MAAM,MAAM,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAEnF,MAAM,KAAK,GAA2B,EAAE,GAAG,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC,EAAE,CAAC;IACjE,MAAM,YAAY,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC;IACpE,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC;IAC9D,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC;IAClE,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC;IAChE,IAAI,YAAY,EAAE,IAAI;QAAE,KAAK,CAAC,QAAQ,GAAG,YAAY,CAAC,IAAI,CAAC;IAC3D,IAAI,SAAS,EAAE,IAAI;QAAE,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IACxD,IAAI,WAAW,EAAE,KAAK;QAAE,KAAK,CAAC,QAAQ,GAAG,WAAW,CAAC,KAAK,CAAC;IAC3D,IAAI,WAAW,EAAE,GAAG;QAAE,KAAK,CAAC,MAAM,GAAG,WAAW,CAAC,GAAG,CAAC;IACrD,IAAI,UAAU,EAAE,GAAG,EAAE,CAAC;QACpB,KAAK,CAAC,QAAQ,GAAG,UAAU,CAAC,GAAG,CAAC;QAChC,IAAI,UAAU,CAAC,GAAG;YAAE,KAAK,CAAC,QAAQ,GAAG,UAAU,CAAC,GAAG,CAAC;IACtD,CAAC;IAED,OAAO,EAAE,eAAe,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC;AAC5D,CAAC"}
1
+ {"version":3,"file":"letter-blocks.js","sourceRoot":"","sources":["../src/letter-blocks.ts"],"names":[],"mappings":"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"}
@@ -4,6 +4,8 @@
4
4
  * stamp the rail complete.
5
5
  */
6
6
  import { z } from "zod";
7
+ /** Same list as the app's `GUARDRAIL_FILE_PATHS` (`app/src/lib/setup/guardrail-files.ts`). */
8
+ export declare const GUARDRAIL_FILE_PATHS: readonly [".apex/brand-truth.md", ".apex/brand-voice.md", ".apex/lexicon.md", ".apex/experiment-rules.md", ".cursor/rules/apex-experiment-guardrails.mdc"];
7
9
  /** The areas Set up Apex lets an owner decline (app `PILLAR_DECLINE_LABEL`). */
8
10
  export declare const DECLINABLE_AREAS: readonly ["mobile-measurement", "server-events", "communications", "attribution", "partner-network"];
9
11
  declare const VERTICALS: readonly ["b2b-saas", "ecommerce", "marketplace", "agency", "other"];
@@ -910,6 +912,24 @@ export declare const setupCatchupTools: {
910
912
  }[];
911
913
  }>;
912
914
  };
915
+ record_guardrail_files: {
916
+ description: string;
917
+ schema: z.ZodObject<{
918
+ repoRoot: z.ZodString;
919
+ }, "strip", z.ZodTypeAny, {
920
+ repoRoot: string;
921
+ }, {
922
+ repoRoot: string;
923
+ }>;
924
+ handler: ({ repoRoot }: {
925
+ repoRoot: string;
926
+ }) => Promise<{
927
+ content: {
928
+ type: "text";
929
+ text: string;
930
+ }[];
931
+ }>;
932
+ };
913
933
  list_apex_links: {
914
934
  description: string;
915
935
  schema: z.ZodObject<{}, "strip", z.ZodTypeAny, {}, {}>;
@@ -1125,6 +1145,15 @@ export declare function resolvePaidPlatform(raw: string): string | null;
1125
1145
  export declare function mediumForPaidAd(platform: string): string;
1126
1146
  export declare function resolveMeasurementNetwork(raw: string): string;
1127
1147
  export declare function slugFromName(name: string): string;
1148
+ export declare function readGuardrailFiles(repoRoot: string): Promise<{
1149
+ files: Array<{
1150
+ path: string;
1151
+ sha256: string;
1152
+ bytes: number;
1153
+ }>;
1154
+ missing: string[];
1155
+ }>;
1156
+ export declare function consentPostureUrl(): string;
1128
1157
  export declare function activateConversionsUrl(): string;
1129
1158
  export {};
1130
1159
  //# sourceMappingURL=setup-catchup-tools.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"setup-catchup-tools.d.ts","sourceRoot":"","sources":["../src/setup-catchup-tools.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"setup-catchup-tools.d.ts","sourceRoot":"","sources":["../src/setup-catchup-tools.ts"],"names":[],"mappings":"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"}
@@ -3,11 +3,22 @@
3
3
  * Steps still finish when the real thing happens — these tools never
4
4
  * stamp the rail complete.
5
5
  */
6
+ import { createHash } from "node:crypto";
7
+ import { readFile } from "node:fs/promises";
8
+ import { join } from "node:path";
6
9
  import { z } from "zod";
7
10
  import { apiGet, apiPatch, apiPost, apiPut, apiDeleteJson, resolveActiveOrg, getActiveWorkspaceLabel, getActiveWorkspace, refreshUserContext, setActiveWorkspace, } from "./api-client.js";
8
11
  import { REPO_BINDING_PATH } from "./repo-binding.js";
9
12
  import { apexBaseUrl } from "./base-url.js";
10
13
  const APEX = "Apex";
14
+ /** Same list as the app's `GUARDRAIL_FILE_PATHS` (`app/src/lib/setup/guardrail-files.ts`). */
15
+ export const GUARDRAIL_FILE_PATHS = [
16
+ ".apex/brand-truth.md",
17
+ ".apex/brand-voice.md",
18
+ ".apex/lexicon.md",
19
+ ".apex/experiment-rules.md",
20
+ ".cursor/rules/apex-experiment-guardrails.mdc",
21
+ ];
11
22
  /** `workspace` names where the call landed, so a wrong-workspace write shows at once. */
12
23
  function jsonResult(data, error = null) {
13
24
  const label = getActiveWorkspaceLabel();
@@ -316,7 +327,7 @@ export const setupCatchupTools = {
316
327
  },
317
328
  },
318
329
  set_consent_posture: {
319
- description: `${APEX} — Save the workspace's consent-form answers (do they have a box, which kind). Does NOT attest outbound sending and does NOT fake a live-site tap. The merchant still has to tap Allow on their site. Admin only.`,
330
+ description: `${APEX} — Save the workspace's consent-form answers (do they have a box, which kind). This does not finish the step: whether Apex may send people to ad networks is the owner's own sign-off, checked in Set up Apex. The reply carries the link to give them. Admin only.`,
320
331
  schema: z.object({
321
332
  hasForm: z
322
333
  .enum(["yes", "no"])
@@ -330,8 +341,12 @@ export const setupCatchupTools = {
330
341
  const consentPolicy = {
331
342
  banner: hasForm === "no" ? "none" : (banner ?? "standard"),
332
343
  };
333
- const data = await apiPatch("/api/config", { consentPolicy });
334
- return jsonResult(data);
344
+ await apiPatch("/api/config", { consentPolicy });
345
+ return jsonResult({
346
+ saved: consentPolicy,
347
+ step_done: false,
348
+ next: `Answers saved. One box is left, and only the owner can check it: whether Apex may send people to ad networks. Give them this link: ${consentPostureUrl()}`,
349
+ });
335
350
  },
336
351
  },
337
352
  list_webhook_destinations: {
@@ -868,6 +883,23 @@ export const setupCatchupTools = {
868
883
  return jsonResult(data);
869
884
  },
870
885
  },
886
+ record_guardrail_files: {
887
+ description: `${APEX} — Check that this repo has the experiment guardrail files and tell Apex, which finishes Set up experiment guardrails. Reads ${GUARDRAIL_FILE_PATHS.join(", ")} under repo_root. Sends Apex only each file's path, size and SHA-256 fingerprint, never its contents. If any file is missing or empty, nothing is sent and the reply names what is missing. Admin only.`,
888
+ schema: z.object({
889
+ repoRoot: z
890
+ .string()
891
+ .min(1)
892
+ .describe("Absolute path to the repo's root folder (the one holding .apex/)."),
893
+ }),
894
+ handler: async ({ repoRoot }) => {
895
+ const { files, missing } = await readGuardrailFiles(repoRoot);
896
+ if (missing.length > 0) {
897
+ return jsonResult({ step_done: false, missing }, `These guardrail files are missing or empty under ${repoRoot}: ${missing.join(", ")}. Write them, then call record_guardrail_files again.`);
898
+ }
899
+ await apiPatch("/api/config", { experimentGuardrailFiles: { files } });
900
+ return jsonResult({ step_done: true, files });
901
+ },
902
+ },
871
903
  list_apex_links: {
872
904
  description: `${APEX} — List this workspace's Apex Links. After ads are connected, make a paid Apex Link before inventing UTMs.`,
873
905
  schema: z.object({}),
@@ -1142,6 +1174,31 @@ function hostHint(url) {
1142
1174
  return "ad";
1143
1175
  }
1144
1176
  }
1177
+ export async function readGuardrailFiles(repoRoot) {
1178
+ const files = [];
1179
+ const missing = [];
1180
+ for (const rel of GUARDRAIL_FILE_PATHS) {
1181
+ try {
1182
+ const buf = await readFile(join(repoRoot, rel));
1183
+ if (buf.length === 0) {
1184
+ missing.push(rel);
1185
+ continue;
1186
+ }
1187
+ files.push({
1188
+ path: rel,
1189
+ sha256: createHash("sha256").update(buf).digest("hex"),
1190
+ bytes: buf.length,
1191
+ });
1192
+ }
1193
+ catch {
1194
+ missing.push(rel);
1195
+ }
1196
+ }
1197
+ return { files, missing };
1198
+ }
1199
+ export function consentPostureUrl() {
1200
+ return `${apexBaseUrl()}/dashboard?setup=foundations&step=foundations%3Aconsent-posture&mode=fullscreen`;
1201
+ }
1145
1202
  export function activateConversionsUrl() {
1146
1203
  return `${apexBaseUrl()}/dashboard?setup=attribution&step=attribution:activate-conversions&mode=fullscreen`;
1147
1204
  }