neuron-mcp-server 1.0.1 → 1.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +28 -16
- package/dist/client.d.ts +6 -0
- package/dist/client.js +50 -12
- package/dist/client.js.map +1 -1
- package/dist/index.js +51 -7
- package/dist/index.js.map +1 -1
- package/dist/tools/ai.js +9 -3
- package/dist/tools/ai.js.map +1 -1
- package/dist/tools/approvals.d.ts +2 -0
- package/dist/tools/approvals.js +181 -0
- package/dist/tools/approvals.js.map +1 -0
- package/dist/tools/audit.js +7 -4
- package/dist/tools/audit.js.map +1 -1
- package/dist/tools/auth.js +119 -19
- package/dist/tools/auth.js.map +1 -1
- package/dist/tools/billing.js +22 -6
- package/dist/tools/billing.js.map +1 -1
- package/dist/tools/blog.js +98 -34
- package/dist/tools/blog.js.map +1 -1
- package/dist/tools/bot-api-keys.js +27 -12
- package/dist/tools/bot-api-keys.js.map +1 -1
- package/dist/tools/bot-api.js +53 -27
- package/dist/tools/bot-api.js.map +1 -1
- package/dist/tools/bots.js +116 -68
- package/dist/tools/bots.js.map +1 -1
- package/dist/tools/broadcasts.js +78 -38
- package/dist/tools/broadcasts.js.map +1 -1
- package/dist/tools/builtin-tools.js +19 -12
- package/dist/tools/builtin-tools.js.map +1 -1
- package/dist/tools/campaigns.js +149 -61
- package/dist/tools/campaigns.js.map +1 -1
- package/dist/tools/channels.js +163 -53
- package/dist/tools/channels.js.map +1 -1
- package/dist/tools/contact-lists.js +111 -51
- package/dist/tools/contact-lists.js.map +1 -1
- package/dist/tools/contacts.js +117 -44
- package/dist/tools/contacts.js.map +1 -1
- package/dist/tools/conversations.js +95 -50
- package/dist/tools/conversations.js.map +1 -1
- package/dist/tools/flows.d.ts +2 -0
- package/dist/tools/flows.js +242 -0
- package/dist/tools/flows.js.map +1 -0
- package/dist/tools/group-management.d.ts +2 -0
- package/dist/tools/group-management.js +239 -0
- package/dist/tools/group-management.js.map +1 -0
- package/dist/tools/leads.d.ts +2 -0
- package/dist/tools/leads.js +100 -0
- package/dist/tools/leads.js.map +1 -0
- package/dist/tools/list-campaigns.d.ts +2 -0
- package/dist/tools/list-campaigns.js +152 -0
- package/dist/tools/list-campaigns.js.map +1 -0
- package/dist/tools/list-pool.js +250 -33
- package/dist/tools/list-pool.js.map +1 -1
- package/dist/tools/media.js +12 -7
- package/dist/tools/media.js.map +1 -1
- package/dist/tools/newsletters.js +106 -26
- package/dist/tools/newsletters.js.map +1 -1
- package/dist/tools/organizations.js +76 -35
- package/dist/tools/organizations.js.map +1 -1
- package/dist/tools/outbound-webhooks.js +32 -20
- package/dist/tools/outbound-webhooks.js.map +1 -1
- package/dist/tools/payouts.js +44 -17
- package/dist/tools/payouts.js.map +1 -1
- package/dist/tools/personas.d.ts +2 -0
- package/dist/tools/personas.js +141 -0
- package/dist/tools/personas.js.map +1 -0
- package/dist/tools/polls.d.ts +2 -0
- package/dist/tools/polls.js +30 -0
- package/dist/tools/polls.js.map +1 -0
- package/dist/tools/pool.js +101 -43
- package/dist/tools/pool.js.map +1 -1
- package/dist/tools/products.d.ts +2 -0
- package/dist/tools/products.js +277 -0
- package/dist/tools/products.js.map +1 -0
- package/dist/tools/profile-privacy.d.ts +2 -0
- package/dist/tools/profile-privacy.js +195 -0
- package/dist/tools/profile-privacy.js.map +1 -0
- package/dist/tools/reflections.js +25 -13
- package/dist/tools/reflections.js.map +1 -1
- package/dist/tools/scheduled-messages.d.ts +2 -0
- package/dist/tools/scheduled-messages.js +124 -0
- package/dist/tools/scheduled-messages.js.map +1 -0
- package/dist/tools/social-channels.d.ts +2 -0
- package/dist/tools/social-channels.js +318 -0
- package/dist/tools/social-channels.js.map +1 -0
- package/dist/tools/tasks.d.ts +2 -0
- package/dist/tools/tasks.js +155 -0
- package/dist/tools/tasks.js.map +1 -0
- package/dist/tools/tools.js +86 -40
- package/dist/tools/tools.js.map +1 -1
- package/dist/tools/wallets.js +34 -12
- package/dist/tools/wallets.js.map +1 -1
- package/dist/tools/webhooks.js +35 -20
- package/dist/tools/webhooks.js.map +1 -1
- package/dist/tools/whatsapp-actions.d.ts +2 -0
- package/dist/tools/whatsapp-actions.js +186 -0
- package/dist/tools/whatsapp-actions.js.map +1 -0
- package/package.json +7 -2
package/README.md
CHANGED
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
# Neuron MCP Server
|
|
2
2
|
|
|
3
|
-
> WhatsApp automation platform with
|
|
3
|
+
> WhatsApp automation platform with 300+ MCP tools for AI-powered chatbots, broadcasts, campaigns, and more.
|
|
4
4
|
|
|
5
5
|
[](https://www.npmjs.com/package/neuron-mcp-server)
|
|
6
6
|
[](https://opensource.org/licenses/MIT)
|
|
7
|
+
[](https://smithery.ai/servers/rsh/neuron)
|
|
7
8
|
|
|
8
9
|
## What is Neuron?
|
|
9
10
|
|
|
10
|
-
[Neuron](https://neuron.ng) is an AI-powered WhatsApp automation platform. This MCP server exposes **
|
|
11
|
+
[Neuron](https://neuron.ng) is an AI-powered WhatsApp automation platform. This MCP server exposes **300+ tools** that let AI coding assistants — Claude Code, Cursor, Windsurf, and other MCP-compatible clients — manage your entire WhatsApp business programmatically.
|
|
11
12
|
|
|
12
13
|
Build chatbots, send broadcasts, manage contacts, create campaigns, publish newsletters, and more — all through natural language with your AI assistant.
|
|
13
14
|
|
|
@@ -81,26 +82,37 @@ Set `NEURON_AUTH_TOKEN` for unattended/CI use:
|
|
|
81
82
|
NEURON_AUTH_TOKEN=your-token npx neuron-mcp-server
|
|
82
83
|
```
|
|
83
84
|
|
|
84
|
-
## Available Tools (
|
|
85
|
+
## Available Tools (300+)
|
|
85
86
|
|
|
86
87
|
| Category | Tools | Description |
|
|
87
88
|
|----------|-------|-------------|
|
|
88
|
-
| **Authentication** |
|
|
89
|
-
| **Bot Management** |
|
|
90
|
-
| **Conversations** |
|
|
91
|
-
| **
|
|
92
|
-
| **
|
|
93
|
-
| **
|
|
94
|
-
| **Channels** | 17 | WhatsApp connections, QR pairing, session management |
|
|
89
|
+
| **Authentication** | 9 | Login, register, org switching, token refresh |
|
|
90
|
+
| **Bot Management** | 11 | Create and manage AI chatbots with configurable LLM models |
|
|
91
|
+
| **Conversations & Messaging** | 20 | Message management, human takeover, send WhatsApp messages, polls |
|
|
92
|
+
| **Approvals** | 5 | Human-in-the-loop approve/reject over WhatsApp |
|
|
93
|
+
| **Channels & Sessions** | 19 | WhatsApp connections, QR/pair-code, session management |
|
|
94
|
+
| **Social Channels** | 11 | Post to X, Instagram, Facebook, LinkedIn, TikTok |
|
|
95
95
|
| **Broadcasts** | 7 | Bulk messaging to contact lists |
|
|
96
|
-
| **Campaigns** |
|
|
97
|
-
| **
|
|
98
|
-
| **
|
|
99
|
-
| **
|
|
96
|
+
| **Campaigns** | 16 | Sponsored campaigns, marketplace, funding |
|
|
97
|
+
| **List Campaigns** | 8 | Paced, per-run messaging to list members |
|
|
98
|
+
| **Contacts** | 12 | CRUD, import/export, semantic search, sync |
|
|
99
|
+
| **Contact Lists** | 11 | Segmentation, merge, membership management |
|
|
100
|
+
| **Leads** | 7 | Multi-source lead capture, pool, convert |
|
|
101
|
+
| **Knowledge Bases** | 14 | Upload documents, semantic search, sync, ingest content |
|
|
102
|
+
| **Newsletters** | 9 | WhatsApp Channel/newsletter management |
|
|
103
|
+
| **Products & Sales** | 17 | Sell products, checkout, orders, delivery, memberships |
|
|
104
|
+
| **Flows** | 11 | Event-driven automation flows and runs |
|
|
105
|
+
| **Tasks & Scheduling** | 12 | Scheduled autonomous bot tasks and messages |
|
|
106
|
+
| **Personas** | 9 | Build and apply voice personas |
|
|
107
|
+
| **Group Management** | 11 | Create groups, manage members, settings |
|
|
108
|
+
| **Webhooks** | 10 | Inbound and outbound webhook management |
|
|
109
|
+
| **Custom Tools** | 10 | HTTP API tools for bots with secret injection |
|
|
110
|
+
| **Bot API** | 8 | Bot-scoped API keys, chat and messaging |
|
|
111
|
+
| **Marketplace & Pool** | 23 | Publish and install bots, tools, and contact lists |
|
|
100
112
|
| **Blog** | 6 | Content publishing |
|
|
101
|
-
| **Organizations** |
|
|
113
|
+
| **Organizations & Audit** | 11 | Team management, audit logs, member invitations |
|
|
102
114
|
| **Billing & Wallet** | 12 | Subscriptions, wallet, payouts, bank accounts |
|
|
103
|
-
| **
|
|
115
|
+
| **Profile & Privacy** | 10 | Profile name/status/picture, privacy settings |
|
|
104
116
|
| **Reflections** | 4 | Self-learning bot improvement suggestions |
|
|
105
117
|
| **Media & AI** | 2 | Upload media, AI text rewriting |
|
|
106
118
|
|
package/dist/client.d.ts
CHANGED
|
@@ -1,6 +1,12 @@
|
|
|
1
1
|
export declare function setAuthToken(token: string): void;
|
|
2
2
|
export declare function getAuthToken(): string;
|
|
3
3
|
export declare function getBaseUrl(): string;
|
|
4
|
+
export declare function setBaseUrl(url: string): void;
|
|
5
|
+
export declare function listInstances(): Array<{
|
|
6
|
+
url: string;
|
|
7
|
+
active: boolean;
|
|
8
|
+
authenticated: boolean;
|
|
9
|
+
}>;
|
|
4
10
|
interface ApiResponse<T = unknown> {
|
|
5
11
|
success: boolean;
|
|
6
12
|
data?: T;
|
package/dist/client.js
CHANGED
|
@@ -5,41 +5,79 @@ import { homedir } from "node:os";
|
|
|
5
5
|
// Resolve API URL: prefer NEURON_API_URL if it points to a real server (not Docker-internal hostnames)
|
|
6
6
|
const envUrl = process.env.NEURON_API_URL || "";
|
|
7
7
|
const isDockerInternal = envUrl.includes("neuron-api:") || (envUrl.includes("localhost") && !envUrl.includes("https://"));
|
|
8
|
-
const
|
|
8
|
+
const DEFAULT_BASE_URL = isDockerInternal ? "https://api.neuron.ng/api/v1" : (envUrl || "https://api.neuron.ng/api/v1");
|
|
9
|
+
let baseUrl = DEFAULT_BASE_URL;
|
|
10
|
+
// Token vault: stores tokens per base URL so switching instances preserves auth
|
|
11
|
+
const tokenVault = {};
|
|
9
12
|
const TOKEN_CACHE_DIR = join(homedir(), ".neuron");
|
|
10
13
|
const TOKEN_CACHE_FILE = join(TOKEN_CACHE_DIR, "mcp-token-cache.json");
|
|
11
|
-
function
|
|
14
|
+
function readCachedTokens() {
|
|
12
15
|
try {
|
|
13
16
|
const raw = readFileSync(TOKEN_CACHE_FILE, "utf-8");
|
|
14
17
|
const cache = JSON.parse(raw);
|
|
15
|
-
|
|
16
|
-
|
|
18
|
+
// Support legacy single-entry format
|
|
19
|
+
if (cache.baseUrl && cache.token && !cache.instances) {
|
|
20
|
+
return { [cache.baseUrl]: cache.token };
|
|
21
|
+
}
|
|
22
|
+
// Multi-instance format
|
|
23
|
+
if (cache.instances && typeof cache.instances === "object") {
|
|
24
|
+
return cache.instances;
|
|
17
25
|
}
|
|
18
26
|
}
|
|
19
27
|
catch {
|
|
20
28
|
// No cache or unreadable — that's fine
|
|
21
29
|
}
|
|
22
|
-
return
|
|
30
|
+
return {};
|
|
23
31
|
}
|
|
24
|
-
function
|
|
32
|
+
function writeCachedTokens() {
|
|
25
33
|
try {
|
|
26
34
|
mkdirSync(TOKEN_CACHE_DIR, { recursive: true, mode: 0o700 });
|
|
27
|
-
writeFileSync(TOKEN_CACHE_FILE, JSON.stringify({
|
|
35
|
+
writeFileSync(TOKEN_CACHE_FILE, JSON.stringify({ instances: tokenVault, activeBaseUrl: baseUrl }), { mode: 0o600 });
|
|
28
36
|
}
|
|
29
37
|
catch {
|
|
30
38
|
// Non-critical — best effort
|
|
31
39
|
}
|
|
32
40
|
}
|
|
33
|
-
|
|
41
|
+
// Initialize: load all cached tokens into the vault, then set active token
|
|
42
|
+
const cachedTokens = readCachedTokens();
|
|
43
|
+
for (const [url, token] of Object.entries(cachedTokens)) {
|
|
44
|
+
tokenVault[url] = token;
|
|
45
|
+
}
|
|
46
|
+
let authToken = process.env.NEURON_AUTH_TOKEN || tokenVault[baseUrl] || "";
|
|
34
47
|
export function setAuthToken(token) {
|
|
35
48
|
authToken = token;
|
|
36
|
-
|
|
49
|
+
if (token) {
|
|
50
|
+
tokenVault[baseUrl] = token;
|
|
51
|
+
}
|
|
52
|
+
else {
|
|
53
|
+
delete tokenVault[baseUrl];
|
|
54
|
+
}
|
|
55
|
+
writeCachedTokens();
|
|
37
56
|
}
|
|
38
57
|
export function getAuthToken() {
|
|
39
58
|
return authToken;
|
|
40
59
|
}
|
|
41
60
|
export function getBaseUrl() {
|
|
42
|
-
return
|
|
61
|
+
return baseUrl;
|
|
62
|
+
}
|
|
63
|
+
export function setBaseUrl(url) {
|
|
64
|
+
// Save current token for current instance
|
|
65
|
+
if (authToken) {
|
|
66
|
+
tokenVault[baseUrl] = authToken;
|
|
67
|
+
}
|
|
68
|
+
// Switch to new instance
|
|
69
|
+
baseUrl = url;
|
|
70
|
+
// Restore token from vault if we've authenticated with this instance before
|
|
71
|
+
authToken = tokenVault[url] || "";
|
|
72
|
+
writeCachedTokens();
|
|
73
|
+
}
|
|
74
|
+
export function listInstances() {
|
|
75
|
+
const urls = new Set([baseUrl, ...Object.keys(tokenVault)]);
|
|
76
|
+
return Array.from(urls).map((url) => ({
|
|
77
|
+
url,
|
|
78
|
+
active: url === baseUrl,
|
|
79
|
+
authenticated: !!tokenVault[url],
|
|
80
|
+
}));
|
|
43
81
|
}
|
|
44
82
|
export async function api(method, endpoint, data, params, headers) {
|
|
45
83
|
try {
|
|
@@ -53,7 +91,7 @@ export async function api(method, endpoint, data, params, headers) {
|
|
|
53
91
|
const cleanEndpoint = endpoint.replace(/^\/+/, "");
|
|
54
92
|
const response = await axios({
|
|
55
93
|
method,
|
|
56
|
-
url: `${
|
|
94
|
+
url: `${baseUrl}/${cleanEndpoint}`,
|
|
57
95
|
data,
|
|
58
96
|
params: Object.keys(cleanParams).length > 0 ? cleanParams : undefined,
|
|
59
97
|
timeout: 60000,
|
|
@@ -80,7 +118,7 @@ export function handleError(error) {
|
|
|
80
118
|
const msg = body?.error?.message || `HTTP ${error.response.status}`;
|
|
81
119
|
return `Error: ${msg}`;
|
|
82
120
|
}
|
|
83
|
-
const url = error.config?.url ||
|
|
121
|
+
const url = error.config?.url || baseUrl;
|
|
84
122
|
if (error.code === "ECONNABORTED")
|
|
85
123
|
return `Error: Request timed out connecting to ${url}`;
|
|
86
124
|
if (error.code === "ECONNREFUSED") {
|
package/dist/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,SAAS,
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -36,6 +36,9 @@ import { registerBotApiTools } from "./tools/bot-api.js";
|
|
|
36
36
|
import { registerConversationTools } from "./tools/conversations.js";
|
|
37
37
|
import { registerKnowledgeBaseTools } from "./tools/knowledge-bases.js";
|
|
38
38
|
import { registerToolsTools } from "./tools/tools.js";
|
|
39
|
+
import { registerTaskTools } from "./tools/tasks.js";
|
|
40
|
+
import { registerLeadTools } from "./tools/leads.js";
|
|
41
|
+
import { registerPersonaTools } from "./tools/personas.js";
|
|
39
42
|
import { registerWebhooksTools } from "./tools/webhooks.js";
|
|
40
43
|
import { registerReflectionsTools } from "./tools/reflections.js";
|
|
41
44
|
import { registerChannelsTools } from "./tools/channels.js";
|
|
@@ -46,6 +49,7 @@ import { registerBuiltinToolsTools } from "./tools/builtin-tools.js";
|
|
|
46
49
|
import { registerOutboundWebhookTools } from "./tools/outbound-webhooks.js";
|
|
47
50
|
import { registerContactsTools } from "./tools/contacts.js";
|
|
48
51
|
import { registerContactListsTools } from "./tools/contact-lists.js";
|
|
52
|
+
import { registerListCampaignTools } from "./tools/list-campaigns.js";
|
|
49
53
|
import { registerBroadcastsTools } from "./tools/broadcasts.js";
|
|
50
54
|
import { registerBillingTools } from "./tools/billing.js";
|
|
51
55
|
import { registerMediaTools } from "./tools/media.js";
|
|
@@ -56,6 +60,15 @@ import { registerPayoutTools } from "./tools/payouts.js";
|
|
|
56
60
|
import { registerBlogTools } from "./tools/blog.js";
|
|
57
61
|
import { registerNewsletterTools } from "./tools/newsletters.js";
|
|
58
62
|
import { registerListPoolTools } from "./tools/list-pool.js";
|
|
63
|
+
import { registerWhatsAppActionTools } from "./tools/whatsapp-actions.js";
|
|
64
|
+
import { registerGroupManagementTools } from "./tools/group-management.js";
|
|
65
|
+
import { registerPollTools } from "./tools/polls.js";
|
|
66
|
+
import { registerProfilePrivacyTools } from "./tools/profile-privacy.js";
|
|
67
|
+
import { registerSocialChannelsTools } from "./tools/social-channels.js";
|
|
68
|
+
import { registerScheduledMessageTools } from "./tools/scheduled-messages.js";
|
|
69
|
+
import { registerApprovalTools } from "./tools/approvals.js";
|
|
70
|
+
import { registerFlowTools } from "./tools/flows.js";
|
|
71
|
+
import { registerProductsTools } from "./tools/products.js";
|
|
59
72
|
function createServer() {
|
|
60
73
|
const server = new McpServer({
|
|
61
74
|
name: "neuron-mcp-server",
|
|
@@ -69,6 +82,9 @@ function createServer() {
|
|
|
69
82
|
registerConversationTools(server);
|
|
70
83
|
registerKnowledgeBaseTools(server);
|
|
71
84
|
registerToolsTools(server);
|
|
85
|
+
registerTaskTools(server);
|
|
86
|
+
registerLeadTools(server);
|
|
87
|
+
registerPersonaTools(server);
|
|
72
88
|
registerWebhooksTools(server);
|
|
73
89
|
registerReflectionsTools(server);
|
|
74
90
|
registerChannelsTools(server);
|
|
@@ -79,6 +95,7 @@ function createServer() {
|
|
|
79
95
|
registerOutboundWebhookTools(server);
|
|
80
96
|
registerContactsTools(server);
|
|
81
97
|
registerContactListsTools(server);
|
|
98
|
+
registerListCampaignTools(server);
|
|
82
99
|
registerBroadcastsTools(server);
|
|
83
100
|
registerBillingTools(server);
|
|
84
101
|
registerMediaTools(server);
|
|
@@ -89,6 +106,15 @@ function createServer() {
|
|
|
89
106
|
registerBlogTools(server);
|
|
90
107
|
registerNewsletterTools(server);
|
|
91
108
|
registerListPoolTools(server);
|
|
109
|
+
registerWhatsAppActionTools(server);
|
|
110
|
+
registerGroupManagementTools(server);
|
|
111
|
+
registerPollTools(server);
|
|
112
|
+
registerProfilePrivacyTools(server);
|
|
113
|
+
registerSocialChannelsTools(server);
|
|
114
|
+
registerScheduledMessageTools(server);
|
|
115
|
+
registerApprovalTools(server);
|
|
116
|
+
registerFlowTools(server);
|
|
117
|
+
registerProductsTools(server);
|
|
92
118
|
return server;
|
|
93
119
|
}
|
|
94
120
|
async function startStdio() {
|
|
@@ -162,17 +188,35 @@ async function startHttp() {
|
|
|
162
188
|
}
|
|
163
189
|
}
|
|
164
190
|
});
|
|
165
|
-
app.listen(PORT, "0.0.0.0", () => {
|
|
191
|
+
const httpServer = app.listen(PORT, "0.0.0.0", () => {
|
|
166
192
|
console.error(`Neuron MCP server listening on http://0.0.0.0:${PORT}/mcp`);
|
|
167
193
|
});
|
|
168
|
-
|
|
194
|
+
let shuttingDown = false;
|
|
195
|
+
const shutdownMcp = async () => {
|
|
196
|
+
if (shuttingDown)
|
|
197
|
+
return;
|
|
198
|
+
shuttingDown = true;
|
|
169
199
|
console.error("Shutting down...");
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
}
|
|
200
|
+
const forceTimer = setTimeout(() => {
|
|
201
|
+
console.error("MCP shutdown timed out, forcing exit");
|
|
202
|
+
process.exit(1);
|
|
203
|
+
}, 10_000);
|
|
204
|
+
forceTimer.unref();
|
|
205
|
+
// Stop accepting new connections and drain in-flight requests
|
|
206
|
+
await new Promise((resolve) => {
|
|
207
|
+
httpServer.close((err) => {
|
|
208
|
+
if (err)
|
|
209
|
+
console.error("Error closing HTTP server:", err);
|
|
210
|
+
resolve();
|
|
211
|
+
});
|
|
212
|
+
});
|
|
213
|
+
// Close all MCP session transports
|
|
214
|
+
await Promise.all(Object.keys(transports).map((sid) => transports[sid].close().catch(() => { }).then(() => { delete transports[sid]; })));
|
|
215
|
+
clearTimeout(forceTimer);
|
|
174
216
|
process.exit(0);
|
|
175
|
-
}
|
|
217
|
+
};
|
|
218
|
+
process.on("SIGINT", shutdownMcp);
|
|
219
|
+
process.on("SIGTERM", shutdownMcp);
|
|
176
220
|
}
|
|
177
221
|
const mode = process.env.MCP_TRANSPORT || "stdio";
|
|
178
222
|
if (mode === "http") {
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAE7C,8EAA8E;AAC9E,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAC1D,MAAM,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,SAAS,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC;AAEhD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,6BAA6B,EAAE,MAAM,oDAAoD,CAAC;AACnG,OAAO,EAAE,mBAAmB,EAAE,MAAM,6CAA6C,CAAC;AAClF,OAAO,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AAEzE,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AACrE,OAAO,EAAE,0BAA0B,EAAE,MAAM,4BAA4B,CAAC;AACxE,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AACrE,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AACrE,OAAO,EAAE,4BAA4B,EAAE,MAAM,8BAA8B,CAAC;AAC5E,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AACrE,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/tools/ai.js
CHANGED
|
@@ -4,11 +4,17 @@ export function registerAiTools(server) {
|
|
|
4
4
|
// Rewrite text
|
|
5
5
|
server.registerTool("neuron_rewrite_text", {
|
|
6
6
|
title: "Rewrite Text",
|
|
7
|
-
description: "
|
|
7
|
+
description: "Rewrite or rephrase text using AI with specified tone, style, or instructions (e.g., make it more formal, translate, summarize).",
|
|
8
8
|
inputSchema: z.object({
|
|
9
|
-
text: z.string().describe("The text to rewrite"),
|
|
10
|
-
instruction: z.string().optional().describe("Instructions for how to rewrite the text (e.g., 'make it more professional', 'translate to Spanish')"),
|
|
9
|
+
text: z.string().describe("The original text to rewrite or transform"),
|
|
10
|
+
instruction: z.string().optional().describe("Instructions for how to rewrite the text (e.g., 'make it more professional', 'translate to Spanish', 'summarize in 2 sentences')"),
|
|
11
11
|
}),
|
|
12
|
+
annotations: {
|
|
13
|
+
readOnlyHint: false,
|
|
14
|
+
destructiveHint: false,
|
|
15
|
+
idempotentHint: false,
|
|
16
|
+
openWorldHint: false,
|
|
17
|
+
},
|
|
12
18
|
}, async (params) => {
|
|
13
19
|
try {
|
|
14
20
|
const result = await api("POST", "/ai/rewrite", {
|
package/dist/tools/ai.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ai.js","sourceRoot":"","sources":["../../src/tools/ai.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,GAAG,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE5D,MAAM,UAAU,eAAe,CAAC,MAAiB;IAC/C,eAAe;IACf,MAAM,CAAC,YAAY,CACjB,qBAAqB,EACrB;QACE,KAAK,EAAE,cAAc;QACrB,WAAW,EAAE,
|
|
1
|
+
{"version":3,"file":"ai.js","sourceRoot":"","sources":["../../src/tools/ai.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,GAAG,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE5D,MAAM,UAAU,eAAe,CAAC,MAAiB;IAC/C,eAAe;IACf,MAAM,CAAC,YAAY,CACjB,qBAAqB,EACrB;QACE,KAAK,EAAE,cAAc;QACrB,WAAW,EAAE,kIAAkI;QAC/I,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;YACpB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,2CAA2C,CAAC;YACtE,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kIAAkI,CAAC;SAChL,CAAC;QACF,WAAW,EAAE;YACX,YAAY,EAAE,KAAK;YACnB,eAAe,EAAE,KAAK;YACtB,cAAc,EAAE,KAAK;YACrB,aAAa,EAAE,KAAK;SACrB;KACF,EACD,KAAK,EAAE,MAAM,EAAE,EAAE;QACf,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,MAAM,EAAE,aAAa,EAAE;gBAC9C,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,WAAW,EAAE,MAAM,CAAC,WAAW;aAChC,CAAC,CAAC;YACH,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC;QAC5B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,WAAW,CAAC,KAAK,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { api, jsonResult, errorResult } from "../client.js";
|
|
3
|
+
const callbackShape = z
|
|
4
|
+
.object({
|
|
5
|
+
response: z
|
|
6
|
+
.object({
|
|
7
|
+
schemes: z
|
|
8
|
+
.array(z.enum(["interactive", "keyword", "code", "llm"]))
|
|
9
|
+
.optional()
|
|
10
|
+
.describe("Ordered fallback for turning a reply into a decision (default: ['keyword'])"),
|
|
11
|
+
code: z.string().optional().describe("One-time confirmation code — enables the 'code' scheme"),
|
|
12
|
+
})
|
|
13
|
+
.optional(),
|
|
14
|
+
delivery: z
|
|
15
|
+
.object({
|
|
16
|
+
scheme: z
|
|
17
|
+
.enum(["webhook_signed", "webhook_simple", "neuron_message", "neuron_tool", "none"])
|
|
18
|
+
.describe("How the decision reaches the caller"),
|
|
19
|
+
config: z
|
|
20
|
+
.record(z.any())
|
|
21
|
+
.optional()
|
|
22
|
+
.describe("Scheme config: {url,secret} or {webhookId}; {targetJid,channelId}; {toolId}; {method}"),
|
|
23
|
+
})
|
|
24
|
+
.optional(),
|
|
25
|
+
await: z.boolean().optional().describe("Hold the request until resolved (long-poll)"),
|
|
26
|
+
awaitTimeoutSec: z.number().int().min(1).max(60).optional(),
|
|
27
|
+
})
|
|
28
|
+
.optional()
|
|
29
|
+
.describe("Callback config. Omit for a poll-only flow (delivery scheme 'none').");
|
|
30
|
+
export function registerApprovalTools(server) {
|
|
31
|
+
// Request an approval
|
|
32
|
+
server.registerTool("neuron_request_approval", {
|
|
33
|
+
title: "Request Approval",
|
|
34
|
+
description: "Ask a human to approve or reject an action over WhatsApp and get the decision back. " +
|
|
35
|
+
"The recipient replies approve/reject (optionally with a reason) or quotes the message. " +
|
|
36
|
+
"Use this to gate any action needing human sign-off (refunds, deploys, spend, publishing). " +
|
|
37
|
+
"Returns an approvalId; poll neuron_get_approval / neuron_list_approvals for the outcome, or supply a " +
|
|
38
|
+
"webhook in `callback` to be notified. Requires a bot API key ('nrn_' prefix).",
|
|
39
|
+
annotations: {
|
|
40
|
+
readOnlyHint: false,
|
|
41
|
+
destructiveHint: false,
|
|
42
|
+
idempotentHint: false,
|
|
43
|
+
openWorldHint: true,
|
|
44
|
+
},
|
|
45
|
+
inputSchema: z.object({
|
|
46
|
+
apiKey: z.string().describe("Bot API key with 'nrn_' prefix for authentication"),
|
|
47
|
+
to: z.string().describe("Recipient phone number (E.164/digits) or WhatsApp group JID"),
|
|
48
|
+
prompt: z.string().describe("The approval question shown to the human"),
|
|
49
|
+
context: z.string().optional().describe("Optional long-form details — stored in a shareable Neuron Note and linked from the WhatsApp message"),
|
|
50
|
+
channelId: z.string().optional().describe("Optional WhatsApp channel override (UUID)"),
|
|
51
|
+
expiresInSeconds: z.number().int().positive().optional().describe("Time to live before auto-expiry (default 86400, 60–604800)"),
|
|
52
|
+
metadata: z.record(z.any()).optional().describe("Opaque data echoed back verbatim in the result/callback"),
|
|
53
|
+
idempotencyKey: z.string().optional().describe("Dedupe key — returns the existing approval on repeat"),
|
|
54
|
+
callback: callbackShape,
|
|
55
|
+
}),
|
|
56
|
+
}, async (params) => {
|
|
57
|
+
try {
|
|
58
|
+
const { apiKey, callback, ...rest } = params;
|
|
59
|
+
const body = {
|
|
60
|
+
...rest,
|
|
61
|
+
callback: callback ?? { response: { schemes: ["keyword"] }, delivery: { scheme: "none" } },
|
|
62
|
+
};
|
|
63
|
+
const result = await api("POST", "approvals", body, undefined, { Authorization: `Bearer ${apiKey}` });
|
|
64
|
+
return jsonResult(result);
|
|
65
|
+
}
|
|
66
|
+
catch (error) {
|
|
67
|
+
return errorResult(error);
|
|
68
|
+
}
|
|
69
|
+
});
|
|
70
|
+
// Get an approval (optionally long-poll)
|
|
71
|
+
server.registerTool("neuron_get_approval", {
|
|
72
|
+
title: "Get Approval",
|
|
73
|
+
description: "Fetch a single approval request by id, including its decision once resolved. " +
|
|
74
|
+
"Set waitSeconds (1–60) to long-poll until it resolves. Requires a bot API key.",
|
|
75
|
+
annotations: {
|
|
76
|
+
readOnlyHint: true,
|
|
77
|
+
destructiveHint: false,
|
|
78
|
+
idempotentHint: true,
|
|
79
|
+
openWorldHint: false,
|
|
80
|
+
},
|
|
81
|
+
inputSchema: z.object({
|
|
82
|
+
apiKey: z.string().describe("Bot API key with 'nrn_' prefix for authentication"),
|
|
83
|
+
approvalId: z.string().describe("The approval request id (UUID)"),
|
|
84
|
+
waitSeconds: z.number().int().min(1).max(60).optional().describe("Long-poll up to N seconds for resolution"),
|
|
85
|
+
}),
|
|
86
|
+
}, async (params) => {
|
|
87
|
+
try {
|
|
88
|
+
const { apiKey, approvalId, waitSeconds } = params;
|
|
89
|
+
const result = await api("GET", `approvals/${approvalId}`, undefined, waitSeconds ? { wait: waitSeconds } : undefined, { Authorization: `Bearer ${apiKey}` });
|
|
90
|
+
return jsonResult(result);
|
|
91
|
+
}
|
|
92
|
+
catch (error) {
|
|
93
|
+
return errorResult(error);
|
|
94
|
+
}
|
|
95
|
+
});
|
|
96
|
+
// List approvals
|
|
97
|
+
server.registerTool("neuron_list_approvals", {
|
|
98
|
+
title: "List Approvals",
|
|
99
|
+
description: "List approval requests for the organization, newest first. Filter by status " +
|
|
100
|
+
"(pending/approved/rejected/expired/cancelled). Requires a bot API key.",
|
|
101
|
+
annotations: {
|
|
102
|
+
readOnlyHint: true,
|
|
103
|
+
destructiveHint: false,
|
|
104
|
+
idempotentHint: true,
|
|
105
|
+
openWorldHint: false,
|
|
106
|
+
},
|
|
107
|
+
inputSchema: z.object({
|
|
108
|
+
apiKey: z.string().describe("Bot API key with 'nrn_' prefix for authentication"),
|
|
109
|
+
status: z.string().optional().describe("Filter: pending | approved | rejected | expired | cancelled"),
|
|
110
|
+
channelId: z.string().optional().describe("Filter by WhatsApp channel (UUID)"),
|
|
111
|
+
page: z.number().int().positive().optional().describe("Page number (default 1)"),
|
|
112
|
+
limit: z.number().int().positive().optional().describe("Items per page (default 25, max 100)"),
|
|
113
|
+
}),
|
|
114
|
+
}, async (params) => {
|
|
115
|
+
try {
|
|
116
|
+
const { apiKey, status, channelId, page, limit } = params;
|
|
117
|
+
const result = await api("GET", "approvals", undefined, { status, channelId, page, limit }, { Authorization: `Bearer ${apiKey}` });
|
|
118
|
+
return jsonResult(result);
|
|
119
|
+
}
|
|
120
|
+
catch (error) {
|
|
121
|
+
return errorResult(error);
|
|
122
|
+
}
|
|
123
|
+
});
|
|
124
|
+
// Respond to (approve/reject) a pending approval
|
|
125
|
+
server.registerTool("neuron_respond_approval", {
|
|
126
|
+
title: "Respond to Approval",
|
|
127
|
+
description: "Approve or reject a pending approval programmatically — the decision surface for an authorized operator " +
|
|
128
|
+
"acting via MCP instead of replying on WhatsApp. Fires the configured callback and posts the outcome to the " +
|
|
129
|
+
"WhatsApp chat. Exactly-once: the first responder (here or on WhatsApp) wins; later responses return 410. " +
|
|
130
|
+
"Requires a bot API key.",
|
|
131
|
+
annotations: {
|
|
132
|
+
readOnlyHint: false,
|
|
133
|
+
destructiveHint: false,
|
|
134
|
+
idempotentHint: false,
|
|
135
|
+
openWorldHint: true,
|
|
136
|
+
},
|
|
137
|
+
inputSchema: z.object({
|
|
138
|
+
apiKey: z.string().describe("Bot API key with 'nrn_' prefix for authentication"),
|
|
139
|
+
approvalId: z.string().describe("The approval request id (UUID)"),
|
|
140
|
+
decision: z.enum(["approve", "reject"]).describe("The decision to record"),
|
|
141
|
+
reason: z.string().optional().describe("Optional reason (recommended for rejections)"),
|
|
142
|
+
responderName: z.string().optional().describe("Optional display name of the operator making the decision"),
|
|
143
|
+
}),
|
|
144
|
+
}, async (params) => {
|
|
145
|
+
try {
|
|
146
|
+
const { apiKey, approvalId, decision, reason, responderName } = params;
|
|
147
|
+
const result = await api("POST", `approvals/${approvalId}/respond`, { decision, reason, responderName }, undefined, { Authorization: `Bearer ${apiKey}` });
|
|
148
|
+
return jsonResult(result);
|
|
149
|
+
}
|
|
150
|
+
catch (error) {
|
|
151
|
+
return errorResult(error);
|
|
152
|
+
}
|
|
153
|
+
});
|
|
154
|
+
// Cancel a pending approval
|
|
155
|
+
server.registerTool("neuron_cancel_approval", {
|
|
156
|
+
title: "Cancel Approval",
|
|
157
|
+
description: "Cancel a still-pending approval (e.g. the upstream action was aborted). " +
|
|
158
|
+
"Fires the approval.cancelled callback. Requires a bot API key.",
|
|
159
|
+
annotations: {
|
|
160
|
+
readOnlyHint: false,
|
|
161
|
+
destructiveHint: true,
|
|
162
|
+
idempotentHint: true,
|
|
163
|
+
openWorldHint: false,
|
|
164
|
+
},
|
|
165
|
+
inputSchema: z.object({
|
|
166
|
+
apiKey: z.string().describe("Bot API key with 'nrn_' prefix for authentication"),
|
|
167
|
+
approvalId: z.string().describe("The approval request id (UUID) to cancel"),
|
|
168
|
+
reason: z.string().optional().describe("Optional cancellation reason"),
|
|
169
|
+
}),
|
|
170
|
+
}, async (params) => {
|
|
171
|
+
try {
|
|
172
|
+
const { apiKey, approvalId, reason } = params;
|
|
173
|
+
const result = await api("POST", `approvals/${approvalId}/cancel`, { reason }, undefined, { Authorization: `Bearer ${apiKey}` });
|
|
174
|
+
return jsonResult(result);
|
|
175
|
+
}
|
|
176
|
+
catch (error) {
|
|
177
|
+
return errorResult(error);
|
|
178
|
+
}
|
|
179
|
+
});
|
|
180
|
+
}
|
|
181
|
+
//# sourceMappingURL=approvals.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"approvals.js","sourceRoot":"","sources":["../../src/tools/approvals.ts"],"names":[],"mappings":"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"}
|
package/dist/tools/audit.js
CHANGED
|
@@ -4,15 +4,18 @@ export function registerAuditTools(server) {
|
|
|
4
4
|
// List Audit Logs
|
|
5
5
|
server.registerTool("neuron_list_audit_logs", {
|
|
6
6
|
title: "List Audit Logs",
|
|
7
|
-
description: "Retrieve audit logs
|
|
7
|
+
description: "Retrieve audit logs for the organization, showing a chronological record of actions performed by members. Supports filtering by action type and resource.",
|
|
8
8
|
inputSchema: z.object({
|
|
9
|
-
page: z.number().int().positive().optional().describe("Page number for pagination (
|
|
10
|
-
limit: z.number().int().positive().optional().describe("Number of
|
|
9
|
+
page: z.number().int().positive().optional().describe("Page number for pagination (default: 1)"),
|
|
10
|
+
limit: z.number().int().positive().optional().describe("Number of log entries per page (default: 20)"),
|
|
11
11
|
action: z.string().optional().describe("Filter by action type (e.g., 'CREATE', 'UPDATE', 'DELETE')"),
|
|
12
|
-
resourceType: z.string().optional().describe("Filter by resource type (e.g., 'USER', 'ORGANIZATION', 'CAMPAIGN')"),
|
|
12
|
+
resourceType: z.string().optional().describe("Filter by resource type (e.g., 'USER', 'ORGANIZATION', 'BOT', 'CAMPAIGN')"),
|
|
13
13
|
}),
|
|
14
14
|
annotations: {
|
|
15
15
|
readOnlyHint: true,
|
|
16
|
+
destructiveHint: false,
|
|
17
|
+
idempotentHint: true,
|
|
18
|
+
openWorldHint: false,
|
|
16
19
|
},
|
|
17
20
|
}, async (params) => {
|
|
18
21
|
try {
|
package/dist/tools/audit.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"audit.js","sourceRoot":"","sources":["../../src/tools/audit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,GAAG,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE5D,MAAM,UAAU,kBAAkB,CAAC,MAAiB;IAClD,kBAAkB;IAClB,MAAM,CAAC,YAAY,CACjB,wBAAwB,EACxB;QACE,KAAK,EAAE,iBAAiB;QACxB,WAAW,EAAE,
|
|
1
|
+
{"version":3,"file":"audit.js","sourceRoot":"","sources":["../../src/tools/audit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,GAAG,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE5D,MAAM,UAAU,kBAAkB,CAAC,MAAiB;IAClD,kBAAkB;IAClB,MAAM,CAAC,YAAY,CACjB,wBAAwB,EACxB;QACE,KAAK,EAAE,iBAAiB;QACxB,WAAW,EAAE,2JAA2J;QACxK,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;YACpB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,yCAAyC,CAAC;YAChG,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,8CAA8C,CAAC;YACtG,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,4DAA4D,CAAC;YACpG,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,2EAA2E,CAAC;SAC1H,CAAC;QACF,WAAW,EAAE;YACX,YAAY,EAAE,IAAI;YAClB,eAAe,EAAE,KAAK;YACtB,cAAc,EAAE,IAAI;YACpB,aAAa,EAAE,KAAK;SACrB;KACF,EACD,KAAK,EAAE,MAAM,EAAE,EAAE;QACf,IAAI,CAAC;YACH,MAAM,WAAW,GAAoC,EAAE,CAAC;YAExD,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;gBAC9B,WAAW,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;YACjC,CAAC;YACD,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;gBAC/B,WAAW,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;YACnC,CAAC;YACD,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;gBAChC,WAAW,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;YACrC,CAAC;YACD,IAAI,MAAM,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;gBACtC,WAAW,CAAC,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;YACjD,CAAC;YAED,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;YAClE,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC;QAC5B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,WAAW,CAAC,KAAK,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
|