@apex-inc/mcp-server 0.37.0 → 0.38.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.
@@ -0,0 +1,82 @@
1
+ import { z } from "zod";
2
+ /**
3
+ * The body of a letter, authored as a list of sections. The letter keeps its
4
+ * brand header and footer; everything between them is replaced.
5
+ *
6
+ * Nested keys are snake_case on purpose: the param-casing layer only translates
7
+ * top-level tool params.
8
+ */
9
+ export declare const letterBlockSchema: z.ZodObject<{
10
+ type: z.ZodEnum<["heading", "text", "image", "button", "html", "spacer", "divider"]>;
11
+ text: z.ZodOptional<z.ZodString>;
12
+ heading_level: z.ZodOptional<z.ZodEnum<["h1", "h2", "h3"]>>;
13
+ align: z.ZodOptional<z.ZodEnum<["left", "center", "right"]>>;
14
+ url: z.ZodOptional<z.ZodString>;
15
+ alt: z.ZodOptional<z.ZodString>;
16
+ image_height: z.ZodOptional<z.ZodNumber>;
17
+ image_natural_width: z.ZodOptional<z.ZodNumber>;
18
+ image_natural_height: z.ZodOptional<z.ZodNumber>;
19
+ label: z.ZodOptional<z.ZodString>;
20
+ button_width: z.ZodOptional<z.ZodEnum<["hug", "fill"]>>;
21
+ html: z.ZodOptional<z.ZodString>;
22
+ height: z.ZodOptional<z.ZodNumber>;
23
+ }, "strip", z.ZodTypeAny, {
24
+ type: "text" | "heading" | "image" | "button" | "html" | "spacer" | "divider";
25
+ label?: string | undefined;
26
+ text?: string | undefined;
27
+ url?: string | undefined;
28
+ html?: string | undefined;
29
+ heading_level?: "h1" | "h2" | "h3" | undefined;
30
+ align?: "left" | "center" | "right" | undefined;
31
+ alt?: string | undefined;
32
+ image_height?: number | undefined;
33
+ image_natural_width?: number | undefined;
34
+ image_natural_height?: number | undefined;
35
+ button_width?: "fill" | "hug" | undefined;
36
+ height?: number | undefined;
37
+ }, {
38
+ type: "text" | "heading" | "image" | "button" | "html" | "spacer" | "divider";
39
+ label?: string | undefined;
40
+ text?: string | undefined;
41
+ url?: string | undefined;
42
+ html?: string | undefined;
43
+ heading_level?: "h1" | "h2" | "h3" | undefined;
44
+ align?: "left" | "center" | "right" | undefined;
45
+ alt?: string | undefined;
46
+ image_height?: number | undefined;
47
+ image_natural_width?: number | undefined;
48
+ image_natural_height?: number | undefined;
49
+ button_width?: "fill" | "hug" | undefined;
50
+ height?: number | undefined;
51
+ }>;
52
+ export type LetterBlockInput = z.infer<typeof letterBlockSchema>;
53
+ interface Block {
54
+ id: string;
55
+ type: string;
56
+ content: Record<string, unknown>;
57
+ catalogSlotId?: string;
58
+ }
59
+ interface ComposeInput {
60
+ current?: {
61
+ blocks?: Block[];
62
+ } | null;
63
+ slots?: Record<string, string> | null;
64
+ roleMap?: Partial<Record<"title" | "body" | "button", string>> | null;
65
+ blocks: LetterBlockInput[];
66
+ idSeed?: string;
67
+ }
68
+ /**
69
+ * Build the builder document and slot map for a full-body edit. The first
70
+ * heading, text and button take the ids the theme's Title / Body / Button
71
+ * roles point at, so the letter keeps its look. Slots mirror those three so
72
+ * inbox and push previews match the email.
73
+ */
74
+ export declare function composeLetterDocument(input: ComposeInput): {
75
+ builderDocument: {
76
+ blocks: Block[];
77
+ version: 1;
78
+ };
79
+ slots: Record<string, string>;
80
+ };
81
+ export {};
82
+ //# sourceMappingURL=letter-blocks.d.ts.map
@@ -0,0 +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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAmB5B,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;AA2CD;;;;;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"}
@@ -0,0 +1,120 @@
1
+ import { z } from "zod";
2
+ /**
3
+ * The body of a letter, authored as a list of sections. The letter keeps its
4
+ * brand header and footer; everything between them is replaced.
5
+ *
6
+ * Nested keys are snake_case on purpose: the param-casing layer only translates
7
+ * top-level tool params.
8
+ */
9
+ export const letterBlockSchema = z.object({
10
+ type: z.enum(["heading", "text", "image", "button", "html", "spacer", "divider"]),
11
+ text: z
12
+ .string()
13
+ .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."),
15
+ heading_level: z.enum(["h1", "h2", "h3"]).optional(),
16
+ align: z.enum(["left", "center", "right"]).optional(),
17
+ url: z.string().optional().describe("image: public image URL. button: where it goes, e.g. {{app_url}}/experiments."),
18
+ alt: z.string().optional(),
19
+ image_height: z.number().optional().describe("Display height in px."),
20
+ image_natural_width: z.number().optional(),
21
+ image_natural_height: z.number().optional(),
22
+ label: z.string().optional().describe("button label"),
23
+ button_width: z.enum(["hug", "fill"]).optional(),
24
+ html: z.string().optional().describe("html block: sent as written. Use for a plain text link line."),
25
+ height: z.number().optional().describe("spacer height in px"),
26
+ });
27
+ function contentFor(b) {
28
+ const c = {};
29
+ if (b.align)
30
+ c.align = b.align;
31
+ switch (b.type) {
32
+ case "heading":
33
+ c.text = b.text ?? "";
34
+ if (b.heading_level)
35
+ c.headingLevel = b.heading_level;
36
+ break;
37
+ case "text":
38
+ c.text = b.text ?? "";
39
+ break;
40
+ case "image":
41
+ c.url = b.url ?? "";
42
+ if (b.alt)
43
+ c.alt = b.alt;
44
+ if (b.image_height)
45
+ c.imageHeight = b.image_height;
46
+ if (b.image_natural_width)
47
+ c.imageNaturalWidth = b.image_natural_width;
48
+ if (b.image_natural_height)
49
+ c.imageNaturalHeight = b.image_natural_height;
50
+ break;
51
+ case "button":
52
+ c.label = b.label ?? "";
53
+ c.url = b.url ?? "";
54
+ if (b.button_width)
55
+ c.buttonWidth = b.button_width;
56
+ break;
57
+ case "html":
58
+ c.html = b.html ?? "";
59
+ break;
60
+ case "spacer":
61
+ c.height = b.height ?? 24;
62
+ break;
63
+ }
64
+ return c;
65
+ }
66
+ function plain(html) {
67
+ return html
68
+ .replace(/<\/(p|li)>/gi, "\n")
69
+ .replace(/<[^>]+>/g, "")
70
+ .replace(/\n{2,}/g, "\n")
71
+ .trim();
72
+ }
73
+ /**
74
+ * Build the builder document and slot map for a full-body edit. The first
75
+ * heading, text and button take the ids the theme's Title / Body / Button
76
+ * roles point at, so the letter keeps its look. Slots mirror those three so
77
+ * inbox and push previews match the email.
78
+ */
79
+ export function composeLetterDocument(input) {
80
+ const existing = input.current?.blocks ?? [];
81
+ const header = existing.find((b) => b.type === "brand-header");
82
+ const footer = existing.find((b) => b.type === "brand-footer");
83
+ const roleIds = {
84
+ heading: input.roleMap?.title,
85
+ text: input.roleMap?.body,
86
+ button: input.roleMap?.button,
87
+ };
88
+ const used = new Set();
89
+ const seed = input.idSeed ?? Date.now().toString(36);
90
+ const body = input.blocks.map((b, i) => {
91
+ let id = `blk-${seed}-${i}`;
92
+ const roleId = roleIds[b.type];
93
+ if (roleId && !used.has(b.type)) {
94
+ id = roleId;
95
+ used.add(b.type);
96
+ }
97
+ return { id, type: b.type, content: contentFor(b) };
98
+ });
99
+ const blocks = [...(header ? [header] : []), ...body, ...(footer ? [footer] : [])];
100
+ const slots = { ...(input.slots ?? {}) };
101
+ const firstHeading = input.blocks.find((b) => b.type === "heading");
102
+ const firstText = input.blocks.find((b) => b.type === "text");
103
+ const firstButton = input.blocks.find((b) => b.type === "button");
104
+ const firstImage = input.blocks.find((b) => b.type === "image");
105
+ if (firstHeading?.text)
106
+ slots.headline = firstHeading.text;
107
+ if (firstText?.text)
108
+ slots.body = plain(firstText.text);
109
+ if (firstButton?.label)
110
+ slots.ctaLabel = firstButton.label;
111
+ if (firstButton?.url)
112
+ slots.ctaUrl = firstButton.url;
113
+ if (firstImage?.url) {
114
+ slots.imageUrl = firstImage.url;
115
+ if (firstImage.alt)
116
+ slots.imageAlt = firstImage.alt;
117
+ }
118
+ return { builderDocument: { blocks, version: 1 }, slots };
119
+ }
120
+ //# sourceMappingURL=letter-blocks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"letter-blocks.js","sourceRoot":"","sources":["../src/letter-blocks.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"experiments.d.ts","sourceRoot":"","sources":["../../src/tools/experiments.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAqDxB,KAAK,gBAAgB,GAAG,MAAM,GAAG,QAAQ,GAAG,QAAQ,GAAG,UAAU,CAAC;AAElE,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,gBAAgB,CAAC;IAC1B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAC;IAChC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,qBAAqB,CAAC,EAAE,MAAM,CAAC;CAChC;AAuMD,eAAO,MAAM,eAAe;;;;;;;;;;;;;uCAQa;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,SAAS,CAAC,EAAE,MAAM,CAAA;SAAE;;;;;;;;;;;;;;;;;;;;;;oDAqFvB;YAAE,QAAQ,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAC;YAAC,UAAU,EAAE,MAAM,CAAA;SAAE;;;;;;;;;;;;;;;;;;;;;;6DA6C/C;YAAE,SAAS,EAAE,MAAM,CAAC;YAAC,UAAU,EAAE,MAAM,CAAC;YAAC,cAAc,CAAC,EAAE,MAAM,CAAA;SAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;wBA4DvG;YACpB,IAAI,EAAE,MAAM,CAAC;YACb,SAAS,CAAC,EAAE,MAAM,CAAC;YACnB,cAAc,CAAC,EAAE,MAAM,CAAC;YACxB,cAAc,CAAC,EAAE,MAAM,CAAC;YACxB,eAAe,CAAC,EAAE,MAAM,CAAC;YACzB,YAAY,CAAC,EAAE,MAAM,CAAC;YACtB,YAAY,CAAC,EAAE,MAAM,CAAC;YACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;YAClB,YAAY,CAAC,EAAE,MAAM,CAAC;YACtB,YAAY,CAAC,EAAE,MAAM,CAAC;YACtB,eAAe,CAAC,EAAE,MAAM,CAAC;YACzB,gBAAgB,CAAC,EAAE,MAAM,CAAC;YAC1B,mBAAmB,CAAC,EAAE,MAAM,CAAC;YAC7B,kBAAkB,CAAC,EAAE,MAAM,CAAC;YAC5B,iBAAiB,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,GAAG,UAAU,CAAC;YAC9D,0BAA0B,CAAC,EAAE,MAAM,CAAC;YACpC,cAAc,CAAC,EAAE,MAAM,CAAC;YACxB,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,UAAU,CAAC;YAChD,kBAAkB,CAAC,EAAE,MAAM,CAAC;YAC5B,mBAAmB,CAAC,EAAE,MAAM,CAAC;YAC7B,OAAO,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,cAAc,CAAC;YAC5C,YAAY,CAAC,EAAE,aAAa,CAAC;YAC7B,YAAY,CAAC,EAAE,MAAM,CAAC;YACtB,iBAAiB,CAAC,EAAE,QAAQ,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,GAAG,KAAK,CAAC;YACxE,eAAe,CAAC,EAAE,MAAM,CAAC;YACzB,WAAW,CAAC,EAAE,MAAM,CAAC;YACrB,OAAO,CAAC,EAAE,OAAO,CAAC;SACnB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;wBAsfqB;YACpB,YAAY,EAAE,MAAM,CAAC;YACrB,UAAU,EAAE,MAAM,CAAC;YACnB,WAAW,CAAC,EAAE,MAAM,CAAC;YACrB,GAAG,CAAC,EAAE,MAAM,CAAC;YACb,QAAQ,CAAC,EAAE,SAAS,GAAG,QAAQ,GAAG,QAAQ,CAAC;YAC3C,MAAM,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;YACxB,KAAK,CAAC,EAAE,MAAM,CAAC;YACf,SAAS,CAAC,EAAE,MAAM,CAAC;SACpB;;;;;;;;;;;;;;;;;;;;;;;oCAgDiC;YAAE,YAAY,EAAE,MAAM,CAAA;SAAE;;;;;;;;;;;;;;;;;;;;;;;oCAmCxB;YAAE,YAAY,EAAE,MAAM,CAAA;SAAE;;;;;;;;;;;;;;;;;;;2CAuFjB;YAAE,YAAY,EAAE,MAAM,CAAC;YAAC,KAAK,CAAC,EAAE,OAAO,CAAA;SAAE;;;;;;;;;;;;;;;;oCAuNhD;YAAE,YAAY,EAAE,MAAM,CAAA;SAAE;;;;;;;;;;;;;;;;;;;;;;uDA+BL;YAAE,YAAY,EAAE,MAAM,CAAC;YAAC,SAAS,EAAE,MAAM,CAAC;YAAC,MAAM,CAAC,EAAE,MAAM,CAAA;SAAE;;;;;;;;;;;;;;;;oCA6B/E;YAAE,YAAY,EAAE,MAAM,CAAA;SAAE;;;;;;;;;;;;;;;;oCA6CxB;YAAE,YAAY,EAAE,MAAM,CAAA;SAAE;;;;;;;;;;;;;;;;8BAiC9B;YAAE,MAAM,CAAC,EAAE,MAAM,CAAA;SAAE;;;;;;;;;;;;;;;;oCA0Db;YAAE,YAAY,EAAE,MAAM,CAAA;SAAE;;;;;;;;;;;;;;;;6BAyD/B;YAAE,KAAK,CAAC,EAAE,MAAM,CAAA;SAAE;;;;;;;;;;;;;;;;;;;wBAqDvB;YAAE,YAAY,CAAC,EAAE,MAAM,CAAC;YAAC,GAAG,CAAC,EAAE,MAAM,CAAA;SAAE;;;;;;;;;;;;;;;;;;;;;;;;;wBAgFvC;YAAE,YAAY,EAAE,MAAM,CAAC;YAAC,SAAS,CAAC,EAAE,MAAM,CAAA;SAAE;;;;;;;;;;;;;;;;;;;;;;wBA8C5C;YAAE,YAAY,EAAE,MAAM,CAAA;SAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;wBA6ExB;YAAE,YAAY,EAAE,MAAM,CAAC;YAAC,OAAO,CAAC,EAAE,OAAO,CAAC;YAAC,WAAW,CAAC,EAAE,OAAO,CAAA;SAAE;;;;;;;;;;;;;;;;;;;;;;wBAuIlE;YAAE,YAAY,EAAE,MAAM,CAAA;SAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;wBA8DxB;YACpB,YAAY,EAAE,MAAM,CAAC;YACrB,IAAI,CAAC,EAAE,MAAM,CAAC;YACd,OAAO,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,cAAc,CAAC;YAC5C,UAAU,CAAC,EAAE,MAAM,CAAC;YACpB,SAAS,CAAC,EAAE,MAAM,CAAC;YACnB,YAAY,CAAC,EAAE,MAAM,CAAC;YACtB,kBAAkB,CAAC,EAAE,MAAM,CAAC;YAC5B,iBAAiB,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,GAAG,UAAU,CAAC;YAC9D,cAAc,CAAC,EAAE,MAAM,CAAC;YACxB,eAAe,CAAC,EAAE,MAAM,CAAC;YACzB,WAAW,CAAC,EAAE,MAAM,CAAC;SACtB;;;;;;;;;;;;;;;;;;;;;;;oCA2FiC;YAAE,YAAY,EAAE,MAAM,CAAA;SAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;wBAiDpC;YACpB,YAAY,CAAC,EAAE,MAAM,CAAC;YACtB,OAAO,CAAC,EAAE,MAAM,CAAC;YACjB,eAAe,CAAC,EAAE,MAAM,CAAC;YACzB,SAAS,CAAC,EAAE,MAAM,CAAC;YACnB,YAAY,CAAC,EAAE,MAAM,CAAC;YACtB,YAAY,CAAC,EAAE,MAAM,CAAC;YACtB,kBAAkB,CAAC,EAAE,MAAM,CAAC;SAC7B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;wBAqDqB;YACpB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;YACtB,aAAa,CAAC,EAAE,KAAK,CAAC;gBAAE,IAAI,EAAE,MAAM,CAAC;gBAAC,OAAO,EAAE,MAAM,CAAA;aAAE,CAAC,CAAC;YACzD,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;YAChB,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;YAC7B,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;YACvB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;SAC1B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4DAoEyD;YAAE,YAAY,EAAE,MAAM,CAAC;YAAC,gBAAgB,EAAE,MAAM,CAAC;YAAC,IAAI,CAAC,EAAE,KAAK,GAAG,QAAQ,CAAA;SAAE;;;;;;;;;;;;;;;;;;;;;;;+BAoBxG;YAAE,OAAO,CAAC,EAAE,MAAM,CAAA;SAAE;;;;;;;;;;;;;;;;;;;4CA2GP;YAAE,YAAY,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAA;SAAE;;;;;;;;;;;;;;;;qCAmE/C;YAAE,aAAa,EAAE,MAAM,CAAA;SAAE;;;;;;;;;;;;;;;;;;;;;;yDA6BzD;YACD,aAAa,EAAE,MAAM,CAAC;YACtB,KAAK,CAAC,EAAE,OAAO,CAAC;YAChB,UAAU,CAAC,EAAE,MAAM,CAAC;SACrB;;;;;;;;;;;;;;;;oCAkBiC;YAAE,YAAY,EAAE,MAAM,CAAA;SAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;wBAoEpC;YACpB,YAAY,EAAE,MAAM,CAAC;YACrB,QAAQ,EAAE,MAAM,CAAC;YACjB,OAAO,EAAE,MAAM,CAAC;YAChB,WAAW,EAAE,MAAM,CAAC;YACpB,KAAK,CAAC,EAAE,MAAM,CAAC;SAChB;;;;;;;;;;;;;;;;mCAsCgC;YAAE,WAAW,EAAE,MAAM,CAAA;SAAE;;;;;;;;;;;;;;;;;;;6CA0Db;YAAE,OAAO,EAAE,MAAM,CAAC;YAAC,YAAY,CAAC,EAAE,MAAM,CAAA;SAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;wBA8H/D;YACpB,YAAY,EAAE,MAAM,CAAC;YACrB,MAAM,EAAE,MAAM,CAAC;YACf,IAAI,EAAE,MAAM,CAAC;YACb,IAAI,CAAC,EAAE,MAAM,CAAC;YACd,UAAU,EAAE,MAAM,CAAC;YACnB,GAAG,CAAC,EAAE,MAAM,CAAC;SACd;;;;;;;;;;;;;;;;;;;4CA0ByC;YAAE,YAAY,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAA;SAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;wBAyB5D;YACpB,YAAY,EAAE,MAAM,CAAC;YACrB,iBAAiB,EAAE,MAAM,CAAC;YAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;YACrB,aAAa,EAAE,MAAM,CAAC;YACtB,aAAa,EAAE,MAAM,CAAC;YACtB,eAAe,EAAE,MAAM,CAAC;YACxB,YAAY,EAAE,MAAM,CAAC;SACtB;;;;;;;;;;;;;;;;oCA0BiC;YAAE,YAAY,EAAE,MAAM,CAAA;SAAE;;;;;;;;;;;;;;;;oCAuBxB;YAAE,YAAY,EAAE,MAAM,CAAA;SAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;wBAqCpC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;;;;;;;;;;;;;;;;oCAgBX;YAAE,YAAY,EAAE,MAAM,CAAA;SAAE;;;;;;;CAsC7D,CAAC"}
1
+ {"version":3,"file":"experiments.d.ts","sourceRoot":"","sources":["../../src/tools/experiments.ts"],"names":[],"mappings":"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"}
@@ -1333,8 +1333,21 @@ export const experimentTools = {
1333
1333
  if (!exp) {
1334
1334
  return { content: [{ type: "text", text: `${APEX} Experiment ${experimentId} not found.` }] };
1335
1335
  }
1336
- const ctrl = exp.results?.perVariant?.control;
1337
- const varB = exp.results?.perVariant?.variant_b;
1336
+ // Results are keyed by each arm's own key. New experiments name the first
1337
+ // treatment `variant_a`, older ones `variant_b`; only a running read
1338
+ // aliases the two, so look the arm up by its real key.
1339
+ const perVariant = exp.results?.perVariant ?? {};
1340
+ const treatment = exp.variants?.find((v) => v.key !== "control");
1341
+ const ctrl = perVariant.control;
1342
+ const varB = (treatment ? perVariant[treatment.key] : undefined) ??
1343
+ perVariant.variant_a ??
1344
+ perVariant.variant_b;
1345
+ const treatmentLabel = treatment?.label && treatment.label !== "Variant B" ? treatment.label : "Variant A";
1346
+ const cvr = (arm) => {
1347
+ const rate = arm.conversionRate ?? (arm.participated > 0 ? arm.converted / arm.participated : 0);
1348
+ return `${Math.round(rate * 1000) / 10}%`;
1349
+ };
1350
+ const winnerConfidence = exp.results?.winnerConfidence ?? exp.winnerConfidence;
1338
1351
  return {
1339
1352
  content: [
1340
1353
  {
@@ -1345,16 +1358,16 @@ export const experimentTools = {
1345
1358
  ``,
1346
1359
  ` Status: ${exp.status}`,
1347
1360
  ` Running: ${daysRunningOf(exp)} days`,
1348
- ` Confidence: ${exp.confidence ?? 0}%`,
1361
+ ` Confidence: ${typeof winnerConfidence === "number" ? `${Math.round(winnerConfidence * 100)}%` : "—"}`,
1349
1362
  ` URL: ${exp.targetUrl ?? "—"}`,
1350
1363
  ``,
1351
1364
  ` Control:`,
1352
1365
  ctrl
1353
- ? ` ${ctrl.assigned} visitors | ${ctrl.converted} conversions | ${ctrl.conversionRate ?? 0}% CVR`
1366
+ ? ` ${ctrl.assigned} visitors | ${ctrl.converted} conversions | ${cvr(ctrl)} CVR`
1354
1367
  : " No data yet",
1355
- ` Variant B:`,
1368
+ ` ${treatmentLabel}:`,
1356
1369
  varB
1357
- ? ` ${varB.assigned} visitors | ${varB.converted} conversions | ${varB.conversionRate ?? 0}% CVR`
1370
+ ? ` ${varB.assigned} visitors | ${varB.converted} conversions | ${cvr(varB)} CVR`
1358
1371
  : " No data yet",
1359
1372
  exp.beliefId ? `\n Linked belief: ${exp.beliefId}` : "",
1360
1373
  ``,