@migma/mcp 1.3.1 → 1.3.3

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.
Files changed (33) hide show
  1. package/build/prompts/index.js +5 -5
  2. package/build/prompts/index.js.map +1 -1
  3. package/build/tools/__tests__/agent-payload.test.d.ts +2 -0
  4. package/build/tools/__tests__/agent-payload.test.d.ts.map +1 -0
  5. package/build/tools/__tests__/agent-payload.test.js +76 -0
  6. package/build/tools/__tests__/agent-payload.test.js.map +1 -0
  7. package/build/tools/__tests__/email-images.test.d.ts +2 -0
  8. package/build/tools/__tests__/email-images.test.d.ts.map +1 -0
  9. package/build/tools/__tests__/email-images.test.js +94 -0
  10. package/build/tools/__tests__/email-images.test.js.map +1 -0
  11. package/build/tools/agent-payload.d.ts +9 -0
  12. package/build/tools/agent-payload.d.ts.map +1 -0
  13. package/build/tools/agent-payload.js +146 -0
  14. package/build/tools/agent-payload.js.map +1 -0
  15. package/build/tools/capabilities.js +12 -12
  16. package/build/tools/capabilities.js.map +1 -1
  17. package/build/tools/email-images.d.ts +30 -0
  18. package/build/tools/email-images.d.ts.map +1 -0
  19. package/build/tools/email-images.js +165 -0
  20. package/build/tools/email-images.js.map +1 -0
  21. package/build/tools/export.d.ts.map +1 -1
  22. package/build/tools/export.js +7 -6
  23. package/build/tools/export.js.map +1 -1
  24. package/build/tools/generate.d.ts.map +1 -1
  25. package/build/tools/generate.js +45 -11
  26. package/build/tools/generate.js.map +1 -1
  27. package/build/tools/projects.d.ts.map +1 -1
  28. package/build/tools/projects.js +12 -13
  29. package/build/tools/projects.js.map +1 -1
  30. package/build/tools/validate.d.ts.map +1 -1
  31. package/build/tools/validate.js +63 -23
  32. package/build/tools/validate.js.map +1 -1
  33. package/package.json +1 -1
@@ -10,8 +10,8 @@ export const WORKFLOWS = [
10
10
  steps: [
11
11
  "migma_get_capabilities — see available tools and the idempotency contract.",
12
12
  "migma_generate_email — start generation; keep conversationId.",
13
- "migma_get_generation_status — poll until completed. Or migma_list_emails to see designs already in the project.",
14
- "migma_send_test_email — send a test to yourself and review it.",
13
+ "migma_get_generation_status — poll until completed, then show the preview images. Or migma_list_emails to see designs already in the project.",
14
+ "migma_send_test_email — send a test to yourself after reviewing the images.",
15
15
  "migma_list_domains + migma_list_segments / migma_list_tags — pick the sender and audience.",
16
16
  "migma_create_campaign — create a draft campaign from the generated email.",
17
17
  "migma_send_campaign — send it (pass idempotency_key, e.g. campaign-send-<campaignId>, for safe retries).",
@@ -24,7 +24,7 @@ export const WORKFLOWS = [
24
24
  steps: [
25
25
  "migma_get_field_catalog — discover which subscriber fields exist and how often they're populated.",
26
26
  "migma_create_segment — create a segment using those fields as filters.",
27
- "migma_generate_email — start generation; poll migma_get_generation_status.",
27
+ "migma_generate_email — start generation; poll migma_get_generation_status and show the preview images.",
28
28
  "migma_create_campaign — create a campaign targeting the new segment.",
29
29
  "migma_send_campaign — send the campaign (use an idempotency_key for safe retries).",
30
30
  "migma_get_campaign_stats — read the campaign results.",
@@ -36,8 +36,8 @@ export const WORKFLOWS = [
36
36
  steps: [
37
37
  "migma_import_brand — import the brand from one or more website URLs.",
38
38
  "migma_get_project — confirm the extracted colors, fonts, logos, and tone.",
39
- "migma_generate_email — start generation; poll migma_get_generation_status.",
40
- "migma_send_test_email — send a test and review the result.",
39
+ "migma_generate_email — start generation; poll migma_get_generation_status and show the preview images.",
40
+ "migma_send_test_email — send a test after reviewing the images.",
41
41
  ],
42
42
  },
43
43
  ];
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/prompts/index.ts"],"names":[],"mappings":"AAQA;;;;GAIG;AACH,MAAM,CAAC,MAAM,SAAS,GAAe;IACnC;QACE,IAAI,EAAE,uBAAuB;QAC7B,OAAO,EACL,mGAAmG;QACrG,KAAK,EAAE;YACL,4EAA4E;YAC5E,+DAA+D;YAC/D,iHAAiH;YACjH,gEAAgE;YAChE,4FAA4F;YAC5F,2EAA2E;YAC3E,0GAA0G;YAC1G,kEAAkE;SACnE;KACF;IACD;QACE,IAAI,EAAE,wBAAwB;QAC9B,OAAO,EACL,+FAA+F;QACjG,KAAK,EAAE;YACL,mGAAmG;YACnG,wEAAwE;YACxE,4EAA4E;YAC5E,sEAAsE;YACtE,oFAAoF;YACpF,uDAAuD;SACxD;KACF;IACD;QACE,IAAI,EAAE,2BAA2B;QACjC,OAAO,EACL,4EAA4E;QAC9E,KAAK,EAAE;YACL,sEAAsE;YACtE,2EAA2E;YAC3E,4EAA4E;YAC5E,4DAA4D;SAC7D;KACF;CACF,CAAC;AAEF,SAAS,eAAe,CAAC,QAAkB;IACzC,MAAM,SAAS,GAAG,QAAQ,CAAC,KAAK;SAC7B,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC;SACrC,IAAI,CAAC,IAAI,CAAC,CAAC;IACd,OAAO;QACL,QAAQ,EAAE;YACR;gBACE,IAAI,EAAE,MAAe;gBACrB,OAAO,EAAE;oBACP,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE,+BAA+B,QAAQ,CAAC,IAAI,eAAe,QAAQ,CAAC,OAAO,mCAAmC,SAAS,uIAAuI;iBACrQ;aACF;SACF;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,MAAiB;IACpD,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QACjC,MAAM,CAAC,cAAc,CACnB,QAAQ,CAAC,IAAI,EACb;YACE,KAAK,EAAE,QAAQ,CAAC,IAAI;iBACjB,KAAK,CAAC,GAAG,CAAC;iBACV,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;iBAClD,IAAI,CAAC,GAAG,CAAC;YACZ,WAAW,EAAE,QAAQ,CAAC,OAAO;SAC9B,EACD,GAAG,EAAE,CAAC,eAAe,CAAC,QAAQ,CAAC,CAChC,CAAC;IACJ,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/prompts/index.ts"],"names":[],"mappings":"AAQA;;;;GAIG;AACH,MAAM,CAAC,MAAM,SAAS,GAAe;IACnC;QACE,IAAI,EAAE,uBAAuB;QAC7B,OAAO,EACL,mGAAmG;QACrG,KAAK,EAAE;YACL,4EAA4E;YAC5E,+DAA+D;YAC/D,+IAA+I;YAC/I,6EAA6E;YAC7E,4FAA4F;YAC5F,2EAA2E;YAC3E,0GAA0G;YAC1G,kEAAkE;SACnE;KACF;IACD;QACE,IAAI,EAAE,wBAAwB;QAC9B,OAAO,EACL,+FAA+F;QACjG,KAAK,EAAE;YACL,mGAAmG;YACnG,wEAAwE;YACxE,wGAAwG;YACxG,sEAAsE;YACtE,oFAAoF;YACpF,uDAAuD;SACxD;KACF;IACD;QACE,IAAI,EAAE,2BAA2B;QACjC,OAAO,EACL,4EAA4E;QAC9E,KAAK,EAAE;YACL,sEAAsE;YACtE,2EAA2E;YAC3E,wGAAwG;YACxG,iEAAiE;SAClE;KACF;CACF,CAAC;AAEF,SAAS,eAAe,CAAC,QAAkB;IACzC,MAAM,SAAS,GAAG,QAAQ,CAAC,KAAK;SAC7B,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC;SACrC,IAAI,CAAC,IAAI,CAAC,CAAC;IACd,OAAO;QACL,QAAQ,EAAE;YACR;gBACE,IAAI,EAAE,MAAe;gBACrB,OAAO,EAAE;oBACP,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE,+BAA+B,QAAQ,CAAC,IAAI,eAAe,QAAQ,CAAC,OAAO,mCAAmC,SAAS,uIAAuI;iBACrQ;aACF;SACF;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,MAAiB;IACpD,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QACjC,MAAM,CAAC,cAAc,CACnB,QAAQ,CAAC,IAAI,EACb;YACE,KAAK,EAAE,QAAQ,CAAC,IAAI;iBACjB,KAAK,CAAC,GAAG,CAAC;iBACV,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;iBAClD,IAAI,CAAC,GAAG,CAAC;YACZ,WAAW,EAAE,QAAQ,CAAC,OAAO;SAC9B,EACD,GAAG,EAAE,CAAC,eAAe,CAAC,QAAQ,CAAC,CAChC,CAAC;IACJ,CAAC;AACH,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=agent-payload.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-payload.test.d.ts","sourceRoot":"","sources":["../../../src/tools/__tests__/agent-payload.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,76 @@
1
+ import assert from "node:assert/strict";
2
+ import test from "node:test";
3
+ import { compactProjectList, conversationAppUrl, decorateEmailPayload, screenshotStatus, slimProject, stripExportInlineContent, } from "../agent-payload.js";
4
+ test("conversationAppUrl uses chat deep link", () => {
5
+ assert.equal(conversationAppUrl("abc"), "https://migma.ai/chat?c=abc");
6
+ assert.equal(conversationAppUrl("abc", 2), "https://migma.ai/chat?c=abc&slot=2");
7
+ });
8
+ test("screenshotStatus treats completed-without-url as pending", () => {
9
+ assert.equal(screenshotStatus("https://cdn.migma.ai/a.png"), "ready");
10
+ assert.equal(screenshotStatus(null, "completed"), "pending");
11
+ assert.equal(screenshotStatus(null, "failed"), "missing");
12
+ });
13
+ test("decorateEmailPayload strips html and adds appUrl", () => {
14
+ const decorated = decorateEmailPayload({
15
+ conversationId: "c1",
16
+ subject: "Hi",
17
+ html: "<table>huge</table>",
18
+ screenshotUrl: null,
19
+ status: "completed",
20
+ emails: [
21
+ {
22
+ conversationId: "c1",
23
+ slot: 1,
24
+ subject: "One",
25
+ html: "<p>x</p>",
26
+ screenshotUrl: "https://cdn.migma.ai/a.png",
27
+ },
28
+ ],
29
+ });
30
+ assert.equal(decorated.html, undefined);
31
+ assert.equal(decorated.appUrl, "https://migma.ai/chat?c=c1");
32
+ assert.equal(decorated.screenshotStatus, "pending");
33
+ const emails = decorated.emails;
34
+ assert.equal(emails[0]?.html, undefined);
35
+ assert.equal(emails[0]?.appUrl, "https://migma.ai/chat?c=c1&slot=1");
36
+ assert.equal(emails[0]?.screenshotStatus, "ready");
37
+ const withHtml = decorateEmailPayload({ conversationId: "c1", html: "<p>keep</p>" }, { includeHtml: true });
38
+ assert.equal(withHtml.html, "<p>keep</p>");
39
+ });
40
+ test("slimProject drops knowledge base and leftover inventory", () => {
41
+ const slim = slimProject({
42
+ _id: "p1",
43
+ name: "Osmo",
44
+ colors: { brand: "#000" },
45
+ knowledgeBase: [{ title: "huge" }],
46
+ imageUrls: ["x"],
47
+ customCSS: "oklch()",
48
+ templateCount: 0,
49
+ emails: [],
50
+ });
51
+ assert.equal(slim.name, "Osmo");
52
+ assert.deepEqual(slim.colors, { brand: "#000" });
53
+ assert.equal(slim.knowledgeBase, undefined);
54
+ assert.equal(slim.templateCount, undefined);
55
+ });
56
+ test("compactProjectList searches and stays small", () => {
57
+ const compact = compactProjectList({
58
+ projects: [
59
+ { _id: "1", name: "Osmo Studio", domain: "osmo.com", status: "active", updatedAt: "t", description: "long" },
60
+ { _id: "2", name: "Other", domain: "x.com", status: "active", updatedAt: "t" },
61
+ ],
62
+ pagination: { total: 2, limit: 20, offset: 0, hasMore: false },
63
+ }, "osmo");
64
+ assert.equal(compact.projects.length, 1);
65
+ assert.equal(compact.projects[0]?.id, "1");
66
+ assert.equal(compact.projects[0].description, undefined);
67
+ });
68
+ test("stripExportInlineContent keeps url only", () => {
69
+ const stripped = stripExportInlineContent({
70
+ exportType: "html",
71
+ files: [{ filename: "a.html", url: "https://cdn.migma.ai/a.html", content: "<html>huge</html>" }],
72
+ });
73
+ assert.equal(stripped.files[0]?.url, "https://cdn.migma.ai/a.html");
74
+ assert.equal(stripped.files[0]?.content, undefined);
75
+ });
76
+ //# sourceMappingURL=agent-payload.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-payload.test.js","sourceRoot":"","sources":["../../../src/tools/__tests__/agent-payload.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=email-images.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"email-images.test.d.ts","sourceRoot":"","sources":["../../../src/tools/__tests__/email-images.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,94 @@
1
+ import assert from "node:assert/strict";
2
+ import test from "node:test";
3
+ import { collectScreenshotRefs, fetchEmailImage, isAllowedScreenshotUrl, screenshotGuidance, toolResultWithImages, } from "../email-images.js";
4
+ test("allows only https Migma CDN and S3 screenshot hosts", () => {
5
+ assert.equal(isAllowedScreenshotUrl("https://cdn.migma.ai/shot.png"), true);
6
+ assert.equal(isAllowedScreenshotUrl("https://migmaa-sandbox.s3.amazonaws.com/shot.png"), true);
7
+ assert.equal(isAllowedScreenshotUrl("https://d111111abcdef8.cloudfront.net/shot.png"), true);
8
+ assert.equal(isAllowedScreenshotUrl("http://cdn.migma.ai/shot.png"), false);
9
+ assert.equal(isAllowedScreenshotUrl("https://evil.example/shot.png"), false);
10
+ assert.equal(isAllowedScreenshotUrl("https://127.0.0.1/shot.png"), false);
11
+ assert.equal(isAllowedScreenshotUrl("not-a-url"), false);
12
+ });
13
+ test("collects list thumbs and detail slot shots", () => {
14
+ const list = collectScreenshotRefs({
15
+ emails: [
16
+ {
17
+ title: "Welcome",
18
+ subject: "Hi",
19
+ screenshotUrl: "https://cdn.migma.ai/a.png",
20
+ },
21
+ { title: "No shot", screenshotUrl: null },
22
+ {
23
+ title: "Blocked",
24
+ screenshotUrl: "https://evil.example/x.png",
25
+ },
26
+ ],
27
+ }, "list");
28
+ assert.deepEqual(list, [
29
+ { url: "https://cdn.migma.ai/a.png", label: "Hi" },
30
+ ]);
31
+ const status = collectScreenshotRefs({
32
+ status: "completed",
33
+ result: {
34
+ emails: [
35
+ {
36
+ subject: "One",
37
+ slot: 1,
38
+ screenshotUrl: "https://cdn.migma.ai/one.png",
39
+ },
40
+ {
41
+ subject: "Two",
42
+ slot: 2,
43
+ thumbnailUrl: "https://cdn.migma.ai/two.png",
44
+ },
45
+ ],
46
+ },
47
+ }, "detail");
48
+ assert.equal(status.length, 2);
49
+ assert.equal(status[0]?.label, "One");
50
+ const one = collectScreenshotRefs({
51
+ subject: "Solo",
52
+ screenshotUrl: "https://cdn.migma.ai/solo.png",
53
+ }, "detail");
54
+ assert.deepEqual(one, [
55
+ { url: "https://cdn.migma.ai/solo.png", label: "Solo" },
56
+ ]);
57
+ });
58
+ test("guidance tells the agent to show images or poll", () => {
59
+ assert.match(screenshotGuidance([{ url: "https://cdn.migma.ai/a.png", label: "A" }], 1, {}), /Show these email preview images/);
60
+ assert.match(screenshotGuidance([], 0, { status: "completed" }), /still rendering/);
61
+ assert.equal(screenshotGuidance([], 0, { status: "pending" }), "");
62
+ assert.match(screenshotGuidance([], 0, { screenshotStatus: "pending" }), /still rendering/);
63
+ });
64
+ test("fetchEmailImage skips disallowed hosts and oversized bodies", async () => {
65
+ const blocked = await fetchEmailImage("https://evil.example/x.png");
66
+ assert.equal(blocked, null);
67
+ const png = Buffer.from([0x89, 0x50, 0x4e, 0x47]);
68
+ const image = await fetchEmailImage("https://cdn.migma.ai/a.png", async () => ({
69
+ ok: true,
70
+ headers: { get: () => "image/png" },
71
+ arrayBuffer: async () => png.buffer.slice(png.byteOffset, png.byteOffset + png.byteLength),
72
+ }));
73
+ assert.equal(image?.type, "image");
74
+ assert.equal(image?.mimeType, "image/png");
75
+ assert.equal(image?.data, png.toString("base64"));
76
+ });
77
+ test("toolResultWithImages puts image content before JSON", async () => {
78
+ const png = Buffer.from("img");
79
+ const result = await toolResultWithImages({
80
+ subject: "Hi",
81
+ screenshotUrl: "https://cdn.migma.ai/a.png",
82
+ }, "detail", async () => ({
83
+ ok: true,
84
+ headers: { get: () => "image/png" },
85
+ arrayBuffer: async () => png.buffer.slice(png.byteOffset, png.byteOffset + png.byteLength),
86
+ }));
87
+ assert.equal(result.content[0]?.type, "text");
88
+ assert.match(result.content[0].text, /Show these email preview images/);
89
+ assert.equal(result.content[1]?.type, "image");
90
+ const last = result.content[result.content.length - 1];
91
+ assert.equal(last?.type, "text");
92
+ assert.match(last.text, /"subject": "Hi"/);
93
+ });
94
+ //# sourceMappingURL=email-images.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"email-images.test.js","sourceRoot":"","sources":["../../../src/tools/__tests__/email-images.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ export declare function conversationAppUrl(conversationId: string, slot?: number | null): string;
2
+ export declare function screenshotStatus(url: unknown, generationStatus?: string | null): "ready" | "pending" | "missing";
3
+ export declare function decorateEmailPayload(data: unknown, options?: {
4
+ includeHtml?: boolean;
5
+ }): unknown;
6
+ export declare function slimProject(data: unknown): unknown;
7
+ export declare function compactProjectList(data: unknown, search?: string): unknown;
8
+ export declare function stripExportInlineContent(data: unknown): unknown;
9
+ //# sourceMappingURL=agent-payload.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-payload.d.ts","sourceRoot":"","sources":["../../src/tools/agent-payload.ts"],"names":[],"mappings":"AAeA,wBAAgB,kBAAkB,CAChC,cAAc,EAAE,MAAM,EACtB,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,GACnB,MAAM,CAGR;AAED,wBAAgB,gBAAgB,CAC9B,GAAG,EAAE,OAAO,EACZ,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,GAC/B,OAAO,GAAG,SAAS,GAAG,SAAS,CAWjC;AA8CD,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,OAAO,EACb,OAAO,GAAE;IAAE,WAAW,CAAC,EAAE,OAAO,CAAA;CAAO,GACtC,OAAO,CA6BT;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAQlD;AAED,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,OAAO,EACb,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CA6BT;AAED,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAY/D"}
@@ -0,0 +1,146 @@
1
+ const APP_ORIGIN = "https://migma.ai";
2
+ const PROJECT_DROP = new Set([
3
+ "templateCount",
4
+ "templates",
5
+ "emails",
6
+ "knowledgeBase",
7
+ "imageUrls",
8
+ "customCSS",
9
+ "designSystem",
10
+ "importMetrics",
11
+ "authCredentials",
12
+ "mcpServers",
13
+ ]);
14
+ export function conversationAppUrl(conversationId, slot) {
15
+ const url = `${APP_ORIGIN}/chat?c=${encodeURIComponent(conversationId)}`;
16
+ return slot == null ? url : `${url}&slot=${slot}`;
17
+ }
18
+ export function screenshotStatus(url, generationStatus) {
19
+ if (typeof url === "string" && url.trim())
20
+ return "ready";
21
+ if (generationStatus === "pending" ||
22
+ generationStatus === "processing" ||
23
+ generationStatus === "completed" ||
24
+ generationStatus === "ready") {
25
+ return "pending";
26
+ }
27
+ return "missing";
28
+ }
29
+ function asRecord(value) {
30
+ return value && typeof value === "object" && !Array.isArray(value)
31
+ ? value
32
+ : null;
33
+ }
34
+ function cloneJson(value) {
35
+ return JSON.parse(JSON.stringify(value));
36
+ }
37
+ function decorateRecord(record, includeHtml, generationStatus) {
38
+ if (!includeHtml) {
39
+ delete record.html;
40
+ }
41
+ const conversationId = typeof record.conversationId === "string" ? record.conversationId : null;
42
+ if (conversationId) {
43
+ const slot = typeof record.slotIdx === "number"
44
+ ? record.slotIdx
45
+ : typeof record.slot === "number"
46
+ ? record.slot
47
+ : null;
48
+ record.appUrl = conversationAppUrl(conversationId, slot);
49
+ }
50
+ else if (typeof record.link === "string" && !record.appUrl) {
51
+ record.appUrl = record.link;
52
+ }
53
+ if ("screenshotUrl" in record || "thumbnailUrl" in record) {
54
+ record.screenshotStatus = screenshotStatus(record.screenshotUrl || record.thumbnailUrl, generationStatus ??
55
+ (typeof record.status === "string" ? record.status : null));
56
+ }
57
+ void conversationId;
58
+ }
59
+ export function decorateEmailPayload(data, options = {}) {
60
+ if (!data || typeof data !== "object")
61
+ return data;
62
+ const includeHtml = options.includeHtml === true;
63
+ const copy = cloneJson(data);
64
+ const root = asRecord(copy);
65
+ if (!root)
66
+ return copy;
67
+ const rootStatus = typeof root.status === "string" ? root.status : null;
68
+ decorateRecord(root, includeHtml, rootStatus);
69
+ const result = asRecord(root.result);
70
+ if (result) {
71
+ decorateRecord(result, includeHtml, rootStatus);
72
+ if (Array.isArray(result.emails)) {
73
+ for (const row of result.emails) {
74
+ const record = asRecord(row);
75
+ if (record)
76
+ decorateRecord(record, includeHtml, record.status);
77
+ }
78
+ }
79
+ }
80
+ if (Array.isArray(root.emails)) {
81
+ for (const row of root.emails) {
82
+ const record = asRecord(row);
83
+ if (record)
84
+ decorateRecord(record, includeHtml, record.status);
85
+ }
86
+ }
87
+ return copy;
88
+ }
89
+ export function slimProject(data) {
90
+ const record = asRecord(data);
91
+ if (!record)
92
+ return data;
93
+ const slim = {};
94
+ for (const [key, value] of Object.entries(record)) {
95
+ if (!PROJECT_DROP.has(key))
96
+ slim[key] = value;
97
+ }
98
+ return slim;
99
+ }
100
+ export function compactProjectList(data, search) {
101
+ const root = asRecord(data);
102
+ if (!root || !Array.isArray(root.projects))
103
+ return data;
104
+ const needle = search?.trim().toLowerCase();
105
+ const projects = root.projects
106
+ .map((row) => asRecord(row))
107
+ .filter((row) => !!row)
108
+ .filter((row) => {
109
+ if (!needle)
110
+ return true;
111
+ const name = String(row.name ?? "").toLowerCase();
112
+ const domain = String(row.domain ?? "").toLowerCase();
113
+ const id = String(row._id ?? row.id ?? "").toLowerCase();
114
+ return name.includes(needle) || domain.includes(needle) || id.includes(needle);
115
+ })
116
+ .map((row) => ({
117
+ id: row._id ?? row.id,
118
+ name: row.name,
119
+ domain: row.domain,
120
+ status: row.status,
121
+ updatedAt: row.updatedAt,
122
+ }));
123
+ return {
124
+ projects,
125
+ pagination: root.pagination,
126
+ note: needle
127
+ ? "Names can repeat across brands — use id + domain."
128
+ : "Compact list. Names can repeat — use id + domain. Pass search to filter.",
129
+ };
130
+ }
131
+ export function stripExportInlineContent(data) {
132
+ const root = asRecord(data);
133
+ if (!root || !Array.isArray(root.files))
134
+ return data;
135
+ return {
136
+ ...root,
137
+ files: root.files.map((file) => {
138
+ const record = asRecord(file);
139
+ if (!record)
140
+ return file;
141
+ const { content: _content, ...rest } = record;
142
+ return rest;
143
+ }),
144
+ };
145
+ }
146
+ //# sourceMappingURL=agent-payload.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-payload.js","sourceRoot":"","sources":["../../src/tools/agent-payload.ts"],"names":[],"mappings":"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"}
@@ -8,17 +8,17 @@ import { WORKFLOWS } from "../prompts/index.js";
8
8
  */
9
9
  export const TOOL_CATALOG = [
10
10
  // Projects / brands
11
- { name: "migma_list_projects", domain: "projects", summary: "List Migma projects (brands) with ids, names, domains, and statuses.", write: false, idempotent: false },
12
- { name: "migma_get_project", domain: "projects", summary: "Get brand details (colors, fonts, logos, voice). Not the email list — use migma_list_emails.", write: false, idempotent: false },
11
+ { name: "migma_list_projects", domain: "projects", summary: "List brands as compact id/name/domain rows. Pass search to find a name.", write: false, idempotent: false },
12
+ { name: "migma_get_project", domain: "projects", summary: "Get brand colors, fonts, logos, voice. Not emails or the knowledge base.", write: false, idempotent: false },
13
13
  { name: "migma_import_brand", domain: "projects", summary: "Import a brand from website URLs and poll until the import completes.", write: true, idempotent: false },
14
14
  { name: "migma_get_field_catalog", domain: "projects", summary: "List subscriber fields, fill rates, and example values for template variables.", write: false, idempotent: false },
15
15
  // Email generation
16
- { name: "migma_generate_email", domain: "emails", summary: "Start email generation; returns conversationId. Poll migma_get_generation_status.", write: true, idempotent: false },
17
- { name: "migma_get_generation_status", domain: "emails", summary: "Poll a generation by conversationId until completed or failed.", write: false, idempotent: false },
18
- { name: "migma_list_emails", domain: "emails", summary: "List generated email designs for a project. Not campaigns.", write: false, idempotent: false },
16
+ { name: "migma_generate_email", domain: "emails", summary: "Start email generation; optional images, referenceId, idempotency_key. Returns conversationId. Poll status.", write: true, idempotent: true },
17
+ { name: "migma_get_generation_status", domain: "emails", summary: "Poll a generation. Returns preview images, appUrl, screenshotStatus. HTML off by default.", write: false, idempotent: false },
18
+ { name: "migma_list_emails", domain: "emails", summary: "List generated email designs with preview images and appUrl. Not campaigns.", write: false, idempotent: false },
19
19
  { name: "migma_send_test_email", domain: "emails", summary: "Send a test email for a generated email id or single-email conversation.", write: true, idempotent: false },
20
- { name: "migma_get_email", domain: "emails", summary: "Fetch one generated email by emailId with HTML, subject, screenshots, and variable requirements.", write: false, idempotent: false },
21
- { name: "migma_edit_email", domain: "emails", summary: "Edit a generated email with a natural-language prompt; returns the new version.", write: true, idempotent: false },
20
+ { name: "migma_get_email", domain: "emails", summary: "Fetch one email: preview image, appUrl, screenshotStatus. HTML off unless includeHtml.", write: false, idempotent: false },
21
+ { name: "migma_edit_email", domain: "emails", summary: "Edit a generated email; returns a preview image. HTML off unless includeHtml.", write: true, idempotent: false },
22
22
  { name: "migma_get_email_metrics", domain: "emails", summary: "Aggregate performance for one generated email across its API sends: delivery, opens, clicks, bounces, unsubscribes + time series.", write: false, idempotent: false },
23
23
  { name: "migma_get_email_logs", domain: "emails", summary: "Per-recipient send log for one generated email, cursor-paginated.", write: false, idempotent: false },
24
24
  // Sending
@@ -35,11 +35,11 @@ export const TOOL_CATALOG = [
35
35
  { name: "migma_get_campaign_stats", domain: "campaigns", summary: "Aggregated engagement metrics for a campaign (cached, may be slightly stale).", write: false, idempotent: false },
36
36
  { name: "migma_get_campaign_logs", domain: "campaigns", summary: "Per-recipient delivery logs for a campaign, cursor-paginated.", write: false, idempotent: false },
37
37
  // Validation
38
- { name: "migma_validate_email", domain: "validation", summary: "Run all validations: client compatibility, links, spelling, spam score.", write: false, idempotent: false },
39
- { name: "migma_validate_compatibility", domain: "validation", summary: "Check rendering compatibility across 30+ email clients.", write: false, idempotent: false },
40
- { name: "migma_validate_deliverability", domain: "validation", summary: "Analyze spam triggers and predict inbox placement.", write: false, idempotent: false },
38
+ { name: "migma_validate_email", domain: "validation", summary: "Validate by emailId (preferred). Do not pass raw HTML.", write: false, idempotent: false },
39
+ { name: "migma_validate_compatibility", domain: "validation", summary: "Client compatibility by emailId. Do not pass raw HTML.", write: false, idempotent: false },
40
+ { name: "migma_validate_deliverability", domain: "validation", summary: "Spam/inbox check by emailId. Do not pass raw HTML.", write: false, idempotent: false },
41
41
  // Export
42
- { name: "migma_export_html", domain: "export", summary: "Export a generated email as production-ready HTML.", write: false, idempotent: false },
42
+ { name: "migma_export_html", domain: "export", summary: "Export a generated email. Returns a download URL, not inline HTML.", write: false, idempotent: false },
43
43
  { name: "migma_export_mjml", domain: "export", summary: "Export a generated email as MJML markup.", write: false, idempotent: false },
44
44
  { name: "migma_export_pdf", domain: "export", summary: "Export a generated email as a PDF document.", write: false, idempotent: false },
45
45
  { name: "migma_export_klaviyo", domain: "export", summary: "Export a generated email in Klaviyo-compatible format.", write: false, idempotent: false },
@@ -88,7 +88,7 @@ export function registerCapabilitiesTool(server) {
88
88
  server: "migma",
89
89
  version,
90
90
  brandScoping: "API key is account-scoped; pass projectId per tool (or set MIGMA_PROJECT_ID). Resources in another project return 404.",
91
- emailsVsCampaigns: "Designed emails = migma_list_emails / migma_get_generation_status. Audience sends = migma_list_campaigns. migma_get_project is brand only — ignore templateCount.",
91
+ emailsVsCampaigns: "Designed emails = migma_list_emails / migma_get_generation_status. Audience sends = migma_list_campaigns. migma_get_project is brand only. List/get/status/edit return preview images and appUrl; HTML is off unless includeHtml. Validate with emailId, not raw HTML.",
92
92
  idempotency: {
93
93
  header: "Idempotency-Key",
94
94
  maxLength: 100,
@@ -1 +1 @@
1
- {"version":3,"file":"capabilities.js","sourceRoot":"","sources":["../../src/tools/capabilities.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"capabilities.js","sourceRoot":"","sources":["../../src/tools/capabilities.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ export type ScreenshotRef = {
2
+ url: string;
3
+ label: string;
4
+ };
5
+ export type ImageContent = {
6
+ type: "image";
7
+ data: string;
8
+ mimeType: string;
9
+ };
10
+ export type TextContent = {
11
+ type: "text";
12
+ text: string;
13
+ };
14
+ export type FetchLike = (input: string, init?: {
15
+ signal?: AbortSignal;
16
+ }) => Promise<{
17
+ ok: boolean;
18
+ headers: {
19
+ get(name: string): string | null;
20
+ };
21
+ arrayBuffer(): Promise<ArrayBuffer>;
22
+ }>;
23
+ export declare function isAllowedScreenshotUrl(url: string): boolean;
24
+ export declare function collectScreenshotRefs(data: unknown, mode: "list" | "detail"): ScreenshotRef[];
25
+ export declare function screenshotGuidance(refs: ScreenshotRef[], attached: number, data: unknown): string;
26
+ export declare function fetchEmailImage(url: string, fetchImpl?: FetchLike): Promise<ImageContent | null>;
27
+ export declare function toolResultWithImages(data: unknown, mode: "list" | "detail", fetchImpl?: FetchLike): Promise<{
28
+ content: Array<TextContent | ImageContent>;
29
+ }>;
30
+ //# sourceMappingURL=email-images.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"email-images.d.ts","sourceRoot":"","sources":["../../src/tools/email-images.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,aAAa,GAAG;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,IAAI,EAAE,OAAO,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG,CACtB,KAAK,EAAE,MAAM,EACb,IAAI,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,WAAW,CAAA;CAAE,KAC5B,OAAO,CAAC;IACX,EAAE,EAAE,OAAO,CAAC;IACZ,OAAO,EAAE;QAAE,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC;IAC9C,WAAW,IAAI,OAAO,CAAC,WAAW,CAAC,CAAC;CACrC,CAAC,CAAC;AAYH,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAkB3D;AA2BD,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,OAAO,EACb,IAAI,EAAE,MAAM,GAAG,QAAQ,GACtB,aAAa,EAAE,CAiCjB;AAED,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,aAAa,EAAE,EACrB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,OAAO,GACZ,MAAM,CAiBR;AAiBD,wBAAsB,eAAe,CACnC,GAAG,EAAE,MAAM,EACX,SAAS,GAAE,SAAiB,GAC3B,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAmB9B;AAED,wBAAsB,oBAAoB,CACxC,IAAI,EAAE,OAAO,EACb,IAAI,EAAE,MAAM,GAAG,QAAQ,EACvB,SAAS,GAAE,SAAiB,GAC3B,OAAO,CAAC;IAAE,OAAO,EAAE,KAAK,CAAC,WAAW,GAAG,YAAY,CAAC,CAAA;CAAE,CAAC,CA0BzD"}