@sealmetrics/mcp 0.1.0 → 1.2.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/README.md +149 -0
- package/dist/client.d.ts +45 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +136 -0
- package/dist/client.js.map +1 -0
- package/dist/errors.d.ts +10 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +55 -0
- package/dist/errors.js.map +1 -0
- package/dist/index.d.ts +1 -6
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +122 -781
- package/dist/index.js.map +1 -0
- package/dist/resources/tracking-guide.d.ts +13 -0
- package/dist/resources/tracking-guide.d.ts.map +1 -0
- package/dist/resources/tracking-guide.js +479 -0
- package/dist/resources/tracking-guide.js.map +1 -0
- package/dist/tools/alerts.d.ts +5 -0
- package/dist/tools/alerts.d.ts.map +1 -0
- package/dist/tools/alerts.js +80 -0
- package/dist/tools/alerts.js.map +1 -0
- package/dist/tools/audience.d.ts +7 -0
- package/dist/tools/audience.d.ts.map +1 -0
- package/dist/tools/audience.js +146 -0
- package/dist/tools/audience.js.map +1 -0
- package/dist/tools/bots.d.ts +4 -0
- package/dist/tools/bots.d.ts.map +1 -0
- package/dist/tools/bots.js +52 -0
- package/dist/tools/bots.js.map +1 -0
- package/dist/tools/channels.d.ts +5 -0
- package/dist/tools/channels.d.ts.map +1 -0
- package/dist/tools/channels.js +88 -0
- package/dist/tools/channels.js.map +1 -0
- package/dist/tools/content.d.ts +3 -0
- package/dist/tools/content.d.ts.map +1 -0
- package/dist/tools/content.js +47 -0
- package/dist/tools/content.js.map +1 -0
- package/dist/tools/conversions.d.ts +6 -0
- package/dist/tools/conversions.d.ts.map +1 -0
- package/dist/tools/conversions.js +178 -0
- package/dist/tools/conversions.js.map +1 -0
- package/dist/tools/funnel.d.ts +3 -0
- package/dist/tools/funnel.d.ts.map +1 -0
- package/dist/tools/funnel.js +27 -0
- package/dist/tools/funnel.js.map +1 -0
- package/dist/tools/index.d.ts +16 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +79 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/manage.d.ts +3 -0
- package/dist/tools/manage.d.ts.map +1 -0
- package/dist/tools/manage.js +55 -0
- package/dist/tools/manage.js.map +1 -0
- package/dist/tools/overview.d.ts +3 -0
- package/dist/tools/overview.d.ts.map +1 -0
- package/dist/tools/overview.js +26 -0
- package/dist/tools/overview.js.map +1 -0
- package/dist/tools/pages.d.ts +7 -0
- package/dist/tools/pages.d.ts.map +1 -0
- package/dist/tools/pages.js +207 -0
- package/dist/tools/pages.js.map +1 -0
- package/dist/tools/properties.d.ts +5 -0
- package/dist/tools/properties.d.ts.map +1 -0
- package/dist/tools/properties.js +107 -0
- package/dist/tools/properties.js.map +1 -0
- package/dist/tools/segments.d.ts +4 -0
- package/dist/tools/segments.d.ts.map +1 -0
- package/dist/tools/segments.js +49 -0
- package/dist/tools/segments.js.map +1 -0
- package/dist/tools/shared.d.ts +45 -0
- package/dist/tools/shared.d.ts.map +1 -0
- package/dist/tools/shared.js +139 -0
- package/dist/tools/shared.js.map +1 -0
- package/dist/tools/sites.d.ts +4 -0
- package/dist/tools/sites.d.ts.map +1 -0
- package/dist/tools/sites.js +36 -0
- package/dist/tools/sites.js.map +1 -0
- package/dist/tools/tracking.d.ts +3 -0
- package/dist/tools/tracking.d.ts.map +1 -0
- package/dist/tools/tracking.js +220 -0
- package/dist/tools/tracking.js.map +1 -0
- package/dist/tools/traffic.d.ts +10 -0
- package/dist/tools/traffic.d.ts.map +1 -0
- package/dist/tools/traffic.js +273 -0
- package/dist/tools/traffic.js.map +1 -0
- package/dist/tools/webhooks.d.ts +5 -0
- package/dist/tools/webhooks.d.ts.map +1 -0
- package/dist/tools/webhooks.js +101 -0
- package/dist/tools/webhooks.js.map +1 -0
- package/dist/types.d.ts +118 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +22 -0
- package/dist/types.js.map +1 -0
- package/package.json +35 -27
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { listSitesTool, getSiteTool } from "./sites.js";
|
|
2
|
+
import { getOverviewTool } from "./overview.js";
|
|
3
|
+
import { getTrafficSourcesTool, getTrafficMediumsTool, getCampaignsTool, getTermsTool, getTopSourcesTool, getTopCampaignsTool, getTopTermsTool, getTopReferrersTool, } from "./traffic.js";
|
|
4
|
+
import { getPagesTool, getLandingPagesTool, getTopPagesTool, getTopLandingPagesTool, getLandingPagesByContentGroupTool, } from "./pages.js";
|
|
5
|
+
import { getConversionsTool, getMicroconversionsTool, listMicroconversionTypesTool, getMicroconversionDetailsTool, } from "./conversions.js";
|
|
6
|
+
import { getCountriesTool, getDevicesTool, getBrowsersTool, getOperatingSystemsTool, getDeviceTypesTool, } from "./audience.js";
|
|
7
|
+
import { getFunnelTool } from "./funnel.js";
|
|
8
|
+
import { getContentGroupsTool } from "./content.js";
|
|
9
|
+
import { getChannelsTool, getTopChannelsTool, listChannelRulesTool } from "./channels.js";
|
|
10
|
+
import { getBotStatsTool, getSuspiciousSessionsTool } from "./bots.js";
|
|
11
|
+
import { listSegmentsTool, getSegmentTool } from "./segments.js";
|
|
12
|
+
import { listAlertsTool, getAlertHistoryTool, getAlertStatsTool } from "./alerts.js";
|
|
13
|
+
import { listWebhooksTool, listWebhookDeliveriesTool, getWebhookStatsTool } from "./webhooks.js";
|
|
14
|
+
import { getTrackingCodeTool } from "./tracking.js";
|
|
15
|
+
import { listPropertyKeysTool, getPropertyValuesTool, getPropertyBreakdownTool, } from "./properties.js";
|
|
16
|
+
// Re-export shared utilities for convenience
|
|
17
|
+
export { PERIOD_SCHEMA, COMPARE_SCHEMA, LIMIT_SCHEMA, SORT_ORDER_SCHEMA, PAGE_SCHEMA, resolveSiteId, } from "./shared.js";
|
|
18
|
+
/** All registered tools. */
|
|
19
|
+
export const ALL_TOOLS = [
|
|
20
|
+
// Sites
|
|
21
|
+
listSitesTool,
|
|
22
|
+
getSiteTool,
|
|
23
|
+
// Overview
|
|
24
|
+
getOverviewTool,
|
|
25
|
+
// Traffic
|
|
26
|
+
getTrafficSourcesTool,
|
|
27
|
+
getTrafficMediumsTool,
|
|
28
|
+
getCampaignsTool,
|
|
29
|
+
getTermsTool,
|
|
30
|
+
getTopSourcesTool,
|
|
31
|
+
getTopCampaignsTool,
|
|
32
|
+
getTopTermsTool,
|
|
33
|
+
getTopReferrersTool,
|
|
34
|
+
// Pages & Content
|
|
35
|
+
getPagesTool,
|
|
36
|
+
getLandingPagesTool,
|
|
37
|
+
getTopPagesTool,
|
|
38
|
+
getTopLandingPagesTool,
|
|
39
|
+
getLandingPagesByContentGroupTool,
|
|
40
|
+
getContentGroupsTool,
|
|
41
|
+
// Conversions
|
|
42
|
+
getConversionsTool,
|
|
43
|
+
getMicroconversionsTool,
|
|
44
|
+
listMicroconversionTypesTool,
|
|
45
|
+
getMicroconversionDetailsTool,
|
|
46
|
+
// Audience
|
|
47
|
+
getCountriesTool,
|
|
48
|
+
getDevicesTool,
|
|
49
|
+
getDeviceTypesTool,
|
|
50
|
+
getBrowsersTool,
|
|
51
|
+
getOperatingSystemsTool,
|
|
52
|
+
// Channels
|
|
53
|
+
getChannelsTool,
|
|
54
|
+
getTopChannelsTool,
|
|
55
|
+
listChannelRulesTool,
|
|
56
|
+
// Properties
|
|
57
|
+
listPropertyKeysTool,
|
|
58
|
+
getPropertyValuesTool,
|
|
59
|
+
getPropertyBreakdownTool,
|
|
60
|
+
// Funnel
|
|
61
|
+
getFunnelTool,
|
|
62
|
+
// Bot Detection
|
|
63
|
+
getBotStatsTool,
|
|
64
|
+
getSuspiciousSessionsTool,
|
|
65
|
+
// Segments
|
|
66
|
+
listSegmentsTool,
|
|
67
|
+
getSegmentTool,
|
|
68
|
+
// Alerts
|
|
69
|
+
listAlertsTool,
|
|
70
|
+
getAlertHistoryTool,
|
|
71
|
+
getAlertStatsTool,
|
|
72
|
+
// Webhooks
|
|
73
|
+
listWebhooksTool,
|
|
74
|
+
listWebhookDeliveriesTool,
|
|
75
|
+
getWebhookStatsTool,
|
|
76
|
+
// Tracking
|
|
77
|
+
getTrackingCodeTool,
|
|
78
|
+
];
|
|
79
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EACL,qBAAqB,EACrB,qBAAqB,EACrB,gBAAgB,EAChB,YAAY,EACZ,iBAAiB,EACjB,mBAAmB,EACnB,eAAe,EACf,mBAAmB,GACpB,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,YAAY,EACZ,mBAAmB,EACnB,eAAe,EACf,sBAAsB,EACtB,iCAAiC,GAClC,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,kBAAkB,EAClB,uBAAuB,EACvB,4BAA4B,EAC5B,6BAA6B,GAC9B,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,gBAAgB,EAChB,cAAc,EACd,eAAe,EACf,uBAAuB,EACvB,kBAAkB,GACnB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAC1F,OAAO,EAAE,eAAe,EAAE,yBAAyB,EAAE,MAAM,WAAW,CAAC;AACvE,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AACrF,OAAO,EAAE,gBAAgB,EAAE,yBAAyB,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACjG,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EACL,oBAAoB,EACpB,qBAAqB,EACrB,wBAAwB,GACzB,MAAM,iBAAiB,CAAC;AAEzB,6CAA6C;AAC7C,OAAO,EACL,aAAa,EACb,cAAc,EACd,YAAY,EACZ,iBAAiB,EACjB,WAAW,EACX,aAAa,GACd,MAAM,aAAa,CAAC;AAiBrB,4BAA4B;AAC5B,MAAM,CAAC,MAAM,SAAS,GAAc;IAClC,QAAQ;IACR,aAAa;IACb,WAAW;IACX,WAAW;IACX,eAAe;IACf,UAAU;IACV,qBAAqB;IACrB,qBAAqB;IACrB,gBAAgB;IAChB,YAAY;IACZ,iBAAiB;IACjB,mBAAmB;IACnB,eAAe;IACf,mBAAmB;IACnB,kBAAkB;IAClB,YAAY;IACZ,mBAAmB;IACnB,eAAe;IACf,sBAAsB;IACtB,iCAAiC;IACjC,oBAAoB;IACpB,cAAc;IACd,kBAAkB;IAClB,uBAAuB;IACvB,4BAA4B;IAC5B,6BAA6B;IAC7B,WAAW;IACX,gBAAgB;IAChB,cAAc;IACd,kBAAkB;IAClB,eAAe;IACf,uBAAuB;IACvB,WAAW;IACX,eAAe;IACf,kBAAkB;IAClB,oBAAoB;IACpB,aAAa;IACb,oBAAoB;IACpB,qBAAqB;IACrB,wBAAwB;IACxB,SAAS;IACT,aAAa;IACb,gBAAgB;IAChB,eAAe;IACf,yBAAyB;IACzB,WAAW;IACX,gBAAgB;IAChB,cAAc;IACd,SAAS;IACT,cAAc;IACd,mBAAmB;IACnB,iBAAiB;IACjB,WAAW;IACX,gBAAgB;IAChB,yBAAyB;IACzB,mBAAmB;IACnB,WAAW;IACX,mBAAmB;CACpB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manage.d.ts","sourceRoot":"","sources":["../../src/tools/manage.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAE1C,eAAO,MAAM,cAAc,EAAE,OAmE5B,CAAC"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
export const createSiteTool = {
|
|
2
|
+
name: "create_site",
|
|
3
|
+
description: "Create a new analytics site in SealMetrics. IMPORTANT: This creates a permanent resource. Confirm the site name and domain with the user before calling this tool. Requires an API key with the sites:create scope.",
|
|
4
|
+
inputSchema: {
|
|
5
|
+
type: "object",
|
|
6
|
+
properties: {
|
|
7
|
+
name: {
|
|
8
|
+
type: "string",
|
|
9
|
+
description: "Display name for the site (e.g. 'My Store', 'Company Blog'). Used to generate the site ID.",
|
|
10
|
+
},
|
|
11
|
+
domain: {
|
|
12
|
+
type: "string",
|
|
13
|
+
description: "Primary domain for tracking (e.g. 'example.com'). Optional — can be added later in Settings.",
|
|
14
|
+
},
|
|
15
|
+
timezone: {
|
|
16
|
+
type: "string",
|
|
17
|
+
description: 'IANA timezone for the site (e.g. "Europe/Madrid", "America/New_York"). Default: "UTC".',
|
|
18
|
+
},
|
|
19
|
+
currency: {
|
|
20
|
+
type: "string",
|
|
21
|
+
description: 'ISO 4217 currency code (e.g. "EUR", "USD"). Default: "EUR".',
|
|
22
|
+
},
|
|
23
|
+
},
|
|
24
|
+
required: ["name"],
|
|
25
|
+
},
|
|
26
|
+
handler: async (client, args) => {
|
|
27
|
+
const name = args.name;
|
|
28
|
+
if (!name || name.trim().length === 0) {
|
|
29
|
+
throw new Error("Site name is required and cannot be empty.");
|
|
30
|
+
}
|
|
31
|
+
const body = { name: name.trim() };
|
|
32
|
+
const domain = args.domain;
|
|
33
|
+
if (domain && domain.trim().length > 0) {
|
|
34
|
+
body.domains = [domain.trim().toLowerCase()];
|
|
35
|
+
}
|
|
36
|
+
const timezone = args.timezone;
|
|
37
|
+
if (timezone) {
|
|
38
|
+
body.timezone = timezone;
|
|
39
|
+
}
|
|
40
|
+
const currency = args.currency;
|
|
41
|
+
if (currency) {
|
|
42
|
+
body.currency = currency.toUpperCase();
|
|
43
|
+
}
|
|
44
|
+
const site = await client.post("/sites", body);
|
|
45
|
+
return {
|
|
46
|
+
site_id: site.id,
|
|
47
|
+
name: site.name,
|
|
48
|
+
domains: site.domains,
|
|
49
|
+
timezone: site.timezone,
|
|
50
|
+
currency: site.currency,
|
|
51
|
+
message: `Site "${site.name}" created successfully with ID "${site.id}". Install the tracking pixel to start collecting data.`,
|
|
52
|
+
};
|
|
53
|
+
},
|
|
54
|
+
};
|
|
55
|
+
//# sourceMappingURL=manage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manage.js","sourceRoot":"","sources":["../../src/tools/manage.ts"],"names":[],"mappings":"AAIA,MAAM,CAAC,MAAM,cAAc,GAAY;IACrC,IAAI,EAAE,aAAa;IACnB,WAAW,EACT,qNAAqN;IACvN,WAAW,EAAE;QACX,IAAI,EAAE,QAAiB;QACvB,UAAU,EAAE;YACV,IAAI,EAAE;gBACJ,IAAI,EAAE,QAAQ;gBACd,WAAW,EACT,4FAA4F;aAC/F;YACD,MAAM,EAAE;gBACN,IAAI,EAAE,QAAQ;gBACd,WAAW,EACT,8FAA8F;aACjG;YACD,QAAQ,EAAE;gBACR,IAAI,EAAE,QAAQ;gBACd,WAAW,EACT,wFAAwF;aAC3F;YACD,QAAQ,EAAE;gBACR,IAAI,EAAE,QAAQ;gBACd,WAAW,EACT,6DAA6D;aAChE;SACF;QACD,QAAQ,EAAE,CAAC,MAAM,CAAC;KACnB;IACD,OAAO,EAAE,KAAK,EACZ,MAAyB,EACzB,IAA6B,EAC7B,EAAE;QACF,MAAM,IAAI,GAAG,IAAI,CAAC,IAAc,CAAC;QACjC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACtC,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;QAChE,CAAC;QAED,MAAM,IAAI,GAA4B,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;QAE5D,MAAM,MAAM,GAAG,IAAI,CAAC,MAA4B,CAAC;QACjD,IAAI,MAAM,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvC,IAAI,CAAC,OAAO,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;QAC/C,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,QAA8B,CAAC;QACrD,IAAI,QAAQ,EAAE,CAAC;YACb,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QAC3B,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,QAA8B,CAAC;QACrD,IAAI,QAAQ,EAAE,CAAC;YACb,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC;QACzC,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,IAAI,CAAW,QAAQ,EAAE,IAAI,CAAC,CAAC;QAEzD,OAAO;YACL,OAAO,EAAE,IAAI,CAAC,EAAE;YAChB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,OAAO,EAAE,SAAS,IAAI,CAAC,IAAI,mCAAmC,IAAI,CAAC,EAAE,yDAAyD;SAC/H,CAAC;IACJ,CAAC;CACF,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"overview.d.ts","sourceRoot":"","sources":["../../src/tools/overview.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAE1C,eAAO,MAAM,eAAe,EAAE,OA4B7B,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { PERIOD_SCHEMA, COMPARE_SCHEMA, resolveSiteId } from "./shared.js";
|
|
2
|
+
export const getOverviewTool = {
|
|
3
|
+
name: "get_overview",
|
|
4
|
+
description: "Get dashboard KPIs: pageviews, entrances, bounce rate, conversions, revenue. Includes time series data and optional period-over-period comparison. This is the best starting point for understanding a site's performance.",
|
|
5
|
+
inputSchema: {
|
|
6
|
+
type: "object",
|
|
7
|
+
properties: {
|
|
8
|
+
site_id: {
|
|
9
|
+
type: "string",
|
|
10
|
+
description: "Site ID. Optional if SEALMETRICS_SITE_ID env var is set.",
|
|
11
|
+
},
|
|
12
|
+
period: PERIOD_SCHEMA,
|
|
13
|
+
compare: COMPARE_SCHEMA,
|
|
14
|
+
},
|
|
15
|
+
},
|
|
16
|
+
handler: async (client, args) => {
|
|
17
|
+
const siteId = resolveSiteId(args);
|
|
18
|
+
const params = {
|
|
19
|
+
site_id: siteId,
|
|
20
|
+
period: args.period ?? "30d",
|
|
21
|
+
compare: args.compare,
|
|
22
|
+
};
|
|
23
|
+
return client.request("/stats/overview", params);
|
|
24
|
+
},
|
|
25
|
+
};
|
|
26
|
+
//# sourceMappingURL=overview.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"overview.js","sourceRoot":"","sources":["../../src/tools/overview.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAG3E,MAAM,CAAC,MAAM,eAAe,GAAY;IACtC,IAAI,EAAE,cAAc;IACpB,WAAW,EACT,4NAA4N;IAC9N,WAAW,EAAE;QACX,IAAI,EAAE,QAAiB;QACvB,UAAU,EAAE;YACV,OAAO,EAAE;gBACP,IAAI,EAAE,QAAQ;gBACd,WAAW,EACT,0DAA0D;aAC7D;YACD,MAAM,EAAE,aAAa;YACrB,OAAO,EAAE,cAAc;SACxB;KACF;IACD,OAAO,EAAE,KAAK,EACZ,MAAyB,EACzB,IAA6B,EAC7B,EAAE;QACF,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;QACnC,MAAM,MAAM,GAAuC;YACjD,OAAO,EAAE,MAAM;YACf,MAAM,EAAG,IAAI,CAAC,MAAiB,IAAI,KAAK;YACxC,OAAO,EAAE,IAAI,CAAC,OAA6B;SAC5C,CAAC;QACF,OAAO,MAAM,CAAC,OAAO,CAAgB,iBAAiB,EAAE,MAAM,CAAC,CAAC;IAClE,CAAC;CACF,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { ToolDef } from "./index.js";
|
|
2
|
+
export declare const getPagesTool: ToolDef;
|
|
3
|
+
export declare const getLandingPagesTool: ToolDef;
|
|
4
|
+
export declare const getTopPagesTool: ToolDef;
|
|
5
|
+
export declare const getTopLandingPagesTool: ToolDef;
|
|
6
|
+
export declare const getLandingPagesByContentGroupTool: ToolDef;
|
|
7
|
+
//# sourceMappingURL=pages.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pages.d.ts","sourceRoot":"","sources":["../../src/tools/pages.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAE1C,eAAO,MAAM,YAAY,EAAE,OAwC1B,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,OAwCjC,CAAC;AAIF,eAAO,MAAM,eAAe,EAAE,OA+C7B,CAAC;AAEF,eAAO,MAAM,sBAAsB,EAAE,OA0CpC,CAAC;AAEF,eAAO,MAAM,iCAAiC,EAAE,OAmC/C,CAAC"}
|
|
@@ -0,0 +1,207 @@
|
|
|
1
|
+
import { PERIOD_SCHEMA, COMPARE_SCHEMA, LIMIT_SCHEMA, SORT_ORDER_SCHEMA, PAGE_SCHEMA, resolveSiteId, } from "./shared.js";
|
|
2
|
+
export const getPagesTool = {
|
|
3
|
+
name: "get_pages",
|
|
4
|
+
description: "Get metrics per page URL path: pageviews, entrances, conversions. Useful for finding most popular pages and content performance.",
|
|
5
|
+
inputSchema: {
|
|
6
|
+
type: "object",
|
|
7
|
+
properties: {
|
|
8
|
+
site_id: {
|
|
9
|
+
type: "string",
|
|
10
|
+
description: "Site ID. Optional if SEALMETRICS_SITE_ID env var is set.",
|
|
11
|
+
},
|
|
12
|
+
period: PERIOD_SCHEMA,
|
|
13
|
+
compare: COMPARE_SCHEMA,
|
|
14
|
+
limit: LIMIT_SCHEMA,
|
|
15
|
+
sort_by: {
|
|
16
|
+
type: "string",
|
|
17
|
+
description: "Field to sort by.",
|
|
18
|
+
enum: ["page_views", "entrances", "engaged_entrances", "conversions", "revenue"],
|
|
19
|
+
default: "page_views",
|
|
20
|
+
},
|
|
21
|
+
sort_order: SORT_ORDER_SCHEMA,
|
|
22
|
+
page: PAGE_SCHEMA,
|
|
23
|
+
path_filter: {
|
|
24
|
+
type: "string",
|
|
25
|
+
description: "Filter pages by URL path pattern (e.g. '/blog').",
|
|
26
|
+
},
|
|
27
|
+
},
|
|
28
|
+
},
|
|
29
|
+
handler: async (client, args) => {
|
|
30
|
+
return client.requestPaginated("/stats/pages", {
|
|
31
|
+
site_id: resolveSiteId(args),
|
|
32
|
+
period: args.period ?? "30d",
|
|
33
|
+
compare: args.compare,
|
|
34
|
+
page_size: String(args.limit ?? 20),
|
|
35
|
+
page: args.page != null ? String(args.page) : undefined,
|
|
36
|
+
sort_by: args.sort_by ?? "page_views",
|
|
37
|
+
sort_order: args.sort_order ?? "desc",
|
|
38
|
+
path_filter: args.path_filter,
|
|
39
|
+
});
|
|
40
|
+
},
|
|
41
|
+
};
|
|
42
|
+
export const getLandingPagesTool = {
|
|
43
|
+
name: "get_landing_pages",
|
|
44
|
+
description: "Get landing page performance: entrances, bounce rate, conversions. Landing pages are the first page users see when entering the site. High bounce rates indicate poor landing page experience.",
|
|
45
|
+
inputSchema: {
|
|
46
|
+
type: "object",
|
|
47
|
+
properties: {
|
|
48
|
+
site_id: {
|
|
49
|
+
type: "string",
|
|
50
|
+
description: "Site ID. Optional if SEALMETRICS_SITE_ID env var is set.",
|
|
51
|
+
},
|
|
52
|
+
period: PERIOD_SCHEMA,
|
|
53
|
+
compare: COMPARE_SCHEMA,
|
|
54
|
+
limit: LIMIT_SCHEMA,
|
|
55
|
+
sort_by: {
|
|
56
|
+
type: "string",
|
|
57
|
+
description: "Field to sort by.",
|
|
58
|
+
enum: ["entrances", "engaged_entrances", "page_views", "conversions", "revenue", "bounce_rate"],
|
|
59
|
+
default: "entrances",
|
|
60
|
+
},
|
|
61
|
+
sort_order: SORT_ORDER_SCHEMA,
|
|
62
|
+
page: PAGE_SCHEMA,
|
|
63
|
+
path_filter: {
|
|
64
|
+
type: "string",
|
|
65
|
+
description: "Filter by URL path pattern.",
|
|
66
|
+
},
|
|
67
|
+
},
|
|
68
|
+
},
|
|
69
|
+
handler: async (client, args) => {
|
|
70
|
+
return client.requestPaginated("/stats/landing-pages", {
|
|
71
|
+
site_id: resolveSiteId(args),
|
|
72
|
+
period: args.period ?? "30d",
|
|
73
|
+
compare: args.compare,
|
|
74
|
+
page_size: String(args.limit ?? 20),
|
|
75
|
+
page: args.page != null ? String(args.page) : undefined,
|
|
76
|
+
sort_by: args.sort_by ?? "entrances",
|
|
77
|
+
sort_order: args.sort_order ?? "desc",
|
|
78
|
+
path_filter: args.path_filter,
|
|
79
|
+
});
|
|
80
|
+
},
|
|
81
|
+
};
|
|
82
|
+
// --- Top N tools (non-paginated, client.request) ---
|
|
83
|
+
export const getTopPagesTool = {
|
|
84
|
+
name: "get_top_pages",
|
|
85
|
+
description: "Get top pages ranked by page views. Returns a compact list of the top N pages — ideal for quick rankings and summaries.",
|
|
86
|
+
inputSchema: {
|
|
87
|
+
type: "object",
|
|
88
|
+
properties: {
|
|
89
|
+
site_id: {
|
|
90
|
+
type: "string",
|
|
91
|
+
description: "Site ID. Optional if SEALMETRICS_SITE_ID env var is set.",
|
|
92
|
+
},
|
|
93
|
+
period: PERIOD_SCHEMA,
|
|
94
|
+
limit: LIMIT_SCHEMA,
|
|
95
|
+
country: {
|
|
96
|
+
type: "string",
|
|
97
|
+
description: "Filter by country code (e.g. 'ES', 'US').",
|
|
98
|
+
},
|
|
99
|
+
utm_source: {
|
|
100
|
+
type: "string",
|
|
101
|
+
description: "Filter by UTM source.",
|
|
102
|
+
},
|
|
103
|
+
utm_medium: {
|
|
104
|
+
type: "string",
|
|
105
|
+
description: "Filter by UTM medium.",
|
|
106
|
+
},
|
|
107
|
+
utm_campaign: {
|
|
108
|
+
type: "string",
|
|
109
|
+
description: "Filter by UTM campaign.",
|
|
110
|
+
},
|
|
111
|
+
utm_term: {
|
|
112
|
+
type: "string",
|
|
113
|
+
description: "Filter by UTM term.",
|
|
114
|
+
},
|
|
115
|
+
},
|
|
116
|
+
},
|
|
117
|
+
handler: async (client, args) => {
|
|
118
|
+
return client.request("/stats/pages/top", {
|
|
119
|
+
site_id: resolveSiteId(args),
|
|
120
|
+
period: args.period ?? "30d",
|
|
121
|
+
limit: String(args.limit ?? 10),
|
|
122
|
+
country: args.country,
|
|
123
|
+
utm_source: args.utm_source,
|
|
124
|
+
utm_medium: args.utm_medium,
|
|
125
|
+
utm_campaign: args.utm_campaign,
|
|
126
|
+
utm_term: args.utm_term,
|
|
127
|
+
});
|
|
128
|
+
},
|
|
129
|
+
};
|
|
130
|
+
export const getTopLandingPagesTool = {
|
|
131
|
+
name: "get_top_landing_pages",
|
|
132
|
+
description: "Get top landing pages ranked by entrances. Returns a compact list of the top N landing pages — ideal for quick rankings.",
|
|
133
|
+
inputSchema: {
|
|
134
|
+
type: "object",
|
|
135
|
+
properties: {
|
|
136
|
+
site_id: {
|
|
137
|
+
type: "string",
|
|
138
|
+
description: "Site ID. Optional if SEALMETRICS_SITE_ID env var is set.",
|
|
139
|
+
},
|
|
140
|
+
period: PERIOD_SCHEMA,
|
|
141
|
+
limit: LIMIT_SCHEMA,
|
|
142
|
+
utm_source: {
|
|
143
|
+
type: "string",
|
|
144
|
+
description: "Filter by UTM source.",
|
|
145
|
+
},
|
|
146
|
+
utm_medium: {
|
|
147
|
+
type: "string",
|
|
148
|
+
description: "Filter by UTM medium.",
|
|
149
|
+
},
|
|
150
|
+
country: {
|
|
151
|
+
type: "string",
|
|
152
|
+
description: "Filter by country code (e.g. 'ES', 'US').",
|
|
153
|
+
},
|
|
154
|
+
content_grouping: {
|
|
155
|
+
type: "string",
|
|
156
|
+
description: "Filter by content grouping name.",
|
|
157
|
+
},
|
|
158
|
+
},
|
|
159
|
+
},
|
|
160
|
+
handler: async (client, args) => {
|
|
161
|
+
return client.request("/stats/landing-pages/top", {
|
|
162
|
+
site_id: resolveSiteId(args),
|
|
163
|
+
period: args.period ?? "30d",
|
|
164
|
+
limit: String(args.limit ?? 10),
|
|
165
|
+
utm_source: args.utm_source,
|
|
166
|
+
utm_medium: args.utm_medium,
|
|
167
|
+
country: args.country,
|
|
168
|
+
content_grouping: args.content_grouping,
|
|
169
|
+
});
|
|
170
|
+
},
|
|
171
|
+
};
|
|
172
|
+
export const getLandingPagesByContentGroupTool = {
|
|
173
|
+
name: "get_landing_pages_by_content_group",
|
|
174
|
+
description: "Get landing page metrics grouped by content grouping. Shows aggregate performance per content group (e.g. blog, product, category).",
|
|
175
|
+
inputSchema: {
|
|
176
|
+
type: "object",
|
|
177
|
+
properties: {
|
|
178
|
+
site_id: {
|
|
179
|
+
type: "string",
|
|
180
|
+
description: "Site ID. Optional if SEALMETRICS_SITE_ID env var is set.",
|
|
181
|
+
},
|
|
182
|
+
period: PERIOD_SCHEMA,
|
|
183
|
+
utm_source: {
|
|
184
|
+
type: "string",
|
|
185
|
+
description: "Filter by UTM source.",
|
|
186
|
+
},
|
|
187
|
+
utm_medium: {
|
|
188
|
+
type: "string",
|
|
189
|
+
description: "Filter by UTM medium.",
|
|
190
|
+
},
|
|
191
|
+
country: {
|
|
192
|
+
type: "string",
|
|
193
|
+
description: "Filter by country code (e.g. 'ES', 'US').",
|
|
194
|
+
},
|
|
195
|
+
},
|
|
196
|
+
},
|
|
197
|
+
handler: async (client, args) => {
|
|
198
|
+
return client.request("/stats/landing-pages/by-content-group", {
|
|
199
|
+
site_id: resolveSiteId(args),
|
|
200
|
+
period: args.period ?? "30d",
|
|
201
|
+
utm_source: args.utm_source,
|
|
202
|
+
utm_medium: args.utm_medium,
|
|
203
|
+
country: args.country,
|
|
204
|
+
});
|
|
205
|
+
},
|
|
206
|
+
};
|
|
207
|
+
//# sourceMappingURL=pages.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pages.js","sourceRoot":"","sources":["../../src/tools/pages.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"properties.d.ts","sourceRoot":"","sources":["../../src/tools/properties.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAU1C,eAAO,MAAM,oBAAoB,EAAE,OAsBlC,CAAC;AAEF,eAAO,MAAM,qBAAqB,EAAE,OA6CnC,CAAC;AAEF,eAAO,MAAM,wBAAwB,EAAE,OAiCtC,CAAC"}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
import { PERIOD_SCHEMA, LIMIT_SCHEMA, PAGE_SCHEMA, resolveSiteId, } from "./shared.js";
|
|
2
|
+
const TABLE_SCHEMA = {
|
|
3
|
+
type: "string",
|
|
4
|
+
description: 'Table to query: "conversions", "microconversions", "both", or "conversion_items". Default: "both".',
|
|
5
|
+
enum: ["conversions", "microconversions", "both", "conversion_items"],
|
|
6
|
+
default: "both",
|
|
7
|
+
};
|
|
8
|
+
export const listPropertyKeysTool = {
|
|
9
|
+
name: "list_property_keys",
|
|
10
|
+
description: "Get the list of available custom property keys from conversions and/or microconversions. Use this to discover what property keys exist before querying values or breakdowns.",
|
|
11
|
+
inputSchema: {
|
|
12
|
+
type: "object",
|
|
13
|
+
properties: {
|
|
14
|
+
site_id: {
|
|
15
|
+
type: "string",
|
|
16
|
+
description: "Site ID. Optional if SEALMETRICS_SITE_ID env var is set.",
|
|
17
|
+
},
|
|
18
|
+
period: PERIOD_SCHEMA,
|
|
19
|
+
table: TABLE_SCHEMA,
|
|
20
|
+
},
|
|
21
|
+
},
|
|
22
|
+
handler: async (client, args) => {
|
|
23
|
+
return client.request("/stats/properties/keys", {
|
|
24
|
+
site_id: resolveSiteId(args),
|
|
25
|
+
period: args.period ?? "30d",
|
|
26
|
+
table: args.table ?? "both",
|
|
27
|
+
});
|
|
28
|
+
},
|
|
29
|
+
};
|
|
30
|
+
export const getPropertyValuesTool = {
|
|
31
|
+
name: "get_property_values",
|
|
32
|
+
description: "Get property values with counts, grouped by a UTM parameter. Paginated. Use to see which values a specific property key has and how they distribute across traffic sources.",
|
|
33
|
+
inputSchema: {
|
|
34
|
+
type: "object",
|
|
35
|
+
properties: {
|
|
36
|
+
site_id: {
|
|
37
|
+
type: "string",
|
|
38
|
+
description: "Site ID. Optional if SEALMETRICS_SITE_ID env var is set.",
|
|
39
|
+
},
|
|
40
|
+
property_key: {
|
|
41
|
+
type: "string",
|
|
42
|
+
description: "The property key to analyze (e.g. 'product_name', 'plan_type').",
|
|
43
|
+
},
|
|
44
|
+
period: PERIOD_SCHEMA,
|
|
45
|
+
group_by: {
|
|
46
|
+
type: "string",
|
|
47
|
+
description: 'Group results by: "utm_source", "utm_medium", "utm_campaign", or "all". Default: "utm_source".',
|
|
48
|
+
enum: ["utm_source", "utm_medium", "utm_campaign", "all"],
|
|
49
|
+
default: "utm_source",
|
|
50
|
+
},
|
|
51
|
+
table: TABLE_SCHEMA,
|
|
52
|
+
conversion_type: {
|
|
53
|
+
type: "string",
|
|
54
|
+
description: "Filter by conversion type.",
|
|
55
|
+
},
|
|
56
|
+
limit: LIMIT_SCHEMA,
|
|
57
|
+
page: PAGE_SCHEMA,
|
|
58
|
+
},
|
|
59
|
+
required: ["property_key"],
|
|
60
|
+
},
|
|
61
|
+
handler: async (client, args) => {
|
|
62
|
+
return client.requestPaginated("/stats/properties/values", {
|
|
63
|
+
site_id: resolveSiteId(args),
|
|
64
|
+
property_key: args.property_key,
|
|
65
|
+
period: args.period ?? "30d",
|
|
66
|
+
group_by: args.group_by ?? "utm_source",
|
|
67
|
+
table: args.table ?? "both",
|
|
68
|
+
conversion_type: args.conversion_type,
|
|
69
|
+
page_size: String(args.limit ?? 50),
|
|
70
|
+
page: args.page != null ? String(args.page) : undefined,
|
|
71
|
+
});
|
|
72
|
+
},
|
|
73
|
+
};
|
|
74
|
+
export const getPropertyBreakdownTool = {
|
|
75
|
+
name: "get_property_breakdown",
|
|
76
|
+
description: "Get a complete property breakdown with pivot-table style data. Shows all values for a property key with their counts and revenue — ideal for analyzing product or category performance.",
|
|
77
|
+
inputSchema: {
|
|
78
|
+
type: "object",
|
|
79
|
+
properties: {
|
|
80
|
+
site_id: {
|
|
81
|
+
type: "string",
|
|
82
|
+
description: "Site ID. Optional if SEALMETRICS_SITE_ID env var is set.",
|
|
83
|
+
},
|
|
84
|
+
property_key: {
|
|
85
|
+
type: "string",
|
|
86
|
+
description: "The property key to analyze (e.g. 'product_name', 'plan_type').",
|
|
87
|
+
},
|
|
88
|
+
period: PERIOD_SCHEMA,
|
|
89
|
+
table: TABLE_SCHEMA,
|
|
90
|
+
conversion_type: {
|
|
91
|
+
type: "string",
|
|
92
|
+
description: "Filter by conversion type.",
|
|
93
|
+
},
|
|
94
|
+
},
|
|
95
|
+
required: ["property_key"],
|
|
96
|
+
},
|
|
97
|
+
handler: async (client, args) => {
|
|
98
|
+
return client.request("/stats/properties/breakdown", {
|
|
99
|
+
site_id: resolveSiteId(args),
|
|
100
|
+
property_key: args.property_key,
|
|
101
|
+
period: args.period ?? "30d",
|
|
102
|
+
table: args.table ?? "both",
|
|
103
|
+
conversion_type: args.conversion_type,
|
|
104
|
+
});
|
|
105
|
+
},
|
|
106
|
+
};
|
|
107
|
+
//# sourceMappingURL=properties.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"properties.js","sourceRoot":"","sources":["../../src/tools/properties.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"segments.d.ts","sourceRoot":"","sources":["../../src/tools/segments.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAE1C,eAAO,MAAM,gBAAgB,EAAE,OAuB9B,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,OAwB5B,CAAC"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { resolveSiteId } from "./shared.js";
|
|
2
|
+
export const listSegmentsTool = {
|
|
3
|
+
name: "list_segments",
|
|
4
|
+
description: "List all segments available for a site. Segments are saved filter sets (e.g. 'Mobile users from Spain', 'Organic traffic') that can be applied to stats queries via the segment parameter.",
|
|
5
|
+
inputSchema: {
|
|
6
|
+
type: "object",
|
|
7
|
+
properties: {
|
|
8
|
+
site_id: {
|
|
9
|
+
type: "string",
|
|
10
|
+
description: "Site ID (account_id). Optional if SEALMETRICS_SITE_ID env var is set.",
|
|
11
|
+
},
|
|
12
|
+
include_system: {
|
|
13
|
+
type: "boolean",
|
|
14
|
+
description: "Include system segments like 'All Traffic', 'Direct' (default: true).",
|
|
15
|
+
},
|
|
16
|
+
},
|
|
17
|
+
},
|
|
18
|
+
handler: async (client, args) => {
|
|
19
|
+
return client.request("/segments", {
|
|
20
|
+
account_id: resolveSiteId(args),
|
|
21
|
+
include_system: args.include_system != null ? String(args.include_system) : undefined,
|
|
22
|
+
});
|
|
23
|
+
},
|
|
24
|
+
};
|
|
25
|
+
export const getSegmentTool = {
|
|
26
|
+
name: "get_segment",
|
|
27
|
+
description: "Get details of a specific segment including its filter definition. The segment_id can be either the segment ID (seg_xxx) or the segment name.",
|
|
28
|
+
inputSchema: {
|
|
29
|
+
type: "object",
|
|
30
|
+
properties: {
|
|
31
|
+
site_id: {
|
|
32
|
+
type: "string",
|
|
33
|
+
description: "Site ID (account_id). Optional if SEALMETRICS_SITE_ID env var is set.",
|
|
34
|
+
},
|
|
35
|
+
segment_id: {
|
|
36
|
+
type: "string",
|
|
37
|
+
description: "Segment ID (seg_xxx) or segment name.",
|
|
38
|
+
},
|
|
39
|
+
},
|
|
40
|
+
required: ["segment_id"],
|
|
41
|
+
},
|
|
42
|
+
handler: async (client, args) => {
|
|
43
|
+
const segmentId = args.segment_id;
|
|
44
|
+
return client.request(`/segments/${encodeURIComponent(segmentId)}`, {
|
|
45
|
+
account_id: resolveSiteId(args),
|
|
46
|
+
});
|
|
47
|
+
},
|
|
48
|
+
};
|
|
49
|
+
//# sourceMappingURL=segments.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"segments.js","sourceRoot":"","sources":["../../src/tools/segments.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAG5C,MAAM,CAAC,MAAM,gBAAgB,GAAY;IACvC,IAAI,EAAE,eAAe;IACrB,WAAW,EACT,4LAA4L;IAC9L,WAAW,EAAE;QACX,IAAI,EAAE,QAAiB;QACvB,UAAU,EAAE;YACV,OAAO,EAAE;gBACP,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,uEAAuE;aACrF;YACD,cAAc,EAAE;gBACd,IAAI,EAAE,SAAS;gBACf,WAAW,EAAE,uEAAuE;aACrF;SACF;KACF;IACD,OAAO,EAAE,KAAK,EAAE,MAAyB,EAAE,IAA6B,EAAE,EAAE;QAC1E,OAAO,MAAM,CAAC,OAAO,CAAU,WAAW,EAAE;YAC1C,UAAU,EAAE,aAAa,CAAC,IAAI,CAAC;YAC/B,cAAc,EAAE,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,SAAS;SACtF,CAAC,CAAC;IACL,CAAC;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAAY;IACrC,IAAI,EAAE,aAAa;IACnB,WAAW,EACT,+IAA+I;IACjJ,WAAW,EAAE;QACX,IAAI,EAAE,QAAiB;QACvB,UAAU,EAAE;YACV,OAAO,EAAE;gBACP,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,uEAAuE;aACrF;YACD,UAAU,EAAE;gBACV,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,uCAAuC;aACrD;SACF;QACD,QAAQ,EAAE,CAAC,YAAY,CAAC;KACzB;IACD,OAAO,EAAE,KAAK,EAAE,MAAyB,EAAE,IAA6B,EAAE,EAAE;QAC1E,MAAM,SAAS,GAAG,IAAI,CAAC,UAAoB,CAAC;QAC5C,OAAO,MAAM,CAAC,OAAO,CAAU,aAAa,kBAAkB,CAAC,SAAS,CAAC,EAAE,EAAE;YAC3E,UAAU,EAAE,aAAa,CAAC,IAAI,CAAC;SAChC,CAAC,CAAC;IACL,CAAC;CACF,CAAC"}
|