@revealui/mcp 0.1.7 → 0.1.9
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/dist/hypervisor.d.ts +1 -1
- package/dist/hypervisor.js +1 -1
- package/dist/index.d.ts +6 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -4
- package/dist/index.js.map +1 -1
- package/dist/rate-limit-store.d.ts +85 -0
- package/dist/rate-limit-store.d.ts.map +1 -0
- package/dist/rate-limit-store.js +120 -0
- package/dist/rate-limit-store.js.map +1 -0
- package/dist/rate-limiter.d.ts +27 -10
- package/dist/rate-limiter.d.ts.map +1 -1
- package/dist/rate-limiter.js +38 -26
- package/dist/rate-limiter.js.map +1 -1
- package/dist/servers/_email-provider.d.ts +39 -0
- package/dist/servers/_email-provider.d.ts.map +1 -0
- package/dist/servers/_email-provider.js +179 -0
- package/dist/servers/_email-provider.js.map +1 -0
- package/dist/servers/next-devtools.js +10 -10
- package/dist/servers/next-devtools.js.map +1 -1
- package/dist/servers/revealui-email.d.ts +13 -6
- package/dist/servers/revealui-email.d.ts.map +1 -1
- package/dist/servers/revealui-email.js +38 -51
- package/dist/servers/revealui-email.js.map +1 -1
- package/package.json +6 -5
- package/LICENSE.commercial +0 -111
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Email provider for MCP servers.
|
|
3
|
+
*
|
|
4
|
+
* Provider priority:
|
|
5
|
+
* 1. Gmail REST API (GOOGLE_SERVICE_ACCOUNT_EMAIL + GOOGLE_PRIVATE_KEY)
|
|
6
|
+
* 2. SMTP (SMTP_HOST + SMTP_USER + SMTP_PASS)
|
|
7
|
+
* 3. Resend API (RESEND_API_KEY) — deprecated, kept as fallback
|
|
8
|
+
*
|
|
9
|
+
* Gmail uses a Google Workspace service account with domain-wide delegation
|
|
10
|
+
* to send as EMAIL_FROM via the Gmail REST API. Edge-compatible (fetch + jose).
|
|
11
|
+
*/
|
|
12
|
+
import { importPKCS8, SignJWT } from 'jose';
|
|
13
|
+
function getGmailConfig(overrides) {
|
|
14
|
+
const serviceAccountEmail = overrides.GOOGLE_SERVICE_ACCOUNT_EMAIL ?? process.env.GOOGLE_SERVICE_ACCOUNT_EMAIL;
|
|
15
|
+
const privateKey = overrides.GOOGLE_PRIVATE_KEY ?? process.env.GOOGLE_PRIVATE_KEY;
|
|
16
|
+
const delegateEmail = overrides.EMAIL_FROM ??
|
|
17
|
+
process.env.EMAIL_FROM ??
|
|
18
|
+
overrides.REVEALUI_FROM_EMAIL ??
|
|
19
|
+
process.env.REVEALUI_FROM_EMAIL ??
|
|
20
|
+
'noreply@revealui.com';
|
|
21
|
+
if (!(serviceAccountEmail && privateKey))
|
|
22
|
+
return null;
|
|
23
|
+
return { serviceAccountEmail, privateKey, delegateEmail };
|
|
24
|
+
}
|
|
25
|
+
async function getGmailAccessToken(config) {
|
|
26
|
+
const key = await importPKCS8(config.privateKey.replace(/\\n/g, '\n'), 'RS256');
|
|
27
|
+
const now = Math.floor(Date.now() / 1000);
|
|
28
|
+
const jwt = await new SignJWT({
|
|
29
|
+
scope: 'https://www.googleapis.com/auth/gmail.send',
|
|
30
|
+
sub: config.delegateEmail,
|
|
31
|
+
})
|
|
32
|
+
.setProtectedHeader({ alg: 'RS256', typ: 'JWT' })
|
|
33
|
+
.setIssuer(config.serviceAccountEmail)
|
|
34
|
+
.setAudience('https://oauth2.googleapis.com/token')
|
|
35
|
+
.setIssuedAt(now)
|
|
36
|
+
.setExpirationTime(now + 3600)
|
|
37
|
+
.sign(key);
|
|
38
|
+
const tokenRes = await fetch('https://oauth2.googleapis.com/token', {
|
|
39
|
+
method: 'POST',
|
|
40
|
+
headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
|
|
41
|
+
body: new URLSearchParams({
|
|
42
|
+
grant_type: 'urn:ietf:params:oauth:grant-type:jwt-bearer',
|
|
43
|
+
assertion: jwt,
|
|
44
|
+
}),
|
|
45
|
+
});
|
|
46
|
+
if (!tokenRes.ok) {
|
|
47
|
+
const body = await tokenRes.text();
|
|
48
|
+
throw new Error(`Google OAuth2 token exchange failed (${tokenRes.status}): ${body}`);
|
|
49
|
+
}
|
|
50
|
+
const { access_token } = (await tokenRes.json());
|
|
51
|
+
return access_token;
|
|
52
|
+
}
|
|
53
|
+
function buildRawMessage(payload) {
|
|
54
|
+
const to = Array.isArray(payload.to) ? payload.to.join(', ') : payload.to;
|
|
55
|
+
const boundary = `boundary_${Date.now().toString(36)}`;
|
|
56
|
+
const lines = [
|
|
57
|
+
`From: ${payload.from}`,
|
|
58
|
+
`To: ${to}`,
|
|
59
|
+
`Subject: ${payload.subject}`,
|
|
60
|
+
'MIME-Version: 1.0',
|
|
61
|
+
`Content-Type: multipart/alternative; boundary="${boundary}"`,
|
|
62
|
+
];
|
|
63
|
+
if (payload.reply_to) {
|
|
64
|
+
lines.push(`Reply-To: ${payload.reply_to}`);
|
|
65
|
+
}
|
|
66
|
+
lines.push('');
|
|
67
|
+
if (payload.text) {
|
|
68
|
+
lines.push(`--${boundary}`, 'Content-Type: text/plain; charset="UTF-8"', '', payload.text, '');
|
|
69
|
+
}
|
|
70
|
+
if (payload.html) {
|
|
71
|
+
lines.push(`--${boundary}`, 'Content-Type: text/html; charset="UTF-8"', '', payload.html, '');
|
|
72
|
+
}
|
|
73
|
+
lines.push(`--${boundary}--`);
|
|
74
|
+
const raw = lines.join('\r\n');
|
|
75
|
+
const bytes = new TextEncoder().encode(raw);
|
|
76
|
+
let b64 = '';
|
|
77
|
+
for (let i = 0; i < bytes.length; i += 4096) {
|
|
78
|
+
b64 += String.fromCharCode(...bytes.subarray(i, i + 4096));
|
|
79
|
+
}
|
|
80
|
+
return btoa(b64).replace(/\+/g, '-').replace(/\//g, '_').replace(/=+$/, '');
|
|
81
|
+
}
|
|
82
|
+
async function sendViaGmail(config, payload) {
|
|
83
|
+
const accessToken = await getGmailAccessToken(config);
|
|
84
|
+
const raw = buildRawMessage({ ...payload, from: config.delegateEmail });
|
|
85
|
+
const res = await fetch('https://gmail.googleapis.com/gmail/v1/users/me/messages/send', {
|
|
86
|
+
method: 'POST',
|
|
87
|
+
headers: {
|
|
88
|
+
Authorization: `Bearer ${accessToken}`,
|
|
89
|
+
'Content-Type': 'application/json',
|
|
90
|
+
},
|
|
91
|
+
body: JSON.stringify({ raw }),
|
|
92
|
+
});
|
|
93
|
+
if (!res.ok) {
|
|
94
|
+
const body = await res.text();
|
|
95
|
+
throw new Error(`Gmail API error (${res.status}): ${body}`);
|
|
96
|
+
}
|
|
97
|
+
const data = (await res.json());
|
|
98
|
+
return { provider: 'gmail', id: data.id, data };
|
|
99
|
+
}
|
|
100
|
+
// ---------------------------------------------------------------------------
|
|
101
|
+
// Resend API provider (deprecated fallback)
|
|
102
|
+
// ---------------------------------------------------------------------------
|
|
103
|
+
async function sendViaResend(apiKey, payload) {
|
|
104
|
+
const res = await fetch('https://api.resend.com/emails', {
|
|
105
|
+
method: 'POST',
|
|
106
|
+
headers: {
|
|
107
|
+
Authorization: `Bearer ${apiKey}`,
|
|
108
|
+
'Content-Type': 'application/json',
|
|
109
|
+
'User-Agent': 'RevealUI-MCP/1.0',
|
|
110
|
+
},
|
|
111
|
+
body: JSON.stringify(payload),
|
|
112
|
+
});
|
|
113
|
+
const data = await res.json();
|
|
114
|
+
if (!res.ok) {
|
|
115
|
+
throw new Error(data.message ?? `Resend ${res.status}`);
|
|
116
|
+
}
|
|
117
|
+
return { provider: 'resend', data };
|
|
118
|
+
}
|
|
119
|
+
// ---------------------------------------------------------------------------
|
|
120
|
+
// Batch send via Resend (no Gmail batch API equivalent)
|
|
121
|
+
// ---------------------------------------------------------------------------
|
|
122
|
+
async function batchSendViaResend(apiKey, payloads) {
|
|
123
|
+
const res = await fetch('https://api.resend.com/emails/batch', {
|
|
124
|
+
method: 'POST',
|
|
125
|
+
headers: {
|
|
126
|
+
Authorization: `Bearer ${apiKey}`,
|
|
127
|
+
'Content-Type': 'application/json',
|
|
128
|
+
'User-Agent': 'RevealUI-MCP/1.0',
|
|
129
|
+
},
|
|
130
|
+
body: JSON.stringify(payloads),
|
|
131
|
+
});
|
|
132
|
+
const data = await res.json();
|
|
133
|
+
if (!res.ok) {
|
|
134
|
+
throw new Error(data.message ?? `Resend batch ${res.status}`);
|
|
135
|
+
}
|
|
136
|
+
return { provider: 'resend', data };
|
|
137
|
+
}
|
|
138
|
+
// ---------------------------------------------------------------------------
|
|
139
|
+
// Public API — auto-detects provider
|
|
140
|
+
// ---------------------------------------------------------------------------
|
|
141
|
+
/**
|
|
142
|
+
* Send a single email using the best available provider.
|
|
143
|
+
* Gmail REST API is preferred; falls back to Resend if Gmail is not configured.
|
|
144
|
+
*/
|
|
145
|
+
export async function sendEmail(payload, overrides = {}) {
|
|
146
|
+
// 1. Gmail REST API (preferred)
|
|
147
|
+
const gmailConfig = getGmailConfig(overrides);
|
|
148
|
+
if (gmailConfig) {
|
|
149
|
+
return sendViaGmail(gmailConfig, payload);
|
|
150
|
+
}
|
|
151
|
+
// 2. Resend API (deprecated fallback)
|
|
152
|
+
const resendKey = overrides.RESEND_API_KEY ?? process.env.RESEND_API_KEY;
|
|
153
|
+
if (resendKey) {
|
|
154
|
+
return sendViaResend(resendKey, payload);
|
|
155
|
+
}
|
|
156
|
+
throw new Error('No email provider configured. Set GOOGLE_SERVICE_ACCOUNT_EMAIL + GOOGLE_PRIVATE_KEY for Gmail, or RESEND_API_KEY as fallback.');
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Send a batch of emails. Uses Gmail for each individually (no batch API),
|
|
160
|
+
* or Resend batch API if Gmail is not configured.
|
|
161
|
+
*/
|
|
162
|
+
export async function sendEmailBatch(payloads, overrides = {}) {
|
|
163
|
+
// 1. Gmail REST API — send individually (Gmail has no batch send endpoint)
|
|
164
|
+
const gmailConfig = getGmailConfig(overrides);
|
|
165
|
+
if (gmailConfig) {
|
|
166
|
+
const results = [];
|
|
167
|
+
for (const payload of payloads) {
|
|
168
|
+
results.push(await sendViaGmail(gmailConfig, payload));
|
|
169
|
+
}
|
|
170
|
+
return { provider: 'gmail', data: { sent: results.length } };
|
|
171
|
+
}
|
|
172
|
+
// 2. Resend batch API (deprecated fallback)
|
|
173
|
+
const resendKey = overrides.RESEND_API_KEY ?? process.env.RESEND_API_KEY;
|
|
174
|
+
if (resendKey) {
|
|
175
|
+
return batchSendViaResend(resendKey, payloads);
|
|
176
|
+
}
|
|
177
|
+
throw new Error('No email provider configured for batch sending.');
|
|
178
|
+
}
|
|
179
|
+
//# sourceMappingURL=_email-provider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"_email-provider.js","sourceRoot":"","sources":["../../src/servers/_email-provider.ts"],"names":[],"mappings":"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"}
|
|
@@ -60,7 +60,7 @@ async function startNextDevToolsMCP() {
|
|
|
60
60
|
stderr?.pipe(process.stderr);
|
|
61
61
|
}
|
|
62
62
|
else {
|
|
63
|
-
// Check
|
|
63
|
+
// Check Admin dev server
|
|
64
64
|
const cmsPort = 4000;
|
|
65
65
|
const cmsRunning = await checkPort(cmsPort);
|
|
66
66
|
// In interactive mode, provide feedback that the server is running
|
|
@@ -68,8 +68,8 @@ async function startNextDevToolsMCP() {
|
|
|
68
68
|
logger.info('\n📊 Server Discovery');
|
|
69
69
|
logger.info('📝 Next Steps');
|
|
70
70
|
if (!cmsRunning) {
|
|
71
|
-
logger.info('1. Start your
|
|
72
|
-
logger.info(' cd apps/
|
|
71
|
+
logger.info('1. Start your Admin dev server:');
|
|
72
|
+
logger.info(' cd apps/admin && pnpm dev');
|
|
73
73
|
logger.info('');
|
|
74
74
|
}
|
|
75
75
|
logger.info('2. Ensure Next.js DevTools MCP is running:');
|
|
@@ -83,7 +83,7 @@ async function startNextDevToolsMCP() {
|
|
|
83
83
|
logger.info(' - "Enable Cache Components in my app"');
|
|
84
84
|
logger.info('');
|
|
85
85
|
if (cmsRunning) {
|
|
86
|
-
logger.success(`Next.js
|
|
86
|
+
logger.success(`Next.js Admin app detected on port ${cmsPort}`);
|
|
87
87
|
logger.info(` URL: http://localhost:${cmsPort}`);
|
|
88
88
|
logger.info(` MCP Endpoint: http://localhost:${cmsPort}/_next/mcp`);
|
|
89
89
|
logger.info(' Server started successfully ✓');
|
|
@@ -122,11 +122,11 @@ async function startNextDevToolsMCP() {
|
|
|
122
122
|
logger.info(' - Route verification');
|
|
123
123
|
logger.info(' - Intelligent boundary setup');
|
|
124
124
|
logger.info('');
|
|
125
|
-
logger.info('💡 How to Use with Your
|
|
126
|
-
logger.info('Once your
|
|
125
|
+
logger.info('💡 How to Use with Your Admin App');
|
|
126
|
+
logger.info('Once your Admin dev server is running (pnpm dev in apps/admin):');
|
|
127
127
|
logger.info('');
|
|
128
128
|
logger.info('1. Auto-discovery:');
|
|
129
|
-
logger.info(' The MCP server will automatically detect your
|
|
129
|
+
logger.info(' The MCP server will automatically detect your Admin app');
|
|
130
130
|
logger.info(" when it's running on http://localhost:4000");
|
|
131
131
|
logger.info('');
|
|
132
132
|
logger.info('2. Query runtime errors:');
|
|
@@ -155,15 +155,15 @@ async function startNextDevToolsMCP() {
|
|
|
155
155
|
logger.info(' - package.json scripts (mcp:next-devtools)');
|
|
156
156
|
logger.info(' - Included in mcp:all command');
|
|
157
157
|
logger.info('');
|
|
158
|
-
logger.success('Your
|
|
158
|
+
logger.success('Your Admin app is Next.js 16.1.1 - fully compatible!');
|
|
159
159
|
logger.success('Dev server runs on port 4000 with Turbopack');
|
|
160
160
|
logger.success('MCP endpoint available at: /_next/mcp');
|
|
161
161
|
logger.info('');
|
|
162
162
|
logger.info(' Press Ctrl+C to stop the server');
|
|
163
163
|
}
|
|
164
164
|
else {
|
|
165
|
-
logger.warning(`Next.js
|
|
166
|
-
logger.info(` Start it with: cd apps/
|
|
165
|
+
logger.warning(`Next.js Admin app not running on port ${cmsPort}`);
|
|
166
|
+
logger.info(` Start it with: cd apps/admin && pnpm dev`);
|
|
167
167
|
}
|
|
168
168
|
}
|
|
169
169
|
child.on('error', (error) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"next-devtools.js","sourceRoot":"","sources":["../../src/servers/next-devtools.ts"],"names":[],"mappings":";AAEA;;;;;;;GAOG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACxC,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,oBAAoB,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAEtE,MAAM,MAAM,GAAG,oBAAoB,EAAE,CAAC;AAEtC,6BAA6B;AAC7B,MAAM,EAAE,CAAC;AAET,KAAK,UAAU,SAAS,CAAC,IAAY;IACnC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,MAAM,MAAM,GAAG,YAAY,EAAE,CAAC;QAC9B,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE;YACvB,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;YAC3C,MAAM,CAAC,KAAK,EAAE,CAAC;QACjB,CAAC,CAAC,CAAC;QACH,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;AACL,CAAC;AAED,KAAK,UAAU,oBAAoB;IACjC,IAAI,CAAC;QACH,gEAAgE;QAChE,2DAA2D;QAC3D,MAAM,YAAY,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC;QAC1C,MAAM,WAAW,GAAyC,YAAY;YACpE,CAAC,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,kDAAkD;YAC7E,CAAC,CAAC,SAAS,CAAC,CAAC,iDAAiD;QAEhE,2DAA2D;QAC3D,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,MAAM,CAAC,MAAM,CAAC,sCAAsC,CAAC,CAAC;YACtD,MAAM,CAAC,IAAI,CAAC,yEAAyE,CAAC,CAAC;YACvF,MAAM,CAAC,IAAI,CAAC,8EAA8E,CAAC,CAAC;QAC9F,CAAC;QAED,sCAAsC;QACtC,8CAA8C;QAC9C,qFAAqF;QACrF,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,mBAAmB,CAAC,EAAE;YACzD,KAAK,EAAE,WAAW;YAClB,GAAG,EAAE;gBACH,GAAG,OAAO,CAAC,GAAG;gBACd,sDAAsD;gBACtD,uBAAuB,EAAE,OAAO,CAAC,GAAG,CAAC,uBAAuB,IAAI,GAAG;aACpE;SACF,CAAC,CAAC;QAEH,gEAAgE;QAChE,IAAI,YAAY,EAAE,CAAC;YACjB,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC;YACxC,IAAI,KAAK,EAAE,CAAC;gBACV,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC5B,CAAC;YACD,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YAC7B,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAC/B,CAAC;aAAM,CAAC;YACN,
|
|
1
|
+
{"version":3,"file":"next-devtools.js","sourceRoot":"","sources":["../../src/servers/next-devtools.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,17 +2,24 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* RevealUI Email MCP Server
|
|
4
4
|
*
|
|
5
|
-
* Model Context Protocol server that exposes email sending tools
|
|
6
|
-
*
|
|
7
|
-
*
|
|
5
|
+
* Model Context Protocol server that exposes email sending tools.
|
|
6
|
+
* Lets AI agents send notification emails, digests, alerts, and
|
|
7
|
+
* templated messages on behalf of a RevealUI site.
|
|
8
|
+
*
|
|
9
|
+
* Provider priority (auto-detected):
|
|
10
|
+
* 1. Gmail REST API (GOOGLE_SERVICE_ACCOUNT_EMAIL + GOOGLE_PRIVATE_KEY)
|
|
11
|
+
* 2. Resend API (RESEND_API_KEY) — deprecated fallback
|
|
8
12
|
*
|
|
9
13
|
* Environment:
|
|
10
|
-
*
|
|
11
|
-
*
|
|
14
|
+
* GOOGLE_SERVICE_ACCOUNT_EMAIL — Google Workspace service account
|
|
15
|
+
* GOOGLE_PRIVATE_KEY — RSA private key (PKCS8, \n-escaped)
|
|
16
|
+
* EMAIL_FROM — Sender address (default: noreply@revealui.com)
|
|
17
|
+
* RESEND_API_KEY — Resend API key (deprecated fallback)
|
|
18
|
+
* REVEALUI_FROM_EMAIL — Legacy from address (fallback for EMAIL_FROM)
|
|
12
19
|
*
|
|
13
20
|
* Tools:
|
|
14
21
|
* email_send — Send a single email (HTML or plain text)
|
|
15
|
-
* email_send_batch — Send up to 100 emails in one
|
|
22
|
+
* email_send_batch — Send up to 100 emails in one request
|
|
16
23
|
*/
|
|
17
24
|
/**
|
|
18
25
|
* Set credential overrides for this server.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"revealui-email.d.ts","sourceRoot":"","sources":["../../src/servers/revealui-email.ts"],"names":[],"mappings":";AAEA
|
|
1
|
+
{"version":3,"file":"revealui-email.d.ts","sourceRoot":"","sources":["../../src/servers/revealui-email.ts"],"names":[],"mappings":";AAEA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAoBH;;;GAGG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAElE"}
|
|
@@ -2,23 +2,31 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* RevealUI Email MCP Server
|
|
4
4
|
*
|
|
5
|
-
* Model Context Protocol server that exposes email sending tools
|
|
6
|
-
*
|
|
7
|
-
*
|
|
5
|
+
* Model Context Protocol server that exposes email sending tools.
|
|
6
|
+
* Lets AI agents send notification emails, digests, alerts, and
|
|
7
|
+
* templated messages on behalf of a RevealUI site.
|
|
8
|
+
*
|
|
9
|
+
* Provider priority (auto-detected):
|
|
10
|
+
* 1. Gmail REST API (GOOGLE_SERVICE_ACCOUNT_EMAIL + GOOGLE_PRIVATE_KEY)
|
|
11
|
+
* 2. Resend API (RESEND_API_KEY) — deprecated fallback
|
|
8
12
|
*
|
|
9
13
|
* Environment:
|
|
10
|
-
*
|
|
11
|
-
*
|
|
14
|
+
* GOOGLE_SERVICE_ACCOUNT_EMAIL — Google Workspace service account
|
|
15
|
+
* GOOGLE_PRIVATE_KEY — RSA private key (PKCS8, \n-escaped)
|
|
16
|
+
* EMAIL_FROM — Sender address (default: noreply@revealui.com)
|
|
17
|
+
* RESEND_API_KEY — Resend API key (deprecated fallback)
|
|
18
|
+
* REVEALUI_FROM_EMAIL — Legacy from address (fallback for EMAIL_FROM)
|
|
12
19
|
*
|
|
13
20
|
* Tools:
|
|
14
21
|
* email_send — Send a single email (HTML or plain text)
|
|
15
|
-
* email_send_batch — Send up to 100 emails in one
|
|
22
|
+
* email_send_batch — Send up to 100 emails in one request
|
|
16
23
|
*/
|
|
17
24
|
import { Server } from '@modelcontextprotocol/sdk/server/index.js';
|
|
18
25
|
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
|
|
19
26
|
import { CallToolRequestSchema, ListToolsRequestSchema, } from '@modelcontextprotocol/sdk/types.js';
|
|
20
27
|
import { logger } from '@revealui/core/observability/logger';
|
|
21
28
|
import { checkMcpLicense } from '../index.js';
|
|
29
|
+
import { sendEmail, sendEmailBatch } from './_email-provider.js';
|
|
22
30
|
// ---------------------------------------------------------------------------
|
|
23
31
|
// Credential overrides (set by Hypervisor before tool invocations)
|
|
24
32
|
// ---------------------------------------------------------------------------
|
|
@@ -31,37 +39,15 @@ export function setCredentials(creds) {
|
|
|
31
39
|
_credentialOverrides = creds;
|
|
32
40
|
}
|
|
33
41
|
// ---------------------------------------------------------------------------
|
|
34
|
-
// Resend REST helpers
|
|
35
|
-
// ---------------------------------------------------------------------------
|
|
36
|
-
const RESEND_BASE = 'https://api.resend.com';
|
|
37
|
-
const DEFAULT_FROM = 'RevealUI <notifications@revealui.com>';
|
|
38
|
-
async function resendPost(apiKey, path, body) {
|
|
39
|
-
const res = await fetch(`${RESEND_BASE}${path}`, {
|
|
40
|
-
method: 'POST',
|
|
41
|
-
headers: {
|
|
42
|
-
Authorization: `Bearer ${apiKey}`,
|
|
43
|
-
'Content-Type': 'application/json',
|
|
44
|
-
'User-Agent': 'RevealUI-MCP/1.0',
|
|
45
|
-
},
|
|
46
|
-
body: JSON.stringify(body),
|
|
47
|
-
});
|
|
48
|
-
const data = await res.json();
|
|
49
|
-
if (!res.ok) {
|
|
50
|
-
throw new Error(data.message ??
|
|
51
|
-
data.name ??
|
|
52
|
-
`Resend ${res.status}`);
|
|
53
|
-
}
|
|
54
|
-
return data;
|
|
55
|
-
}
|
|
56
|
-
// ---------------------------------------------------------------------------
|
|
57
42
|
// Server
|
|
58
43
|
// ---------------------------------------------------------------------------
|
|
59
|
-
const
|
|
44
|
+
const DEFAULT_FROM = 'RevealUI <notifications@revealui.com>';
|
|
45
|
+
const server = new Server({ name: 'revealui-email', version: '2.0.0' }, { capabilities: { tools: {} } });
|
|
60
46
|
const TOOLS = [
|
|
61
47
|
{
|
|
62
48
|
name: 'email_send',
|
|
63
|
-
description:
|
|
64
|
-
'Provide either html or text (or both). Returns the
|
|
49
|
+
description: 'Send a single transactional email via the configured email provider ' +
|
|
50
|
+
'(Gmail REST API or Resend). Provide either html or text (or both). Returns the message ID.',
|
|
65
51
|
inputSchema: {
|
|
66
52
|
type: 'object',
|
|
67
53
|
properties: {
|
|
@@ -86,7 +72,7 @@ const TOOLS = [
|
|
|
86
72
|
},
|
|
87
73
|
{
|
|
88
74
|
name: 'email_send_batch',
|
|
89
|
-
description: 'Send up to 100 emails in a single
|
|
75
|
+
description: 'Send up to 100 emails in a single request. ' +
|
|
90
76
|
'Each email in the batch can have its own to/subject/html/text.',
|
|
91
77
|
inputSchema: {
|
|
92
78
|
type: 'object',
|
|
@@ -103,7 +89,7 @@ const TOOLS = [
|
|
|
103
89
|
text: { type: 'string', description: 'Plain text body' },
|
|
104
90
|
from: {
|
|
105
91
|
type: 'string',
|
|
106
|
-
description: 'Sender address (defaults to
|
|
92
|
+
description: 'Sender address (defaults to EMAIL_FROM)',
|
|
107
93
|
},
|
|
108
94
|
},
|
|
109
95
|
required: ['to', 'subject'],
|
|
@@ -119,16 +105,13 @@ server.setRequestHandler(ListToolsRequestSchema, async () => ({ tools: TOOLS }))
|
|
|
119
105
|
server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
120
106
|
const startTime = Date.now();
|
|
121
107
|
const toolName = request.params.name;
|
|
122
|
-
const
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
};
|
|
128
|
-
}
|
|
129
|
-
const fromAddress = _credentialOverrides.REVEALUI_FROM_EMAIL ?? process.env.REVEALUI_FROM_EMAIL ?? DEFAULT_FROM;
|
|
108
|
+
const fromAddress = _credentialOverrides.EMAIL_FROM ??
|
|
109
|
+
_credentialOverrides.REVEALUI_FROM_EMAIL ??
|
|
110
|
+
process.env.EMAIL_FROM ??
|
|
111
|
+
process.env.REVEALUI_FROM_EMAIL ??
|
|
112
|
+
DEFAULT_FROM;
|
|
130
113
|
try {
|
|
131
|
-
let
|
|
114
|
+
let result;
|
|
132
115
|
switch (toolName) {
|
|
133
116
|
case 'email_send': {
|
|
134
117
|
const { to, subject, html, text, from = fromAddress, reply_to, } = request.params.arguments;
|
|
@@ -145,9 +128,8 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
|
145
128
|
payload.text = text;
|
|
146
129
|
if (reply_to)
|
|
147
130
|
payload.reply_to = reply_to;
|
|
148
|
-
// Tag all RevealUI MCP emails for filtering in Resend dashboard
|
|
149
131
|
payload.tags = [{ name: 'source', value: 'revealui-mcp' }];
|
|
150
|
-
|
|
132
|
+
result = await sendEmail(payload, _credentialOverrides);
|
|
151
133
|
break;
|
|
152
134
|
}
|
|
153
135
|
case 'email_send_batch': {
|
|
@@ -158,7 +140,7 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
|
158
140
|
isError: true,
|
|
159
141
|
};
|
|
160
142
|
}
|
|
161
|
-
const
|
|
143
|
+
const payloads = emails.map((e) => {
|
|
162
144
|
const payload = {
|
|
163
145
|
from: e.from ?? fromAddress,
|
|
164
146
|
to: e.to,
|
|
@@ -171,7 +153,7 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
|
171
153
|
payload.text = e.text;
|
|
172
154
|
return payload;
|
|
173
155
|
});
|
|
174
|
-
|
|
156
|
+
result = await sendEmailBatch(payloads, _credentialOverrides);
|
|
175
157
|
break;
|
|
176
158
|
}
|
|
177
159
|
default:
|
|
@@ -185,7 +167,7 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
|
185
167
|
{
|
|
186
168
|
type: 'text',
|
|
187
169
|
text: JSON.stringify({
|
|
188
|
-
data,
|
|
170
|
+
data: result,
|
|
189
171
|
_meta: {
|
|
190
172
|
durationMs: Date.now() - startTime,
|
|
191
173
|
server: 'revealui-email',
|
|
@@ -207,14 +189,19 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
|
207
189
|
}
|
|
208
190
|
});
|
|
209
191
|
async function main() {
|
|
210
|
-
|
|
211
|
-
|
|
192
|
+
const allowed = await checkMcpLicense();
|
|
193
|
+
if (!allowed) {
|
|
194
|
+
logger.warn('revealui-email MCP server requires a Pro license');
|
|
195
|
+
process.exit(0);
|
|
212
196
|
}
|
|
213
197
|
const transport = new StdioServerTransport();
|
|
214
198
|
await server.connect(transport);
|
|
199
|
+
logger.info('revealui-email MCP server running (Gmail → Resend fallback)');
|
|
215
200
|
}
|
|
216
201
|
main().catch((err) => {
|
|
217
|
-
logger.error('
|
|
202
|
+
logger.error('revealui-email server failed to start', {
|
|
203
|
+
error: err instanceof Error ? err.message : String(err),
|
|
204
|
+
});
|
|
218
205
|
process.exit(1);
|
|
219
206
|
});
|
|
220
207
|
//# sourceMappingURL=revealui-email.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"revealui-email.js","sourceRoot":"","sources":["../../src/servers/revealui-email.ts"],"names":[],"mappings":";AAEA
|
|
1
|
+
{"version":3,"file":"revealui-email.js","sourceRoot":"","sources":["../../src/servers/revealui-email.ts"],"names":[],"mappings":";AAEA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAEL,qBAAqB,EACrB,sBAAsB,GAEvB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,MAAM,EAAE,MAAM,qCAAqC,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAqB,SAAS,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEpF,8EAA8E;AAC9E,mEAAmE;AACnE,8EAA8E;AAE9E,IAAI,oBAAoB,GAA2B,EAAE,CAAC;AAEtD;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,KAA6B;IAC1D,oBAAoB,GAAG,KAAK,CAAC;AAC/B,CAAC;AAED,8EAA8E;AAC9E,SAAS;AACT,8EAA8E;AAE9E,MAAM,YAAY,GAAG,uCAAuC,CAAC;AAE7D,MAAM,MAAM,GAAG,IAAI,MAAM,CACvB,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,OAAO,EAAE,EAC5C,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,CAChC,CAAC;AAEF,MAAM,KAAK,GAAW;IACpB;QACE,IAAI,EAAE,YAAY;QAClB,WAAW,EACT,sEAAsE;YACtE,4FAA4F;QAC9F,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,EAAE,EAAE;oBACF,KAAK,EAAE;wBACL,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,wBAAwB,EAAE;wBACzD,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,WAAW,EAAE,qBAAqB,EAAE;qBACjF;oBACD,WAAW,EAAE,6BAA6B;iBAC3C;gBACD,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,oBAAoB,EAAE;gBAC9D,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,wBAAwB,EAAE;gBAC/D,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,0BAA0B,EAAE;gBACjE,IAAI,EAAE;oBACJ,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,4BAA4B,YAAY,GAAG;iBACzD;gBACD,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,kBAAkB,EAAE;aAC9D;YACD,QAAQ,EAAE,CAAC,IAAI,EAAE,SAAS,CAAC;SAC5B;KACF;IACD;QACE,IAAI,EAAE,kBAAkB;QACxB,WAAW,EACT,6CAA6C;YAC7C,gEAAgE;QAClE,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,MAAM,EAAE;oBACN,IAAI,EAAE,OAAO;oBACb,WAAW,EAAE,gCAAgC;oBAC7C,KAAK,EAAE;wBACL,IAAI,EAAE,QAAQ;wBACd,UAAU,EAAE;4BACV,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,iBAAiB,EAAE;4BACtD,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,cAAc,EAAE;4BACxD,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,WAAW,EAAE;4BAClD,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,iBAAiB,EAAE;4BACxD,IAAI,EAAE;gCACJ,IAAI,EAAE,QAAQ;gCACd,WAAW,EAAE,yCAAyC;6BACvD;yBACF;wBACD,QAAQ,EAAE,CAAC,IAAI,EAAE,SAAS,CAAC;qBAC5B;oBACD,QAAQ,EAAE,GAAG;iBACd;aACF;YACD,QAAQ,EAAE,CAAC,QAAQ,CAAC;SACrB;KACF;CACF,CAAC;AAEF,MAAM,CAAC,iBAAiB,CAAC,sBAAsB,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;AAEjF,MAAM,CAAC,iBAAiB,CAAC,qBAAqB,EAAE,KAAK,EAAE,OAAwB,EAAE,EAAE;IACjF,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC7B,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC;IAErC,MAAM,WAAW,GACf,oBAAoB,CAAC,UAAU;QAC/B,oBAAoB,CAAC,mBAAmB;QACxC,OAAO,CAAC,GAAG,CAAC,UAAU;QACtB,OAAO,CAAC,GAAG,CAAC,mBAAmB;QAC/B,YAAY,CAAC;IAEf,IAAI,CAAC;QACH,IAAI,MAAe,CAAC;QAEpB,QAAQ,QAAQ,EAAE,CAAC;YACjB,KAAK,YAAY,CAAC,CAAC,CAAC;gBAClB,MAAM,EACJ,EAAE,EACF,OAAO,EACP,IAAI,EACJ,IAAI,EACJ,IAAI,GAAG,WAAW,EAClB,QAAQ,GACT,GAAG,OAAO,CAAC,MAAM,CAAC,SAOlB,CAAC;gBAEF,IAAI,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,EAAE,CAAC;oBACpB,OAAO;wBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,6CAA6C,EAAE,CAAC;wBAChF,OAAO,EAAE,IAAI;qBACd,CAAC;gBACJ,CAAC;gBAED,MAAM,OAAO,GAAiB,EAAE,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC;gBACpD,IAAI,IAAI;oBAAE,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;gBAC9B,IAAI,IAAI;oBAAE,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;gBAC9B,IAAI,QAAQ;oBAAE,OAAO,CAAC,QAAQ,GAAG,QAAQ,CAAC;gBAC1C,OAAO,CAAC,IAAI,GAAG,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,cAAc,EAAE,CAAC,CAAC;gBAE3D,MAAM,GAAG,MAAM,SAAS,CAAC,OAAO,EAAE,oBAAoB,CAAC,CAAC;gBACxD,MAAM;YACR,CAAC;YAED,KAAK,kBAAkB,CAAC,CAAC,CAAC;gBACxB,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,SAQjC,CAAC;gBAEF,IAAI,MAAM,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;oBACxB,OAAO;wBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,4CAA4C,EAAE,CAAC;wBAC/E,OAAO,EAAE,IAAI;qBACd,CAAC;gBACJ,CAAC;gBAED,MAAM,QAAQ,GAAmB,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;oBAChD,MAAM,OAAO,GAAiB;wBAC5B,IAAI,EAAE,CAAC,CAAC,IAAI,IAAI,WAAW;wBAC3B,EAAE,EAAE,CAAC,CAAC,EAAE;wBACR,OAAO,EAAE,CAAC,CAAC,OAAO;wBAClB,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,cAAc,EAAE,CAAC;qBAClD,CAAC;oBACF,IAAI,CAAC,CAAC,IAAI;wBAAE,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC;oBAClC,IAAI,CAAC,CAAC,IAAI;wBAAE,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC;oBAClC,OAAO,OAAO,CAAC;gBACjB,CAAC,CAAC,CAAC;gBAEH,MAAM,GAAG,MAAM,cAAc,CAAC,QAAQ,EAAE,oBAAoB,CAAC,CAAC;gBAC9D,MAAM;YACR,CAAC;YAED;gBACE,OAAO;oBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,wBAAwB,QAAQ,EAAE,EAAE,CAAC;oBACrE,OAAO,EAAE,IAAI;iBACd,CAAC;QACN,CAAC;QAED,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAClB;wBACE,IAAI,EAAE,MAAM;wBACZ,KAAK,EAAE;4BACL,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;4BAClC,MAAM,EAAE,gBAAgB;4BACxB,IAAI,EAAE,QAAQ;4BACd,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;yBACpC;qBACF,EACD,IAAI,EACJ,CAAC,CACF;iBACF;aACF;SACF,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO;YACL,OAAO,EAAE;gBACP,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE;aACrF;YACD,OAAO,EAAE,IAAI;SACd,CAAC;IACJ,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,KAAK,UAAU,IAAI;IACjB,MAAM,OAAO,GAAG,MAAM,eAAe,EAAE,CAAC;IACxC,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,CAAC,IAAI,CAAC,kDAAkD,CAAC,CAAC;QAChE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAChC,MAAM,CAAC,IAAI,CAAC,6DAA6D,CAAC,CAAC;AAC7E,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE;IAC5B,MAAM,CAAC,KAAK,CAAC,uCAAuC,EAAE;QACpD,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;KACxD,CAAC,CAAC;IACH,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@revealui/mcp",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.9",
|
|
4
4
|
"description": "Model Context Protocol integrations for RevealUI — adapter framework, hypervisor, and MCP contracts",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -11,9 +11,10 @@
|
|
|
11
11
|
"dependencies": {
|
|
12
12
|
"@modelcontextprotocol/sdk": "^1.26.0",
|
|
13
13
|
"dotenv": "^17.2.4",
|
|
14
|
-
"
|
|
15
|
-
"@revealui/
|
|
16
|
-
"@revealui/
|
|
14
|
+
"jose": "^6.2.2",
|
|
15
|
+
"@revealui/config": "0.3.3",
|
|
16
|
+
"@revealui/contracts": "1.3.6",
|
|
17
|
+
"@revealui/core": "0.5.5"
|
|
17
18
|
},
|
|
18
19
|
"devDependencies": {
|
|
19
20
|
"@electric-sql/pglite": "^0.4.2",
|
|
@@ -89,7 +90,7 @@
|
|
|
89
90
|
"clean": "rm -rf dist",
|
|
90
91
|
"dev": "tsc --watch",
|
|
91
92
|
"lint": "biome check .",
|
|
92
|
-
"test": "vitest run
|
|
93
|
+
"test": "vitest run",
|
|
93
94
|
"typecheck": "tsc --noEmit"
|
|
94
95
|
}
|
|
95
96
|
}
|