@iterable/mcp 1.0.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.
- package/LICENSE +21 -0
- package/README.md +318 -0
- package/TOOLS.md +133 -0
- package/dist/client-detection.d.ts +7 -0
- package/dist/client-detection.d.ts.map +1 -0
- package/dist/client-detection.js +22 -0
- package/dist/client-detection.js.map +1 -0
- package/dist/config.d.ts +25 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +74 -0
- package/dist/config.js.map +1 -0
- package/dist/http-headers.d.ts +5 -0
- package/dist/http-headers.d.ts.map +1 -0
- package/dist/http-headers.js +5 -0
- package/dist/http-headers.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +43 -0
- package/dist/index.js.map +1 -0
- package/dist/install.d.ts +41 -0
- package/dist/install.d.ts.map +1 -0
- package/dist/install.js +725 -0
- package/dist/install.js.map +1 -0
- package/dist/key-manager.d.ts +236 -0
- package/dist/key-manager.d.ts.map +1 -0
- package/dist/key-manager.js +776 -0
- package/dist/key-manager.js.map +1 -0
- package/dist/keys-cli.d.ts +8 -0
- package/dist/keys-cli.d.ts.map +1 -0
- package/dist/keys-cli.js +487 -0
- package/dist/keys-cli.js.map +1 -0
- package/dist/prompts.d.ts +15 -0
- package/dist/prompts.d.ts.map +1 -0
- package/dist/prompts.js +66 -0
- package/dist/prompts.js.map +1 -0
- package/dist/schema-utils.d.ts +22 -0
- package/dist/schema-utils.d.ts.map +1 -0
- package/dist/schema-utils.js +65 -0
- package/dist/schema-utils.js.map +1 -0
- package/dist/server.d.ts +13 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +172 -0
- package/dist/server.js.map +1 -0
- package/dist/shutdown.d.ts +5 -0
- package/dist/shutdown.d.ts.map +1 -0
- package/dist/shutdown.js +68 -0
- package/dist/shutdown.js.map +1 -0
- package/dist/tool-filter.d.ts +19 -0
- package/dist/tool-filter.d.ts.map +1 -0
- package/dist/tool-filter.js +144 -0
- package/dist/tool-filter.js.map +1 -0
- package/dist/tools/campaigns.d.ts +7 -0
- package/dist/tools/campaigns.d.ts.map +1 -0
- package/dist/tools/campaigns.js +88 -0
- package/dist/tools/campaigns.js.map +1 -0
- package/dist/tools/catalogs.d.ts +7 -0
- package/dist/tools/catalogs.d.ts.map +1 -0
- package/dist/tools/catalogs.js +85 -0
- package/dist/tools/catalogs.js.map +1 -0
- package/dist/tools/events.d.ts +7 -0
- package/dist/tools/events.d.ts.map +1 -0
- package/dist/tools/events.js +34 -0
- package/dist/tools/events.js.map +1 -0
- package/dist/tools/experiments.d.ts +7 -0
- package/dist/tools/experiments.d.ts.map +1 -0
- package/dist/tools/experiments.js +16 -0
- package/dist/tools/experiments.js.map +1 -0
- package/dist/tools/export.d.ts +7 -0
- package/dist/tools/export.d.ts.map +1 -0
- package/dist/tools/export.js +41 -0
- package/dist/tools/export.js.map +1 -0
- package/dist/tools/index.d.ts +19 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +44 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/journeys.d.ts +10 -0
- package/dist/tools/journeys.d.ts.map +1 -0
- package/dist/tools/journeys.js +25 -0
- package/dist/tools/journeys.js.map +1 -0
- package/dist/tools/lists.d.ts +7 -0
- package/dist/tools/lists.d.ts.map +1 -0
- package/dist/tools/lists.js +58 -0
- package/dist/tools/lists.js.map +1 -0
- package/dist/tools/messaging.d.ts +11 -0
- package/dist/tools/messaging.d.ts.map +1 -0
- package/dist/tools/messaging.js +103 -0
- package/dist/tools/messaging.js.map +1 -0
- package/dist/tools/snippets.d.ts +7 -0
- package/dist/tools/snippets.d.ts.map +1 -0
- package/dist/tools/snippets.js +46 -0
- package/dist/tools/snippets.js.map +1 -0
- package/dist/tools/subscriptions.d.ts +4 -0
- package/dist/tools/subscriptions.d.ts.map +1 -0
- package/dist/tools/subscriptions.js +37 -0
- package/dist/tools/subscriptions.js.map +1 -0
- package/dist/tools/templates.d.ts +7 -0
- package/dist/tools/templates.d.ts.map +1 -0
- package/dist/tools/templates.js +118 -0
- package/dist/tools/templates.js.map +1 -0
- package/dist/tools/users.d.ts +10 -0
- package/dist/tools/users.d.ts.map +1 -0
- package/dist/tools/users.js +74 -0
- package/dist/tools/users.js.map +1 -0
- package/dist/tools/webhooks.d.ts +7 -0
- package/dist/tools/webhooks.d.ts.map +1 -0
- package/dist/tools/webhooks.js +22 -0
- package/dist/tools/webhooks.js.map +1 -0
- package/dist/utils/cli-env.d.ts +11 -0
- package/dist/utils/cli-env.d.ts.map +1 -0
- package/dist/utils/cli-env.js +32 -0
- package/dist/utils/cli-env.js.map +1 -0
- package/dist/utils/endpoint-prompt.d.ts +14 -0
- package/dist/utils/endpoint-prompt.d.ts.map +1 -0
- package/dist/utils/endpoint-prompt.js +73 -0
- package/dist/utils/endpoint-prompt.js.map +1 -0
- package/dist/utils/formatting.d.ts +10 -0
- package/dist/utils/formatting.d.ts.map +1 -0
- package/dist/utils/formatting.js +12 -0
- package/dist/utils/formatting.js.map +1 -0
- package/dist/utils/password-prompt.d.ts +19 -0
- package/dist/utils/password-prompt.d.ts.map +1 -0
- package/dist/utils/password-prompt.js +37 -0
- package/dist/utils/password-prompt.js.map +1 -0
- package/dist/utils/sanitize.d.ts +13 -0
- package/dist/utils/sanitize.d.ts.map +1 -0
- package/dist/utils/sanitize.js +23 -0
- package/dist/utils/sanitize.js.map +1 -0
- package/dist/utils/tool-config.d.ts +13 -0
- package/dist/utils/tool-config.d.ts.map +1 -0
- package/dist/utils/tool-config.js +45 -0
- package/dist/utils/tool-config.js.map +1 -0
- package/dist/utils/ui.d.ts +90 -0
- package/dist/utils/ui.d.ts.map +1 -0
- package/dist/utils/ui.js +298 -0
- package/dist/utils/ui.js.map +1 -0
- package/dist/utils/url.d.ts +20 -0
- package/dist/utils/url.d.ts.map +1 -0
- package/dist/utils/url.js +53 -0
- package/dist/utils/url.js.map +1 -0
- package/package.json +105 -0
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Consolidated messaging tools for all communication channels
|
|
3
|
+
* Uses factory pattern to eliminate duplication across channels
|
|
4
|
+
*/
|
|
5
|
+
import { CancelEmailParamsSchema, GetChannelsParamsSchema, GetEmbeddedMessagesParamsSchema, GetInAppMessagesParamsSchema, GetMessageTypesParamsSchema, SendEmailParamsSchema, SendInAppParamsSchema, SendPushParamsSchema, SendSMSParamsSchema, SendWebPushParamsSchema, SendWhatsAppParamsSchema, } from "@iterable/api";
|
|
6
|
+
import { createTool } from "../schema-utils.js";
|
|
7
|
+
const MESSAGING_CHANNELS = [
|
|
8
|
+
{
|
|
9
|
+
channel: "email",
|
|
10
|
+
displayName: "email",
|
|
11
|
+
sendSchema: SendEmailParamsSchema,
|
|
12
|
+
sendMethodName: "sendEmail",
|
|
13
|
+
cancelMethodName: "cancelEmail",
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
channel: "sms",
|
|
17
|
+
displayName: "SMS message",
|
|
18
|
+
sendSchema: SendSMSParamsSchema,
|
|
19
|
+
sendMethodName: "sendSMS",
|
|
20
|
+
cancelMethodName: "cancelSMS",
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
channel: "whatsapp",
|
|
24
|
+
displayName: "WhatsApp message",
|
|
25
|
+
sendSchema: SendWhatsAppParamsSchema,
|
|
26
|
+
sendMethodName: "sendWhatsApp",
|
|
27
|
+
cancelMethodName: "cancelWhatsApp",
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
channel: "web_push",
|
|
31
|
+
displayName: "web push notification",
|
|
32
|
+
sendSchema: SendWebPushParamsSchema,
|
|
33
|
+
sendMethodName: "sendWebPush",
|
|
34
|
+
cancelMethodName: "cancelWebPush",
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
channel: "push",
|
|
38
|
+
displayName: "push notification",
|
|
39
|
+
sendSchema: SendPushParamsSchema,
|
|
40
|
+
sendMethodName: "sendPush",
|
|
41
|
+
cancelMethodName: "cancelPush",
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
channel: "in_app",
|
|
45
|
+
displayName: "in-app message",
|
|
46
|
+
sendSchema: SendInAppParamsSchema,
|
|
47
|
+
sendMethodName: "sendInApp",
|
|
48
|
+
cancelMethodName: "cancelInApp",
|
|
49
|
+
},
|
|
50
|
+
];
|
|
51
|
+
function createMessagingToolsForChannel(config, client) {
|
|
52
|
+
const tools = [
|
|
53
|
+
createTool({
|
|
54
|
+
name: `send_${config.channel}`,
|
|
55
|
+
description: `Send ${config.displayName} to user`,
|
|
56
|
+
schema: config.sendSchema,
|
|
57
|
+
execute: (params) => client[config.sendMethodName](params),
|
|
58
|
+
}),
|
|
59
|
+
];
|
|
60
|
+
if (config.hasCancel !== false && config.cancelMethodName) {
|
|
61
|
+
tools.push(createTool({
|
|
62
|
+
name: `cancel_${config.channel}`,
|
|
63
|
+
description: `Cancel scheduled ${config.displayName} for specific user`,
|
|
64
|
+
schema: CancelEmailParamsSchema, // All cancel operations use the same schema
|
|
65
|
+
execute: (params) => client[config.cancelMethodName](params),
|
|
66
|
+
}));
|
|
67
|
+
}
|
|
68
|
+
return tools;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Create all messaging tools using the factory pattern
|
|
72
|
+
*/
|
|
73
|
+
export function createMessagingTools(client) {
|
|
74
|
+
return [
|
|
75
|
+
// Generate tools for all messaging channels
|
|
76
|
+
...MESSAGING_CHANNELS.flatMap((config) => createMessagingToolsForChannel(config, client)),
|
|
77
|
+
createTool({
|
|
78
|
+
name: "get_channels",
|
|
79
|
+
description: "Get all available communication channels (email, SMS, push, etc.)",
|
|
80
|
+
schema: GetChannelsParamsSchema,
|
|
81
|
+
execute: () => client.getChannels(),
|
|
82
|
+
}),
|
|
83
|
+
createTool({
|
|
84
|
+
name: "get_message_types",
|
|
85
|
+
description: "Get all message types within the project for use in templates",
|
|
86
|
+
schema: GetMessageTypesParamsSchema,
|
|
87
|
+
execute: () => client.getMessageTypes(),
|
|
88
|
+
}),
|
|
89
|
+
createTool({
|
|
90
|
+
name: "get_in_app_messages",
|
|
91
|
+
description: "Get in-app messages for a user",
|
|
92
|
+
schema: GetInAppMessagesParamsSchema,
|
|
93
|
+
execute: (params) => client.getInAppMessages(params),
|
|
94
|
+
}),
|
|
95
|
+
createTool({
|
|
96
|
+
name: "get_embedded_messages",
|
|
97
|
+
description: "Get embedded messages for a user, grouped by placement ID",
|
|
98
|
+
schema: GetEmbeddedMessagesParamsSchema,
|
|
99
|
+
execute: (params) => client.getEmbeddedMessages(params),
|
|
100
|
+
}),
|
|
101
|
+
];
|
|
102
|
+
}
|
|
103
|
+
//# sourceMappingURL=messaging.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"messaging.js","sourceRoot":"","sources":["../../src/tools/messaging.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP tools for Iterable snippets operations
|
|
3
|
+
*/
|
|
4
|
+
import type { IterableClient } from "@iterable/api";
|
|
5
|
+
import type { Tool } from "@modelcontextprotocol/sdk/types.js";
|
|
6
|
+
export declare function createSnippetTools(client: IterableClient): Tool[];
|
|
7
|
+
//# sourceMappingURL=snippets.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"snippets.d.ts","sourceRoot":"","sources":["../../src/tools/snippets.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAOpD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAK/D,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI,EAAE,CA2CjE"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP tools for Iterable snippets operations
|
|
3
|
+
*/
|
|
4
|
+
import { CreateSnippetRequestSchema, DeleteSnippetParamsSchema, GetSnippetParamsSchema, UpdateSnippetRequestSchema, } from "@iterable/api";
|
|
5
|
+
import { z } from "zod";
|
|
6
|
+
import { createTool } from "../schema-utils.js";
|
|
7
|
+
export function createSnippetTools(client) {
|
|
8
|
+
return [
|
|
9
|
+
createTool({
|
|
10
|
+
name: "get_snippets",
|
|
11
|
+
description: "Get all snippets for the current project",
|
|
12
|
+
schema: z.object({}),
|
|
13
|
+
execute: () => client.getSnippets(),
|
|
14
|
+
}),
|
|
15
|
+
createTool({
|
|
16
|
+
name: "create_snippet",
|
|
17
|
+
description: "Create a new snippet with Handlebars templating support",
|
|
18
|
+
schema: CreateSnippetRequestSchema,
|
|
19
|
+
execute: (params) => client.createSnippet(params),
|
|
20
|
+
}),
|
|
21
|
+
createTool({
|
|
22
|
+
name: "get_snippet",
|
|
23
|
+
description: "Get a snippet by ID (numeric) or name (string)",
|
|
24
|
+
schema: GetSnippetParamsSchema,
|
|
25
|
+
execute: (params) => client.getSnippet(params),
|
|
26
|
+
}),
|
|
27
|
+
createTool({
|
|
28
|
+
name: "update_snippet",
|
|
29
|
+
description: "Update a snippet by ID (numeric) or name (string)",
|
|
30
|
+
schema: z.object({
|
|
31
|
+
identifier: z
|
|
32
|
+
.union([z.string(), z.number()])
|
|
33
|
+
.describe("Snippet ID (numeric) or name (string)"),
|
|
34
|
+
body: UpdateSnippetRequestSchema.describe("Snippet update data"),
|
|
35
|
+
}),
|
|
36
|
+
execute: (params) => client.updateSnippet({ identifier: params.identifier }, params.body),
|
|
37
|
+
}),
|
|
38
|
+
createTool({
|
|
39
|
+
name: "delete_snippet",
|
|
40
|
+
description: "Delete a snippet by ID (numeric) or name (string)",
|
|
41
|
+
schema: DeleteSnippetParamsSchema,
|
|
42
|
+
execute: (params) => client.deleteSnippet(params),
|
|
43
|
+
}),
|
|
44
|
+
];
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=snippets.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"snippets.js","sourceRoot":"","sources":["../../src/tools/snippets.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EACL,0BAA0B,EAC1B,yBAAyB,EACzB,sBAAsB,EACtB,0BAA0B,GAC3B,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAEhD,MAAM,UAAU,kBAAkB,CAAC,MAAsB;IACvD,OAAO;QACL,UAAU,CAAC;YACT,IAAI,EAAE,cAAc;YACpB,WAAW,EAAE,0CAA0C;YACvD,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;YACpB,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,WAAW,EAAE;SACpC,CAAC;QAEF,UAAU,CAAC;YACT,IAAI,EAAE,gBAAgB;YACtB,WAAW,EAAE,yDAAyD;YACtE,MAAM,EAAE,0BAA0B;YAClC,OAAO,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC;SAClD,CAAC;QAEF,UAAU,CAAC;YACT,IAAI,EAAE,aAAa;YACnB,WAAW,EAAE,gDAAgD;YAC7D,MAAM,EAAE,sBAAsB;YAC9B,OAAO,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC;SAC/C,CAAC;QAEF,UAAU,CAAC;YACT,IAAI,EAAE,gBAAgB;YACtB,WAAW,EAAE,mDAAmD;YAChE,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;gBACf,UAAU,EAAE,CAAC;qBACV,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;qBAC/B,QAAQ,CAAC,uCAAuC,CAAC;gBACpD,IAAI,EAAE,0BAA0B,CAAC,QAAQ,CAAC,qBAAqB,CAAC;aACjE,CAAC;YACF,OAAO,EAAE,CAAC,MAAM,EAAE,EAAE,CAClB,MAAM,CAAC,aAAa,CAAC,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC;SACvE,CAAC;QAEF,UAAU,CAAC;YACT,IAAI,EAAE,gBAAgB;YACtB,WAAW,EAAE,mDAAmD;YAChE,MAAM,EAAE,yBAAyB;YACjC,OAAO,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC;SAClD,CAAC;KACH,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"subscriptions.d.ts","sourceRoot":"","sources":["../../src/tools/subscriptions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAQpD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAG/D,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI,EAAE,CAkCtE"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { BulkUpdateSubscriptionsParamsSchema, SubscribeUserByEmailParamsSchema, SubscribeUserByUserIdParamsSchema, UnsubscribeUserByEmailParamsSchema, UnsubscribeUserByUserIdParamsSchema, } from "@iterable/api";
|
|
2
|
+
import { createTool } from "../schema-utils.js";
|
|
3
|
+
export function createSubscriptionTools(client) {
|
|
4
|
+
return [
|
|
5
|
+
createTool({
|
|
6
|
+
name: "bulk_update_subscriptions",
|
|
7
|
+
description: "Subscribe or unsubscribe multiple users to/from a subscription group",
|
|
8
|
+
schema: BulkUpdateSubscriptionsParamsSchema,
|
|
9
|
+
execute: (params) => client.bulkUpdateSubscriptions(params),
|
|
10
|
+
}),
|
|
11
|
+
createTool({
|
|
12
|
+
name: "subscribe_user_by_email",
|
|
13
|
+
description: "Subscribe a user to a subscription group by email",
|
|
14
|
+
schema: SubscribeUserByEmailParamsSchema,
|
|
15
|
+
execute: (params) => client.subscribeUserByEmail(params),
|
|
16
|
+
}),
|
|
17
|
+
createTool({
|
|
18
|
+
name: "subscribe_user_by_userid",
|
|
19
|
+
description: "Subscribe a user to a subscription group by userId",
|
|
20
|
+
schema: SubscribeUserByUserIdParamsSchema,
|
|
21
|
+
execute: (params) => client.subscribeUserByUserId(params),
|
|
22
|
+
}),
|
|
23
|
+
createTool({
|
|
24
|
+
name: "unsubscribe_user_by_email",
|
|
25
|
+
description: "Unsubscribe a user from a subscription group by email",
|
|
26
|
+
schema: UnsubscribeUserByEmailParamsSchema,
|
|
27
|
+
execute: (params) => client.unsubscribeUserByEmail(params),
|
|
28
|
+
}),
|
|
29
|
+
createTool({
|
|
30
|
+
name: "unsubscribe_user_by_userid",
|
|
31
|
+
description: "Unsubscribe a user from a subscription group by userId",
|
|
32
|
+
schema: UnsubscribeUserByUserIdParamsSchema,
|
|
33
|
+
execute: (params) => client.unsubscribeUserByUserId(params),
|
|
34
|
+
}),
|
|
35
|
+
];
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=subscriptions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"subscriptions.js","sourceRoot":"","sources":["../../src/tools/subscriptions.ts"],"names":[],"mappings":"AACA,OAAO,EACL,mCAAmC,EACnC,gCAAgC,EAChC,iCAAiC,EACjC,kCAAkC,EAClC,mCAAmC,GACpC,MAAM,eAAe,CAAC;AAGvB,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,MAAM,UAAU,uBAAuB,CAAC,MAAsB;IAC5D,OAAO;QACL,UAAU,CAAC;YACT,IAAI,EAAE,2BAA2B;YACjC,WAAW,EACT,sEAAsE;YACxE,MAAM,EAAE,mCAAmC;YAC3C,OAAO,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,uBAAuB,CAAC,MAAM,CAAC;SAC5D,CAAC;QACF,UAAU,CAAC;YACT,IAAI,EAAE,yBAAyB;YAC/B,WAAW,EAAE,mDAAmD;YAChE,MAAM,EAAE,gCAAgC;YACxC,OAAO,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,oBAAoB,CAAC,MAAM,CAAC;SACzD,CAAC;QACF,UAAU,CAAC;YACT,IAAI,EAAE,0BAA0B;YAChC,WAAW,EAAE,oDAAoD;YACjE,MAAM,EAAE,iCAAiC;YACzC,OAAO,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,qBAAqB,CAAC,MAAM,CAAC;SAC1D,CAAC;QACF,UAAU,CAAC;YACT,IAAI,EAAE,2BAA2B;YACjC,WAAW,EAAE,uDAAuD;YACpE,MAAM,EAAE,kCAAkC;YAC1C,OAAO,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,sBAAsB,CAAC,MAAM,CAAC;SAC3D,CAAC;QACF,UAAU,CAAC;YACT,IAAI,EAAE,4BAA4B;YAClC,WAAW,EAAE,wDAAwD;YACrE,MAAM,EAAE,mCAAmC;YAC3C,OAAO,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,uBAAuB,CAAC,MAAM,CAAC;SAC5D,CAAC;KACH,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP tools for Iterable template operations
|
|
3
|
+
*/
|
|
4
|
+
import type { IterableClient } from "@iterable/api";
|
|
5
|
+
import type { Tool } from "@modelcontextprotocol/sdk/types.js";
|
|
6
|
+
export declare function createTemplateTools(client: IterableClient): Tool[];
|
|
7
|
+
//# sourceMappingURL=templates.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"templates.d.ts","sourceRoot":"","sources":["../../src/tools/templates.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAiBpD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAoH/D,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI,EAAE,CA4BlE"}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP tools for Iterable template operations
|
|
3
|
+
*/
|
|
4
|
+
import { BulkDeleteTemplatesParamsSchema, GetTemplateByClientIdParamsSchema, GetTemplateParamsSchema, GetTemplatesParamsSchema, PreviewTemplateParamsSchema, TemplateProofRequestSchema, UpdateEmailTemplateParamsSchema, UpdateInAppTemplateParamsSchema, UpdatePushTemplateParamsSchema, UpdateSMSTemplateParamsSchema, UpsertEmailTemplateParamsSchema, UpsertInAppTemplateParamsSchema, UpsertPushTemplateParamsSchema, UpsertSMSTemplateParamsSchema, } from "@iterable/api";
|
|
5
|
+
import { createTool } from "../schema-utils.js";
|
|
6
|
+
const TEMPLATE_TYPES = [
|
|
7
|
+
{
|
|
8
|
+
type: "email",
|
|
9
|
+
displayName: "email",
|
|
10
|
+
upsertSchema: UpsertEmailTemplateParamsSchema,
|
|
11
|
+
updateSchema: UpdateEmailTemplateParamsSchema,
|
|
12
|
+
getMethodName: "getEmailTemplate",
|
|
13
|
+
upsertMethodName: "upsertEmailTemplate",
|
|
14
|
+
updateMethodName: "updateEmailTemplate",
|
|
15
|
+
proofMethodName: "sendEmailTemplateProof",
|
|
16
|
+
previewMethodName: "previewEmailTemplate",
|
|
17
|
+
getParamsTransform: (params) => params.templateId, // Email uses just templateId
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
type: "sms",
|
|
21
|
+
displayName: "SMS",
|
|
22
|
+
upsertSchema: UpsertSMSTemplateParamsSchema,
|
|
23
|
+
updateSchema: UpdateSMSTemplateParamsSchema,
|
|
24
|
+
getMethodName: "getSMSTemplate",
|
|
25
|
+
upsertMethodName: "upsertSMSTemplate",
|
|
26
|
+
updateMethodName: "updateSMSTemplate",
|
|
27
|
+
proofMethodName: "sendSMSTemplateProof",
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
type: "push",
|
|
31
|
+
displayName: "push notification",
|
|
32
|
+
upsertSchema: UpsertPushTemplateParamsSchema,
|
|
33
|
+
updateSchema: UpdatePushTemplateParamsSchema,
|
|
34
|
+
getMethodName: "getPushTemplate",
|
|
35
|
+
upsertMethodName: "upsertPushTemplate",
|
|
36
|
+
updateMethodName: "updatePushTemplate",
|
|
37
|
+
proofMethodName: "sendPushTemplateProof",
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
type: "inapp",
|
|
41
|
+
displayName: "in-app message",
|
|
42
|
+
upsertSchema: UpsertInAppTemplateParamsSchema,
|
|
43
|
+
updateSchema: UpdateInAppTemplateParamsSchema,
|
|
44
|
+
getMethodName: "getInAppTemplate",
|
|
45
|
+
upsertMethodName: "upsertInAppTemplate",
|
|
46
|
+
updateMethodName: "updateInAppTemplate",
|
|
47
|
+
proofMethodName: "sendInAppTemplateProof",
|
|
48
|
+
previewMethodName: "previewInAppTemplate",
|
|
49
|
+
},
|
|
50
|
+
];
|
|
51
|
+
function createTemplateToolsForType(config, client) {
|
|
52
|
+
const tools = [
|
|
53
|
+
createTool({
|
|
54
|
+
name: `get_${config.type}_template`,
|
|
55
|
+
description: `Get details for specific ${config.displayName} template by ID`,
|
|
56
|
+
schema: GetTemplateParamsSchema,
|
|
57
|
+
execute: (params) => {
|
|
58
|
+
const methodParams = config.getParamsTransform
|
|
59
|
+
? config.getParamsTransform(params)
|
|
60
|
+
: params;
|
|
61
|
+
return client[config.getMethodName](methodParams);
|
|
62
|
+
},
|
|
63
|
+
}),
|
|
64
|
+
createTool({
|
|
65
|
+
name: `upsert_${config.type}_template`,
|
|
66
|
+
description: `Create or update ${config.displayName} template. If a template with the specified clientTemplateId exists, it will be updated; otherwise, a new template will be created.`,
|
|
67
|
+
schema: config.upsertSchema,
|
|
68
|
+
execute: (params) => client[config.upsertMethodName](params),
|
|
69
|
+
}),
|
|
70
|
+
createTool({
|
|
71
|
+
name: `update_${config.type}_template`,
|
|
72
|
+
description: `Update existing ${config.displayName} template by templateId`,
|
|
73
|
+
schema: config.updateSchema,
|
|
74
|
+
execute: (params) => client[config.updateMethodName](params),
|
|
75
|
+
}),
|
|
76
|
+
createTool({
|
|
77
|
+
name: `send_${config.type}_template_proof`,
|
|
78
|
+
description: `Send a proof of a ${config.displayName} template to a specific user`,
|
|
79
|
+
schema: TemplateProofRequestSchema,
|
|
80
|
+
execute: (params) => client[config.proofMethodName](params),
|
|
81
|
+
}),
|
|
82
|
+
];
|
|
83
|
+
if (config.previewMethodName) {
|
|
84
|
+
tools.push(createTool({
|
|
85
|
+
name: `preview_${config.type}_template`,
|
|
86
|
+
description: `Preview ${config.displayName} template with custom data. Returns fully rendered HTML with user, event, and/or data feed data substituted.`,
|
|
87
|
+
schema: PreviewTemplateParamsSchema,
|
|
88
|
+
execute: (params) => client[config.previewMethodName](params),
|
|
89
|
+
}));
|
|
90
|
+
}
|
|
91
|
+
return tools;
|
|
92
|
+
}
|
|
93
|
+
export function createTemplateTools(client) {
|
|
94
|
+
return [
|
|
95
|
+
// General template tools
|
|
96
|
+
createTool({
|
|
97
|
+
name: "get_templates",
|
|
98
|
+
description: "Retrieve templates",
|
|
99
|
+
schema: GetTemplatesParamsSchema,
|
|
100
|
+
execute: (params) => client.getTemplates(params),
|
|
101
|
+
}),
|
|
102
|
+
createTool({
|
|
103
|
+
name: "get_template_by_client_id",
|
|
104
|
+
description: "Get template by client template ID",
|
|
105
|
+
schema: GetTemplateByClientIdParamsSchema,
|
|
106
|
+
execute: (params) => client.getTemplateByClientId(params.clientTemplateId),
|
|
107
|
+
}),
|
|
108
|
+
createTool({
|
|
109
|
+
name: "delete_templates",
|
|
110
|
+
description: "Delete one or more templates by ID",
|
|
111
|
+
schema: BulkDeleteTemplatesParamsSchema,
|
|
112
|
+
execute: (params) => client.deleteTemplates(params.ids),
|
|
113
|
+
}),
|
|
114
|
+
// Generate tools for all template types using configuration-driven approach
|
|
115
|
+
...TEMPLATE_TYPES.flatMap((config) => createTemplateToolsForType(config, client)),
|
|
116
|
+
];
|
|
117
|
+
}
|
|
118
|
+
//# sourceMappingURL=templates.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"templates.js","sourceRoot":"","sources":["../../src/tools/templates.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP tools for Iterable user operations
|
|
3
|
+
*/
|
|
4
|
+
import type { IterableClient } from "@iterable/api";
|
|
5
|
+
import type { Tool } from "@modelcontextprotocol/sdk/types.js";
|
|
6
|
+
/**
|
|
7
|
+
* Create all user management tools
|
|
8
|
+
*/
|
|
9
|
+
export declare function createUserTools(client: IterableClient): Tool[];
|
|
10
|
+
//# sourceMappingURL=users.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"users.d.ts","sourceRoot":"","sources":["../../src/tools/users.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAYpD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAK/D;;GAEG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI,EAAE,CAqE9D"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP tools for Iterable user operations
|
|
3
|
+
*/
|
|
4
|
+
import { BulkUpdateUsersParamsSchema, DeleteUserByEmailParamsSchema, DeleteUserByUserIdParamsSchema, GetSentMessagesParamsSchema, GetUserByEmailParamsSchema, GetUserByIdParamsSchema, UpdateEmailParamsSchema, UpdateUserParamsSchema, UpdateUserSubscriptionsParamsSchema, } from "@iterable/api";
|
|
5
|
+
import { z } from "zod";
|
|
6
|
+
import { createTool } from "../schema-utils.js";
|
|
7
|
+
/**
|
|
8
|
+
* Create all user management tools
|
|
9
|
+
*/
|
|
10
|
+
export function createUserTools(client) {
|
|
11
|
+
return [
|
|
12
|
+
createTool({
|
|
13
|
+
name: "get_user_by_email",
|
|
14
|
+
description: "Get user profile information by email address",
|
|
15
|
+
schema: GetUserByEmailParamsSchema,
|
|
16
|
+
execute: (params) => client.getUserByEmail(params.email),
|
|
17
|
+
}),
|
|
18
|
+
createTool({
|
|
19
|
+
name: "get_user_by_user_id",
|
|
20
|
+
description: "Get user profile information by user ID",
|
|
21
|
+
schema: GetUserByIdParamsSchema,
|
|
22
|
+
execute: (params) => client.getUserByUserId(params.userId),
|
|
23
|
+
}),
|
|
24
|
+
createTool({
|
|
25
|
+
name: "update_user",
|
|
26
|
+
description: "Update user profile information (accepts email OR userId in params)",
|
|
27
|
+
schema: UpdateUserParamsSchema,
|
|
28
|
+
execute: (params) => client.updateUser(params),
|
|
29
|
+
}),
|
|
30
|
+
createTool({
|
|
31
|
+
name: "delete_user_by_email",
|
|
32
|
+
description: "Delete a user by email address (asynchronous - does not prevent future data collection)",
|
|
33
|
+
schema: DeleteUserByEmailParamsSchema,
|
|
34
|
+
execute: (params) => client.deleteUserByEmail(params.email),
|
|
35
|
+
}),
|
|
36
|
+
createTool({
|
|
37
|
+
name: "delete_user_by_user_id",
|
|
38
|
+
description: "Delete a user by user ID (asynchronous - does not prevent future data collection, deletes all users with same userId)",
|
|
39
|
+
schema: DeleteUserByUserIdParamsSchema,
|
|
40
|
+
execute: (params) => client.deleteUserByUserId(params.userId),
|
|
41
|
+
}),
|
|
42
|
+
createTool({
|
|
43
|
+
name: "update_email",
|
|
44
|
+
description: "Update a user's email address (only use with email-based projects; for userId/hybrid projects, use update_user instead)",
|
|
45
|
+
schema: UpdateEmailParamsSchema,
|
|
46
|
+
execute: (params) => client.updateEmail(params),
|
|
47
|
+
}),
|
|
48
|
+
createTool({
|
|
49
|
+
name: "update_user_subscriptions",
|
|
50
|
+
description: "Update user subscriptions (IMPORTANT: overwrites existing data for any non-null fields specified)",
|
|
51
|
+
schema: UpdateUserSubscriptionsParamsSchema,
|
|
52
|
+
execute: (params) => client.updateUserSubscriptions(params),
|
|
53
|
+
}),
|
|
54
|
+
createTool({
|
|
55
|
+
name: "bulk_update_users",
|
|
56
|
+
description: "Update multiple users at once",
|
|
57
|
+
schema: BulkUpdateUsersParamsSchema,
|
|
58
|
+
execute: (params) => client.bulkUpdateUsers(params),
|
|
59
|
+
}),
|
|
60
|
+
createTool({
|
|
61
|
+
name: "get_sent_messages",
|
|
62
|
+
description: "Get messages sent to a specific user with optional filtering",
|
|
63
|
+
schema: GetSentMessagesParamsSchema,
|
|
64
|
+
execute: (params) => client.getSentMessages(params),
|
|
65
|
+
}),
|
|
66
|
+
createTool({
|
|
67
|
+
name: "get_user_fields",
|
|
68
|
+
description: "Get all user profile field definitions and their types",
|
|
69
|
+
schema: z.object({}),
|
|
70
|
+
execute: () => client.getUserFields(),
|
|
71
|
+
}),
|
|
72
|
+
];
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=users.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"users.js","sourceRoot":"","sources":["../../src/tools/users.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP tools for Iterable webhook operations
|
|
3
|
+
*/
|
|
4
|
+
import type { IterableClient } from "@iterable/api";
|
|
5
|
+
import type { Tool } from "@modelcontextprotocol/sdk/types.js";
|
|
6
|
+
export declare function createWebhookTools(client: IterableClient): Tool[];
|
|
7
|
+
//# sourceMappingURL=webhooks.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"webhooks.d.ts","sourceRoot":"","sources":["../../src/tools/webhooks.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAKpD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAI/D,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI,EAAE,CAejE"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP tools for Iterable webhook operations
|
|
3
|
+
*/
|
|
4
|
+
import { GetWebhooksParamsSchema, UpdateWebhookParamsSchema, } from "@iterable/api";
|
|
5
|
+
import { createTool } from "../schema-utils.js";
|
|
6
|
+
export function createWebhookTools(client) {
|
|
7
|
+
return [
|
|
8
|
+
createTool({
|
|
9
|
+
name: "get_webhooks",
|
|
10
|
+
description: "Get all webhooks for the project",
|
|
11
|
+
schema: GetWebhooksParamsSchema,
|
|
12
|
+
execute: () => client.getWebhooks(),
|
|
13
|
+
}),
|
|
14
|
+
createTool({
|
|
15
|
+
name: "update_webhook",
|
|
16
|
+
description: "Update a webhook configuration",
|
|
17
|
+
schema: UpdateWebhookParamsSchema,
|
|
18
|
+
execute: (params) => client.updateWebhook(params),
|
|
19
|
+
}),
|
|
20
|
+
];
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=webhooks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"webhooks.js","sourceRoot":"","sources":["../../src/tools/webhooks.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EACL,uBAAuB,EACvB,yBAAyB,GAC1B,MAAM,eAAe,CAAC;AAGvB,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAEhD,MAAM,UAAU,kBAAkB,CAAC,MAAsB;IACvD,OAAO;QACL,UAAU,CAAC;YACT,IAAI,EAAE,cAAc;YACpB,WAAW,EAAE,kCAAkC;YAC/C,MAAM,EAAE,uBAAuB;YAC/B,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,WAAW,EAAE;SACpC,CAAC;QACF,UAAU,CAAC;YACT,IAAI,EAAE,gBAAgB;YACtB,WAAW,EAAE,gCAAgC;YAC7C,MAAM,EAAE,yBAAyB;YACjC,OAAO,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC;SAClD,CAAC;KACH,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export declare function isTestEnv(): boolean;
|
|
2
|
+
type Spinner = {
|
|
3
|
+
start: (msg?: string) => void;
|
|
4
|
+
stop: () => void;
|
|
5
|
+
succeed: (msg?: string) => void;
|
|
6
|
+
fail: (msg?: string) => void;
|
|
7
|
+
};
|
|
8
|
+
export declare function getSpinner(): Promise<Spinner>;
|
|
9
|
+
export declare function loadUi(): Promise<any>;
|
|
10
|
+
export {};
|
|
11
|
+
//# sourceMappingURL=cli-env.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli-env.d.ts","sourceRoot":"","sources":["../../src/utils/cli-env.ts"],"names":[],"mappings":"AAAA,wBAAgB,SAAS,IAAI,OAAO,CAEnC;AAED,KAAK,OAAO,GAAG;IAAE,KAAK,EAAE,CAAC,GAAG,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAAC,IAAI,EAAE,MAAM,IAAI,CAAC;IAAC,OAAO,EAAE,CAAC,GAAG,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAAC,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;CAAE,CAAC;AAElI,wBAAsB,UAAU,IAAI,OAAO,CAAC,OAAO,CAAC,CAUnD;AAED,wBAAsB,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,CAe3C"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
export function isTestEnv() {
|
|
2
|
+
return process.env.NODE_ENV === "test";
|
|
3
|
+
}
|
|
4
|
+
export async function getSpinner() {
|
|
5
|
+
if (isTestEnv()) {
|
|
6
|
+
return { start: () => { }, stop: () => { }, succeed: () => { }, fail: () => { } };
|
|
7
|
+
}
|
|
8
|
+
try {
|
|
9
|
+
const ora = (await import("ora")).default;
|
|
10
|
+
return ora();
|
|
11
|
+
}
|
|
12
|
+
catch {
|
|
13
|
+
return { start: () => { }, stop: () => { }, succeed: () => { }, fail: () => { } };
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
export async function loadUi() {
|
|
17
|
+
if (isTestEnv()) {
|
|
18
|
+
return {
|
|
19
|
+
createTable: () => ({ push: () => { }, toString: () => "" }),
|
|
20
|
+
formatKeyValue: (_k, v, _c) => v,
|
|
21
|
+
icons: { key: "", globe: "", zap: "" },
|
|
22
|
+
showBox: () => { },
|
|
23
|
+
showError: () => { },
|
|
24
|
+
showInfo: () => { },
|
|
25
|
+
showIterableLogo: () => { },
|
|
26
|
+
showSection: () => { },
|
|
27
|
+
showSuccess: () => { },
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
return await import("./ui.js");
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=cli-env.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli-env.js","sourceRoot":"","sources":["../../src/utils/cli-env.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,SAAS;IACvB,OAAO,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,MAAM,CAAC;AACzC,CAAC;AAID,MAAM,CAAC,KAAK,UAAU,UAAU;IAC9B,IAAI,SAAS,EAAE,EAAE,CAAC;QAChB,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,GAAE,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,GAAE,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,GAAE,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,GAAE,CAAC,EAAE,CAAC;IAChF,CAAC;IACD,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,CAAC,MAAM,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC;QAC1C,OAAO,GAAG,EAAE,CAAC;IACf,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,GAAE,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,GAAE,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,GAAE,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,GAAE,CAAC,EAAE,CAAC;IAChF,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,MAAM;IAC1B,IAAI,SAAS,EAAE,EAAE,CAAC;QAChB,OAAO;YACL,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,GAAE,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;YAC3D,cAAc,EAAE,CAAC,EAAU,EAAE,CAAS,EAAE,EAAQ,EAAE,EAAE,CAAC,CAAC;YACtD,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE;YACtC,OAAO,EAAE,GAAG,EAAE,GAAE,CAAC;YACjB,SAAS,EAAE,GAAG,EAAE,GAAE,CAAC;YACnB,QAAQ,EAAE,GAAG,EAAE,GAAE,CAAC;YAClB,gBAAgB,EAAE,GAAG,EAAE,GAAE,CAAC;YAC1B,WAAW,EAAE,GAAG,EAAE,GAAE,CAAC;YACrB,WAAW,EAAE,GAAG,EAAE,GAAE,CAAC;SACtB,CAAC;IACJ,CAAC;IACD,OAAO,MAAM,MAAM,CAAC,SAAS,CAAC,CAAC;AACjC,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export interface EndpointPromptDeps {
|
|
2
|
+
inquirer: any;
|
|
3
|
+
icons: {
|
|
4
|
+
globe?: string;
|
|
5
|
+
};
|
|
6
|
+
chalk: any;
|
|
7
|
+
showError: (message: string) => void;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Prompt user to select Iterable region or provide a custom endpoint.
|
|
11
|
+
* Returns the validated base URL string.
|
|
12
|
+
*/
|
|
13
|
+
export declare function promptForIterableBaseUrl(deps: EndpointPromptDeps): Promise<string>;
|
|
14
|
+
//# sourceMappingURL=endpoint-prompt.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"endpoint-prompt.d.ts","sourceRoot":"","sources":["../../src/utils/endpoint-prompt.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,GAAG,CAAC;IACd,KAAK,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC1B,KAAK,EAAE,GAAG,CAAC;IACX,SAAS,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CACtC;AAED;;;GAGG;AACH,wBAAsB,wBAAwB,CAAC,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAAC,MAAM,CAAC,CAmExF"}
|