@sendfn/admin 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"capability.d.ts","sourceRoot":"","sources":["../src/capability.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,iBAAiB,EAGvB,MAAM,uBAAuB,CAAC;AA8Y/B,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAMsB,CAAC;AAExD,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAcrB,CAAC;AA2HX,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAKxB,CAAC;AAEX,MAAM,MAAM,sBAAsB,GAAG,CAAC,OAAO,qBAAqB,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC;AAElF,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAahC,CAAC;AAEH,eAAO,MAAM,kBAAkB;;;;;;;;;CASrB,CAAC"}
@@ -0,0 +1,514 @@
1
+ import { defineAdminCapability, } from "@superfunctions/admin";
2
+ const stringSchema = { type: "string", minLength: 1 };
3
+ const nullableStringSchema = { type: ["string", "null"] };
4
+ const dateSchema = { type: "string", minLength: 1, maxLength: 100 };
5
+ const nullableDateSchema = { type: ["string", "null"] };
6
+ const metadataSchema = { type: "object", additionalProperties: true };
7
+ const nullableMetadataSchema = { type: ["object", "null"], additionalProperties: true };
8
+ const platformSchema = { type: "string", enum: ["ios", "android", "web"] };
9
+ const recipientOutputSchema = {
10
+ oneOf: [stringSchema, { type: "array", items: stringSchema, minItems: 1, maxItems: 1000 }],
11
+ };
12
+ const templateSchema = {
13
+ type: "object",
14
+ properties: {
15
+ id: stringSchema,
16
+ name: stringSchema,
17
+ subject: { type: "string" },
18
+ html: { type: "string" },
19
+ text: { type: "string" },
20
+ variables: { type: "array", items: stringSchema },
21
+ metadata: metadataSchema,
22
+ },
23
+ required: ["id", "name", "subject", "html", "variables"],
24
+ additionalProperties: false,
25
+ };
26
+ const emailTransactionSchema = {
27
+ type: "object",
28
+ properties: {
29
+ id: stringSchema,
30
+ userId: stringSchema,
31
+ to: recipientOutputSchema,
32
+ from: stringSchema,
33
+ subject: { type: "string" },
34
+ templateId: nullableStringSchema,
35
+ templateData: nullableMetadataSchema,
36
+ provider: stringSchema,
37
+ providerMessageId: nullableStringSchema,
38
+ status: { type: "string", enum: ["pending", "sent", "delivered", "bounced", "complained", "failed"] },
39
+ sentAt: nullableDateSchema,
40
+ deliveredAt: nullableDateSchema,
41
+ bouncedAt: nullableDateSchema,
42
+ complainedAt: nullableDateSchema,
43
+ metadata: metadataSchema,
44
+ createdAt: dateSchema,
45
+ updatedAt: dateSchema,
46
+ },
47
+ required: [
48
+ "id", "userId", "to", "from", "subject", "templateId", "templateData", "provider",
49
+ "providerMessageId", "status", "sentAt", "deliveredAt", "bouncedAt", "complainedAt",
50
+ "metadata", "createdAt", "updatedAt",
51
+ ],
52
+ additionalProperties: false,
53
+ };
54
+ const smsTransactionSchema = {
55
+ type: "object",
56
+ properties: {
57
+ id: stringSchema,
58
+ userId: stringSchema,
59
+ to: stringSchema,
60
+ message: { type: "string" },
61
+ provider: stringSchema,
62
+ providerMessageId: nullableStringSchema,
63
+ status: { type: "string", enum: ["pending", "sent", "delivered", "failed"] },
64
+ sentAt: nullableDateSchema,
65
+ metadata: metadataSchema,
66
+ createdAt: dateSchema,
67
+ updatedAt: dateSchema,
68
+ },
69
+ required: ["id", "userId", "to", "message", "provider", "providerMessageId", "status", "sentAt", "metadata", "createdAt", "updatedAt"],
70
+ additionalProperties: false,
71
+ };
72
+ const whatsAppTransactionSchema = {
73
+ ...smsTransactionSchema,
74
+ };
75
+ const pushNotificationSchema = {
76
+ type: "object",
77
+ properties: {
78
+ id: stringSchema,
79
+ userId: stringSchema,
80
+ title: { type: "string" },
81
+ body: { type: "string" },
82
+ data: nullableMetadataSchema,
83
+ deviceTokens: { type: "array", items: stringSchema },
84
+ platform: platformSchema,
85
+ provider: stringSchema,
86
+ status: { type: "string", enum: ["pending", "sent", "failed"] },
87
+ sentCount: { type: "integer", minimum: 0 },
88
+ failedCount: { type: "integer", minimum: 0 },
89
+ sentAt: nullableDateSchema,
90
+ metadata: metadataSchema,
91
+ createdAt: dateSchema,
92
+ updatedAt: dateSchema,
93
+ },
94
+ required: ["id", "userId", "title", "body", "data", "deviceTokens", "platform", "provider", "status", "sentCount", "failedCount", "sentAt", "metadata", "createdAt", "updatedAt"],
95
+ additionalProperties: false,
96
+ };
97
+ const deliveryEventSchema = {
98
+ type: "object",
99
+ properties: {
100
+ id: stringSchema,
101
+ referenceId: stringSchema,
102
+ referenceType: { type: "string", enum: ["email", "push", "sms", "whatsapp"] },
103
+ eventType: { type: "string", enum: ["sent", "delivered", "bounced", "complained", "opened", "clicked", "failed"] },
104
+ provider: stringSchema,
105
+ providerEventId: nullableStringSchema,
106
+ recipientEmail: nullableStringSchema,
107
+ recipientPhone: nullableStringSchema,
108
+ deviceToken: nullableStringSchema,
109
+ metadata: metadataSchema,
110
+ eventTimestamp: dateSchema,
111
+ createdAt: dateSchema,
112
+ },
113
+ required: ["id", "referenceId", "referenceType", "eventType", "provider", "providerEventId", "recipientEmail", "recipientPhone", "deviceToken", "metadata", "eventTimestamp", "createdAt"],
114
+ additionalProperties: false,
115
+ };
116
+ const suppressionSchema = {
117
+ type: "object",
118
+ properties: {
119
+ id: stringSchema,
120
+ email: stringSchema,
121
+ reason: { type: "string", enum: ["bounce", "complaint", "unsubscribe", "manual"] },
122
+ source: stringSchema,
123
+ bounceType: nullableStringSchema,
124
+ metadata: metadataSchema,
125
+ suppressedAt: dateSchema,
126
+ createdAt: dateSchema,
127
+ },
128
+ required: ["id", "email", "reason", "source", "bounceType", "metadata", "suppressedAt", "createdAt"],
129
+ additionalProperties: false,
130
+ };
131
+ const deviceTokenSchema = {
132
+ type: "object",
133
+ properties: {
134
+ id: stringSchema,
135
+ userId: stringSchema,
136
+ token: stringSchema,
137
+ platform: platformSchema,
138
+ appVersion: nullableStringSchema,
139
+ deviceInfo: nullableMetadataSchema,
140
+ isActive: { type: "boolean" },
141
+ lastUsedAt: dateSchema,
142
+ createdAt: dateSchema,
143
+ updatedAt: dateSchema,
144
+ },
145
+ required: ["id", "userId", "token", "platform", "appVersion", "deviceInfo", "isActive", "lastUsedAt", "createdAt", "updatedAt"],
146
+ additionalProperties: false,
147
+ };
148
+ function listSchema(item) {
149
+ return {
150
+ type: "object",
151
+ properties: {
152
+ items: { type: "array", items: item },
153
+ nextCursor: { type: "null" },
154
+ },
155
+ required: ["items", "nextCursor"],
156
+ additionalProperties: false,
157
+ };
158
+ }
159
+ function itemSchema(item) {
160
+ return {
161
+ type: "object",
162
+ properties: { item },
163
+ required: ["item"],
164
+ additionalProperties: false,
165
+ };
166
+ }
167
+ const emptyInputSchema = { type: "object", additionalProperties: false };
168
+ const acceptedOutputSchema = {
169
+ type: "object",
170
+ properties: { accepted: { type: "boolean", const: true } },
171
+ required: ["accepted"],
172
+ additionalProperties: false,
173
+ };
174
+ const getByIdSchema = {
175
+ type: "object",
176
+ properties: { id: stringSchema },
177
+ required: ["id"],
178
+ additionalProperties: false,
179
+ };
180
+ const emailAddressSchema = { type: "string", minLength: 3, maxLength: 1000 };
181
+ const stringOrStringsSchema = {
182
+ oneOf: [emailAddressSchema, { type: "array", items: emailAddressSchema, minItems: 1, maxItems: 1000 }],
183
+ };
184
+ const attachmentSchema = {
185
+ type: "object",
186
+ properties: {
187
+ filename: stringSchema,
188
+ content: { type: "string" },
189
+ contentType: { type: "string" },
190
+ encoding: { type: "string" },
191
+ },
192
+ required: ["filename", "content"],
193
+ additionalProperties: false,
194
+ };
195
+ const sendEmailSchema = {
196
+ type: "object",
197
+ properties: {
198
+ userId: stringSchema,
199
+ from: emailAddressSchema,
200
+ replyTo: emailAddressSchema,
201
+ to: stringOrStringsSchema,
202
+ cc: stringOrStringsSchema,
203
+ bcc: stringOrStringsSchema,
204
+ subject: { type: "string", maxLength: 2000 },
205
+ html: { type: "string", maxLength: 5_000_000 },
206
+ text: { type: "string", maxLength: 5_000_000 },
207
+ templateId: { type: "string", minLength: 1, maxLength: 500 },
208
+ templateData: metadataSchema,
209
+ attachments: { type: "array", items: attachmentSchema, maxItems: 100 },
210
+ headers: metadataSchema,
211
+ metadata: metadataSchema,
212
+ tags: { type: "array", items: stringSchema, maxItems: 100 },
213
+ },
214
+ required: ["userId", "to"],
215
+ additionalProperties: false,
216
+ };
217
+ const sendSmsSchema = {
218
+ type: "object",
219
+ properties: { userId: stringSchema, to: stringSchema, message: { type: "string", minLength: 1, maxLength: 10_000 }, metadata: metadataSchema },
220
+ required: ["userId", "to", "message"],
221
+ additionalProperties: false,
222
+ };
223
+ const sendWhatsAppSchema = {
224
+ type: "object",
225
+ properties: { ...sendSmsSchema.properties, previewUrl: { type: "boolean" } },
226
+ required: ["userId", "to", "message"],
227
+ additionalProperties: false,
228
+ };
229
+ const sendPushSchema = {
230
+ type: "object",
231
+ properties: {
232
+ userId: { oneOf: [stringSchema, { type: "array", items: stringSchema, minItems: 1, maxItems: 1000 }] },
233
+ title: { type: "string", minLength: 1, maxLength: 1000 },
234
+ body: { type: "string", minLength: 1, maxLength: 10_000 },
235
+ data: metadataSchema,
236
+ imageUrl: { type: "string", maxLength: 5000 },
237
+ badge: { type: "integer", minimum: 0 },
238
+ sound: { type: "string", maxLength: 500 },
239
+ priority: { type: "string", enum: ["high", "normal"] },
240
+ ttl: { type: "integer", minimum: 0 },
241
+ collapseKey: { type: "string", maxLength: 500 },
242
+ category: { type: "string", maxLength: 500 },
243
+ metadata: metadataSchema,
244
+ },
245
+ required: ["userId", "title", "body"],
246
+ additionalProperties: false,
247
+ };
248
+ const listDeliveriesInputSchema = {
249
+ type: "object",
250
+ properties: {
251
+ referenceId: stringSchema,
252
+ referenceType: { type: "string", enum: ["email", "push", "sms", "whatsapp"] },
253
+ providerMessageId: stringSchema,
254
+ provider: stringSchema,
255
+ userId: stringSchema,
256
+ eventType: { type: "string", enum: ["sent", "delivered", "bounced", "complained", "opened", "clicked", "failed"] },
257
+ startAt: dateSchema,
258
+ endAt: dateSchema,
259
+ limit: { type: "integer", minimum: 0, maximum: 200, default: 50 },
260
+ offset: { type: "integer", minimum: 0, maximum: 1_000_000, default: 0 },
261
+ },
262
+ additionalProperties: false,
263
+ };
264
+ const listSuppressionsInputSchema = {
265
+ type: "object",
266
+ properties: {
267
+ limit: { type: "integer", minimum: 1, maximum: 1000, default: 1000 },
268
+ offset: { type: "integer", minimum: 0, maximum: 1_000_000, default: 0 },
269
+ },
270
+ additionalProperties: false,
271
+ };
272
+ const suppressionIdentitySchema = {
273
+ type: "object",
274
+ properties: { email: emailAddressSchema },
275
+ required: ["email"],
276
+ additionalProperties: false,
277
+ };
278
+ const addSuppressionInputSchema = {
279
+ type: "object",
280
+ properties: {
281
+ email: emailAddressSchema,
282
+ reason: { type: "string", enum: ["bounce", "complaint", "unsubscribe", "manual"] },
283
+ source: stringSchema,
284
+ bounceType: { type: "string" },
285
+ metadata: metadataSchema,
286
+ suppressedAt: dateSchema,
287
+ },
288
+ required: ["email", "reason", "source"],
289
+ additionalProperties: false,
290
+ };
291
+ const suppressionGetOutputSchema = {
292
+ type: "object",
293
+ properties: { suppressed: { type: "boolean" }, item: { anyOf: [suppressionSchema, { type: "null" }] } },
294
+ required: ["suppressed", "item"],
295
+ additionalProperties: false,
296
+ };
297
+ const suppressionMutationOutputSchema = {
298
+ type: "object",
299
+ properties: { accepted: { type: "boolean", const: true }, item: suppressionSchema, email: emailAddressSchema },
300
+ required: ["accepted", "email"],
301
+ additionalProperties: false,
302
+ };
303
+ const listDevicesInputSchema = {
304
+ type: "object",
305
+ properties: { userId: stringSchema, platform: platformSchema },
306
+ required: ["userId"],
307
+ additionalProperties: false,
308
+ };
309
+ const registerDeviceInputSchema = {
310
+ type: "object",
311
+ properties: { userId: stringSchema, token: stringSchema, platform: platformSchema, appVersion: { type: "string" }, deviceInfo: metadataSchema },
312
+ required: ["userId", "token", "platform"],
313
+ additionalProperties: false,
314
+ };
315
+ const deactivateDeviceInputSchema = {
316
+ type: "object",
317
+ properties: { token: stringSchema },
318
+ required: ["token"],
319
+ additionalProperties: false,
320
+ };
321
+ const refreshDeviceInputSchema = {
322
+ type: "object",
323
+ properties: { oldToken: stringSchema, newToken: stringSchema, userId: stringSchema, platform: platformSchema },
324
+ required: ["oldToken", "newToken", "userId", "platform"],
325
+ additionalProperties: false,
326
+ };
327
+ const cleanupDevicesInputSchema = {
328
+ type: "object",
329
+ properties: { olderThan: dateSchema },
330
+ required: ["olderThan"],
331
+ additionalProperties: false,
332
+ };
333
+ const deactivatedOutputSchema = {
334
+ type: "object",
335
+ properties: { accepted: { type: "boolean", const: true }, deactivatedToken: stringSchema },
336
+ required: ["accepted", "deactivatedToken"],
337
+ additionalProperties: false,
338
+ };
339
+ const cleanupOutputSchema = {
340
+ type: "object",
341
+ properties: { accepted: { type: "boolean", const: true }, removed: { type: "integer", minimum: 0 }, olderThan: dateSchema },
342
+ required: ["accepted", "removed", "olderThan"],
343
+ additionalProperties: false,
344
+ };
345
+ export const sendFnAdminResources = [
346
+ { id: "templates", label: "Templates", description: "Inspect and register SendFn email templates.", icon: "sendfn:templates", risk: "standard", minimumScope: "project", idField: "id", displayFields: ["id", "name", "subject"], searchableFields: ["id", "name", "subject"], filterableFields: [], sortableFields: ["id", "name"], sensitiveFields: [] },
347
+ { id: "messages", label: "Messages", description: "Send email, SMS, WhatsApp, and push communications through configured SendFn providers.", icon: "sendfn:messages", risk: "sensitive", minimumScope: "project", idField: "id", displayFields: ["id", "provider", "status", "createdAt"], searchableFields: ["id", "userId", "providerMessageId"], filterableFields: ["status", "provider"], sortableFields: ["createdAt", "updatedAt"], sensitiveFields: ["to", "message", "body", "html", "text", "deviceTokens"] },
348
+ { id: "deliveries", label: "Delivery Events", description: "Query persisted SendFn delivery and engagement events.", icon: "sendfn:deliveries", risk: "sensitive", minimumScope: "project", idField: "id", displayFields: ["id", "referenceType", "eventType", "provider", "eventTimestamp"], searchableFields: ["id", "referenceId", "providerMessageId", "userId"], filterableFields: ["referenceType", "eventType", "provider", "startAt", "endAt"], sortableFields: ["eventTimestamp"], sensitiveFields: ["recipientEmail", "recipientPhone", "deviceToken"] },
349
+ { id: "suppressions", label: "Suppressions", description: "Inspect and manage SendFn email suppressions and unsubscribes.", icon: "sendfn:suppressions", risk: "sensitive", minimumScope: "project", idField: "email", displayFields: ["email", "reason", "source", "suppressedAt"], searchableFields: ["email", "source"], filterableFields: ["reason", "source"], sortableFields: ["email", "suppressedAt"], sensitiveFields: [] },
350
+ { id: "device-tokens", label: "Device Tokens", description: "Inspect and manage SendFn push-notification device registrations.", icon: "sendfn:device-tokens", risk: "sensitive", minimumScope: "project", idField: "id", displayFields: ["id", "userId", "platform", "isActive", "lastUsedAt"], searchableFields: ["id", "userId"], filterableFields: ["platform", "isActive"], sortableFields: ["lastUsedAt", "updatedAt"], sensitiveFields: ["token"] },
351
+ ];
352
+ export const sendFnAdminActions = [
353
+ { id: "register", resource: "templates" },
354
+ { id: "send-email", resource: "messages" },
355
+ { id: "send-email-bulk", resource: "messages" },
356
+ { id: "send-sms", resource: "messages" },
357
+ { id: "send-whatsapp", resource: "messages" },
358
+ { id: "send-push", resource: "messages" },
359
+ { id: "send-push-bulk", resource: "messages" },
360
+ { id: "add", resource: "suppressions" },
361
+ { id: "remove", resource: "suppressions" },
362
+ { id: "register", resource: "device-tokens" },
363
+ { id: "deactivate", resource: "device-tokens" },
364
+ { id: "refresh", resource: "device-tokens" },
365
+ { id: "cleanup", resource: "device-tokens" },
366
+ ];
367
+ const listTemplates = {
368
+ id: "sendfn.templates.list", title: "List templates", description: "List templates registered in the project-owned SendFn client.",
369
+ inputSchema: emptyInputSchema, outputSchema: listSchema(templateSchema), route: { method: "GET", path: "/resources/templates" }, permission: "sendfn.templates.read", minimumScope: "project",
370
+ safety: { classification: "read", idempotent: true, requiresConfirmation: false, audit: "optional" },
371
+ mcp: { readOnlyHint: true, destructiveHint: false, idempotentHint: true }, target: { resource: "templates", collection: true },
372
+ };
373
+ const getTemplate = {
374
+ id: "sendfn.templates.get", title: "Get template", description: "Get one template from the project-owned SendFn registry.",
375
+ inputSchema: getByIdSchema, outputSchema: itemSchema(templateSchema), route: { method: "GET", path: "/resources/templates/:id" }, permission: "sendfn.templates.read", minimumScope: "project",
376
+ safety: { classification: "read", idempotent: true, requiresConfirmation: false, audit: "optional" },
377
+ mcp: { readOnlyHint: true, destructiveHint: false, idempotentHint: true }, target: { resource: "templates", idInput: "id" },
378
+ };
379
+ const registerTemplate = {
380
+ id: "sendfn.templates.register", title: "Register template", description: "Register or replace a SendFn template in the project-owned registry.",
381
+ inputSchema: { type: "object", properties: { template: templateSchema }, required: ["template"], additionalProperties: false }, outputSchema: acceptedOutputSchema,
382
+ route: { method: "POST", path: "/resources/templates/actions/register" }, permission: "sendfn.templates.write", minimumScope: "project",
383
+ safety: { classification: "write", idempotent: true, requiresConfirmation: false, audit: "required" },
384
+ redaction: { inputFields: ["html", "text", "metadata"] }, mcp: { readOnlyHint: false, destructiveHint: false, idempotentHint: true }, target: { resource: "templates", collection: true },
385
+ };
386
+ const listDeliveries = {
387
+ id: "sendfn.deliveries.list", title: "List delivery events", description: "Query delivery and engagement events through SendFn's public event API.",
388
+ inputSchema: listDeliveriesInputSchema, outputSchema: listSchema(deliveryEventSchema), route: { method: "GET", path: "/resources/deliveries" }, permission: "sendfn.deliveries.read", minimumScope: "project",
389
+ safety: { classification: "read", idempotent: true, requiresConfirmation: false, audit: "required" },
390
+ mcp: { readOnlyHint: true, destructiveHint: false, idempotentHint: true }, target: { resource: "deliveries", collection: true },
391
+ };
392
+ const sendEmail = {
393
+ id: "sendfn.messages.send-email", title: "Send email", description: "Send one email through the configured SendFn email provider.",
394
+ inputSchema: sendEmailSchema, outputSchema: itemSchema(emailTransactionSchema), route: { method: "POST", path: "/resources/messages/actions/send-email" }, permission: "sendfn.messages.send", minimumScope: "project",
395
+ safety: { classification: "write", idempotent: true, requiresConfirmation: true, confirmation: { risk: "high", method: "explicit", reason: "Email delivery contacts an external recipient.", maxAgeSeconds: 300 }, audit: "required" }, redaction: { inputFields: ["to", "cc", "bcc", "html", "text", "attachments", "templateData", "headers", "metadata"] },
396
+ mcp: { readOnlyHint: false, destructiveHint: false, idempotentHint: true }, target: { resource: "messages", collection: true },
397
+ };
398
+ const sendBulkEmail = {
399
+ id: "sendfn.messages.send-email-bulk", title: "Send bulk email", description: "Send an explicitly confirmed collection of emails through SendFn.",
400
+ inputSchema: { type: "object", properties: { messages: { type: "array", items: sendEmailSchema, minItems: 1, maxItems: 1000 } }, required: ["messages"], additionalProperties: false },
401
+ outputSchema: { type: "object", properties: { items: { type: "array", items: emailTransactionSchema } }, required: ["items"], additionalProperties: false },
402
+ route: { method: "POST", path: "/resources/messages/actions/send-email-bulk" }, permission: "sendfn.messages.send-bulk", minimumScope: "project",
403
+ safety: { classification: "write", idempotent: true, requiresConfirmation: true, confirmation: { risk: "high", method: "mfa", reason: "Bulk email can contact many external recipients.", maxAgeSeconds: 300 }, audit: "required" },
404
+ redaction: { inputFields: ["to", "cc", "bcc", "html", "text", "attachments", "templateData", "headers", "metadata"] }, mcp: { readOnlyHint: false, destructiveHint: false, idempotentHint: true }, target: { resource: "messages", collection: true },
405
+ };
406
+ const sendSms = {
407
+ id: "sendfn.messages.send-sms", title: "Send SMS", description: "Send one SMS through the configured SendFn SMS provider.",
408
+ inputSchema: sendSmsSchema, outputSchema: itemSchema(smsTransactionSchema), route: { method: "POST", path: "/resources/messages/actions/send-sms" }, permission: "sendfn.messages.send", minimumScope: "project",
409
+ safety: { classification: "write", idempotent: false, requiresConfirmation: true, confirmation: { risk: "high", method: "explicit", reason: "SMS delivery contacts an external recipient.", maxAgeSeconds: 300 }, audit: "required" }, redaction: { inputFields: ["to", "message", "metadata"] },
410
+ mcp: { readOnlyHint: false, destructiveHint: false, idempotentHint: false }, target: { resource: "messages", collection: true },
411
+ };
412
+ const sendWhatsApp = {
413
+ id: "sendfn.messages.send-whatsapp", title: "Send WhatsApp message", description: "Send one WhatsApp message through the configured SendFn provider.",
414
+ inputSchema: sendWhatsAppSchema, outputSchema: itemSchema(whatsAppTransactionSchema), route: { method: "POST", path: "/resources/messages/actions/send-whatsapp" }, permission: "sendfn.messages.send", minimumScope: "project",
415
+ safety: { classification: "write", idempotent: false, requiresConfirmation: true, confirmation: { risk: "high", method: "explicit", reason: "WhatsApp delivery contacts an external recipient.", maxAgeSeconds: 300 }, audit: "required" }, redaction: { inputFields: ["to", "message", "metadata"] },
416
+ mcp: { readOnlyHint: false, destructiveHint: false, idempotentHint: false }, target: { resource: "messages", collection: true },
417
+ };
418
+ const sendPush = {
419
+ id: "sendfn.messages.send-push", title: "Send push notification", description: "Send one push notification through configured SendFn platform providers.",
420
+ inputSchema: sendPushSchema, outputSchema: itemSchema(pushNotificationSchema), route: { method: "POST", path: "/resources/messages/actions/send-push" }, permission: "sendfn.messages.send", minimumScope: "project",
421
+ safety: { classification: "write", idempotent: false, requiresConfirmation: true, confirmation: { risk: "high", method: "explicit", reason: "Push delivery notifies an external user device.", maxAgeSeconds: 300 }, audit: "required" }, redaction: { inputFields: ["userId", "body", "data", "metadata"], outputFields: ["deviceTokens"] },
422
+ mcp: { readOnlyHint: false, destructiveHint: false, idempotentHint: false }, target: { resource: "messages", collection: true },
423
+ };
424
+ const sendBulkPush = {
425
+ id: "sendfn.messages.send-push-bulk", title: "Send bulk push notifications", description: "Send an explicitly confirmed collection of push notifications through SendFn.",
426
+ inputSchema: { type: "object", properties: { messages: { type: "array", items: sendPushSchema, minItems: 1, maxItems: 1000 } }, required: ["messages"], additionalProperties: false },
427
+ outputSchema: { type: "object", properties: { items: { type: "array", items: pushNotificationSchema } }, required: ["items"], additionalProperties: false },
428
+ route: { method: "POST", path: "/resources/messages/actions/send-push-bulk" }, permission: "sendfn.messages.send-bulk", minimumScope: "project",
429
+ safety: { classification: "write", idempotent: false, requiresConfirmation: true, confirmation: { risk: "high", method: "mfa", reason: "Bulk push can notify many users.", maxAgeSeconds: 300 }, audit: "required" },
430
+ redaction: { inputFields: ["userId", "body", "data", "metadata"], outputFields: ["deviceTokens"] }, mcp: { readOnlyHint: false, destructiveHint: false, idempotentHint: false }, target: { resource: "messages", collection: true },
431
+ };
432
+ const listSuppressions = {
433
+ id: "sendfn.suppressions.list", title: "List suppressions", description: "List suppressions through SendFn's public export API.",
434
+ inputSchema: listSuppressionsInputSchema, outputSchema: listSchema(suppressionSchema), route: { method: "GET", path: "/resources/suppressions" }, permission: "sendfn.suppressions.read", minimumScope: "project",
435
+ safety: { classification: "read", idempotent: true, requiresConfirmation: false, audit: "required" }, mcp: { readOnlyHint: true, destructiveHint: false, idempotentHint: true }, target: { resource: "suppressions", collection: true },
436
+ };
437
+ const getSuppression = {
438
+ id: "sendfn.suppressions.get", title: "Check suppression", description: "Check whether one email address is suppressed in SendFn.",
439
+ inputSchema: suppressionIdentitySchema, outputSchema: suppressionGetOutputSchema, route: { method: "GET", path: "/resources/suppressions/:email" }, permission: "sendfn.suppressions.read", minimumScope: "project",
440
+ safety: { classification: "read", idempotent: true, requiresConfirmation: false, audit: "required" }, redaction: { inputFields: ["email"] },
441
+ mcp: { readOnlyHint: true, destructiveHint: false, idempotentHint: true }, target: { resource: "suppressions", idInput: "email" },
442
+ };
443
+ const addSuppression = {
444
+ id: "sendfn.suppressions.add", title: "Add suppression", description: "Add an email address to SendFn's suppression list.",
445
+ inputSchema: addSuppressionInputSchema, outputSchema: suppressionMutationOutputSchema, route: { method: "POST", path: "/resources/suppressions/actions/add" }, permission: "sendfn.suppressions.write", minimumScope: "project",
446
+ safety: { classification: "write", idempotent: true, requiresConfirmation: false, audit: "required" }, redaction: { inputFields: ["email", "metadata"] },
447
+ mcp: { readOnlyHint: false, destructiveHint: false, idempotentHint: true }, target: { resource: "suppressions", idInput: "email" },
448
+ };
449
+ const removeSuppression = {
450
+ id: "sendfn.suppressions.remove", title: "Remove suppression", description: "Remove one suppression after recent-auth confirmation, allowing future delivery.",
451
+ inputSchema: suppressionIdentitySchema, outputSchema: suppressionMutationOutputSchema, route: { method: "POST", path: "/resources/suppressions/actions/remove" }, permission: "sendfn.suppressions.remove", minimumScope: "project",
452
+ safety: { classification: "destructive", idempotent: true, requiresConfirmation: true, confirmation: { risk: "high", method: "recent-auth", reason: "Removing a suppression allows future contact to the address.", maxAgeSeconds: 300 }, audit: "required" },
453
+ redaction: { inputFields: ["email"] }, mcp: { readOnlyHint: false, destructiveHint: true, idempotentHint: true }, target: { resource: "suppressions", idInput: "email" },
454
+ };
455
+ const listDeviceTokens = {
456
+ id: "sendfn.device-tokens.list", title: "List device tokens", description: "List active device registrations for one SendFn user.",
457
+ inputSchema: listDevicesInputSchema, outputSchema: listSchema(deviceTokenSchema), route: { method: "GET", path: "/resources/device-tokens" }, permission: "sendfn.device-tokens.read", minimumScope: "project",
458
+ safety: { classification: "read", idempotent: true, requiresConfirmation: false, audit: "required" }, redaction: { outputFields: ["token"] }, mcp: { readOnlyHint: true, destructiveHint: false, idempotentHint: true }, target: { resource: "device-tokens", collection: true },
459
+ };
460
+ const registerDevice = {
461
+ id: "sendfn.device-tokens.register", title: "Register device token", description: "Register or reactivate a SendFn device token.",
462
+ inputSchema: registerDeviceInputSchema, outputSchema: itemSchema(deviceTokenSchema), route: { method: "POST", path: "/resources/device-tokens/actions/register" }, permission: "sendfn.device-tokens.write", minimumScope: "project",
463
+ safety: { classification: "write", idempotent: true, requiresConfirmation: true, confirmation: { risk: "high", method: "recent-auth", reason: "Registering a device credential authorizes future external push delivery.", maxAgeSeconds: 300 }, audit: "required" }, redaction: { inputFields: ["token", "deviceInfo"], outputFields: ["token"] },
464
+ mcp: { readOnlyHint: false, destructiveHint: false, idempotentHint: true }, target: { resource: "device-tokens", idInput: "token" },
465
+ };
466
+ const deactivateDevice = {
467
+ id: "sendfn.device-tokens.deactivate", title: "Deactivate device token", description: "Deactivate one device token after explicit confirmation.",
468
+ inputSchema: deactivateDeviceInputSchema, outputSchema: deactivatedOutputSchema, route: { method: "POST", path: "/resources/device-tokens/actions/deactivate" }, permission: "sendfn.device-tokens.deactivate", minimumScope: "project",
469
+ safety: { classification: "destructive", idempotent: true, requiresConfirmation: true, confirmation: { risk: "high", method: "recent-auth", reason: "Deactivation stops push delivery to the device." }, audit: "required" }, redaction: { inputFields: ["token"], outputFields: ["deactivatedToken"] },
470
+ mcp: { readOnlyHint: false, destructiveHint: true, idempotentHint: true }, target: { resource: "device-tokens", idInput: "token" },
471
+ };
472
+ const refreshDevice = {
473
+ id: "sendfn.device-tokens.refresh", title: "Refresh device token", description: "Replace an active SendFn device token with a new token.",
474
+ inputSchema: refreshDeviceInputSchema, outputSchema: itemSchema(deviceTokenSchema), route: { method: "POST", path: "/resources/device-tokens/actions/refresh" }, permission: "sendfn.device-tokens.write", minimumScope: "project",
475
+ safety: { classification: "write", idempotent: false, requiresConfirmation: true, confirmation: { risk: "critical", method: "mfa", reason: "Refreshing replaces an active device delivery credential.", maxAgeSeconds: 300 }, audit: "required" }, redaction: { inputFields: ["oldToken", "newToken"], outputFields: ["token"] },
476
+ mcp: { readOnlyHint: false, destructiveHint: false, idempotentHint: false }, target: { resource: "device-tokens", idInput: "oldToken" },
477
+ };
478
+ const cleanupDevices = {
479
+ id: "sendfn.device-tokens.cleanup", title: "Clean up inactive devices", description: "Permanently remove inactive device tokens older than a confirmed cutoff.",
480
+ inputSchema: cleanupDevicesInputSchema, outputSchema: cleanupOutputSchema, route: { method: "POST", path: "/resources/device-tokens/actions/cleanup" }, permission: "sendfn.device-tokens.cleanup", minimumScope: "project",
481
+ safety: { classification: "destructive", idempotent: false, requiresConfirmation: true, confirmation: { risk: "high", method: "recent-auth", reason: "Cleanup permanently deletes inactive device registrations.", maxAgeSeconds: 300 }, audit: "required" },
482
+ mcp: { readOnlyHint: false, destructiveHint: true, idempotentHint: false }, target: { resource: "device-tokens", idInput: "olderThan" },
483
+ };
484
+ export const sendFnAdminOperations = [
485
+ listTemplates, getTemplate, registerTemplate, listDeliveries,
486
+ sendEmail, sendBulkEmail, sendSms, sendWhatsApp, sendPush, sendBulkPush,
487
+ listSuppressions, getSuppression, addSuppression, removeSuppression,
488
+ listDeviceTokens, registerDevice, deactivateDevice, refreshDevice, cleanupDevices,
489
+ ];
490
+ export const sendFnAdminCapability = defineAdminCapability({
491
+ schemaVersion: "1.0",
492
+ id: "sendfn",
493
+ displayName: "SendFn",
494
+ version: "1.0.0",
495
+ description: "Project-scoped operator capabilities backed by the public SendFn client.",
496
+ category: "communication",
497
+ availability: "required-product",
498
+ scopeLevels: ["installation", "workspace", "project", "environment"],
499
+ dependencies: [],
500
+ resources: sendFnAdminResources,
501
+ navigation: [{ id: "sendfn", label: "SendFn", path: "/modules/sendfn", icon: "sendfn", description: "Operate project-owned communications.", order: 100 }],
502
+ operations: sendFnAdminOperations,
503
+ });
504
+ export const sendFnAdminSchemas = {
505
+ template: templateSchema,
506
+ emailTransaction: emailTransactionSchema,
507
+ smsTransaction: smsTransactionSchema,
508
+ whatsAppTransaction: whatsAppTransactionSchema,
509
+ pushNotification: pushNotificationSchema,
510
+ deliveryEvent: deliveryEventSchema,
511
+ suppression: suppressionSchema,
512
+ deviceToken: deviceTokenSchema,
513
+ };
514
+ //# sourceMappingURL=capability.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"capability.js","sourceRoot":"","sources":["../src/capability.ts"],"names":[],"mappings":"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"}