@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.
- package/build/prompts/index.js +5 -5
- package/build/prompts/index.js.map +1 -1
- package/build/tools/__tests__/agent-payload.test.d.ts +2 -0
- package/build/tools/__tests__/agent-payload.test.d.ts.map +1 -0
- package/build/tools/__tests__/agent-payload.test.js +76 -0
- package/build/tools/__tests__/agent-payload.test.js.map +1 -0
- package/build/tools/__tests__/email-images.test.d.ts +2 -0
- package/build/tools/__tests__/email-images.test.d.ts.map +1 -0
- package/build/tools/__tests__/email-images.test.js +94 -0
- package/build/tools/__tests__/email-images.test.js.map +1 -0
- package/build/tools/agent-payload.d.ts +9 -0
- package/build/tools/agent-payload.d.ts.map +1 -0
- package/build/tools/agent-payload.js +146 -0
- package/build/tools/agent-payload.js.map +1 -0
- package/build/tools/capabilities.js +12 -12
- package/build/tools/capabilities.js.map +1 -1
- package/build/tools/email-images.d.ts +30 -0
- package/build/tools/email-images.d.ts.map +1 -0
- package/build/tools/email-images.js +165 -0
- package/build/tools/email-images.js.map +1 -0
- package/build/tools/export.d.ts.map +1 -1
- package/build/tools/export.js +7 -6
- package/build/tools/export.js.map +1 -1
- package/build/tools/generate.d.ts.map +1 -1
- package/build/tools/generate.js +45 -11
- package/build/tools/generate.js.map +1 -1
- package/build/tools/projects.d.ts.map +1 -1
- package/build/tools/projects.js +12 -13
- package/build/tools/projects.js.map +1 -1
- package/build/tools/validate.d.ts.map +1 -1
- package/build/tools/validate.js +63 -23
- package/build/tools/validate.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
const MAX_IMAGE_BYTES = 1_500_000;
|
|
2
|
+
const LIST_IMAGE_CAP = 5;
|
|
3
|
+
const DETAIL_IMAGE_CAP = 8;
|
|
4
|
+
const FETCH_MS = 8_000;
|
|
5
|
+
function asRecord(value) {
|
|
6
|
+
return value && typeof value === "object" && !Array.isArray(value)
|
|
7
|
+
? value
|
|
8
|
+
: null;
|
|
9
|
+
}
|
|
10
|
+
function asString(value) {
|
|
11
|
+
return typeof value === "string" && value.trim() ? value.trim() : null;
|
|
12
|
+
}
|
|
13
|
+
export function isAllowedScreenshotUrl(url) {
|
|
14
|
+
let parsed;
|
|
15
|
+
try {
|
|
16
|
+
parsed = new URL(url);
|
|
17
|
+
}
|
|
18
|
+
catch {
|
|
19
|
+
return false;
|
|
20
|
+
}
|
|
21
|
+
if (parsed.protocol !== "https:")
|
|
22
|
+
return false;
|
|
23
|
+
const host = parsed.hostname.toLowerCase();
|
|
24
|
+
if (host === "cdn.migma.ai")
|
|
25
|
+
return true;
|
|
26
|
+
if (host.endsWith(".cloudfront.net"))
|
|
27
|
+
return true;
|
|
28
|
+
if (host.endsWith(".amazonaws.com") &&
|
|
29
|
+
(host.includes(".s3.") || host.startsWith("s3.") || host.includes(".s3-"))) {
|
|
30
|
+
return true;
|
|
31
|
+
}
|
|
32
|
+
return false;
|
|
33
|
+
}
|
|
34
|
+
function pickUrl(...candidates) {
|
|
35
|
+
for (const candidate of candidates) {
|
|
36
|
+
const url = asString(candidate);
|
|
37
|
+
if (url && isAllowedScreenshotUrl(url))
|
|
38
|
+
return url;
|
|
39
|
+
}
|
|
40
|
+
return null;
|
|
41
|
+
}
|
|
42
|
+
function refsFromEmailRows(rows, cap, labelOf) {
|
|
43
|
+
const refs = [];
|
|
44
|
+
for (const row of rows) {
|
|
45
|
+
if (refs.length >= cap)
|
|
46
|
+
break;
|
|
47
|
+
const record = asRecord(row);
|
|
48
|
+
if (!record)
|
|
49
|
+
continue;
|
|
50
|
+
const url = pickUrl(record.screenshotUrl, record.thumbnailUrl);
|
|
51
|
+
if (!url)
|
|
52
|
+
continue;
|
|
53
|
+
refs.push({ url, label: labelOf(record) });
|
|
54
|
+
}
|
|
55
|
+
return refs;
|
|
56
|
+
}
|
|
57
|
+
export function collectScreenshotRefs(data, mode) {
|
|
58
|
+
const root = asRecord(data);
|
|
59
|
+
if (!root)
|
|
60
|
+
return [];
|
|
61
|
+
if (mode === "list" && Array.isArray(root.emails)) {
|
|
62
|
+
return refsFromEmailRows(root.emails, LIST_IMAGE_CAP, (row) => {
|
|
63
|
+
return asString(row.subject) || asString(row.title) || "Email";
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
const result = asRecord(root.result);
|
|
67
|
+
if (result) {
|
|
68
|
+
if (Array.isArray(result.emails) && result.emails.length > 0) {
|
|
69
|
+
return refsFromEmailRows(result.emails, DETAIL_IMAGE_CAP, (row) => {
|
|
70
|
+
return (asString(row.subject) ||
|
|
71
|
+
(row.slot != null ? `Email ${row.slot}` : null) ||
|
|
72
|
+
"Email");
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
const url = pickUrl(result.screenshotFullUrl, result.screenshotUrl);
|
|
76
|
+
if (url) {
|
|
77
|
+
return [{ url, label: asString(result.subject) || "Email" }];
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
const url = pickUrl(root.screenshotUrl, root.thumbnailUrl);
|
|
81
|
+
if (url) {
|
|
82
|
+
return [{ url, label: asString(root.subject) || "Email" }];
|
|
83
|
+
}
|
|
84
|
+
return [];
|
|
85
|
+
}
|
|
86
|
+
export function screenshotGuidance(refs, attached, data) {
|
|
87
|
+
if (attached > 0) {
|
|
88
|
+
return "Show these email preview images to the user. Do not only describe the JSON.";
|
|
89
|
+
}
|
|
90
|
+
const root = asRecord(data);
|
|
91
|
+
const status = asString(root?.status);
|
|
92
|
+
const screenshotStatus = asString(root?.screenshotStatus);
|
|
93
|
+
if (refs.length === 0 &&
|
|
94
|
+
(status === "completed" ||
|
|
95
|
+
status === "ready" ||
|
|
96
|
+
screenshotStatus === "pending" ||
|
|
97
|
+
asRecord(root)?.html)) {
|
|
98
|
+
return "Preview image is still rendering. Poll migma_get_email or migma_get_generation_status again in a few seconds, then show the image.";
|
|
99
|
+
}
|
|
100
|
+
return "";
|
|
101
|
+
}
|
|
102
|
+
function mimeFromContentType(contentType) {
|
|
103
|
+
const mime = contentType?.split(";")[0]?.trim().toLowerCase();
|
|
104
|
+
if (mime === "image/png" ||
|
|
105
|
+
mime === "image/jpeg" ||
|
|
106
|
+
mime === "image/jpg" ||
|
|
107
|
+
mime === "image/webp" ||
|
|
108
|
+
mime === "image/gif") {
|
|
109
|
+
return mime === "image/jpg" ? "image/jpeg" : mime;
|
|
110
|
+
}
|
|
111
|
+
if (mime === "application/octet-stream")
|
|
112
|
+
return "image/png";
|
|
113
|
+
return null;
|
|
114
|
+
}
|
|
115
|
+
export async function fetchEmailImage(url, fetchImpl = fetch) {
|
|
116
|
+
if (!isAllowedScreenshotUrl(url))
|
|
117
|
+
return null;
|
|
118
|
+
try {
|
|
119
|
+
const response = await fetchImpl(url, {
|
|
120
|
+
signal: AbortSignal.timeout(FETCH_MS),
|
|
121
|
+
});
|
|
122
|
+
if (!response.ok)
|
|
123
|
+
return null;
|
|
124
|
+
const mimeType = mimeFromContentType(response.headers.get("content-type"));
|
|
125
|
+
if (!mimeType)
|
|
126
|
+
return null;
|
|
127
|
+
const bytes = Buffer.from(await response.arrayBuffer());
|
|
128
|
+
if (bytes.length === 0 || bytes.length > MAX_IMAGE_BYTES)
|
|
129
|
+
return null;
|
|
130
|
+
return {
|
|
131
|
+
type: "image",
|
|
132
|
+
data: bytes.toString("base64"),
|
|
133
|
+
mimeType,
|
|
134
|
+
};
|
|
135
|
+
}
|
|
136
|
+
catch {
|
|
137
|
+
return null;
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
export async function toolResultWithImages(data, mode, fetchImpl = fetch) {
|
|
141
|
+
const refs = collectScreenshotRefs(data, mode);
|
|
142
|
+
const fetched = await Promise.all(refs.map(async (ref) => ({
|
|
143
|
+
ref,
|
|
144
|
+
image: await fetchEmailImage(ref.url, fetchImpl),
|
|
145
|
+
})));
|
|
146
|
+
const attached = fetched.filter((item) => item.image);
|
|
147
|
+
const guidance = screenshotGuidance(refs, attached.length, data);
|
|
148
|
+
const markdown = attached
|
|
149
|
+
.map((item) => ``)
|
|
150
|
+
.join("\n");
|
|
151
|
+
const content = [];
|
|
152
|
+
if (guidance) {
|
|
153
|
+
content.push({ type: "text", text: guidance });
|
|
154
|
+
}
|
|
155
|
+
for (const item of attached) {
|
|
156
|
+
if (item.image)
|
|
157
|
+
content.push(item.image);
|
|
158
|
+
}
|
|
159
|
+
if (markdown) {
|
|
160
|
+
content.push({ type: "text", text: markdown });
|
|
161
|
+
}
|
|
162
|
+
content.push({ type: "text", text: JSON.stringify(data, null, 2) });
|
|
163
|
+
return { content };
|
|
164
|
+
}
|
|
165
|
+
//# sourceMappingURL=email-images.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"email-images.js","sourceRoot":"","sources":["../../src/tools/email-images.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"export.d.ts","sourceRoot":"","sources":["../../src/tools/export.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"export.d.ts","sourceRoot":"","sources":["../../src/tools/export.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAKnC,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,SAAS,EACjB,MAAM,EAAE,KAAK,EACb,kBAAkB,CAAC,EAAE,MAAM,EAAE,QAkI9B"}
|
package/build/tools/export.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
2
|
import { canUse } from "../permissions.js";
|
|
3
|
+
import { stripExportInlineContent } from "./agent-payload.js";
|
|
3
4
|
export function registerExportTools(server, client, grantedPermissions) {
|
|
4
5
|
if (canUse(grantedPermissions, ["email:read"])) {
|
|
5
6
|
server.registerTool("migma_export_html", {
|
|
@@ -13,7 +14,7 @@ export function registerExportTools(server, client, grantedPermissions) {
|
|
|
13
14
|
const { data, error } = await client.export.html(args.conversationId);
|
|
14
15
|
if (error)
|
|
15
16
|
return toolError(error.message);
|
|
16
|
-
return toolResult(data);
|
|
17
|
+
return toolResult(stripExportInlineContent(data));
|
|
17
18
|
});
|
|
18
19
|
}
|
|
19
20
|
if (canUse(grantedPermissions, ["email:read"])) {
|
|
@@ -28,7 +29,7 @@ export function registerExportTools(server, client, grantedPermissions) {
|
|
|
28
29
|
const { data, error } = await client.export.mjml(args.conversationId);
|
|
29
30
|
if (error)
|
|
30
31
|
return toolError(error.message);
|
|
31
|
-
return toolResult(data);
|
|
32
|
+
return toolResult(stripExportInlineContent(data));
|
|
32
33
|
});
|
|
33
34
|
}
|
|
34
35
|
if (canUse(grantedPermissions, ["email:read"])) {
|
|
@@ -43,7 +44,7 @@ export function registerExportTools(server, client, grantedPermissions) {
|
|
|
43
44
|
const { data, error } = await client.export.pdf(args.conversationId);
|
|
44
45
|
if (error)
|
|
45
46
|
return toolError(error.message);
|
|
46
|
-
return toolResult(data);
|
|
47
|
+
return toolResult(stripExportInlineContent(data));
|
|
47
48
|
});
|
|
48
49
|
}
|
|
49
50
|
if (canUse(grantedPermissions, ["email:read"])) {
|
|
@@ -62,7 +63,7 @@ export function registerExportTools(server, client, grantedPermissions) {
|
|
|
62
63
|
const { data, error } = await client.export.klaviyo(args.conversationId, args.type);
|
|
63
64
|
if (error)
|
|
64
65
|
return toolError(error.message);
|
|
65
|
-
return toolResult(data);
|
|
66
|
+
return toolResult(stripExportInlineContent(data));
|
|
66
67
|
});
|
|
67
68
|
}
|
|
68
69
|
if (canUse(grantedPermissions, ["email:read"])) {
|
|
@@ -77,7 +78,7 @@ export function registerExportTools(server, client, grantedPermissions) {
|
|
|
77
78
|
const { data, error } = await client.export.mailchimp(args.conversationId);
|
|
78
79
|
if (error)
|
|
79
80
|
return toolError(error.message);
|
|
80
|
-
return toolResult(data);
|
|
81
|
+
return toolResult(stripExportInlineContent(data));
|
|
81
82
|
});
|
|
82
83
|
}
|
|
83
84
|
if (canUse(grantedPermissions, ["email:read"])) {
|
|
@@ -94,7 +95,7 @@ export function registerExportTools(server, client, grantedPermissions) {
|
|
|
94
95
|
});
|
|
95
96
|
if (error)
|
|
96
97
|
return toolError(error.message);
|
|
97
|
-
return toolResult(data);
|
|
98
|
+
return toolResult(stripExportInlineContent(data));
|
|
98
99
|
});
|
|
99
100
|
}
|
|
100
101
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"export.js","sourceRoot":"","sources":["../../src/tools/export.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"export.js","sourceRoot":"","sources":["../../src/tools/export.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../../src/tools/generate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAEnC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../../src/tools/generate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAEnC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAY3C,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,SAAS,EACjB,MAAM,EAAE,KAAK,EACb,MAAM,EAAE,MAAM,EACd,kBAAkB,CAAC,EAAE,MAAM,EAAE,QA+T9B"}
|
package/build/tools/generate.js
CHANGED
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
2
|
import { canUse } from "../permissions.js";
|
|
3
|
+
import { decorateEmailPayload } from "./agent-payload.js";
|
|
4
|
+
import { toolResultWithImages } from "./email-images.js";
|
|
3
5
|
export function registerGenerateTools(server, client, config, grantedPermissions) {
|
|
4
6
|
if (canUse(grantedPermissions, ["email:write", "email:read"])) {
|
|
5
7
|
server.registerTool("migma_generate_email", {
|
|
6
8
|
title: "Generate Email",
|
|
7
|
-
description: "Start generating one email or a series from a prompt. Returns conversationId immediately — generation keeps running in the background. Poll migma_get_generation_status with that id until status is completed or failed. Do not use migma_get_project or migma_list_campaigns to check progress. Charges 1 email credit per finished email.",
|
|
9
|
+
description: "Start generating one email or a series from a prompt. Returns conversationId immediately — generation keeps running in the background. Poll migma_get_generation_status with that id until status is completed or failed, then show the preview images. Do not use migma_get_project or migma_list_campaigns to check progress. Charges 1 email credit per finished email.",
|
|
8
10
|
inputSchema: z.object({
|
|
9
11
|
projectId: z
|
|
10
12
|
.string()
|
|
@@ -23,6 +25,20 @@ export function registerGenerateTools(server, client, config, grantedPermissions
|
|
|
23
25
|
.max(12)
|
|
24
26
|
.optional()
|
|
25
27
|
.describe("Target email count for a series. Omit to infer from prompt."),
|
|
28
|
+
images: z
|
|
29
|
+
.array(z.string().url())
|
|
30
|
+
.max(8)
|
|
31
|
+
.optional()
|
|
32
|
+
.describe("Reference image URLs (product shots, screenshots) for the generator to use."),
|
|
33
|
+
referenceId: z
|
|
34
|
+
.string()
|
|
35
|
+
.optional()
|
|
36
|
+
.describe("Existing email or reference ID to remix from."),
|
|
37
|
+
idempotency_key: z
|
|
38
|
+
.string()
|
|
39
|
+
.max(100)
|
|
40
|
+
.optional()
|
|
41
|
+
.describe("Optional Idempotency-Key. Retrying the same key+body within 24h resumes the same job instead of starting a duplicate."),
|
|
26
42
|
}),
|
|
27
43
|
}, async (args) => {
|
|
28
44
|
const projectId = args.projectId || config.projectId;
|
|
@@ -34,25 +50,35 @@ export function registerGenerateTools(server, client, config, grantedPermissions
|
|
|
34
50
|
prompt: args.prompt,
|
|
35
51
|
languages: args.languages,
|
|
36
52
|
count: args.count,
|
|
37
|
-
|
|
53
|
+
referenceId: args.referenceId,
|
|
54
|
+
images: args.images?.map((url) => ({
|
|
55
|
+
source: { type: "url", url },
|
|
56
|
+
})),
|
|
57
|
+
}, args.idempotency_key
|
|
58
|
+
? { idempotencyKey: args.idempotency_key }
|
|
59
|
+
: undefined);
|
|
38
60
|
if (error)
|
|
39
61
|
return toolError(error.message);
|
|
40
|
-
return toolResult(data);
|
|
62
|
+
return toolResult(decorateEmailPayload(data));
|
|
41
63
|
});
|
|
42
64
|
}
|
|
43
65
|
if (canUse(grantedPermissions, ["email:read"])) {
|
|
44
66
|
server.registerTool("migma_get_generation_status", {
|
|
45
67
|
title: "Get Generation Status",
|
|
46
|
-
description: "Poll a generation started by migma_generate_email. Pass conversationId. Status is pending, processing, completed, or failed. When completed, result.emails[]
|
|
68
|
+
description: "Poll a generation started by migma_generate_email. Pass conversationId. Status is pending, processing, completed, or failed. When completed, this tool returns preview images plus result.emails[] (emailId, subject, appUrl, screenshotStatus). HTML is omitted unless includeHtml is true. Show the images. This is how you check email design progress — not campaigns.",
|
|
47
69
|
annotations: { readOnlyHint: true },
|
|
48
70
|
inputSchema: z.object({
|
|
49
71
|
conversationId: z.string().describe("The conversation/generation ID"),
|
|
72
|
+
includeHtml: z
|
|
73
|
+
.boolean()
|
|
74
|
+
.optional()
|
|
75
|
+
.describe("Include full email HTML. Default false — use export or this flag only when you need markup."),
|
|
50
76
|
}),
|
|
51
77
|
}, async (args) => {
|
|
52
78
|
const { data, error } = await client.emails.getGenerationStatus(args.conversationId);
|
|
53
79
|
if (error)
|
|
54
80
|
return toolError(error.message);
|
|
55
|
-
return
|
|
81
|
+
return toolResultWithImages(decorateEmailPayload(data, { includeHtml: args.includeHtml }), "detail");
|
|
56
82
|
});
|
|
57
83
|
}
|
|
58
84
|
if (canUse(grantedPermissions, ["email:send"])) {
|
|
@@ -88,7 +114,7 @@ export function registerGenerateTools(server, client, config, grantedPermissions
|
|
|
88
114
|
if (canUse(grantedPermissions, ["email:read"])) {
|
|
89
115
|
server.registerTool("migma_list_emails", {
|
|
90
116
|
title: "List Emails",
|
|
91
|
-
description: "List generated email designs for a project (drafts in the canvas). Returns conversationId, title, subject,
|
|
117
|
+
description: "List generated email designs for a project (drafts in the canvas). Returns preview images plus conversationId, title, subject, appUrl, and screenshotStatus. Show the images. Use this to answer 'what emails do we have?'. Not campaigns — those are audience sends via migma_list_campaigns.",
|
|
92
118
|
annotations: { readOnlyHint: true },
|
|
93
119
|
inputSchema: z.object({
|
|
94
120
|
projectId: z
|
|
@@ -128,28 +154,32 @@ export function registerGenerateTools(server, client, config, grantedPermissions
|
|
|
128
154
|
});
|
|
129
155
|
if (error)
|
|
130
156
|
return toolError(error.message);
|
|
131
|
-
return
|
|
157
|
+
return toolResultWithImages(decorateEmailPayload(data), "list");
|
|
132
158
|
});
|
|
133
159
|
}
|
|
134
160
|
if (canUse(grantedPermissions, ["email:read"])) {
|
|
135
161
|
server.registerTool("migma_get_email", {
|
|
136
162
|
title: "Get Email",
|
|
137
|
-
description: "Fetch one generated email by emailId. Returns
|
|
163
|
+
description: "Fetch one generated email by emailId. Returns a preview image, subject, appUrl, screenshotStatus, and variable requirements. HTML is omitted unless includeHtml is true. Show the image to the user.",
|
|
138
164
|
annotations: { readOnlyHint: true },
|
|
139
165
|
inputSchema: z.object({
|
|
140
166
|
emailId: z.string().describe("Generated email ID from result.emails[].emailId"),
|
|
167
|
+
includeHtml: z
|
|
168
|
+
.boolean()
|
|
169
|
+
.optional()
|
|
170
|
+
.describe("Include full email HTML. Default false."),
|
|
141
171
|
}),
|
|
142
172
|
}, async (args) => {
|
|
143
173
|
const { data, error } = await client.emails.get(args.emailId);
|
|
144
174
|
if (error)
|
|
145
175
|
return toolError(error.message);
|
|
146
|
-
return
|
|
176
|
+
return toolResultWithImages(decorateEmailPayload(data, { includeHtml: args.includeHtml }), "detail");
|
|
147
177
|
});
|
|
148
178
|
}
|
|
149
179
|
if (canUse(grantedPermissions, ["email:write"])) {
|
|
150
180
|
server.registerTool("migma_edit_email", {
|
|
151
181
|
title: "Edit Email",
|
|
152
|
-
description: "Edit one generated email with a natural-language prompt. Returns
|
|
182
|
+
description: "Edit one generated email with a natural-language prompt. Returns a preview image, subject, appUrl, and screenshotStatus. HTML is omitted unless includeHtml is true. Show the image. Charges 0.5 email credit after the edit persists.",
|
|
153
183
|
inputSchema: z.object({
|
|
154
184
|
emailId: z.string().describe("Generated email ID from result.emails[].emailId"),
|
|
155
185
|
prompt: z
|
|
@@ -157,6 +187,10 @@ export function registerGenerateTools(server, client, config, grantedPermissions
|
|
|
157
187
|
.min(1)
|
|
158
188
|
.describe("Edit instruction, e.g. 'Make the welcome email shorter and more transactional.'"),
|
|
159
189
|
label: z.string().optional().describe("Optional version label for this edit."),
|
|
190
|
+
includeHtml: z
|
|
191
|
+
.boolean()
|
|
192
|
+
.optional()
|
|
193
|
+
.describe("Include full email HTML. Default false."),
|
|
160
194
|
}),
|
|
161
195
|
}, async (args) => {
|
|
162
196
|
const emails = client.emails;
|
|
@@ -166,7 +200,7 @@ export function registerGenerateTools(server, client, config, grantedPermissions
|
|
|
166
200
|
});
|
|
167
201
|
if (error)
|
|
168
202
|
return toolError(error.message);
|
|
169
|
-
return
|
|
203
|
+
return toolResultWithImages(decorateEmailPayload(data, { includeHtml: args.includeHtml }), "detail");
|
|
170
204
|
});
|
|
171
205
|
}
|
|
172
206
|
if (canUse(grantedPermissions, ["email:read"])) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate.js","sourceRoot":"","sources":["../../src/tools/generate.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"generate.js","sourceRoot":"","sources":["../../src/tools/generate.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"projects.d.ts","sourceRoot":"","sources":["../../src/tools/projects.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAEnC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"projects.d.ts","sourceRoot":"","sources":["../../src/tools/projects.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAEnC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAW3C,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,SAAS,EACjB,MAAM,EAAE,KAAK,EACb,MAAM,EAAE,MAAM,EACd,kBAAkB,CAAC,EAAE,MAAM,EAAE,QAqH9B"}
|
package/build/tools/projects.js
CHANGED
|
@@ -1,19 +1,24 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
2
|
import { canUse } from "../permissions.js";
|
|
3
|
+
import { compactProjectList, slimProject } from "./agent-payload.js";
|
|
3
4
|
export function registerProjectTools(server, client, config, grantedPermissions) {
|
|
4
5
|
if (canUse(grantedPermissions, ["email:read"])) {
|
|
5
6
|
server.registerTool("migma_list_projects", {
|
|
6
7
|
title: "List Projects",
|
|
7
|
-
description: "List
|
|
8
|
+
description: "List Migma brands. Compact rows: id, name, domain, status, updatedAt. Names can repeat — use id + domain. Pass search to find a brand without paging.",
|
|
8
9
|
annotations: { readOnlyHint: true },
|
|
9
10
|
inputSchema: z.object({
|
|
11
|
+
search: z
|
|
12
|
+
.string()
|
|
13
|
+
.optional()
|
|
14
|
+
.describe("Filter by name, domain, or id (e.g. 'Osmo Studio')."),
|
|
10
15
|
limit: z
|
|
11
16
|
.number()
|
|
12
17
|
.int()
|
|
13
18
|
.min(1)
|
|
14
19
|
.max(100)
|
|
15
20
|
.optional()
|
|
16
|
-
.describe("Max results (default 20)"),
|
|
21
|
+
.describe("Max results (default 20; search fetches up to 100 then filters)"),
|
|
17
22
|
offset: z
|
|
18
23
|
.number()
|
|
19
24
|
.int()
|
|
@@ -23,18 +28,18 @@ export function registerProjectTools(server, client, config, grantedPermissions)
|
|
|
23
28
|
}),
|
|
24
29
|
}, async (args) => {
|
|
25
30
|
const { data, error } = await client.projects.list({
|
|
26
|
-
limit: args.limit,
|
|
27
|
-
offset: args.offset,
|
|
31
|
+
limit: args.search ? 100 : args.limit,
|
|
32
|
+
offset: args.search ? 0 : args.offset,
|
|
28
33
|
});
|
|
29
34
|
if (error)
|
|
30
35
|
return toolError(error.message);
|
|
31
|
-
return toolResult(data);
|
|
36
|
+
return toolResult(compactProjectList(data, args.search));
|
|
32
37
|
});
|
|
33
38
|
}
|
|
34
39
|
if (canUse(grantedPermissions, ["email:read"])) {
|
|
35
40
|
server.registerTool("migma_get_project", {
|
|
36
41
|
title: "Get Project Details",
|
|
37
|
-
description: "Get brand details
|
|
42
|
+
description: "Get brand details: colors, fonts, logos, voice. Knowledge base, image library, and leftover email inventory are omitted. To list designed emails use migma_list_emails. To list audience sends use migma_list_campaigns.",
|
|
38
43
|
annotations: { readOnlyHint: true },
|
|
39
44
|
inputSchema: z.object({
|
|
40
45
|
projectId: z.string().describe("The project ID"),
|
|
@@ -43,7 +48,7 @@ export function registerProjectTools(server, client, config, grantedPermissions)
|
|
|
43
48
|
const { data, error } = await client.projects.get(args.projectId);
|
|
44
49
|
if (error)
|
|
45
50
|
return toolError(error.message);
|
|
46
|
-
return toolResult(
|
|
51
|
+
return toolResult(slimProject(data));
|
|
47
52
|
});
|
|
48
53
|
}
|
|
49
54
|
if (canUse(grantedPermissions, ["project:write", "email:read"])) {
|
|
@@ -91,12 +96,6 @@ export function registerProjectTools(server, client, config, grantedPermissions)
|
|
|
91
96
|
});
|
|
92
97
|
}
|
|
93
98
|
}
|
|
94
|
-
function stripStaleProjectInventory(data) {
|
|
95
|
-
if (!data || typeof data !== "object")
|
|
96
|
-
return data;
|
|
97
|
-
const { templateCount: _templateCount, templates: _templates, emails: _emails, ...brand } = data;
|
|
98
|
-
return brand;
|
|
99
|
-
}
|
|
100
99
|
function toolResult(data) {
|
|
101
100
|
return {
|
|
102
101
|
content: [
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"projects.js","sourceRoot":"","sources":["../../src/tools/projects.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"projects.js","sourceRoot":"","sources":["../../src/tools/projects.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AASrE,MAAM,UAAU,oBAAoB,CAClC,MAAiB,EACjB,MAAa,EACb,MAAc,EACd,kBAA6B;IAE7B,IAAI,MAAM,CAAC,kBAAkB,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC;QAC/C,MAAM,CAAC,YAAY,CACjB,qBAAqB,EACrB;YACE,KAAK,EAAE,eAAe;YACtB,WAAW,EACT,uJAAuJ;YACzJ,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE;YACnC,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;gBACpB,MAAM,EAAE,CAAC;qBACN,MAAM,EAAE;qBACR,QAAQ,EAAE;qBACV,QAAQ,CAAC,qDAAqD,CAAC;gBAClE,KAAK,EAAE,CAAC;qBACL,MAAM,EAAE;qBACR,GAAG,EAAE;qBACL,GAAG,CAAC,CAAC,CAAC;qBACN,GAAG,CAAC,GAAG,CAAC;qBACR,QAAQ,EAAE;qBACV,QAAQ,CAAC,iEAAiE,CAAC;gBAC9E,MAAM,EAAE,CAAC;qBACN,MAAM,EAAE;qBACR,GAAG,EAAE;qBACL,GAAG,CAAC,CAAC,CAAC;qBACN,QAAQ,EAAE;qBACV,QAAQ,CAAC,mBAAmB,CAAC;aACjC,CAAC;SACH,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;YACb,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;gBACjD,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK;gBACrC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM;aACtC,CAAC,CAAC;YACH,IAAI,KAAK;gBAAE,OAAO,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAC3C,OAAO,UAAU,CAAC,kBAAkB,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;QAC3D,CAAC,CACF,CAAC;IACJ,CAAC;IAED,IAAI,MAAM,CAAC,kBAAkB,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC;QAC/C,MAAM,CAAC,YAAY,CACjB,mBAAmB,EACnB;YACE,KAAK,EAAE,qBAAqB;YAC5B,WAAW,EACT,0NAA0N;YAC5N,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE;YACnC,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;gBACpB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC;aACjD,CAAC;SACH,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;YACb,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAClE,IAAI,KAAK;gBAAE,OAAO,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAC3C,OAAO,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;QACvC,CAAC,CACF,CAAC;IACJ,CAAC;IAED,IAAI,MAAM,CAAC,kBAAkB,EAAE,CAAC,eAAe,EAAE,YAAY,CAAC,CAAC,EAAE,CAAC;QAChE,MAAM,CAAC,YAAY,CACjB,oBAAoB,EACpB;YACE,KAAK,EAAE,cAAc;YACrB,WAAW,EACT,+HAA+H;YACjI,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;gBACpB,IAAI,EAAE,CAAC;qBACJ,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;qBACjB,GAAG,CAAC,CAAC,CAAC;qBACN,GAAG,CAAC,EAAE,CAAC;qBACP,QAAQ,CAAC,mCAAmC,CAAC;aACjD,CAAC;SACH,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;YACb,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC;gBAC1D,IAAI,EAAE,IAAI,CAAC,IAAI;aAChB,CAAC,CAAC;YACH,IAAI,KAAK;gBAAE,OAAO,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAC3C,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC;QAC1B,CAAC,CACF,CAAC;IACJ,CAAC;IAED,IAAI,MAAM,CAAC,kBAAkB,EAAE,CAAC,eAAe,CAAC,CAAC,EAAE,CAAC;QAClD,MAAM,CAAC,YAAY,CACjB,yBAAyB,EACzB;YACE,KAAK,EAAE,2BAA2B;YAClC,WAAW,EACT,4TAA4T;YAC9T,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE;YACnC,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;gBACpB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC;gBAChD,SAAS,EAAE,CAAC;qBACT,MAAM,EAAE;qBACR,QAAQ,EAAE;qBACV,QAAQ,CAAC,qDAAqD,CAAC;gBAClE,GAAG,EAAE,CAAC;qBACH,MAAM,EAAE;qBACR,QAAQ,EAAE;qBACV,QAAQ,CAAC,sDAAsD,CAAC;aACpE,CAAC;SACH,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;YACb,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAqC,CAAC;YAC9D,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,QAAQ,CAAC,YAAY,CACjD,IAAI,CAAC,SAAS,EACd,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAC7C,CAAC;YACF,IAAI,KAAK;gBAAE,OAAO,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAC3C,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC;QAC1B,CAAC,CACF,CAAC;IACJ,CAAC;AACH,CAAC;AAED,SAAS,UAAU,CAAC,IAAa;IAC/B,OAAO;QACL,OAAO,EAAE;YACP,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE;SAC/D;KACF,CAAC;AACJ,CAAC;AAED,SAAS,SAAS,CAAC,OAAe;IAChC,OAAO;QACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;QACnD,OAAO,EAAE,IAAI;KACd,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../src/tools/validate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../src/tools/validate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AA0DnC,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,SAAS,EACjB,MAAM,EAAE,KAAK,EACb,kBAAkB,CAAC,EAAE,MAAM,EAAE,QA+D9B"}
|