@migma/mcp 1.8.2 → 1.9.1-automations.1
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/README.md +22 -0
- package/build/index.d.ts.map +1 -1
- package/build/index.js +7 -0
- package/build/index.js.map +1 -1
- package/build/prompts/index.d.ts.map +1 -1
- package/build/prompts/index.js +14 -0
- package/build/prompts/index.js.map +1 -1
- package/build/tools/__tests__/automations.test.d.ts +2 -0
- package/build/tools/__tests__/automations.test.d.ts.map +1 -0
- package/build/tools/__tests__/automations.test.js +259 -0
- package/build/tools/__tests__/automations.test.js.map +1 -0
- package/build/tools/__tests__/catalog.test.js +4 -0
- package/build/tools/__tests__/catalog.test.js.map +1 -1
- package/build/tools/__tests__/forms.test.d.ts +2 -0
- package/build/tools/__tests__/forms.test.d.ts.map +1 -0
- package/build/tools/__tests__/forms.test.js +127 -0
- package/build/tools/__tests__/forms.test.js.map +1 -0
- package/build/tools/__tests__/review-annotations.test.js +6 -1
- package/build/tools/__tests__/review-annotations.test.js.map +1 -1
- package/build/tools/__tests__/websites.test.d.ts +2 -0
- package/build/tools/__tests__/websites.test.d.ts.map +1 -0
- package/build/tools/__tests__/websites.test.js +138 -0
- package/build/tools/__tests__/websites.test.js.map +1 -0
- package/build/tools/automations.d.ts +22 -0
- package/build/tools/automations.d.ts.map +1 -0
- package/build/tools/automations.js +134 -0
- package/build/tools/automations.js.map +1 -0
- package/build/tools/capabilities.d.ts +2 -0
- package/build/tools/capabilities.d.ts.map +1 -1
- package/build/tools/capabilities.js +49 -1
- package/build/tools/capabilities.js.map +1 -1
- package/build/tools/forms.d.ts +6 -0
- package/build/tools/forms.d.ts.map +1 -0
- package/build/tools/forms.js +97 -0
- package/build/tools/forms.js.map +1 -0
- package/build/tools/websites.d.ts +4 -0
- package/build/tools/websites.d.ts.map +1 -0
- package/build/tools/websites.js +114 -0
- package/build/tools/websites.js.map +1 -0
- package/package.json +3 -3
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
import assert from 'node:assert/strict';
|
|
2
|
+
import test from 'node:test';
|
|
3
|
+
import { createMigmaMcpServer } from '../../index.js';
|
|
4
|
+
import { getToolRequiredScopes } from '../capabilities.js';
|
|
5
|
+
function tools(permissions) {
|
|
6
|
+
return createMigmaMcpServer({ config: { apiKey: 'test-key', baseUrl: 'https://api.example.test/v1', projectId: 'brand' }, permissions })._registeredTools;
|
|
7
|
+
}
|
|
8
|
+
const spec = {
|
|
9
|
+
kind: 'subscribe', confirmation: { mode: 'message', value: 'Thanks' }, styleTokens: {},
|
|
10
|
+
steps: [{ id: 'signup', headline: 'Join', ctaLabel: 'Join', fields: [{ key: 'email', label: 'Email', type: 'email', required: true }] }],
|
|
11
|
+
};
|
|
12
|
+
test('form tools follow read, write and contact-data scopes', () => {
|
|
13
|
+
const read = tools(['campaign:read']);
|
|
14
|
+
assert.ok(read.migma_list_forms);
|
|
15
|
+
assert.ok(read.migma_get_form);
|
|
16
|
+
assert.equal(read.migma_create_form, undefined);
|
|
17
|
+
assert.equal(read.migma_list_form_submissions, undefined, 'Submissions contain contact data');
|
|
18
|
+
assert.ok(tools(['campaign:read', 'audience:read']).migma_list_form_submissions);
|
|
19
|
+
assert.deepEqual(getToolRequiredScopes('migma_list_form_submissions'), ['campaign:read', 'audience:read']);
|
|
20
|
+
assert.deepEqual(getToolRequiredScopes('migma_publish_form'), ['campaign:write']);
|
|
21
|
+
assert.equal(tools(['campaign:write']).migma_submit_form, undefined, 'Submitting writes contacts');
|
|
22
|
+
assert.ok(tools(['campaign:write', 'audience:write']).migma_submit_form);
|
|
23
|
+
assert.deepEqual(getToolRequiredScopes('migma_submit_form'), ['campaign:write', 'audience:write']);
|
|
24
|
+
const all = tools();
|
|
25
|
+
assert.equal(all.migma_publish_form.annotations.openWorldHint, true, 'Publishing makes the form public');
|
|
26
|
+
assert.equal(all.migma_delete_form.annotations.destructiveHint, true);
|
|
27
|
+
assert.equal(all.migma_create_form.annotations.idempotentHint, false);
|
|
28
|
+
assert.equal(all.migma_list_forms.annotations.readOnlyHint, true);
|
|
29
|
+
});
|
|
30
|
+
test('form inputs reject unknown fields and invalid specs before transport', () => {
|
|
31
|
+
const create = tools().migma_create_form.inputSchema;
|
|
32
|
+
assert.equal(create.safeParse({ spec }).success, true);
|
|
33
|
+
assert.equal(create.safeParse({ spec: { ...spec, steps: [] } }).success, false);
|
|
34
|
+
assert.equal(create.safeParse({ spec: { ...spec, confirmation: { mode: 'popup', value: 'x' } } }).success, false);
|
|
35
|
+
assert.equal(create.safeParse({ spec, userId: 'owner' }).success, false);
|
|
36
|
+
const field = (key) => ({ ...spec, steps: [{ ...spec.steps[0], fields: [{ key, label: 'Email', type: 'email', required: true }] }] });
|
|
37
|
+
assert.equal(create.safeParse({ spec: field('1email') }).success, false);
|
|
38
|
+
const update = tools().migma_update_form.inputSchema;
|
|
39
|
+
assert.equal(update.safeParse({ formId: 'form', spec: { confirmation: { mode: 'message', value: 'Welcome' } } }).success, true);
|
|
40
|
+
assert.equal(create.safeParse({ spec, name: 'Spring waitlist' }).success, true);
|
|
41
|
+
assert.equal(create.safeParse({ spec, name: 'x'.repeat(121) }).success, false);
|
|
42
|
+
assert.equal(create.safeParse({ spec, name: ' ' }).success, false);
|
|
43
|
+
assert.equal(update.safeParse({ formId: 'form', name: 'Summer waitlist' }).success, true);
|
|
44
|
+
assert.equal(update.safeParse({ formId: 'form', name: null }).success, true, 'null clears the name');
|
|
45
|
+
});
|
|
46
|
+
test('form writes send one replay key per call, the brand and only supplied fields', async (t) => {
|
|
47
|
+
const calls = [];
|
|
48
|
+
t.mock.method(globalThis, 'fetch', async (url, init) => {
|
|
49
|
+
calls.push({ url, method: init.method, key: init.headers['Idempotency-Key'], body: init.body });
|
|
50
|
+
return new Response(JSON.stringify({ success: true, data: { id: 'form', status: 'draft' } }), { status: 200 });
|
|
51
|
+
});
|
|
52
|
+
const all = tools();
|
|
53
|
+
await all.migma_create_form.handler({ spec, tagIds: ['tag'] }, {});
|
|
54
|
+
await all.migma_update_form.handler({ formId: 'form', spec: { confirmation: { mode: 'message', value: 'Welcome' } } }, {});
|
|
55
|
+
await all.migma_publish_form.handler({ formId: 'form' }, {});
|
|
56
|
+
await all.migma_pause_form.handler({ formId: 'form', idempotency_key: 'pause-1' }, {});
|
|
57
|
+
await all.migma_delete_form.handler({ formId: 'form' }, {});
|
|
58
|
+
assert.deepEqual(calls.map(call => [call.method, call.url]), [
|
|
59
|
+
['POST', 'https://api.example.test/v1/forms'],
|
|
60
|
+
['PATCH', 'https://api.example.test/v1/forms/form'],
|
|
61
|
+
['POST', 'https://api.example.test/v1/forms/form/publish'],
|
|
62
|
+
['POST', 'https://api.example.test/v1/forms/form/pause'],
|
|
63
|
+
['DELETE', 'https://api.example.test/v1/forms/form'],
|
|
64
|
+
]);
|
|
65
|
+
assert.deepEqual(JSON.parse(calls[0].body), { projectId: 'brand', spec, tagIds: ['tag'] });
|
|
66
|
+
assert.deepEqual(JSON.parse(calls[1].body), { spec: { confirmation: { mode: 'message', value: 'Welcome' } } });
|
|
67
|
+
assert.equal(new Set(calls.map(call => call.key)).size, 5);
|
|
68
|
+
assert.ok(calls.every(call => call.key));
|
|
69
|
+
assert.equal(calls[3].key, 'pause-1');
|
|
70
|
+
await all.migma_create_form.handler({ spec, name: 'Spring waitlist' }, {});
|
|
71
|
+
await all.migma_update_form.handler({ formId: 'form', name: 'Summer waitlist' }, {});
|
|
72
|
+
assert.equal(JSON.parse(calls[5].body).name, 'Spring waitlist');
|
|
73
|
+
assert.deepEqual(JSON.parse(calls[6].body), { name: 'Summer waitlist' }, 'A rename sends only the name');
|
|
74
|
+
});
|
|
75
|
+
test('submitting a form sends one replay key per call and only the signup', async (t) => {
|
|
76
|
+
const calls = [];
|
|
77
|
+
t.mock.method(globalThis, 'fetch', async (url, init) => {
|
|
78
|
+
calls.push({ url, method: init.method, key: init.headers['Idempotency-Key'], body: init.body });
|
|
79
|
+
return new Response(JSON.stringify({ success: true, data: { formId: 'form', submissionId: 'hash', state: 'received', duplicate: false } }), { status: 201 });
|
|
80
|
+
});
|
|
81
|
+
const submit = tools().migma_submit_form;
|
|
82
|
+
const args = {
|
|
83
|
+
formId: 'form',
|
|
84
|
+
email: 'ada@example.com',
|
|
85
|
+
fields: { firstName: 'Ada', consent: true },
|
|
86
|
+
attribution: { utmSource: 'launch' },
|
|
87
|
+
consent: { ip: '203.0.113.10', userAgent: 'Signup UI/1.0' },
|
|
88
|
+
};
|
|
89
|
+
assert.equal(submit.inputSchema.safeParse(args).success, true);
|
|
90
|
+
assert.equal(submit.inputSchema.safeParse({ ...args, status: 'subscribed' }).success, false, 'Callers cannot set a status');
|
|
91
|
+
assert.equal(submit.inputSchema.safeParse({ ...args, attribution: { source: 'x' } }).success, false);
|
|
92
|
+
assert.equal(submit.inputSchema.safeParse({ ...args, consent: { ip: 'not-an-ip' } }).success, false);
|
|
93
|
+
assert.equal(submit.inputSchema.safeParse({ ...args, consent: { userAgent: 'x'.repeat(1001) } }).success, false);
|
|
94
|
+
assert.equal(submit.inputSchema.safeParse({ ...args, consent: { ip: '203.0.113.10', forwardedFor: '198.51.100.2' } }).success, false);
|
|
95
|
+
assert.equal(submit.inputSchema.safeParse({ formId: 'form', email: 'not-an-email' }).success, false);
|
|
96
|
+
const result = await submit.handler(args, {});
|
|
97
|
+
await submit.handler({ ...args, idempotency_key: 'signup-1' }, {});
|
|
98
|
+
assert.deepEqual(JSON.parse(result.content[0].text), { formId: 'form', submissionId: 'hash', state: 'received', duplicate: false });
|
|
99
|
+
assert.deepEqual(calls.map(call => [call.method, call.url]), Array(2).fill(['POST', 'https://api.example.test/v1/forms/form/submissions']));
|
|
100
|
+
assert.deepEqual(JSON.parse(calls[0].body), {
|
|
101
|
+
email: 'ada@example.com',
|
|
102
|
+
fields: { firstName: 'Ada', consent: true },
|
|
103
|
+
attribution: { utmSource: 'launch' },
|
|
104
|
+
consent: { ip: '203.0.113.10', userAgent: 'Signup UI/1.0' },
|
|
105
|
+
});
|
|
106
|
+
assert.ok(calls[0].key);
|
|
107
|
+
assert.equal(calls[1].key, 'signup-1');
|
|
108
|
+
});
|
|
109
|
+
test('a form used by an enabled automation reports the blocking flows', async (t) => {
|
|
110
|
+
const data = { automations: [{ id: 'flow', name: 'Welcome', link: 'https://migma.ai/chat?automation=flow' }] };
|
|
111
|
+
t.mock.method(globalThis, 'fetch', async () => new Response(JSON.stringify({ success: false, error: 'The automation "Welcome" starts when this form is used. Pause it first.', code: 'FORM_USED_BY_AUTOMATION', data }), { status: 409 }));
|
|
112
|
+
const result = await tools().migma_pause_form.handler({ formId: 'form' }, {});
|
|
113
|
+
assert.equal(result.isError, true);
|
|
114
|
+
assert.deepEqual(result.structuredContent, { error: { message: 'The automation "Welcome" starts when this form is used. Pause it first.', statusCode: 409, code: 'FORM_USED_BY_AUTOMATION', data } });
|
|
115
|
+
});
|
|
116
|
+
test('submissions and lists pass filters through', async (t) => {
|
|
117
|
+
const urls = [];
|
|
118
|
+
t.mock.method(globalThis, 'fetch', async (url) => { urls.push(url); return new Response(JSON.stringify({ success: true, data: {} }), { status: 200 }); });
|
|
119
|
+
const all = tools();
|
|
120
|
+
await all.migma_list_forms.handler({ status: 'live' }, {});
|
|
121
|
+
await all.migma_list_form_submissions.handler({ formId: 'form', limit: 10, cursor: 'next' }, {});
|
|
122
|
+
assert.deepEqual(urls, [
|
|
123
|
+
'https://api.example.test/v1/forms?projectId=brand&status=live',
|
|
124
|
+
'https://api.example.test/v1/forms/form/submissions?limit=10&cursor=next',
|
|
125
|
+
]);
|
|
126
|
+
});
|
|
127
|
+
//# sourceMappingURL=forms.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"forms.test.js","sourceRoot":"","sources":["../../../src/tools/__tests__/forms.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -30,6 +30,7 @@ const expected = {
|
|
|
30
30
|
migma_import_brand: [false, true, false, true], // Public website + irreversible configured webhook notification.
|
|
31
31
|
migma_generate_email: [false, true, false, true], // Public research/assets + configured webhook notifications.
|
|
32
32
|
migma_import_html: [false, true, false, true], // Renderer assets + configured webhooks + optional key.
|
|
33
|
+
migma_generate_automation: [false, false, false, false], // Optional key; unkeyed calls allocate distinct replay identities.
|
|
33
34
|
migma_edit_email: [false, true, false, true], // Rewrites content; public renderer assets; fresh key if omitted.
|
|
34
35
|
migma_export_pdf: [false, false, false, true], // Persists export, rendering requests public assets.
|
|
35
36
|
migma_export_png: [false, false, false, true], // Persists export, rendering requests public assets.
|
|
@@ -39,6 +40,10 @@ const expected = {
|
|
|
39
40
|
migma_provision_stream: [false, true, false, true], // Existing SES identity can have DKIM restarted.
|
|
40
41
|
migma_setup_domain: [false, true, false, true], // Same existing-provider DKIM path as provision_stream.
|
|
41
42
|
migma_create_contact_export: [false, false, true, false], // Required nonempty replay key; bounded private CSV job.
|
|
43
|
+
migma_publish_form: [false, true, false, true], // Replaces the public hosted form and embeds.
|
|
44
|
+
migma_delete_form: [false, true, false, false], // Removes the form; hosted page and embeds stop working.
|
|
45
|
+
migma_pause_form: [false, false, true, false], // Paused -> paused changes nothing.
|
|
46
|
+
migma_submit_form: [false, true, true, true], // Can email a confirmation link and start automations; a repeat records nothing new.
|
|
42
47
|
};
|
|
43
48
|
test("OpenAI tools/list serializes behavior-based annotations, including indirect effects", async () => {
|
|
44
49
|
const server = createOpenAIMcpServer({ config });
|
|
@@ -49,7 +54,7 @@ test("OpenAI tools/list serializes behavior-based annotations, including indirec
|
|
|
49
54
|
await client.connect(clientTransport);
|
|
50
55
|
const { tools } = await client.listTools();
|
|
51
56
|
const wire = new Map(tools.map(tool => [tool.name, tool]));
|
|
52
|
-
assert.equal(tools.length,
|
|
57
|
+
assert.equal(tools.length, 99);
|
|
53
58
|
for (const tool of tools) {
|
|
54
59
|
assert.deepEqual(tool.annotations, getToolReviewAnnotations(tool.name), tool.name);
|
|
55
60
|
for (const key of ["readOnlyHint", "destructiveHint", "idempotentHint", "openWorldHint"]) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"review-annotations.test.js","sourceRoot":"","sources":["../../../src/tools/__tests__/review-annotations.test.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"review-annotations.test.js","sourceRoot":"","sources":["../../../src/tools/__tests__/review-annotations.test.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,oBAAoB,CAAC;AACxC,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAC;AAC1E,OAAO,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAC7E,OAAO,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AAQ9D,MAAM,MAAM,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,0BAA0B,EAAE,OAAO,EAAE,6BAA6B,EAAE,CAAC;AACjH,SAAS,QAAQ,CAAC,SAAiB,EAAE;IACnC,OAAQ,oBAAoB,CAAC,EAAE,MAAM,EAAE,MAAe,EAAE,MAAM,EAAE,CAE9D,CAAC,gBAAgB,CAAC;AACtB,CAAC;AAED,4DAA4D;AAC5D,4EAA4E;AAC5E,MAAM,QAAQ,GAAyD;IACrE,6BAA6B,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE,2DAA2D;IACvH,iBAAiB,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,4DAA4D;IAC3G,0BAA0B,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,qDAAqD;IAC7G,2BAA2B,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,2CAA2C;IACpG,kCAAkC,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,4EAA4E;IAC3I,mCAAmC,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,oEAAoE;IACrI,oBAAoB,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,+BAA+B;IACjF,sBAAsB,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE,mDAAmD;IACxG,wBAAwB,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE,8CAA8C;IACtG,oBAAoB,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,oDAAoD;IACrG,4BAA4B,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,EAAE,wBAAwB;IAClF,6BAA6B,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,EAAE,wCAAwC;IACnG,gBAAgB,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,8CAA8C;IAC5F,qBAAqB,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE,kDAAkD;IACvG,mBAAmB,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,oEAAoE;IACpH,uBAAuB,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,yDAAyD;IAC9G,kBAAkB,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,iEAAiE;IACjH,oBAAoB,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,6DAA6D;IAC/G,iBAAiB,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,wDAAwD;IACvG,yBAAyB,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE,mEAAmE;IAC5H,gBAAgB,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,kEAAkE;IAChH,gBAAgB,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,qDAAqD;IACpG,gBAAgB,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,qDAAqD;IACpG,iBAAiB,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE,qDAAqD;IACtG,oBAAoB,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE,kEAAkE;IACtH,oBAAoB,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,gEAAgE;IAClH,sBAAsB,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,iDAAiD;IACrG,kBAAkB,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,wDAAwD;IACxG,2BAA2B,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,EAAE,yDAAyD;IACnH,kBAAkB,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,8CAA8C;IAC9F,iBAAiB,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE,yDAAyD;IACzG,gBAAgB,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,EAAE,oCAAoC;IACnF,iBAAiB,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,qFAAqF;CACpI,CAAC;AAEF,IAAI,CAAC,qFAAqF,EAAE,KAAK,IAAI,EAAE;IACrG,MAAM,MAAM,GAAG,qBAAqB,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;IACjD,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,EAAE,IAAI,EAAE,mBAAmB,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC;IACvE,MAAM,CAAC,eAAe,EAAE,eAAe,CAAC,GAAG,iBAAiB,CAAC,gBAAgB,EAAE,CAAC;IAChF,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;QACtC,MAAM,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;QACtC,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,SAAS,EAAE,CAAC;QAC3C,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;QAC3D,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QAC/B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,EAAE,wBAAwB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;YACnF,KAAK,MAAM,GAAG,IAAI,CAAC,cAAc,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,eAAe,CAAU,EAAE,CAAC;gBAClG,MAAM,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC,GAAG,CAAC,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC,IAAI,IAAI,GAAG,EAAE,CAAC,CAAC;YACjF,CAAC;QACH,CAAC;QACD,KAAK,MAAM,CAAC,IAAI,EAAE,CAAC,YAAY,EAAE,eAAe,EAAE,cAAc,EAAE,aAAa,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC9G,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,WAAW,EAAE,EAAE,YAAY,EAAE,eAAe,EAAE,cAAc,EAAE,aAAa,EAAE,EAAE,IAAI,CAAC,CAAC;QACxH,CAAC;QACD,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,mBAAmB,CAAC,EAAE,WAAW,IAAI,EAAE,EAAE,gCAAgC,CAAC,CAAC;QACjG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,4BAA4B,CAAC,EAAE,WAAW,IAAI,EAAE,EAAE,aAAa,CAAC,CAAC;QACvF,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,wBAAwB,CAAC,EAAE,WAAW,IAAI,EAAE,EAAE,yCAAyC,CAAC,CAAC;QAC/G,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,0BAA0B,CAAC,EAAE,WAAW,IAAI,EAAE,EAAE,oBAAoB,CAAC,CAAC;QAC5F,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,sBAAsB,CAAC,EAAE,WAAW,IAAI,EAAE,EAAE,cAAc,CAAC,CAAC;QAClF,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,sBAAsB,CAAC,EAAE,WAAW,IAAI,EAAE,EAAE,wBAAwB,CAAC,CAAC;QAC5F,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,oBAAoB,CAAC,EAAE,WAAW,IAAI,EAAE,EAAE,kCAAkC,CAAC,CAAC;IACtG,CAAC;YAAS,CAAC;QACT,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;QACrB,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;IACvB,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,qFAAqF,EAAE,KAAK,IAAI,EAAE;IACrG,MAAM,KAAK,GAAqC,EAAE,CAAC;IACnD,MAAM,MAAM,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,KAAK,EAAE,GAAG,IAAe,EAAE,EAAE;QAC5D,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAChC,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,CAAC;IACvF,CAAC,CAAC;IACF,MAAM,KAAK,GAAG,QAAQ,CAAC;QACrB,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE;QACjC,SAAS,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,UAAU,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,UAAU,CAAC,EAAE;QACvE,MAAM,EAAE,EAAE,UAAU,EAAE,MAAM,CAAC,QAAQ,CAAC,EAAE,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE;QACnE,QAAQ,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,SAAS,CAAC,EAAE,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE;KACpE,CAAC,CAAC;IACH,MAAM,KAAK,GAAG;QACZ,EAAE,IAAI,EAAE,kBAAkB,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,aAAa,EAAE,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,IAAI,EAAE,mBAAmB,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE;QACtM,EAAE,IAAI,EAAE,uBAAuB,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,IAAI,EAAE,mBAAmB,EAAE,QAAQ,EAAE,SAAS,EAAE,aAAa,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,EAAE;QACxM,EAAE,IAAI,EAAE,yBAAyB,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,UAAU,EAAE,YAAY,EAAE,WAAW,EAAE,sBAAsB,EAAE,EAAE;QAC9H,EAAE,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,EAAE;QAC7E,EAAE,IAAI,EAAE,kBAAkB,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,cAAc,EAAE,EAAE;QAChG,EAAE,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,kBAAkB,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE;QACrG,EAAE,IAAI,EAAE,4BAA4B,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,WAAW,EAAE,CAAC,EAAE,KAAK,EAAE,kBAAkB,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;KAC/H,CAAC;IACF,KAAK,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,KAAK,EAAE,CAAC;QACzC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QAC1E,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC,cAAc,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;QAClE,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAChC,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAChC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;QAC1C,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACnD,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;YACpB,MAAM,IAAI,GAAG,OAA4C,CAAC;YAC1D,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC;YAClC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,cAAc,EAAE,8CAA8C,CAAC,CAAC;QAClH,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC,EAAE,GAAG,IAAI,uCAAuC,CAAC,CAAC;QACpG,CAAC;QACD,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,EAAE,GAAG,IAAI,EAAE,eAAe,EAAE,YAAY,EAAE,CAAC,CAAC;QACtE,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,cAAc,EAAE,YAAY,EAAE,EAAE,GAAG,IAAI,oCAAoC,CAAC,CAAC;IACzH,CAAC;IACD,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,2BAA2B,CAAC,WAAW,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IACzF,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,2BAA2B,CAAC,WAAW,CAAC,SAAS,CAAC,EAAE,eAAe,EAAE,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAC9G,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,2BAA2B,CAAC,WAAW,CAAC,SAAS,CAAC,EAAE,eAAe,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACvH,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,2BAA2B,CAAC,WAAW,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;AACnF,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,+FAA+F,EAAE,KAAK,IAAI,EAAE;IAC/G,MAAM,aAAa,GAAG,UAAU,CAAC,KAAK,CAAC;IACvC,MAAM,OAAO,GAAc,EAAE,CAAC;IAC9B,UAAU,CAAC,KAAK,GAAG,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE;QACtC,OAAO,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;QACzC,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,UAAU,OAAO,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,CAAC,CAAC,CAAC;IACtH,CAAC,CAAC;IACF,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,QAAQ,EAAE,CAAC,mCAAmC,CAAC;QAC5D,MAAM,IAAI,GAAG,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;QAChH,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAC7D,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;QACrD,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACzB,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACzB,MAAM,IAAI,CAAC,OAAO,CAAC,EAAE,GAAG,IAAI,EAAE,eAAe,EAAE,aAAa,EAAE,CAAC,CAAC;QAChE,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC;IACpG,CAAC;YAAS,CAAC;QACT,UAAU,CAAC,KAAK,GAAG,aAAa,CAAC;IACnC,CAAC;AACH,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"websites.test.d.ts","sourceRoot":"","sources":["../../../src/tools/__tests__/websites.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
import assert from "node:assert/strict";
|
|
2
|
+
import test from "node:test";
|
|
3
|
+
import { createMigmaMcpServer } from "../../index.js";
|
|
4
|
+
const PROJECT_ID = "665f1e928c2a9e4d8f123123";
|
|
5
|
+
const WEBSITE_ID = "665f1e928c2a9e4d8f123456";
|
|
6
|
+
const site = {
|
|
7
|
+
id: WEBSITE_ID,
|
|
8
|
+
projectId: PROJECT_ID,
|
|
9
|
+
name: "Main storefront",
|
|
10
|
+
origins: ["https://shop.example.com"],
|
|
11
|
+
environment: "test",
|
|
12
|
+
status: "enabled",
|
|
13
|
+
collectorUrl: "https://collector.example.com",
|
|
14
|
+
createdAt: "2026-10-01T08:00:00.000Z",
|
|
15
|
+
updatedAt: "2026-10-01T08:00:00.000Z",
|
|
16
|
+
};
|
|
17
|
+
function registeredTools(client, permissions) {
|
|
18
|
+
return createMigmaMcpServer({
|
|
19
|
+
config: { apiKey: "test-key" },
|
|
20
|
+
client: client,
|
|
21
|
+
permissions,
|
|
22
|
+
})._registeredTools;
|
|
23
|
+
}
|
|
24
|
+
test("website tools follow audience scopes and never expose identity issuance", () => {
|
|
25
|
+
const client = { websites: {} };
|
|
26
|
+
const read = registeredTools(client, ["audience:read"]);
|
|
27
|
+
assert.ok(read.migma_list_websites);
|
|
28
|
+
assert.ok(read.migma_get_website_events);
|
|
29
|
+
assert.equal(read.migma_create_website, undefined);
|
|
30
|
+
assert.equal(read.migma_update_website, undefined);
|
|
31
|
+
const write = registeredTools(client, ["audience:write"]);
|
|
32
|
+
assert.ok(write.migma_create_website);
|
|
33
|
+
assert.ok(write.migma_update_website);
|
|
34
|
+
assert.equal(write.migma_list_websites, undefined);
|
|
35
|
+
assert.equal(write.migma_issue_website_identity, undefined);
|
|
36
|
+
});
|
|
37
|
+
test("website schemas enforce exact origins, IDs, bounds, and updates", () => {
|
|
38
|
+
const tools = registeredTools({ websites: {} });
|
|
39
|
+
const create = tools.migma_create_website.inputSchema;
|
|
40
|
+
assert.equal(create.safeParse({
|
|
41
|
+
projectId: PROJECT_ID,
|
|
42
|
+
name: "Main storefront",
|
|
43
|
+
origins: ["https://shop.example.com"],
|
|
44
|
+
environment: "test",
|
|
45
|
+
}).success, true);
|
|
46
|
+
assert.equal(create.safeParse({
|
|
47
|
+
projectId: PROJECT_ID,
|
|
48
|
+
name: "Main storefront",
|
|
49
|
+
origins: ["http://shop.example.com"],
|
|
50
|
+
environment: "test",
|
|
51
|
+
}).success, false);
|
|
52
|
+
assert.equal(create.safeParse({
|
|
53
|
+
projectId: PROJECT_ID,
|
|
54
|
+
name: "Main storefront",
|
|
55
|
+
origins: ["https://shop.example.com/path"],
|
|
56
|
+
environment: "test",
|
|
57
|
+
}).success, false);
|
|
58
|
+
assert.equal(create.safeParse({
|
|
59
|
+
projectId: PROJECT_ID,
|
|
60
|
+
name: "Main storefront",
|
|
61
|
+
origins: ["not a URL"],
|
|
62
|
+
environment: "test",
|
|
63
|
+
}).success, false);
|
|
64
|
+
assert.equal(create.safeParse({ name: "Missing project", origins: ["https://shop.example.com"], environment: "test" }).success, false);
|
|
65
|
+
assert.equal(tools.migma_update_website.inputSchema.safeParse({ websiteId: WEBSITE_ID }).success, false);
|
|
66
|
+
assert.equal(tools.migma_update_website.inputSchema.safeParse({ websiteId: WEBSITE_ID, status: "disabled" }).success, true);
|
|
67
|
+
});
|
|
68
|
+
test("website tools call the SDK with one stable creation key", async () => {
|
|
69
|
+
const calls = [];
|
|
70
|
+
const client = {
|
|
71
|
+
websites: {
|
|
72
|
+
async list(projectId) {
|
|
73
|
+
calls.push(["list", projectId]);
|
|
74
|
+
return { data: [site], error: null };
|
|
75
|
+
},
|
|
76
|
+
async create(input, key) {
|
|
77
|
+
calls.push(["create", input, key]);
|
|
78
|
+
return { data: site, error: null };
|
|
79
|
+
},
|
|
80
|
+
async update(id, input) {
|
|
81
|
+
calls.push(["update", id, input]);
|
|
82
|
+
return { data: { ...site, ...input }, error: null };
|
|
83
|
+
},
|
|
84
|
+
async events(id) {
|
|
85
|
+
calls.push(["events", id]);
|
|
86
|
+
return { data: { status: "available", events: [], sampleWindowHours: 24, sampledRows: 1000 }, error: null };
|
|
87
|
+
},
|
|
88
|
+
},
|
|
89
|
+
};
|
|
90
|
+
const tools = registeredTools(client);
|
|
91
|
+
await tools.migma_list_websites.handler({ projectId: PROJECT_ID }, {});
|
|
92
|
+
await tools.migma_create_website.handler({
|
|
93
|
+
projectId: PROJECT_ID,
|
|
94
|
+
name: site.name,
|
|
95
|
+
origins: site.origins,
|
|
96
|
+
environment: "test",
|
|
97
|
+
idempotency_key: "storefront-setup-1",
|
|
98
|
+
}, {});
|
|
99
|
+
await tools.migma_update_website.handler({ websiteId: WEBSITE_ID, status: "disabled" }, {});
|
|
100
|
+
const history = await tools.migma_get_website_events.handler({ websiteId: WEBSITE_ID }, {});
|
|
101
|
+
assert.deepEqual(calls, [
|
|
102
|
+
["list", PROJECT_ID],
|
|
103
|
+
["create", { projectId: PROJECT_ID, name: site.name, origins: site.origins, environment: "test" }, "storefront-setup-1"],
|
|
104
|
+
["update", WEBSITE_ID, { status: "disabled" }],
|
|
105
|
+
["events", WEBSITE_ID],
|
|
106
|
+
]);
|
|
107
|
+
assert.deepEqual(JSON.parse(history.content[0].text), {
|
|
108
|
+
status: "available",
|
|
109
|
+
events: [],
|
|
110
|
+
sampleWindowHours: 24,
|
|
111
|
+
sampledRows: 1000,
|
|
112
|
+
});
|
|
113
|
+
});
|
|
114
|
+
test("website creation without a caller key uses separate keys and does not advertise safe replay", async () => {
|
|
115
|
+
const keys = [];
|
|
116
|
+
const tools = registeredTools({
|
|
117
|
+
websites: {
|
|
118
|
+
async create(_input, key) {
|
|
119
|
+
keys.push(key);
|
|
120
|
+
return { data: site, error: null };
|
|
121
|
+
},
|
|
122
|
+
},
|
|
123
|
+
}, ["audience:write"]);
|
|
124
|
+
const input = {
|
|
125
|
+
projectId: PROJECT_ID,
|
|
126
|
+
name: site.name,
|
|
127
|
+
origins: site.origins,
|
|
128
|
+
environment: "test",
|
|
129
|
+
};
|
|
130
|
+
const result = await tools.migma_create_website.handler(input, {});
|
|
131
|
+
await tools.migma_create_website.handler(input, {});
|
|
132
|
+
assert.equal(result.isError, undefined);
|
|
133
|
+
assert.equal(tools.migma_create_website.annotations?.idempotentHint, false);
|
|
134
|
+
assert.equal(keys.length, 2);
|
|
135
|
+
assert.notEqual(keys[0], keys[1]);
|
|
136
|
+
assert.match(keys[0], /^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/);
|
|
137
|
+
});
|
|
138
|
+
//# sourceMappingURL=websites.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"websites.test.js","sourceRoot":"","sources":["../../../src/tools/__tests__/websites.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
2
|
+
import { MigmaClient, type Migma } from 'migma';
|
|
3
|
+
import type { Config } from '../config.js';
|
|
4
|
+
/** Public API failures keep their status, server code and data for the agent. */
|
|
5
|
+
export declare function publicApiToolError(error: unknown): {
|
|
6
|
+
content: {
|
|
7
|
+
type: "text";
|
|
8
|
+
text: string;
|
|
9
|
+
}[];
|
|
10
|
+
structuredContent: {
|
|
11
|
+
error: {
|
|
12
|
+
data?: Record<string, unknown> | undefined;
|
|
13
|
+
code?: string | undefined;
|
|
14
|
+
statusCode?: number | undefined;
|
|
15
|
+
message: string;
|
|
16
|
+
};
|
|
17
|
+
};
|
|
18
|
+
isError: boolean;
|
|
19
|
+
};
|
|
20
|
+
/** Uses the public transport so hosted MCP also works with older SDK hosts. */
|
|
21
|
+
export declare function registerAutomationTools(server: McpServer, resolverClient: Migma, config: Config, grantedPermissions?: string[], suppliedClient?: Pick<MigmaClient, 'get' | 'post' | 'put' | 'patch'>): void;
|
|
22
|
+
//# sourceMappingURL=automations.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"automations.d.ts","sourceRoot":"","sources":["../../src/tools/automations.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,EAAE,WAAW,EAAE,KAAK,KAAK,EAAE,MAAM,OAAO,CAAC;AAEhD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAI3C,iFAAiF;AACjF,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO;;;;;;;;;;;;;;EA4BhD;AAED,+EAA+E;AAC/E,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,SAAS,EACjB,cAAc,EAAE,KAAK,EACrB,MAAM,EAAE,MAAM,EACd,kBAAkB,CAAC,EAAE,MAAM,EAAE,EAC7B,cAAc,CAAC,EAAE,IAAI,CAAC,WAAW,EAAE,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,OAAO,CAAC,QAkIrE"}
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
import { randomUUID } from 'node:crypto';
|
|
2
|
+
import { MigmaClient } from 'migma';
|
|
3
|
+
import { z } from 'zod';
|
|
4
|
+
import { canUse } from '../permissions.js';
|
|
5
|
+
import { resolveProjectId } from './projects.js';
|
|
6
|
+
/** Public API failures keep their status, server code and data for the agent. */
|
|
7
|
+
export function publicApiToolError(error) {
|
|
8
|
+
const value = error !== null && typeof error === 'object'
|
|
9
|
+
? error
|
|
10
|
+
: {};
|
|
11
|
+
const message = error instanceof Error
|
|
12
|
+
? error.message
|
|
13
|
+
: typeof value.message === 'string'
|
|
14
|
+
? value.message
|
|
15
|
+
: 'Could not complete this automation request.';
|
|
16
|
+
const code = typeof value.serverCode === 'string'
|
|
17
|
+
? value.serverCode
|
|
18
|
+
: typeof value.code === 'string'
|
|
19
|
+
? value.code
|
|
20
|
+
: undefined;
|
|
21
|
+
const data = value.data !== null && typeof value.data === 'object' && !Array.isArray(value.data)
|
|
22
|
+
? value.data
|
|
23
|
+
: undefined;
|
|
24
|
+
const structured = {
|
|
25
|
+
message,
|
|
26
|
+
...(typeof value.statusCode === 'number' && { statusCode: value.statusCode }),
|
|
27
|
+
...(code !== undefined && { code }),
|
|
28
|
+
...(data !== undefined && { data }),
|
|
29
|
+
};
|
|
30
|
+
return {
|
|
31
|
+
content: [{ type: 'text', text: message }],
|
|
32
|
+
structuredContent: { error: structured },
|
|
33
|
+
isError: true,
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
/** Uses the public transport so hosted MCP also works with older SDK hosts. */
|
|
37
|
+
export function registerAutomationTools(server, resolverClient, config, grantedPermissions, suppliedClient) {
|
|
38
|
+
let transport = suppliedClient;
|
|
39
|
+
const client = () => transport ??= new MigmaClient(config.apiKey, {
|
|
40
|
+
baseUrl: config.baseUrl || 'https://api.migma.ai/v1', maxRetries: 2, retryDelay: 1000,
|
|
41
|
+
});
|
|
42
|
+
const project = z.string().optional().describe("Brand ID from migma_list_projects. Defaults to MIGMA_PROJECT_ID for local stdio, then the account's only brand.");
|
|
43
|
+
const id = z.string().min(1).describe('Automation ID returned by list, get, or generation status.');
|
|
44
|
+
const definitionHash = z.string().regex(/^[a-fA-F0-9]{64}$/).describe('Exact definitionHash returned by migma_get_automation for the flow the user reviewed. Never fetch a newer hash automatically.');
|
|
45
|
+
const day = z.string().regex(/^\d{4}-\d{2}-\d{2}$/).refine(value => {
|
|
46
|
+
const date = new Date(`${value}T00:00:00Z`);
|
|
47
|
+
return value >= '1970-01-01' && Number.isFinite(date.getTime()) && date.toISOString().slice(0, 10) === value;
|
|
48
|
+
}, 'Invalid calendar date');
|
|
49
|
+
const metricsInput = z.object({
|
|
50
|
+
automationId: id,
|
|
51
|
+
startDate: day.optional().describe('Inclusive start date, YYYY-MM-DD. Supply endDate and timezone too.'),
|
|
52
|
+
endDate: day.optional().describe('Inclusive end date, YYYY-MM-DD. Period may span at most 366 days.'),
|
|
53
|
+
timezone: z.string().min(1).max(100).refine(value => {
|
|
54
|
+
try {
|
|
55
|
+
new Intl.DateTimeFormat('en', { timeZone: value });
|
|
56
|
+
return true;
|
|
57
|
+
}
|
|
58
|
+
catch {
|
|
59
|
+
return false;
|
|
60
|
+
}
|
|
61
|
+
}, 'Invalid time zone').optional().describe('IANA time zone, for example Europe/Madrid. Required with dates.'),
|
|
62
|
+
}).superRefine((value, ctx) => {
|
|
63
|
+
const fields = ['startDate', 'endDate', 'timezone'];
|
|
64
|
+
if (!fields.some(field => value[field] !== undefined))
|
|
65
|
+
return;
|
|
66
|
+
for (const field of fields) {
|
|
67
|
+
if (value[field] === undefined)
|
|
68
|
+
ctx.addIssue({ code: z.ZodIssueCode.custom, path: [field], message: 'Supply startDate, endDate, and timezone together.' });
|
|
69
|
+
}
|
|
70
|
+
if (value.startDate && value.endDate && (value.startDate > value.endDate
|
|
71
|
+
|| Date.parse(value.endDate) - Date.parse(value.startDate) >= 366 * 86400000)) {
|
|
72
|
+
ctx.addIssue({ code: z.ZodIssueCode.custom, path: ['endDate'], message: 'Choose an ordered period of up to 366 days.' });
|
|
73
|
+
}
|
|
74
|
+
});
|
|
75
|
+
// Matches the public API: at most 20 filters, values only for value operators.
|
|
76
|
+
const propertyFilter = z.object({
|
|
77
|
+
path: z.string().trim().min(1).max(200),
|
|
78
|
+
op: z.enum(['eq', 'neq', 'gt', 'lt', 'gte', 'lte', 'contains', 'starts_with', 'ends_with', 'exists', 'is_empty']),
|
|
79
|
+
value: z.union([z.string(), z.number(), z.boolean()]).optional(),
|
|
80
|
+
}).strict().refine(filter => ['exists', 'is_empty'].includes(filter.op) || filter.value !== undefined, { message: 'value is required for this operator', path: ['value'] });
|
|
81
|
+
const trigger = z.object({ type: z.literal('event'), event: z.object({
|
|
82
|
+
name: z.string().trim().min(1), origin: z.string().trim().min(1).optional(), eventVersion: z.string().trim().min(1).optional(),
|
|
83
|
+
propertyFilters: z.array(propertyFilter).max(20).optional(),
|
|
84
|
+
}).strict() }).strict();
|
|
85
|
+
// One replay identity per tool call, reused by the transport's own retries.
|
|
86
|
+
const retryKey = z.string().min(1).max(100).optional().describe('Reuse the same key only when retrying this exact change after an uncertain result.');
|
|
87
|
+
const keyed = (args) => ({ idempotencyKey: args.idempotency_key || randomUUID() });
|
|
88
|
+
const path = (value) => `/automations/${encodeURIComponent(value)}`;
|
|
89
|
+
const projectId = (value) => resolveProjectId(resolverClient, config, value);
|
|
90
|
+
const register = (name, title, description, inputSchema, permissions, run) => {
|
|
91
|
+
if (!canUse(grantedPermissions, permissions))
|
|
92
|
+
return;
|
|
93
|
+
server.registerTool(name, { title, description, inputSchema }, async (args) => {
|
|
94
|
+
try {
|
|
95
|
+
const result = await run(args);
|
|
96
|
+
if (result.error)
|
|
97
|
+
return publicApiToolError(result.error);
|
|
98
|
+
return { content: [{ type: 'text', text: JSON.stringify(result.data) }] };
|
|
99
|
+
}
|
|
100
|
+
catch (error) {
|
|
101
|
+
return publicApiToolError(error);
|
|
102
|
+
}
|
|
103
|
+
});
|
|
104
|
+
};
|
|
105
|
+
const read = ['campaign:read'];
|
|
106
|
+
const write = ['campaign:write'];
|
|
107
|
+
register('migma_get_automation_capabilities', 'Automation Capabilities', 'Discover supported automation steps, real trigger events and connection requirements for a brand. Use before promising a trigger or integration.', z.object({ projectId: project }), read, async (args) => client().get('/automations/capabilities', { projectId: await projectId(args.projectId) }));
|
|
108
|
+
register('migma_list_automations', 'List Automations', 'Find saved automation drafts, active flows, and paused flows for a brand, newest edited first. Use nextCursor to continue a page. Archived flows are omitted unless includeArchived is true. Use the returned ID for follow-up work.', z.object({
|
|
109
|
+
projectId: project,
|
|
110
|
+
cursor: z.string().max(200).optional().describe('Opaque nextCursor returned by the previous page.'),
|
|
111
|
+
limit: z.number().int().min(1).max(200).optional().describe('Page size; defaults to 200.'),
|
|
112
|
+
includeArchived: z.boolean().optional().describe('Include archived flows; defaults to false.'),
|
|
113
|
+
}).strict(), read, async (args) => client().get('/automations', {
|
|
114
|
+
projectId: await projectId(args.projectId), cursor: args.cursor, limit: args.limit, includeArchived: args.includeArchived,
|
|
115
|
+
}));
|
|
116
|
+
register('migma_get_automation', 'Get Automation', 'Read an automation and its review link. Native reviewed flows include definitionHash; list summaries do not, and imported migration drafts can omit it. Keep an observed definitionHash with the reviewed flow because activation and edits require that exact value.', z.object({ automationId: id }), read, args => client().get(path(args.automationId)));
|
|
117
|
+
register('migma_get_automation_metrics', 'Automation Campaign Reports', 'Read delivery and unique human engagement. Supply startDate, endDate, and timezone together for the same send-date report as the canvas; resolve requested dates and timezone first. Omit all three only for lifetime metrics, returned with period:lifetime. Preserve cohort, window, coverage, revenue status, and reporting warnings. The period report counts every version of each email step (sends before an edit included) and returns bounced, unsubscribed and complained with their rates, attributed orders and net sales per delivered email per currency, plus definitions: explain numbers with those definitions. A null rate means nothing was delivered; sales are attributed (last click within 5 days), never proof the email caused them. Missing numbers are unavailable, never zero. Completed journeys are not delivery metrics; never add these to the same campaign totals.', metricsInput, read, async (args) => {
|
|
118
|
+
const { automationId, startDate, endDate, timezone } = metricsInput.parse(args);
|
|
119
|
+
if (startDate && endDate && timezone)
|
|
120
|
+
return client().get(`${path(automationId)}/report`, { startDate, endDate, timezone });
|
|
121
|
+
const result = await client().get(`${path(automationId)}/metrics`);
|
|
122
|
+
return result.error ? result : { ...result, data: { ...result.data, period: 'lifetime' } };
|
|
123
|
+
});
|
|
124
|
+
register('migma_generate_automation', 'Create Automation from Text or Image', 'Build a draft automation and branded emails from a brief or workflow screenshots. Preserves visible timing and branches; reports missing details. Returns a jobId: poll migma_get_automation_generation. Creates a draft that stays off. Use this for recurring/triggered journeys, not a standalone email design.', z.object({ projectId: project, brief: z.string().trim().min(1).max(12000), name: z.string().trim().min(1).max(160).optional(), emailCount: z.number().int().min(0).max(12).optional().describe('Number of emails; use 0 for an action-only journey with no email steps.'), imageUrls: z.array(z.string().url().max(2048).refine(value => new URL(value).protocol === 'https:', 'Use HTTPS image URLs')).max(5).optional().describe('Public HTTPS workflow screenshots supplied by the user. Never invent URLs.'), idempotency_key: z.string().min(1).max(100).optional().describe('Keep the same key when retrying the same submission.') }), ['campaign:write', 'email:write'], async (args) => client().post('/automations/generate', { projectId: await projectId(args.projectId), brief: args.brief, name: args.name, emailCount: args.emailCount, imageUrls: args.imageUrls }, { idempotencyKey: args.idempotency_key || randomUUID() }));
|
|
125
|
+
register('migma_get_automation_generation', 'Automation Generation Status', 'Poll the jobId from migma_generate_automation. On completion show the review link and unresolved details. A completed generation is still an off draft.', z.object({ jobId: z.string().min(1) }), read, args => client().get(`/automations/generations/${encodeURIComponent(args.jobId)}`));
|
|
126
|
+
register('migma_validate_automation', 'Check Automation Setup', 'Check graph, email assets, audience, triggers and sending setup. Prepares delivery drafts but never activates or sends. Show actionable blockers in plain language.', z.object({ automationId: id, idempotency_key: retryKey }), write, args => client().post(`${path(args.automationId)}/validate`, undefined, keyed(args)));
|
|
127
|
+
register('migma_activate_automation', 'Turn On Automation', 'Turn on the exact reviewed automation ONLY when the user explicitly asks to activate it. First call migma_get_automation, review the flow, and pass its definitionHash unchanged. Validate first. If AUTOMATION_GRAPH_CHANGED is returned, reload and review the changed flow before retrying. Never fetch a fresh hash automatically or treat creating a flow as activation consent.', z.object({ automationId: id, confirmed: z.literal(true).describe('True only when the user explicitly requested activation of this automation.'), expectedDefinitionHash: definitionHash, idempotency_key: retryKey }), write, args => client().post(`${path(args.automationId)}/activate`, { confirmed: args.confirmed, expectedDefinitionHash: args.expectedDefinitionHash }, keyed(args)));
|
|
128
|
+
register('migma_pause_automation', 'Pause Automation', 'Pause this flow when requested. Stops new entries and future automation steps; queued automation emails wait at the final delivery check. Messages already being sent to a provider cannot be recalled. Reactivate the unchanged flow to resume existing contacts.', z.object({ automationId: id, idempotency_key: retryKey }), write, args => client().post(`${path(args.automationId)}/pause`, undefined, keyed(args)));
|
|
129
|
+
register('migma_update_automation_trigger', 'Edit Automation Start Rule', 'Update the existing flow start rule after inspecting it with migma_get_automation. Pass the returned definitionHash unchanged and preserve filters the user did not ask to change (at most 20; values are strings, numbers or booleans). If AUTOMATION_GRAPH_CHANGED is returned, reload and review before retrying. Saves to the same canvas. Only draft/paused flows with no contacts in progress are editable; contacts in progress must finish or be cancelled in Migma under Results → Activity.', z.object({ automationId: id, expectedDefinitionHash: definitionHash, trigger, idempotency_key: retryKey }), write, args => client().put(`${path(args.automationId)}/trigger`, { trigger: args.trigger, expectedDefinitionHash: args.expectedDefinitionHash }, keyed(args)));
|
|
130
|
+
register('migma_update_automation_wait', 'Edit Automation Wait', 'Change one existing wait duration, preserving its connections. First inspect the flow with migma_get_automation, use the actual wait step ID, and pass its definitionHash unchanged. If AUTOMATION_GRAPH_CHANGED is returned, reload and review before retrying. Draft/paused flows with no contacts in progress only. Duration is positive ISO 8601, at most 365 days; examples P2D or PT1H.', z.object({ automationId: id, stepId: z.string().min(1).max(160), duration: z.string().min(1).max(50), expectedDefinitionHash: definitionHash, idempotency_key: retryKey }), write, args => client().patch(`${path(args.automationId)}/steps/${encodeURIComponent(args.stepId)}`, { duration: args.duration, expectedDefinitionHash: args.expectedDefinitionHash }, keyed(args)));
|
|
131
|
+
register('migma_list_automation_runs', 'Automation Activity', 'Inspect contact journeys: status, current step, next run time, and failureReason, exitReason or suppressionReason when recorded. Contact email and name need audience:read. Use the returned cursor for the next page. Runs cannot be cancelled here; the user can cancel them in Migma under Results → Activity.', z.object({ automationId: id, status: z.enum(['active', 'waiting', 'completed', 'failed', 'exited', 'suppressed']).optional(), cursor: z.string().optional(), limit: z.number().int().min(1).max(100).optional() }), read, args => client().get(`${path(args.automationId)}/runs`, { status: args.status, cursor: args.cursor, limit: args.limit }));
|
|
132
|
+
register('migma_get_automation_run', 'Automation Contact Timeline', 'Read one contact journey with its reasons and most recent steps (historyTotal says how many were kept). Completed means the journey ended, not proof of inbox delivery.', z.object({ automationId: id, runId: z.string().min(1), historyLimit: z.number().int().min(1).max(100).optional().describe('Most recent steps to return; default 25.') }), read, args => client().get(`${path(args.automationId)}/runs/${encodeURIComponent(args.runId)}`, { historyLimit: args.historyLimit }));
|
|
133
|
+
}
|
|
134
|
+
//# sourceMappingURL=automations.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"automations.js","sourceRoot":"","sources":["../../src/tools/automations.ts"],"names":[],"mappings":"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"}
|
|
@@ -43,6 +43,8 @@ export declare function buildCapabilitiesPayload(version: string, grantedPermiss
|
|
|
43
43
|
};
|
|
44
44
|
channelRule: string;
|
|
45
45
|
designFlow: string;
|
|
46
|
+
automationFlow: string;
|
|
47
|
+
formFlow: string;
|
|
46
48
|
knowledgeBase: string;
|
|
47
49
|
designReferences: string;
|
|
48
50
|
brandScoping: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"capabilities.d.ts","sourceRoot":"","sources":["../../src/tools/capabilities.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAKzE,OAAO,EAAmB,KAAK,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEvE,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,OAAO,CAAC;IACf,UAAU,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,qBAAqB;IACpC,YAAY,EAAE,OAAO,CAAC;IACtB,eAAe,EAAE,OAAO,CAAC;IACzB,aAAa,EAAE,OAAO,CAAC;IACvB,cAAc,EAAE,OAAO,CAAC;CACzB;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,QAAQ,CAAC;IACf,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;
|
|
1
|
+
{"version":3,"file":"capabilities.d.ts","sourceRoot":"","sources":["../../src/tools/capabilities.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAKzE,OAAO,EAAmB,KAAK,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEvE,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,OAAO,CAAC;IACf,UAAU,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,qBAAqB;IACpC,YAAY,EAAE,OAAO,CAAC;IACtB,eAAe,EAAE,OAAO,CAAC;IACzB,aAAa,EAAE,OAAO,CAAC;IACvB,cAAc,EAAE,OAAO,CAAC;CACzB;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,QAAQ,CAAC;IACf,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AA8ED;;;;;;GAMG;AACH,eAAO,MAAM,YAAY,EAAE,gBAAgB,EA0I1C,CAAC;AAEF,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,MAAM,GAAG,qBAAqB,CAa5E;AAeD,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CA4C5D;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,mBAAmB,EAAE,CAE1E;AAED,8FAA8F;AAC9F,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA0B/D;AAWD,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,MAAM,EACf,kBAAkB,CAAC,EAAE,MAAM,EAAE,EAC7B,OAAO,GAAE,eAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA4DrC;AAED,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,SAAS,EACjB,kBAAkB,CAAC,EAAE,MAAM,EAAE,EAC7B,OAAO,GAAE,eAA2B,QAyBrC"}
|