ads4agents-mcp 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,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
package/dist/index.js ADDED
@@ -0,0 +1,448 @@
1
+ #!/usr/bin/env node
2
+ import { Server } from "@modelcontextprotocol/sdk/server/index.js";
3
+ import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
4
+ import { CallToolRequestSchema, ListToolsRequestSchema, } from "@modelcontextprotocol/sdk/types.js";
5
+ import { privateKeyToAccount } from "viem/accounts";
6
+ import { createPaymentHeader, selectPaymentRequirements } from "x402/client";
7
+ import { z } from "zod";
8
+ const x402Version = 1;
9
+ // ---------------------------------------------------------------------------
10
+ // Config
11
+ // ---------------------------------------------------------------------------
12
+ const BASE_URL = process.env.ADS4AGENTS_BASE_URL ?? "https://ads4agents.vercel.app";
13
+ const API_KEY = process.env.ADS4AGENTS_API_KEY ?? "";
14
+ const PRIVATE_KEY = process.env.PRIVATE_KEY ?? "";
15
+ function agentHeaders(extra = {}) {
16
+ return {
17
+ "X-Agent-Key": API_KEY,
18
+ "Content-Type": "application/json",
19
+ ...extra,
20
+ };
21
+ }
22
+ // ---------------------------------------------------------------------------
23
+ // Zod schemas (input validation)
24
+ // ---------------------------------------------------------------------------
25
+ const RegisterAgentSchema = z.object({
26
+ business_name: z.string(),
27
+ business_description: z.string().optional(),
28
+ product_description: z.string().optional(),
29
+ wallet_address: z.string().optional(),
30
+ });
31
+ const ListAgenciesSchema = z.object({
32
+ region: z.string().optional(),
33
+ specialty: z.string().optional(),
34
+ min_budget: z.number().optional(),
35
+ max_budget: z.number().optional(),
36
+ limit: z.number().optional(),
37
+ offset: z.number().optional(),
38
+ });
39
+ const GetAgencySchema = z.object({
40
+ id: z.string(),
41
+ });
42
+ const ListServicesSchema = z.object({
43
+ specialty: z.string().optional(),
44
+ region: z.string().optional(),
45
+ max_price: z.number().optional(),
46
+ bundle: z.boolean().optional(),
47
+ limit: z.number().optional(),
48
+ offset: z.number().optional(),
49
+ });
50
+ const GetServiceSchema = z.object({
51
+ id: z.string(),
52
+ });
53
+ const OpenInquirySchema = z.object({
54
+ agency_id: z.string(),
55
+ service_id: z.string().optional(),
56
+ initial_message: z.string().optional(),
57
+ });
58
+ const InquiryIdSchema = z.object({
59
+ id: z.string(),
60
+ });
61
+ const SendMessageSchema = z.object({
62
+ id: z.string(),
63
+ content: z.string(),
64
+ });
65
+ const CreateCampaignSchema = z.object({
66
+ agency_id: z.string(),
67
+ service_id: z.string().optional(),
68
+ title: z.string(),
69
+ description: z.string().optional(),
70
+ budget: z.number(),
71
+ currency: z.string().optional().default("USDC"),
72
+ duration_days: z.number().optional(),
73
+ regions: z.array(z.string()).optional(),
74
+ target_audience: z.string().optional(),
75
+ });
76
+ const CampaignIdSchema = z.object({
77
+ id: z.string(),
78
+ });
79
+ const UpdateCampaignPaymentSchema = z.object({
80
+ id: z.string(),
81
+ payment_tx_hash: z.string(),
82
+ payment_status: z.string().default("settled"),
83
+ });
84
+ // ---------------------------------------------------------------------------
85
+ // Tool definitions (shown to the MCP client / agent)
86
+ // ---------------------------------------------------------------------------
87
+ const TOOLS = [
88
+ {
89
+ name: "ads4agents_register_agent",
90
+ description: "Register a new agent profile and receive a permanent API key. Call once and store the returned api_key as ADS4AGENTS_API_KEY.",
91
+ inputSchema: {
92
+ type: "object",
93
+ properties: {
94
+ business_name: { type: "string", description: "Your business / product name" },
95
+ business_description: { type: "string", description: "Brief description of your business" },
96
+ product_description: { type: "string", description: "What you are promoting" },
97
+ wallet_address: { type: "string", description: "EVM wallet address (0x...)" },
98
+ },
99
+ required: ["business_name"],
100
+ },
101
+ },
102
+ {
103
+ name: "ads4agents_list_agencies",
104
+ description: "Search and list marketing agencies. Filter by region, specialty, and budget range.",
105
+ inputSchema: {
106
+ type: "object",
107
+ properties: {
108
+ region: { type: "string", description: "e.g. US, EU, APAC" },
109
+ specialty: { type: "string", description: "e.g. SEO, PPC, Social Media" },
110
+ min_budget: { type: "number", description: "Minimum budget in USDC" },
111
+ max_budget: { type: "number", description: "Maximum budget in USDC" },
112
+ limit: { type: "number", description: "Results per page (max 100, default 20)" },
113
+ offset: { type: "number", description: "Pagination offset" },
114
+ },
115
+ },
116
+ },
117
+ {
118
+ name: "ads4agents_get_agency",
119
+ description: "Get full agency profile including reviews.",
120
+ inputSchema: {
121
+ type: "object",
122
+ properties: {
123
+ id: { type: "string", description: "Agency UUID" },
124
+ },
125
+ required: ["id"],
126
+ },
127
+ },
128
+ {
129
+ name: "ads4agents_list_services",
130
+ description: "List active services offered by agencies. Preferred starting point — search here before browsing agencies.",
131
+ inputSchema: {
132
+ type: "object",
133
+ properties: {
134
+ specialty: { type: "string", description: "e.g. SEO, Content Marketing" },
135
+ region: { type: "string", description: "e.g. US, EU" },
136
+ max_price: { type: "number", description: "Maximum price in USDC" },
137
+ bundle: { type: "boolean", description: "Filter for bundle packages" },
138
+ limit: { type: "number", description: "Results per page (max 100, default 20)" },
139
+ offset: { type: "number", description: "Pagination offset" },
140
+ },
141
+ },
142
+ },
143
+ {
144
+ name: "ads4agents_get_service",
145
+ description: "Get full service detail including agency profile.",
146
+ inputSchema: {
147
+ type: "object",
148
+ properties: {
149
+ id: { type: "string", description: "Service UUID" },
150
+ },
151
+ required: ["id"],
152
+ },
153
+ },
154
+ {
155
+ name: "ads4agents_open_inquiry",
156
+ description: "Open a free pre-purchase inquiry thread with an agency. Use before creating a campaign to ask questions.",
157
+ inputSchema: {
158
+ type: "object",
159
+ properties: {
160
+ agency_id: { type: "string", description: "Agency UUID" },
161
+ service_id: { type: "string", description: "Service UUID (optional)" },
162
+ initial_message: { type: "string", description: "First message to send" },
163
+ },
164
+ required: ["agency_id"],
165
+ },
166
+ },
167
+ {
168
+ name: "ads4agents_get_inquiry_messages",
169
+ description: "Read all messages in an inquiry thread.",
170
+ inputSchema: {
171
+ type: "object",
172
+ properties: {
173
+ id: { type: "string", description: "Inquiry UUID" },
174
+ },
175
+ required: ["id"],
176
+ },
177
+ },
178
+ {
179
+ name: "ads4agents_send_inquiry_message",
180
+ description: "Send a message in an inquiry thread.",
181
+ inputSchema: {
182
+ type: "object",
183
+ properties: {
184
+ id: { type: "string", description: "Inquiry UUID" },
185
+ content: { type: "string", description: "Message content" },
186
+ },
187
+ required: ["id", "content"],
188
+ },
189
+ },
190
+ {
191
+ name: "ads4agents_create_campaign",
192
+ description: "Create a campaign. Requires PRIVATE_KEY env var — handles x402 payment (0.50 USDC on Base) automatically. Returns the settled campaign with payment_status: 'paid'.",
193
+ inputSchema: {
194
+ type: "object",
195
+ properties: {
196
+ agency_id: { type: "string", description: "Agency UUID" },
197
+ service_id: { type: "string", description: "Service UUID (optional)" },
198
+ title: { type: "string", description: "Campaign title" },
199
+ description: { type: "string", description: "Campaign brief" },
200
+ budget: { type: "number", description: "Campaign budget in USDC" },
201
+ currency: { type: "string", description: "Currency (default: USDC)" },
202
+ duration_days: { type: "number", description: "Campaign duration in days" },
203
+ regions: { type: "array", items: { type: "string" }, description: "Target regions" },
204
+ target_audience: { type: "string", description: "Target audience description" },
205
+ },
206
+ required: ["agency_id", "title", "budget"],
207
+ },
208
+ },
209
+ {
210
+ name: "ads4agents_get_campaign",
211
+ description: "Get campaign status and details.",
212
+ inputSchema: {
213
+ type: "object",
214
+ properties: {
215
+ id: { type: "string", description: "Campaign UUID" },
216
+ },
217
+ required: ["id"],
218
+ },
219
+ },
220
+ {
221
+ name: "ads4agents_get_campaign_messages",
222
+ description: "Read all messages in a campaign thread.",
223
+ inputSchema: {
224
+ type: "object",
225
+ properties: {
226
+ id: { type: "string", description: "Campaign UUID" },
227
+ },
228
+ required: ["id"],
229
+ },
230
+ },
231
+ {
232
+ name: "ads4agents_send_campaign_message",
233
+ description: "Send a message to the agency in a campaign thread.",
234
+ inputSchema: {
235
+ type: "object",
236
+ properties: {
237
+ id: { type: "string", description: "Campaign UUID" },
238
+ content: { type: "string", description: "Message content" },
239
+ },
240
+ required: ["id", "content"],
241
+ },
242
+ },
243
+ {
244
+ name: "ads4agents_update_campaign_payment",
245
+ description: "Record payment tx hash on a campaign after manual x402 settlement. Not needed when using ads4agents_create_campaign (which handles this automatically).",
246
+ inputSchema: {
247
+ type: "object",
248
+ properties: {
249
+ id: { type: "string", description: "Campaign UUID" },
250
+ payment_tx_hash: { type: "string", description: "On-chain tx hash" },
251
+ payment_status: { type: "string", description: "Payment status (default: settled)" },
252
+ },
253
+ required: ["id", "payment_tx_hash"],
254
+ },
255
+ },
256
+ ];
257
+ // ---------------------------------------------------------------------------
258
+ // Tool handlers
259
+ // ---------------------------------------------------------------------------
260
+ async function handleTool(name, args) {
261
+ switch (name) {
262
+ case "ads4agents_register_agent": {
263
+ const input = RegisterAgentSchema.parse(args);
264
+ const res = await fetch(`${BASE_URL}/api/agent/profile`, {
265
+ method: "POST",
266
+ headers: { "Content-Type": "application/json" },
267
+ body: JSON.stringify(input),
268
+ });
269
+ return res.json();
270
+ }
271
+ case "ads4agents_list_agencies": {
272
+ const input = ListAgenciesSchema.parse(args);
273
+ const params = new URLSearchParams();
274
+ for (const [k, v] of Object.entries(input)) {
275
+ if (v !== undefined)
276
+ params.set(k, String(v));
277
+ }
278
+ const res = await fetch(`${BASE_URL}/api/agencies?${params}`);
279
+ return res.json();
280
+ }
281
+ case "ads4agents_get_agency": {
282
+ const { id } = GetAgencySchema.parse(args);
283
+ const res = await fetch(`${BASE_URL}/api/agencies/${id}`);
284
+ return res.json();
285
+ }
286
+ case "ads4agents_list_services": {
287
+ const input = ListServicesSchema.parse(args);
288
+ const params = new URLSearchParams();
289
+ for (const [k, v] of Object.entries(input)) {
290
+ if (v !== undefined)
291
+ params.set(k, String(v));
292
+ }
293
+ const res = await fetch(`${BASE_URL}/api/services?${params}`);
294
+ return res.json();
295
+ }
296
+ case "ads4agents_get_service": {
297
+ const { id } = GetServiceSchema.parse(args);
298
+ const res = await fetch(`${BASE_URL}/api/services/${id}`);
299
+ return res.json();
300
+ }
301
+ case "ads4agents_open_inquiry": {
302
+ const input = OpenInquirySchema.parse(args);
303
+ const res = await fetch(`${BASE_URL}/api/inquiries`, {
304
+ method: "POST",
305
+ headers: agentHeaders(),
306
+ body: JSON.stringify(input),
307
+ });
308
+ return res.json();
309
+ }
310
+ case "ads4agents_get_inquiry_messages": {
311
+ const { id } = InquiryIdSchema.parse(args);
312
+ const res = await fetch(`${BASE_URL}/api/inquiries/${id}/messages`, {
313
+ headers: agentHeaders(),
314
+ });
315
+ return res.json();
316
+ }
317
+ case "ads4agents_send_inquiry_message": {
318
+ const { id, content } = SendMessageSchema.parse(args);
319
+ const res = await fetch(`${BASE_URL}/api/inquiries/${id}/messages`, {
320
+ method: "POST",
321
+ headers: agentHeaders(),
322
+ body: JSON.stringify({ content }),
323
+ });
324
+ return res.json();
325
+ }
326
+ case "ads4agents_create_campaign": {
327
+ if (!PRIVATE_KEY) {
328
+ throw new Error("PRIVATE_KEY env var is required for ads4agents_create_campaign");
329
+ }
330
+ const input = CreateCampaignSchema.parse(args);
331
+ const account = privateKeyToAccount(PRIVATE_KEY);
332
+ const requestInit = {
333
+ method: "POST",
334
+ headers: agentHeaders(),
335
+ body: JSON.stringify(input),
336
+ };
337
+ // First attempt — expect a 402
338
+ let res = await fetch(`${BASE_URL}/api/campaigns`, requestInit);
339
+ if (res.status === 402) {
340
+ // Parse payment requirements from the 402 body
341
+ const body402 = (await res.json());
342
+ const accepts = (body402.accepts ?? []);
343
+ const paymentRequirements = selectPaymentRequirements(accepts);
344
+ const paymentHeader = await createPaymentHeader(account, x402Version, paymentRequirements);
345
+ // Retry with X-PAYMENT header
346
+ res = await fetch(`${BASE_URL}/api/campaigns`, {
347
+ ...requestInit,
348
+ headers: { ...agentHeaders(), "X-PAYMENT": paymentHeader },
349
+ });
350
+ }
351
+ const data = (await res.json());
352
+ // Parse X-PAYMENT-RESPONSE and record tx hash
353
+ const paymentResponseHeader = res.headers.get("X-PAYMENT-RESPONSE");
354
+ if (paymentResponseHeader && data.campaign?.id) {
355
+ try {
356
+ const parsed = JSON.parse(atob(paymentResponseHeader));
357
+ const txHash = parsed.transaction ?? parsed.txHash;
358
+ if (txHash) {
359
+ await fetch(`${BASE_URL}/api/campaigns/${data.campaign.id}`, {
360
+ method: "PATCH",
361
+ headers: agentHeaders(),
362
+ body: JSON.stringify({ payment_tx_hash: txHash, payment_status: "settled" }),
363
+ });
364
+ // Fetch updated campaign to return accurate payment_status
365
+ const updated = await fetch(`${BASE_URL}/api/campaigns/${data.campaign.id}`, {
366
+ headers: agentHeaders(),
367
+ });
368
+ return updated.json();
369
+ }
370
+ }
371
+ catch {
372
+ // If tx hash parsing fails, return original response
373
+ }
374
+ }
375
+ return data;
376
+ }
377
+ case "ads4agents_get_campaign": {
378
+ const { id } = CampaignIdSchema.parse(args);
379
+ const res = await fetch(`${BASE_URL}/api/campaigns/${id}`, {
380
+ headers: agentHeaders(),
381
+ });
382
+ return res.json();
383
+ }
384
+ case "ads4agents_get_campaign_messages": {
385
+ const { id } = CampaignIdSchema.parse(args);
386
+ const res = await fetch(`${BASE_URL}/api/campaigns/${id}/messages`, {
387
+ headers: agentHeaders(),
388
+ });
389
+ return res.json();
390
+ }
391
+ case "ads4agents_send_campaign_message": {
392
+ const { id, content } = SendMessageSchema.parse(args);
393
+ const res = await fetch(`${BASE_URL}/api/campaigns/${id}/messages`, {
394
+ method: "POST",
395
+ headers: agentHeaders(),
396
+ body: JSON.stringify({ content }),
397
+ });
398
+ return res.json();
399
+ }
400
+ case "ads4agents_update_campaign_payment": {
401
+ const { id, payment_tx_hash, payment_status } = UpdateCampaignPaymentSchema.parse(args);
402
+ const res = await fetch(`${BASE_URL}/api/campaigns/${id}`, {
403
+ method: "PATCH",
404
+ headers: agentHeaders(),
405
+ body: JSON.stringify({ payment_tx_hash, payment_status }),
406
+ });
407
+ return res.json();
408
+ }
409
+ default:
410
+ throw new Error(`Unknown tool: ${name}`);
411
+ }
412
+ }
413
+ // ---------------------------------------------------------------------------
414
+ // MCP Server
415
+ // ---------------------------------------------------------------------------
416
+ const server = new Server({ name: "ads4agents-mcp", version: "0.1.0" }, { capabilities: { tools: {} } });
417
+ server.setRequestHandler(ListToolsRequestSchema, async () => ({
418
+ tools: TOOLS,
419
+ }));
420
+ server.setRequestHandler(CallToolRequestSchema, async (request) => {
421
+ const { name, arguments: args } = request.params;
422
+ try {
423
+ const result = await handleTool(name, args ?? {});
424
+ return {
425
+ content: [{ type: "text", text: JSON.stringify(result, null, 2) }],
426
+ };
427
+ }
428
+ catch (err) {
429
+ const message = err instanceof Error ? err.message : String(err);
430
+ return {
431
+ content: [{ type: "text", text: `Error: ${message}` }],
432
+ isError: true,
433
+ };
434
+ }
435
+ });
436
+ // ---------------------------------------------------------------------------
437
+ // Start
438
+ // ---------------------------------------------------------------------------
439
+ async function main() {
440
+ const transport = new StdioServerTransport();
441
+ await server.connect(transport);
442
+ // Server runs on stdio — no console output here (would corrupt the protocol)
443
+ }
444
+ main().catch((err) => {
445
+ process.stderr.write(`ads4agents-mcp fatal: ${err}\n`);
446
+ process.exit(1);
447
+ });
448
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EACL,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAAE,mBAAmB,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AAC7E,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,WAAW,GAAG,CAAC,CAAC;AAEtB,8EAA8E;AAC9E,SAAS;AACT,8EAA8E;AAE9E,MAAM,QAAQ,GACZ,OAAO,CAAC,GAAG,CAAC,mBAAmB,IAAI,+BAA+B,CAAC;AACrE,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,EAAE,CAAC;AACrD,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC;AAElD,SAAS,YAAY,CAAC,QAAgC,EAAE;IACtD,OAAO;QACL,aAAa,EAAE,OAAO;QACtB,cAAc,EAAE,kBAAkB;QAClC,GAAG,KAAK;KACT,CAAC;AACJ,CAAC;AAED,8EAA8E;AAC9E,iCAAiC;AACjC,8EAA8E;AAE9E,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IACnC,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE;IACzB,oBAAoB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC3C,mBAAmB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC1C,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACtC,CAAC,CAAC;AAEH,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IAClC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC7B,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAChC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACjC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACjC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5B,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAC9B,CAAC,CAAC;AAEH,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC;IAC/B,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;CACf,CAAC,CAAC;AAEH,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IAClC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAChC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC7B,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAChC,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAC9B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5B,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAC9B,CAAC,CAAC;AAEH,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IAChC,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;CACf,CAAC,CAAC;AAEH,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IACjC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;IACrB,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACjC,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACvC,CAAC,CAAC;AAEH,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC;IAC/B,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;CACf,CAAC,CAAC;AAEH,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IACjC,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;IACd,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;CACpB,CAAC,CAAC;AAEH,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IACpC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;IACrB,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACjC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IACjB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;IAClB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC;IAC/C,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACpC,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IACvC,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACvC,CAAC,CAAC;AAEH,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IAChC,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;CACf,CAAC,CAAC;AAEH,MAAM,2BAA2B,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3C,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;IACd,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE;IAC3B,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC;CAC9C,CAAC,CAAC;AAEH,8EAA8E;AAC9E,qDAAqD;AACrD,8EAA8E;AAE9E,MAAM,KAAK,GAAG;IACZ;QACE,IAAI,EAAE,2BAA2B;QACjC,WAAW,EACT,+HAA+H;QACjI,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,aAAa,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,8BAA8B,EAAE;gBAC9E,oBAAoB,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,oCAAoC,EAAE;gBAC3F,mBAAmB,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,wBAAwB,EAAE;gBAC9E,cAAc,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,4BAA4B,EAAE;aAC9E;YACD,QAAQ,EAAE,CAAC,eAAe,CAAC;SAC5B;KACF;IACD;QACE,IAAI,EAAE,0BAA0B;QAChC,WAAW,EAAE,oFAAoF;QACjG,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,mBAAmB,EAAE;gBAC5D,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,6BAA6B,EAAE;gBACzE,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,wBAAwB,EAAE;gBACrE,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,wBAAwB,EAAE;gBACrE,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,wCAAwC,EAAE;gBAChF,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,mBAAmB,EAAE;aAC7D;SACF;KACF;IACD;QACE,IAAI,EAAE,uBAAuB;QAC7B,WAAW,EAAE,4CAA4C;QACzD,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,aAAa,EAAE;aACnD;YACD,QAAQ,EAAE,CAAC,IAAI,CAAC;SACjB;KACF;IACD;QACE,IAAI,EAAE,0BAA0B;QAChC,WAAW,EAAE,4GAA4G;QACzH,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,6BAA6B,EAAE;gBACzE,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,aAAa,EAAE;gBACtD,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,uBAAuB,EAAE;gBACnE,MAAM,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,4BAA4B,EAAE;gBACtE,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,wCAAwC,EAAE;gBAChF,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,mBAAmB,EAAE;aAC7D;SACF;KACF;IACD;QACE,IAAI,EAAE,wBAAwB;QAC9B,WAAW,EAAE,mDAAmD;QAChE,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,cAAc,EAAE;aACpD;YACD,QAAQ,EAAE,CAAC,IAAI,CAAC;SACjB;KACF;IACD;QACE,IAAI,EAAE,yBAAyB;QAC/B,WAAW,EAAE,0GAA0G;QACvH,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,aAAa,EAAE;gBACzD,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,yBAAyB,EAAE;gBACtE,eAAe,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,uBAAuB,EAAE;aAC1E;YACD,QAAQ,EAAE,CAAC,WAAW,CAAC;SACxB;KACF;IACD;QACE,IAAI,EAAE,iCAAiC;QACvC,WAAW,EAAE,yCAAyC;QACtD,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,cAAc,EAAE;aACpD;YACD,QAAQ,EAAE,CAAC,IAAI,CAAC;SACjB;KACF;IACD;QACE,IAAI,EAAE,iCAAiC;QACvC,WAAW,EAAE,sCAAsC;QACnD,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,cAAc,EAAE;gBACnD,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,iBAAiB,EAAE;aAC5D;YACD,QAAQ,EAAE,CAAC,IAAI,EAAE,SAAS,CAAC;SAC5B;KACF;IACD;QACE,IAAI,EAAE,4BAA4B;QAClC,WAAW,EACT,qKAAqK;QACvK,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,aAAa,EAAE;gBACzD,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,yBAAyB,EAAE;gBACtE,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,gBAAgB,EAAE;gBACxD,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,gBAAgB,EAAE;gBAC9D,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,yBAAyB,EAAE;gBAClE,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,0BAA0B,EAAE;gBACrE,aAAa,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,2BAA2B,EAAE;gBAC3E,OAAO,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,WAAW,EAAE,gBAAgB,EAAE;gBACpF,eAAe,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,6BAA6B,EAAE;aAChF;YACD,QAAQ,EAAE,CAAC,WAAW,EAAE,OAAO,EAAE,QAAQ,CAAC;SAC3C;KACF;IACD;QACE,IAAI,EAAE,yBAAyB;QAC/B,WAAW,EAAE,kCAAkC;QAC/C,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,eAAe,EAAE;aACrD;YACD,QAAQ,EAAE,CAAC,IAAI,CAAC;SACjB;KACF;IACD;QACE,IAAI,EAAE,kCAAkC;QACxC,WAAW,EAAE,yCAAyC;QACtD,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,eAAe,EAAE;aACrD;YACD,QAAQ,EAAE,CAAC,IAAI,CAAC;SACjB;KACF;IACD;QACE,IAAI,EAAE,kCAAkC;QACxC,WAAW,EAAE,oDAAoD;QACjE,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,eAAe,EAAE;gBACpD,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,iBAAiB,EAAE;aAC5D;YACD,QAAQ,EAAE,CAAC,IAAI,EAAE,SAAS,CAAC;SAC5B;KACF;IACD;QACE,IAAI,EAAE,oCAAoC;QAC1C,WAAW,EAAE,yJAAyJ;QACtK,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,eAAe,EAAE;gBACpD,eAAe,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,kBAAkB,EAAE;gBACpE,cAAc,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,mCAAmC,EAAE;aACrF;YACD,QAAQ,EAAE,CAAC,IAAI,EAAE,iBAAiB,CAAC;SACpC;KACF;CACF,CAAC;AAEF,8EAA8E;AAC9E,gBAAgB;AAChB,8EAA8E;AAE9E,KAAK,UAAU,UAAU,CAAC,IAAY,EAAE,IAAa;IACnD,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,2BAA2B,CAAC,CAAC,CAAC;YACjC,MAAM,KAAK,GAAG,mBAAmB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC9C,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,QAAQ,oBAAoB,EAAE;gBACvD,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;gBAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;aAC5B,CAAC,CAAC;YACH,OAAO,GAAG,CAAC,IAAI,EAAE,CAAC;QACpB,CAAC;QAED,KAAK,0BAA0B,CAAC,CAAC,CAAC;YAChC,MAAM,KAAK,GAAG,kBAAkB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC7C,MAAM,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;YACrC,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC3C,IAAI,CAAC,KAAK,SAAS;oBAAE,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;YAChD,CAAC;YACD,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,QAAQ,iBAAiB,MAAM,EAAE,CAAC,CAAC;YAC9D,OAAO,GAAG,CAAC,IAAI,EAAE,CAAC;QACpB,CAAC;QAED,KAAK,uBAAuB,CAAC,CAAC,CAAC;YAC7B,MAAM,EAAE,EAAE,EAAE,GAAG,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC3C,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,QAAQ,iBAAiB,EAAE,EAAE,CAAC,CAAC;YAC1D,OAAO,GAAG,CAAC,IAAI,EAAE,CAAC;QACpB,CAAC;QAED,KAAK,0BAA0B,CAAC,CAAC,CAAC;YAChC,MAAM,KAAK,GAAG,kBAAkB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC7C,MAAM,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;YACrC,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC3C,IAAI,CAAC,KAAK,SAAS;oBAAE,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;YAChD,CAAC;YACD,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,QAAQ,iBAAiB,MAAM,EAAE,CAAC,CAAC;YAC9D,OAAO,GAAG,CAAC,IAAI,EAAE,CAAC;QACpB,CAAC;QAED,KAAK,wBAAwB,CAAC,CAAC,CAAC;YAC9B,MAAM,EAAE,EAAE,EAAE,GAAG,gBAAgB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC5C,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,QAAQ,iBAAiB,EAAE,EAAE,CAAC,CAAC;YAC1D,OAAO,GAAG,CAAC,IAAI,EAAE,CAAC;QACpB,CAAC;QAED,KAAK,yBAAyB,CAAC,CAAC,CAAC;YAC/B,MAAM,KAAK,GAAG,iBAAiB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC5C,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,QAAQ,gBAAgB,EAAE;gBACnD,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE,YAAY,EAAE;gBACvB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;aAC5B,CAAC,CAAC;YACH,OAAO,GAAG,CAAC,IAAI,EAAE,CAAC;QACpB,CAAC;QAED,KAAK,iCAAiC,CAAC,CAAC,CAAC;YACvC,MAAM,EAAE,EAAE,EAAE,GAAG,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC3C,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,QAAQ,kBAAkB,EAAE,WAAW,EAAE;gBAClE,OAAO,EAAE,YAAY,EAAE;aACxB,CAAC,CAAC;YACH,OAAO,GAAG,CAAC,IAAI,EAAE,CAAC;QACpB,CAAC;QAED,KAAK,iCAAiC,CAAC,CAAC,CAAC;YACvC,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,GAAG,iBAAiB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACtD,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,QAAQ,kBAAkB,EAAE,WAAW,EAAE;gBAClE,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE,YAAY,EAAE;gBACvB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,CAAC;aAClC,CAAC,CAAC;YACH,OAAO,GAAG,CAAC,IAAI,EAAE,CAAC;QACpB,CAAC;QAED,KAAK,4BAA4B,CAAC,CAAC,CAAC;YAClC,IAAI,CAAC,WAAW,EAAE,CAAC;gBACjB,MAAM,IAAI,KAAK,CAAC,gEAAgE,CAAC,CAAC;YACpF,CAAC;YACD,MAAM,KAAK,GAAG,oBAAoB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC/C,MAAM,OAAO,GAAG,mBAAmB,CAAC,WAA4B,CAAC,CAAC;YAElE,MAAM,WAAW,GAAgB;gBAC/B,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE,YAAY,EAAE;gBACvB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;aAC5B,CAAC;YAEF,+BAA+B;YAC/B,IAAI,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,QAAQ,gBAAgB,EAAE,WAAW,CAAC,CAAC;YAEhE,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;gBACvB,+CAA+C;gBAC/C,MAAM,OAAO,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAA4B,CAAC;gBAC9D,MAAM,OAAO,GAAG,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE,CAAoD,CAAC;gBAC3F,MAAM,mBAAmB,GAAG,yBAAyB,CAAC,OAAO,CAAC,CAAC;gBAC/D,MAAM,aAAa,GAAG,MAAM,mBAAmB,CAAC,OAAO,EAAE,WAAW,EAAE,mBAAmB,CAAC,CAAC;gBAE3F,8BAA8B;gBAC9B,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,QAAQ,gBAAgB,EAAE;oBAC7C,GAAG,WAAW;oBACd,OAAO,EAAE,EAAE,GAAG,YAAY,EAAE,EAAE,WAAW,EAAE,aAAa,EAAE;iBAC3D,CAAC,CAAC;YACL,CAAC;YAED,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAmC,CAAC;YAElE,8CAA8C;YAC9C,MAAM,qBAAqB,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;YACpE,IAAI,qBAAqB,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC;gBAC/C,IAAI,CAAC;oBACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAGpD,CAAC;oBACF,MAAM,MAAM,GAAG,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,MAAM,CAAC;oBACnD,IAAI,MAAM,EAAE,CAAC;wBACX,MAAM,KAAK,CAAC,GAAG,QAAQ,kBAAkB,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE;4BAC3D,MAAM,EAAE,OAAO;4BACf,OAAO,EAAE,YAAY,EAAE;4BACvB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,eAAe,EAAE,MAAM,EAAE,cAAc,EAAE,SAAS,EAAE,CAAC;yBAC7E,CAAC,CAAC;wBACH,2DAA2D;wBAC3D,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,GAAG,QAAQ,kBAAkB,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE;4BAC3E,OAAO,EAAE,YAAY,EAAE;yBACxB,CAAC,CAAC;wBACH,OAAO,OAAO,CAAC,IAAI,EAAE,CAAC;oBACxB,CAAC;gBACH,CAAC;gBAAC,MAAM,CAAC;oBACP,qDAAqD;gBACvD,CAAC;YACH,CAAC;YAED,OAAO,IAAI,CAAC;QACd,CAAC;QAED,KAAK,yBAAyB,CAAC,CAAC,CAAC;YAC/B,MAAM,EAAE,EAAE,EAAE,GAAG,gBAAgB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC5C,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,QAAQ,kBAAkB,EAAE,EAAE,EAAE;gBACzD,OAAO,EAAE,YAAY,EAAE;aACxB,CAAC,CAAC;YACH,OAAO,GAAG,CAAC,IAAI,EAAE,CAAC;QACpB,CAAC;QAED,KAAK,kCAAkC,CAAC,CAAC,CAAC;YACxC,MAAM,EAAE,EAAE,EAAE,GAAG,gBAAgB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC5C,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,QAAQ,kBAAkB,EAAE,WAAW,EAAE;gBAClE,OAAO,EAAE,YAAY,EAAE;aACxB,CAAC,CAAC;YACH,OAAO,GAAG,CAAC,IAAI,EAAE,CAAC;QACpB,CAAC;QAED,KAAK,kCAAkC,CAAC,CAAC,CAAC;YACxC,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,GAAG,iBAAiB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACtD,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,QAAQ,kBAAkB,EAAE,WAAW,EAAE;gBAClE,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE,YAAY,EAAE;gBACvB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,CAAC;aAClC,CAAC,CAAC;YACH,OAAO,GAAG,CAAC,IAAI,EAAE,CAAC;QACpB,CAAC;QAED,KAAK,oCAAoC,CAAC,CAAC,CAAC;YAC1C,MAAM,EAAE,EAAE,EAAE,eAAe,EAAE,cAAc,EAAE,GAAG,2BAA2B,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACxF,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,QAAQ,kBAAkB,EAAE,EAAE,EAAE;gBACzD,MAAM,EAAE,OAAO;gBACf,OAAO,EAAE,YAAY,EAAE;gBACvB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,eAAe,EAAE,cAAc,EAAE,CAAC;aAC1D,CAAC,CAAC;YACH,OAAO,GAAG,CAAC,IAAI,EAAE,CAAC;QACpB,CAAC;QAED;YACE,MAAM,IAAI,KAAK,CAAC,iBAAiB,IAAI,EAAE,CAAC,CAAC;IAC7C,CAAC;AACH,CAAC;AAED,8EAA8E;AAC9E,aAAa;AACb,8EAA8E;AAE9E,MAAM,MAAM,GAAG,IAAI,MAAM,CACvB,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,OAAO,EAAE,EAC5C,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,CAChC,CAAC;AAEF,MAAM,CAAC,iBAAiB,CAAC,sBAAsB,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC;IAC5D,KAAK,EAAE,KAAK;CACb,CAAC,CAAC,CAAC;AAEJ,MAAM,CAAC,iBAAiB,CAAC,qBAAqB,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;IAChE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;IACjD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,IAAI,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC;QAClD,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;SACnE,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACjE,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,OAAO,EAAE,EAAE,CAAC;YACtD,OAAO,EAAE,IAAI;SACd,CAAC;IACJ,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,8EAA8E;AAC9E,QAAQ;AACR,8EAA8E;AAE9E,KAAK,UAAU,IAAI;IACjB,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAChC,6EAA6E;AAC/E,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;IACnB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,yBAAyB,GAAG,IAAI,CAAC,CAAC;IACvD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
package/package.json ADDED
@@ -0,0 +1,32 @@
1
+ {
2
+ "name": "ads4agents-mcp",
3
+ "version": "0.1.0",
4
+ "description": "MCP server for ads4agents — AI agent marketing platform",
5
+ "license": "MIT",
6
+ "type": "module",
7
+ "bin": {
8
+ "ads4agents-mcp": "dist/index.js"
9
+ },
10
+ "scripts": {
11
+ "build": "tsc",
12
+ "dev": "tsc --watch",
13
+ "start": "node dist/index.js",
14
+ "prepublishOnly": "npm run build"
15
+ },
16
+ "dependencies": {
17
+ "@modelcontextprotocol/sdk": "^1.0.0",
18
+ "viem": "^2.0.0",
19
+ "x402": "^1.1.0",
20
+ "zod": "^3.23.0"
21
+ },
22
+ "devDependencies": {
23
+ "@types/node": "^22.0.0",
24
+ "typescript": "^5.0.0"
25
+ },
26
+ "files": [
27
+ "dist"
28
+ ],
29
+ "engines": {
30
+ "node": ">=20"
31
+ }
32
+ }