umami-compass 0.2.0 → 0.3.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.
@@ -1 +1 @@
1
- {"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../../src/mcp/schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAkB,KAAK,SAAS,EAAE,MAAM,YAAY,CAAC;AAE5D,eAAO,MAAM,UAAU,wDAIE,CAAC;AAC1B,eAAO,MAAM,UAAU,iDAEsD,CAAC;AAC9E,eAAO,MAAM,cAAc,2BAYV,CAAC;AAClB,eAAO,MAAM,UAAU;;;;;;GAAgE,CAAC;AACxF,eAAO,MAAM,UAAU,2BAAiD,CAAC;AACzE,eAAO,MAAM,cAAc,2BAA+C,CAAC;AAE3E,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBA4Bf,CAAC;AAEZ,wBAAgB,UAAU,CACxB,KAAK,EAAE,SAAS,EAChB,GAAG,EAAE,SAAS,EACd,YAAY,EAAE,MAAM,EACpB,OAAO,GAAE;IAAE,OAAO,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAO,GAC1F,KAAK,CAUP;AAED,QAAA,MAAM,iBAAiB;aACrB,MAAM,EAAE,KAAM;aACd,IAAI,EAAE,OAAS;aACf,GAAG,EAAE,QAAU;aACf,KAAK,EAAE,UAAa;aACpB,IAAI,EAAE,WAAc;CACZ,CAAC;AAEX,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,SAAS,EAChB,GAAG,EAAE,SAAS,EACd,YAAY,EAAE,MAAM,EACpB,OAAO,GAAE;IACP,OAAO,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC;IACxC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,OAAO,iBAAiB,CAAC;IACtC,WAAW,CAAC,EAAE,MAAM,CAAC;CACjB,GACL,KAAK,CAeP;AAED,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,SAAS,EAChB,GAAG,EAAE,SAAS,EACd,YAAY,EAAE,MAAM,EACpB,WAAW,SAAI,GACd,MAAM,OAAO,iBAAiB,CAUhC;AAUD,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;iBAcb,CAAC;AAEjB,eAAO,MAAM,sBAAsB;IACjC,IAAI;;;;;;;;;;;;;;;CACL,CAAC;AAEF,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;CAGxB,CAAC;AAEF,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;CAG9B,CAAC;AAEF,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;CAG7B,CAAC;AAEF,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;CAU7B,CAAC;AAEF,eAAO,MAAM,mBAAmB;;;;;;;;;iBAKhB,CAAC;AAEjB,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;CAGjC,CAAC;AAEF,eAAO,MAAM,sBAAsB;;;;;iBAOnB,CAAC;AAEjB,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;CAGpC,CAAC;AAEF,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,CAAC,CAMvF"}
1
+ {"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../../src/mcp/schemas.ts"],"names":[],"mappings":"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"}
@@ -26,38 +26,175 @@ export const timezoneSchema = z
26
26
  export const unitSchema = z.enum(["minute", "hour", "day", "month", "year"]).optional();
27
27
  export const pageSchema = z.number().int().min(1).max(10_000).default(1);
28
28
  export const pageSizeSchema = z.number().int().min(1).max(100).default(20);
29
+ export const filterOperatorSchema = z.enum([
30
+ "equals",
31
+ "not_equals",
32
+ "contains",
33
+ "not_contains",
34
+ "regex",
35
+ "not_regex",
36
+ "is_empty",
37
+ "is_not_empty",
38
+ ]);
39
+ const filterConditionSchema = z
40
+ .object({
41
+ operator: filterOperatorSchema,
42
+ value: z
43
+ .union([z.string().max(2_000), z.array(z.string().max(2_000)).min(1).max(100)])
44
+ .optional(),
45
+ })
46
+ .strict()
47
+ .superRefine(({ operator, value }, context) => {
48
+ const emptyOperator = operator === "is_empty" || operator === "is_not_empty";
49
+ if (emptyOperator && value !== undefined) {
50
+ context.addIssue({
51
+ code: "custom",
52
+ message: `${operator} does not accept a value`,
53
+ path: ["value"],
54
+ });
55
+ }
56
+ else if (!emptyOperator && value === undefined) {
57
+ context.addIssue({
58
+ code: "custom",
59
+ message: `${operator} requires a value`,
60
+ path: ["value"],
61
+ });
62
+ }
63
+ if (Array.isArray(value) && !["equals", "not_equals"].includes(operator)) {
64
+ context.addIssue({
65
+ code: "custom",
66
+ message: `${operator} accepts one string value`,
67
+ path: ["value"],
68
+ });
69
+ }
70
+ if ((operator === "equals" || operator === "not_equals") &&
71
+ (Array.isArray(value) ? value : value === undefined ? [] : [value]).some((item) => item.includes(","))) {
72
+ context.addIssue({
73
+ code: "custom",
74
+ message: "equals values cannot contain commas; pass separate values in the array",
75
+ path: ["value"],
76
+ });
77
+ }
78
+ });
79
+ const textFilterSchema = (maximum) => z.union([
80
+ z.string().max(maximum),
81
+ filterConditionSchema,
82
+ z.array(filterConditionSchema).min(1).max(10),
83
+ ]);
29
84
  export const filtersSchema = z
30
85
  .object({
31
- browser: z.string().max(200).optional(),
32
- city: z.string().max(200).optional(),
86
+ browser: textFilterSchema(200).optional(),
87
+ city: textFilterSchema(200).optional(),
33
88
  cohort: uuidSchema.optional(),
34
- country: z.string().max(10).optional(),
35
- device: z.string().max(200).optional(),
36
- distinctId: z.string().max(500).optional(),
89
+ country: textFilterSchema(10).optional(),
90
+ device: textFilterSchema(200).optional(),
91
+ distinctId: textFilterSchema(500).optional(),
37
92
  eventType: z.number().int().positive().optional(),
38
- event: z.string().max(500).optional(),
93
+ event: textFilterSchema(500).optional(),
39
94
  excludeBounce: z.boolean().optional(),
40
- hostname: z.string().max(500).optional(),
41
- language: z.string().max(100).optional(),
42
- os: z.string().max(200).optional(),
95
+ hostname: textFilterSchema(500).optional(),
96
+ language: textFilterSchema(100).optional(),
97
+ os: textFilterSchema(200).optional(),
43
98
  match: z.enum(["all", "any"]).optional(),
44
- path: z.string().max(2_000).optional(),
45
- query: z.string().max(2_000).optional(),
46
- referrer: z.string().max(2_000).optional(),
47
- region: z.string().max(200).optional(),
99
+ path: textFilterSchema(2_000).optional(),
100
+ query: textFilterSchema(2_000).optional(),
101
+ referrer: textFilterSchema(2_000).optional(),
102
+ region: textFilterSchema(200).optional(),
48
103
  segment: uuidSchema.optional(),
49
- tag: z.string().max(500).optional(),
50
- title: z.string().max(1_000).optional(),
51
- utmCampaign: z.string().max(500).optional(),
52
- utmContent: z.string().max(500).optional(),
53
- utmMedium: z.string().max(500).optional(),
54
- utmSource: z.string().max(500).optional(),
55
- utmTerm: z.string().max(500).optional(),
104
+ tag: textFilterSchema(500).optional(),
105
+ title: textFilterSchema(1_000).optional(),
106
+ utmCampaign: textFilterSchema(500).optional(),
107
+ utmContent: textFilterSchema(500).optional(),
108
+ utmMedium: textFilterSchema(500).optional(),
109
+ utmSource: textFilterSchema(500).optional(),
110
+ utmTerm: textFilterSchema(500).optional(),
56
111
  })
57
112
  .strict();
113
+ export const TRAFFIC_CHANNELS = [
114
+ "direct",
115
+ "paidAds",
116
+ "referral",
117
+ "affiliate",
118
+ "sms",
119
+ "llm",
120
+ "organicSearch",
121
+ "paidSearch",
122
+ "organicSocial",
123
+ "paidSocial",
124
+ "email",
125
+ "organicShopping",
126
+ "paidShopping",
127
+ "organicVideo",
128
+ "paidVideo",
129
+ ];
130
+ export const trafficChannelSchema = z.enum(TRAFFIC_CHANNELS);
131
+ export const segmentedFiltersSchema = filtersSchema.extend({
132
+ channel: trafficChannelSchema.optional(),
133
+ });
134
+ export const trafficSegmentSchema = z.enum(["all", "human"]).default("all");
135
+ const UPSTREAM_OPERATORS = {
136
+ equals: "eq",
137
+ not_equals: "neq",
138
+ contains: "c",
139
+ not_contains: "dnc",
140
+ regex: "re",
141
+ not_regex: "nre",
142
+ is_empty: "eq",
143
+ is_not_empty: "neq",
144
+ };
145
+ function isFilterCondition(value) {
146
+ return (typeof value === "object" && value !== null && !Array.isArray(value) && "operator" in value);
147
+ }
148
+ function encodeFilterCondition(condition) {
149
+ const value = condition.operator === "is_empty" || condition.operator === "is_not_empty"
150
+ ? ""
151
+ : Array.isArray(condition.value)
152
+ ? condition.value.join(",")
153
+ : condition.value;
154
+ return `${UPSTREAM_OPERATORS[condition.operator]}.${value ?? ""}`;
155
+ }
156
+ export function serializeFilters(filters) {
157
+ const serialized = {};
158
+ for (const [name, value] of Object.entries(filters ?? {})) {
159
+ if (value === undefined)
160
+ continue;
161
+ const conditions = isFilterCondition(value)
162
+ ? [value]
163
+ : Array.isArray(value) && value.every(isFilterCondition)
164
+ ? value
165
+ : undefined;
166
+ if (!conditions) {
167
+ if (name === "referrer" && value === "") {
168
+ serialized.domain1 = "eq.";
169
+ continue;
170
+ }
171
+ serialized[name] = value;
172
+ continue;
173
+ }
174
+ // Umami's public `referrer` filter always removes internal/direct rows. Its
175
+ // equivalent `domain` column has neutral equality semantics, and a numeric
176
+ // suffix makes it survive the upstream route's dynamic-filter parser.
177
+ const upstreamName = name === "referrer" ? "domain" : name;
178
+ conditions.forEach((condition, index) => {
179
+ const suffix = name === "referrer" ? index + 1 : index;
180
+ const key = suffix === 0 ? upstreamName : `${upstreamName}${suffix}`;
181
+ serialized[key] = encodeFilterCondition(condition);
182
+ });
183
+ }
184
+ return serialized;
185
+ }
186
+ export function appendReferrerExclusions(filters, domains) {
187
+ const values = [...new Set(domains.map((domain) => domain.trim()).filter(Boolean))].filter((domain) => !domain.includes(","));
188
+ if (values.length === 0)
189
+ return filters;
190
+ let suffix = 1;
191
+ while (`domain${suffix}` in filters)
192
+ suffix += 1;
193
+ return { ...filters, [`domain${suffix}`]: `neq.${values.join(",")}` };
194
+ }
58
195
  export function rangeQuery(start, end, maxRangeDays, options = {}) {
59
196
  const range = parseTimeRange(start, end, maxRangeDays);
60
- const { excludeBounce, ...filters } = options.filters ?? {};
197
+ const { excludeBounce, ...filters } = options.serializedFilters ?? serializeFilters(options.filters);
61
198
  return {
62
199
  ...range,
63
200
  ...filters,
@@ -1 +1 @@
1
- {"version":3,"file":"schemas.js","sourceRoot":"","sources":["../../src/mcp/schemas.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"schemas.js","sourceRoot":"","sources":["../../src/mcp/schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,OAAO,EAAE,cAAc,EAAkB,MAAM,YAAY,CAAC;AAE5D,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC;KACxB,MAAM,EAAE;KACR,IAAI,EAAE;KACN,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;KACzC,QAAQ,CAAC,YAAY,CAAC,CAAC;AAC1B,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC;KACxB,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;KAC1D,QAAQ,CAAC,gEAAgE,CAAC,CAAC;AAC9E,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC;KAC5B,MAAM,EAAE;KACR,GAAG,CAAC,CAAC,CAAC;KACN,GAAG,CAAC,GAAG,CAAC;KACR,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE;IAChB,IAAI,CAAC;QACH,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAChE,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC,EAAE,gDAAgD,CAAC;KACnD,OAAO,CAAC,KAAK,CAAC,CAAC;AAClB,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;AACxF,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AACzE,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;AAE3E,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,IAAI,CAAC;IACzC,QAAQ;IACR,YAAY;IACZ,UAAU;IACV,cAAc;IACd,OAAO;IACP,WAAW;IACX,UAAU;IACV,cAAc;CACf,CAAC,CAAC;AAEH,MAAM,qBAAqB,GAAG,CAAC;KAC5B,MAAM,CAAC;IACN,QAAQ,EAAE,oBAAoB;IAC9B,KAAK,EAAE,CAAC;SACL,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;SAC9E,QAAQ,EAAE;CACd,CAAC;KACD,MAAM,EAAE;KACR,WAAW,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE;IAC5C,MAAM,aAAa,GAAG,QAAQ,KAAK,UAAU,IAAI,QAAQ,KAAK,cAAc,CAAC;IAC7E,IAAI,aAAa,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACzC,OAAO,CAAC,QAAQ,CAAC;YACf,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,GAAG,QAAQ,0BAA0B;YAC9C,IAAI,EAAE,CAAC,OAAO,CAAC;SAChB,CAAC,CAAC;IACL,CAAC;SAAM,IAAI,CAAC,aAAa,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACjD,OAAO,CAAC,QAAQ,CAAC;YACf,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,GAAG,QAAQ,mBAAmB;YACvC,IAAI,EAAE,CAAC,OAAO,CAAC;SAChB,CAAC,CAAC;IACL,CAAC;IACD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QACzE,OAAO,CAAC,QAAQ,CAAC;YACf,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,GAAG,QAAQ,2BAA2B;YAC/C,IAAI,EAAE,CAAC,OAAO,CAAC;SAChB,CAAC,CAAC;IACL,CAAC;IACD,IACE,CAAC,QAAQ,KAAK,QAAQ,IAAI,QAAQ,KAAK,YAAY,CAAC;QACpD,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAChF,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CACnB,EACD,CAAC;QACD,OAAO,CAAC,QAAQ,CAAC;YACf,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,wEAAwE;YACjF,IAAI,EAAE,CAAC,OAAO,CAAC;SAChB,CAAC,CAAC;IACL,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,MAAM,gBAAgB,GAAG,CAAC,OAAe,EAAE,EAAE,CAC3C,CAAC,CAAC,KAAK,CAAC;IACN,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC;IACvB,qBAAqB;IACrB,CAAC,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;CAC9C,CAAC,CAAC;AAEL,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC;KAC3B,MAAM,CAAC;IACN,OAAO,EAAE,gBAAgB,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;IACzC,IAAI,EAAE,gBAAgB,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;IACtC,MAAM,EAAE,UAAU,CAAC,QAAQ,EAAE;IAC7B,OAAO,EAAE,gBAAgB,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE;IACxC,MAAM,EAAE,gBAAgB,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;IACxC,UAAU,EAAE,gBAAgB,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;IAC5C,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IACjD,KAAK,EAAE,gBAAgB,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;IACvC,aAAa,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IACrC,QAAQ,EAAE,gBAAgB,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;IAC1C,QAAQ,EAAE,gBAAgB,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;IAC1C,EAAE,EAAE,gBAAgB,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;IACpC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,QAAQ,EAAE;IACxC,IAAI,EAAE,gBAAgB,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE;IACxC,KAAK,EAAE,gBAAgB,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE;IACzC,QAAQ,EAAE,gBAAgB,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE;IAC5C,MAAM,EAAE,gBAAgB,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;IACxC,OAAO,EAAE,UAAU,CAAC,QAAQ,EAAE;IAC9B,GAAG,EAAE,gBAAgB,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;IACrC,KAAK,EAAE,gBAAgB,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE;IACzC,WAAW,EAAE,gBAAgB,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;IAC7C,UAAU,EAAE,gBAAgB,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;IAC5C,SAAS,EAAE,gBAAgB,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;IAC3C,SAAS,EAAE,gBAAgB,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;IAC3C,OAAO,EAAE,gBAAgB,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;CAC1C,CAAC;KACD,MAAM,EAAE,CAAC;AAEZ,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,QAAQ;IACR,SAAS;IACT,UAAU;IACV,WAAW;IACX,KAAK;IACL,KAAK;IACL,eAAe;IACf,YAAY;IACZ,eAAe;IACf,YAAY;IACZ,OAAO;IACP,iBAAiB;IACjB,cAAc;IACd,cAAc;IACd,WAAW;CACH,CAAC;AAEX,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;AAE7D,MAAM,CAAC,MAAM,sBAAsB,GAAG,aAAa,CAAC,MAAM,CAAC;IACzD,OAAO,EAAE,oBAAoB,CAAC,QAAQ,EAAE;CACzC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAI5E,MAAM,kBAAkB,GAAgD;IACtE,MAAM,EAAE,IAAI;IACZ,UAAU,EAAE,KAAK;IACjB,QAAQ,EAAE,GAAG;IACb,YAAY,EAAE,KAAK;IACnB,KAAK,EAAE,IAAI;IACX,SAAS,EAAE,KAAK;IAChB,QAAQ,EAAE,IAAI;IACd,YAAY,EAAE,KAAK;CACpB,CAAC;AAEF,SAAS,iBAAiB,CAAC,KAAc;IACvC,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,UAAU,IAAI,KAAK,CAC5F,CAAC;AACJ,CAAC;AAED,SAAS,qBAAqB,CAAC,SAA0B;IACvD,MAAM,KAAK,GACT,SAAS,CAAC,QAAQ,KAAK,UAAU,IAAI,SAAS,CAAC,QAAQ,KAAK,cAAc;QACxE,CAAC,CAAC,EAAE;QACJ,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC;YAC9B,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC;YAC3B,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC;IACxB,OAAO,GAAG,kBAAkB,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,KAAK,IAAI,EAAE,EAAE,CAAC;AACpE,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,OAA4C;IAC3E,MAAM,UAAU,GAA+B,EAAE,CAAC;IAClD,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC,EAAE,CAAC;QAC1D,IAAI,KAAK,KAAK,SAAS;YAAE,SAAS;QAClC,MAAM,UAAU,GAAG,iBAAiB,CAAC,KAAK,CAAC;YACzC,CAAC,CAAC,CAAC,KAAK,CAAC;YACT,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,iBAAiB,CAAC;gBACtD,CAAC,CAAC,KAAK;gBACP,CAAC,CAAC,SAAS,CAAC;QAChB,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,IAAI,IAAI,KAAK,UAAU,IAAI,KAAK,KAAK,EAAE,EAAE,CAAC;gBACxC,UAAU,CAAC,OAAO,GAAG,KAAK,CAAC;gBAC3B,SAAS;YACX,CAAC;YACD,UAAU,CAAC,IAAI,CAAC,GAAG,KAAmB,CAAC;YACvC,SAAS;QACX,CAAC;QAED,4EAA4E;QAC5E,2EAA2E;QAC3E,sEAAsE;QACtE,MAAM,YAAY,GAAG,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC;QAC3D,UAAU,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,KAAK,EAAE,EAAE;YACtC,MAAM,MAAM,GAAG,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;YACvD,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,YAAY,GAAG,MAAM,EAAE,CAAC;YACrE,UAAU,CAAC,GAAG,CAAC,GAAG,qBAAqB,CAAC,SAAS,CAAC,CAAC;QACrD,CAAC,CAAC,CAAC;IACL,CAAC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,OAAc,EAAE,OAA0B;IACjF,MAAM,MAAM,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CACxF,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAClC,CAAC;IACF,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,OAAO,CAAC;IACxC,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,OAAO,SAAS,MAAM,EAAE,IAAI,OAAO;QAAE,MAAM,IAAI,CAAC,CAAC;IACjD,OAAO,EAAE,GAAG,OAAO,EAAE,CAAC,SAAS,MAAM,EAAE,CAAC,EAAE,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;AACxE,CAAC;AAED,MAAM,UAAU,UAAU,CACxB,KAAgB,EAChB,GAAc,EACd,YAAoB,EACpB,OAAO,GAKH,EAAE;IAEN,MAAM,KAAK,GAAG,cAAc,CAAC,KAAK,EAAE,GAAG,EAAE,YAAY,CAAC,CAAC;IACvD,MAAM,EAAE,aAAa,EAAE,GAAG,OAAO,EAAE,GACjC,OAAO,CAAC,iBAAiB,IAAI,gBAAgB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACjE,OAAO;QACL,GAAG,KAAK;QACR,GAAG,OAAO;QACV,GAAG,CAAC,aAAa,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC1D,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,IAAI,EAAE,OAAO,CAAC,IAAI;KACnB,CAAC;AACJ,CAAC;AAED,MAAM,iBAAiB,GAAG;IACxB,MAAM,EAAE,MAAM;IACd,IAAI,EAAE,SAAS;IACf,GAAG,EAAE,UAAU;IACf,KAAK,EAAE,aAAa;IACpB,IAAI,EAAE,cAAc;CACZ,CAAC;AAEX,MAAM,UAAU,gBAAgB,CAC9B,KAAgB,EAChB,GAAc,EACd,YAAoB,EACpB,OAAO,GAMH,EAAE;IAEN,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,EAAE,GAAG,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC;IAC5D,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACjB,MAAM,WAAW,GACf,IAAI,CAAC,KAAK,CACR,CAAE,KAAK,CAAC,KAAgB,GAAI,KAAK,CAAC,OAAkB,CAAC,GAAG,iBAAiB,CAAC,OAAO,CAAC,IAAI,CAAC,CACxF,GAAG,CAAC,CAAC;QACR,IAAI,WAAW,GAAG,CAAC,OAAO,CAAC,WAAW,IAAI,CAAC,CAAC,GAAG,MAAM,EAAE,CAAC;YACtD,MAAM,IAAI,UAAU,CAClB,kBAAkB,EAClB,uGAAuG,CACxG,CAAC;QACJ,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,oBAAoB,CAClC,KAAgB,EAChB,GAAc,EACd,YAAoB,EACpB,WAAW,GAAG,CAAC;IAEf,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,cAAc,CAAC,KAAK,EAAE,GAAG,EAAE,YAAY,CAAC,CAAC;IACpE,KAAK,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,CAAU,EAAE,CAAC;QACvE,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,OAAO,CAAC,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;QAChF,IAAI,WAAW,GAAG,WAAW,IAAI,MAAM;YAAE,OAAO,IAAI,CAAC;IACvD,CAAC;IACD,MAAM,IAAI,UAAU,CAClB,kBAAkB,EAClB,6EAA6E,CAC9E,CAAC;AACJ,CAAC;AAED,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;AACpD,MAAM,iBAAiB,GAAG,CAAC;KACxB,MAAM,CAAC;IACN,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;IACpC,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE;CACd,CAAC;KACD,WAAW,EAAE,CAAC;AAEjB,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC;KAC9B,MAAM,CAAC;IACN,UAAU,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;IACrD,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE;IACvC,cAAc,EAAE,CAAC;SACd,MAAM,CAAC;QACN,KAAK,EAAE,UAAU;QACjB,GAAG,EAAE,UAAU;KAChB,CAAC;SACD,QAAQ,EAAE;IACb,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;IAC/C,SAAS,EAAE,CAAC,CAAC,OAAO,EAAE;CACvB,CAAC;KACD,WAAW,EAAE,CAAC;AAEjB,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,IAAI,EAAE,gBAAgB;CACvB,CAAC;AAEF,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,+CAA+C,CAAC;IACxE,GAAG,sBAAsB;CAC1B,CAAC;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,IAAI,EAAE,gBAAgB;IACtB,GAAG,sBAAsB;CAC1B,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IACvB,GAAG,sBAAsB;CAC1B,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,IAAI,EAAE,CAAC;SACJ,MAAM,CAAC;QACN,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QACvB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE;QACrC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;QACjC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE;KACzC,CAAC;SACD,WAAW,EAAE;IAChB,GAAG,sBAAsB;CAC1B,CAAC;AAEF,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC;KACjC,MAAM,CAAC;IACN,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,iBAAiB,CAAC;IACrC,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,iBAAiB,CAAC;CACrC,CAAC;KACD,WAAW,EAAE,CAAC;AAEjB,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,IAAI,EAAE,mBAAmB;IACzB,GAAG,sBAAsB;CAC1B,CAAC;AAEF,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC;KACpC,MAAM,CAAC;IACN,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IACxB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;IACtC,cAAc,EAAE,CAAC,CAAC,OAAO,EAAE;IAC3B,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE;CAC3C,CAAC;KACD,WAAW,EAAE,CAAC;AAEjB,MAAM,CAAC,MAAM,wBAAwB,GAAG;IACtC,IAAI,EAAE,sBAAsB;IAC5B,GAAG,sBAAsB;CAC1B,CAAC;AAEF,MAAM,UAAU,aAAa,CAAI,MAAoB,EAAE,KAAc,EAAE,KAAa;IAClF,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IACvC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,MAAM,IAAI,UAAU,CAAC,kBAAkB,EAAE,0BAA0B,KAAK,QAAQ,CAAC,CAAC;IACpF,CAAC;IACD,OAAO,MAAM,CAAC,IAAI,CAAC;AACrB,CAAC"}
@@ -0,0 +1,82 @@
1
+ import type { UmamiClient } from "../api/client.js";
2
+ import type { BreakdownField, Query } from "../api/types.js";
3
+ import { type TRAFFIC_CHANNELS } from "./schemas.js";
4
+ export type TrafficChannel = (typeof TRAFFIC_CHANNELS)[number];
5
+ export interface TrafficPeriod {
6
+ endAt: number;
7
+ startAt: number;
8
+ }
9
+ export interface ExpandedMetricRow {
10
+ bounces: number;
11
+ name: string;
12
+ pageviews: number;
13
+ totaltime: number;
14
+ visitors: number;
15
+ visits: number;
16
+ }
17
+ export declare function parseExpandedMetricRows(value: unknown): ExpandedMetricRow[];
18
+ export declare function fetchExpandedMetricRows(client: UmamiClient, input: {
19
+ excludedReferrers?: readonly string[];
20
+ filters?: Query;
21
+ maxRangeDays: number;
22
+ period: TrafficPeriod;
23
+ signal?: AbortSignal;
24
+ type: string;
25
+ websiteId: string;
26
+ }): Promise<ExpandedMetricRow[]>;
27
+ export interface SuspiciousReferrer extends ExpandedMetricRow {
28
+ averageVisitDurationSeconds: number;
29
+ bounceRatePercent: number;
30
+ confidence: "high" | "medium";
31
+ reasons: string[];
32
+ }
33
+ export declare function assessReferralSpam(client: UmamiClient, input: {
34
+ filters?: Query;
35
+ maxRangeDays: number;
36
+ period: TrafficPeriod;
37
+ signal?: AbortSignal;
38
+ websiteId: string;
39
+ }): Promise<{
40
+ suspiciousReferrers: SuspiciousReferrer[];
41
+ excludedReferrers: string[];
42
+ dataQuality: {
43
+ sourceRows: number;
44
+ sourceRowsTruncated: boolean;
45
+ heuristic: boolean;
46
+ thresholds: {
47
+ minimumVisits: number;
48
+ minimumBounceRatePercent: number;
49
+ maximumAverageVisitDurationSeconds: number;
50
+ };
51
+ };
52
+ }>;
53
+ export declare function selectChannelTotals(rows: readonly ExpandedMetricRow[], channel: TrafficChannel): ExpandedMetricRow;
54
+ export declare function appendDimensionEquality(filters: Query, field: string, value: string): Query | undefined;
55
+ export declare function runDerivedChannelBreakdown(client: UmamiClient, input: {
56
+ channel?: TrafficChannel;
57
+ excludedReferrers?: readonly string[];
58
+ fields: readonly (BreakdownField | "channel")[];
59
+ filters: Query;
60
+ limit: number;
61
+ maxRangeDays: number;
62
+ period: TrafficPeriod;
63
+ signal?: AbortSignal;
64
+ websiteId: string;
65
+ }): Promise<{
66
+ rows: {
67
+ bounces: number;
68
+ pageviews: number;
69
+ totaltime: number;
70
+ visitors: number;
71
+ visits: number;
72
+ channel?: string | undefined;
73
+ }[];
74
+ dataQuality: {
75
+ derivedChannelBreakdown: boolean;
76
+ upstreamCandidateRows: number;
77
+ sourceRowsTruncated: boolean;
78
+ omittedUnsupportedRows: number;
79
+ fanoutRequests: number;
80
+ };
81
+ }>;
82
+ //# sourceMappingURL=traffic-segmentation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"traffic-segmentation.d.ts","sourceRoot":"","sources":["../../src/mcp/traffic-segmentation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAEpD,OAAO,KAAK,EAAE,cAAc,EAA0B,KAAK,EAAE,MAAM,iBAAiB,CAAC;AACrF,OAAO,EAAwC,KAAK,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAE3F,MAAM,MAAM,cAAc,GAAG,CAAC,OAAO,gBAAgB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE/D,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;CAChB;AAqCD,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,OAAO,GAAG,iBAAiB,EAAE,CAsB3E;AAED,wBAAsB,uBAAuB,CAC3C,MAAM,EAAE,WAAW,EACnB,KAAK,EAAE;IACL,iBAAiB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACtC,OAAO,CAAC,EAAE,KAAK,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,aAAa,CAAC;IACtB,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;CACnB,GACA,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAmB9B;AAiDD,MAAM,WAAW,kBAAmB,SAAQ,iBAAiB;IAC3D,2BAA2B,EAAE,MAAM,CAAC;IACpC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,UAAU,EAAE,MAAM,GAAG,QAAQ,CAAC;IAC9B,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,WAAW,EACnB,KAAK,EAAE;IACL,OAAO,CAAC,EAAE,KAAK,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,aAAa,CAAC;IACtB,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;CACnB;;;;;;;;;;;;;GAmDF;AAED,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,SAAS,iBAAiB,EAAE,EAClC,OAAO,EAAE,cAAc,GACtB,iBAAiB,CAWnB;AASD,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,KAAK,EACd,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,GACZ,KAAK,GAAG,SAAS,CAGnB;AAWD,wBAAsB,0BAA0B,CAC9C,MAAM,EAAE,WAAW,EACnB,KAAK,EAAE;IACL,OAAO,CAAC,EAAE,cAAc,CAAC;IACzB,iBAAiB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACtC,MAAM,EAAE,SAAS,CAAC,cAAc,GAAG,SAAS,CAAC,EAAE,CAAC;IAChD,OAAO,EAAE,KAAK,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,aAAa,CAAC;IACtB,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;CACnB;;iBA3QQ,MAAM;mBAEJ,MAAM;mBACN,MAAM;kBACP,MAAM;gBACR,MAAM;;;;;;;;;;GAgVf"}
@@ -0,0 +1,256 @@
1
+ import { UmamiError } from "../api/errors.js";
2
+ import { appendReferrerExclusions, rangeQuery } from "./schemas.js";
3
+ const MAX_EXPANDED_ROWS = 100;
4
+ const MAX_CHANNEL_CANDIDATES = 50;
5
+ const MIN_SUSPICIOUS_VISITS = 3;
6
+ const MIN_SUSPICIOUS_BOUNCE_RATE = 0.9;
7
+ const MAX_SUSPICIOUS_AVERAGE_DURATION_SECONDS = 2;
8
+ async function mapConcurrent(values, concurrency, operation) {
9
+ const results = new Array(values.length);
10
+ let nextIndex = 0;
11
+ const workers = Array.from({ length: Math.min(concurrency, values.length) }, async () => {
12
+ while (nextIndex < values.length) {
13
+ const index = nextIndex;
14
+ nextIndex += 1;
15
+ results[index] = await operation(values[index]);
16
+ }
17
+ });
18
+ await Promise.all(workers);
19
+ return results;
20
+ }
21
+ function isRecord(value) {
22
+ return typeof value === "object" && value !== null && !Array.isArray(value);
23
+ }
24
+ function finiteNumber(value) {
25
+ if (typeof value === "number" && Number.isFinite(value))
26
+ return value;
27
+ if (typeof value !== "string" || value.trim() === "")
28
+ return undefined;
29
+ const parsed = Number(value);
30
+ return Number.isFinite(parsed) ? parsed : undefined;
31
+ }
32
+ export function parseExpandedMetricRows(value) {
33
+ if (!Array.isArray(value)) {
34
+ throw new UmamiError("INVALID_RESPONSE", "Umami returned invalid expanded metric data.");
35
+ }
36
+ return value.flatMap((item) => {
37
+ if (!isRecord(item) || typeof item.name !== "string")
38
+ return [];
39
+ const pageviews = finiteNumber(item.pageviews);
40
+ const visitors = finiteNumber(item.visitors);
41
+ const visits = finiteNumber(item.visits);
42
+ const bounces = finiteNumber(item.bounces);
43
+ const totaltime = finiteNumber(item.totaltime);
44
+ if (pageviews === undefined ||
45
+ visitors === undefined ||
46
+ visits === undefined ||
47
+ bounces === undefined ||
48
+ totaltime === undefined) {
49
+ return [];
50
+ }
51
+ return [{ name: item.name, pageviews, visitors, visits, bounces, totaltime }];
52
+ });
53
+ }
54
+ export async function fetchExpandedMetricRows(client, input) {
55
+ const serializedFilters = appendReferrerExclusions(input.filters ?? {}, input.excludedReferrers ?? []);
56
+ return parseExpandedMetricRows(await client.get(`websites/${encodeURIComponent(input.websiteId)}/metrics/expanded`, {
57
+ ...rangeQuery(input.period.startAt, input.period.endAt, input.maxRangeDays, {
58
+ serializedFilters,
59
+ }),
60
+ type: input.type,
61
+ limit: MAX_EXPANDED_ROWS,
62
+ offset: 0,
63
+ }, input.signal));
64
+ }
65
+ function longestConsonantRun(value) {
66
+ let longest = 0;
67
+ let current = 0;
68
+ for (const character of value) {
69
+ if (/[a-z]/.test(character) && !/[aeiouy]/.test(character)) {
70
+ current += 1;
71
+ longest = Math.max(longest, current);
72
+ }
73
+ else {
74
+ current = 0;
75
+ }
76
+ }
77
+ return longest;
78
+ }
79
+ function shannonEntropy(value) {
80
+ const counts = new Map();
81
+ for (const character of value)
82
+ counts.set(character, (counts.get(character) ?? 0) + 1);
83
+ let entropy = 0;
84
+ for (const count of counts.values()) {
85
+ const probability = count / value.length;
86
+ entropy -= probability * Math.log2(probability);
87
+ }
88
+ return entropy;
89
+ }
90
+ function looksGeneratedDomain(domain) {
91
+ const hostname = domain
92
+ .trim()
93
+ .toLowerCase()
94
+ .replace(/^https?:\/\//, "")
95
+ .split(/[/?#]/, 1)[0]
96
+ ?.replace(/^www\./, "")
97
+ .replace(/:\d+$/, "");
98
+ const labels = hostname?.split(".").filter(Boolean) ?? [];
99
+ const label = (labels.length > 1 ? labels.slice(0, -1) : labels).sort((left, right) => right.length - left.length)[0];
100
+ if (!label)
101
+ return false;
102
+ const letters = label.replace(/[^a-z]/g, "");
103
+ if (letters.length < 12)
104
+ return false;
105
+ const vowels = [...letters].filter((character) => /[aeiouy]/.test(character)).length;
106
+ return (shannonEntropy(letters) >= 3.1 &&
107
+ (vowels / letters.length < 0.24 || longestConsonantRun(letters) >= 6));
108
+ }
109
+ export async function assessReferralSpam(client, input) {
110
+ const rows = await fetchExpandedMetricRows(client, {
111
+ ...input,
112
+ type: "referrer",
113
+ });
114
+ const suspiciousReferrers = rows.flatMap((row) => {
115
+ const bounceRate = row.visits === 0 ? 0 : row.bounces / row.visits;
116
+ const averageVisitDurationSeconds = row.visits === 0 ? 0 : row.totaltime / row.visits;
117
+ const generatedDomain = looksGeneratedDomain(row.name);
118
+ if (!generatedDomain ||
119
+ row.visits < MIN_SUSPICIOUS_VISITS ||
120
+ bounceRate < MIN_SUSPICIOUS_BOUNCE_RATE ||
121
+ averageVisitDurationSeconds > MAX_SUSPICIOUS_AVERAGE_DURATION_SECONDS) {
122
+ return [];
123
+ }
124
+ const reasons = [
125
+ "generated_domain_pattern",
126
+ "very_high_bounce_rate",
127
+ "near_zero_visit_duration",
128
+ ];
129
+ return [
130
+ {
131
+ ...row,
132
+ bounceRatePercent: Math.round(bounceRate * 10_000) / 100,
133
+ averageVisitDurationSeconds: Math.round(averageVisitDurationSeconds * 100) / 100,
134
+ confidence: row.visits >= 20 && bounceRate >= 0.95 && averageVisitDurationSeconds <= 1
135
+ ? "high"
136
+ : "medium",
137
+ reasons,
138
+ },
139
+ ];
140
+ });
141
+ return {
142
+ suspiciousReferrers,
143
+ excludedReferrers: suspiciousReferrers.map(({ name }) => name),
144
+ dataQuality: {
145
+ sourceRows: rows.length,
146
+ sourceRowsTruncated: rows.length >= MAX_EXPANDED_ROWS,
147
+ heuristic: true,
148
+ thresholds: {
149
+ minimumVisits: MIN_SUSPICIOUS_VISITS,
150
+ minimumBounceRatePercent: MIN_SUSPICIOUS_BOUNCE_RATE * 100,
151
+ maximumAverageVisitDurationSeconds: MAX_SUSPICIOUS_AVERAGE_DURATION_SECONDS,
152
+ },
153
+ },
154
+ };
155
+ }
156
+ export function selectChannelTotals(rows, channel) {
157
+ return (rows.find(({ name }) => name === channel) ?? {
158
+ name: channel,
159
+ pageviews: 0,
160
+ visitors: 0,
161
+ visits: 0,
162
+ bounces: 0,
163
+ totaltime: 0,
164
+ });
165
+ }
166
+ function nextFilterKey(filters, field) {
167
+ const upstreamField = field === "referrer" ? "domain" : field;
168
+ let suffix = field === "referrer" ? 1 : 0;
169
+ while ((suffix === 0 ? upstreamField : `${upstreamField}${suffix}`) in filters)
170
+ suffix += 1;
171
+ return suffix === 0 ? upstreamField : `${upstreamField}${suffix}`;
172
+ }
173
+ export function appendDimensionEquality(filters, field, value) {
174
+ if (value.includes(","))
175
+ return undefined;
176
+ return { ...filters, [nextFilterKey(filters, field)]: `eq.${value}` };
177
+ }
178
+ function rowFields(row, fields) {
179
+ const result = {};
180
+ for (const field of fields) {
181
+ if (typeof row[field] !== "string")
182
+ return undefined;
183
+ result[field] = row[field];
184
+ }
185
+ return result;
186
+ }
187
+ export async function runDerivedChannelBreakdown(client, input) {
188
+ const dimensions = input.fields.filter((field) => field !== "channel");
189
+ const baseFilters = appendReferrerExclusions(input.filters, input.excludedReferrers ?? []);
190
+ let candidates = [{}];
191
+ let sourceRowsTruncated = false;
192
+ let omittedUnsupportedRows = 0;
193
+ if (dimensions.length > 0) {
194
+ const request = {
195
+ websiteId: input.websiteId,
196
+ type: "breakdown",
197
+ parameters: {
198
+ startDate: new Date(input.period.startAt).toISOString(),
199
+ endDate: new Date(input.period.endAt).toISOString(),
200
+ fields: dimensions,
201
+ },
202
+ filters: baseFilters,
203
+ };
204
+ const result = await client.runReport(request, input.signal);
205
+ if (!Array.isArray(result)) {
206
+ throw new UmamiError("INVALID_RESPONSE", "Umami returned invalid breakdown candidate data.");
207
+ }
208
+ const candidateLimit = Math.min(MAX_CHANNEL_CANDIDATES, Math.max(input.limit * 3, 20));
209
+ sourceRowsTruncated = result.length > candidateLimit || result.length >= 500;
210
+ candidates = result.slice(0, candidateLimit).filter(isRecord);
211
+ }
212
+ const derived = await mapConcurrent(candidates, 4, async (candidate) => {
213
+ let filters = baseFilters;
214
+ const values = rowFields(candidate, dimensions);
215
+ if (!values)
216
+ return [];
217
+ for (const [field, value] of Object.entries(values)) {
218
+ filters = appendDimensionEquality(filters, field, value);
219
+ if (!filters) {
220
+ omittedUnsupportedRows += 1;
221
+ return [];
222
+ }
223
+ }
224
+ const channels = await fetchExpandedMetricRows(client, {
225
+ filters,
226
+ maxRangeDays: input.maxRangeDays,
227
+ period: input.period,
228
+ signal: input.signal,
229
+ type: "channel",
230
+ websiteId: input.websiteId,
231
+ });
232
+ return channels
233
+ .filter(({ name }) => input.channel === undefined || name === input.channel)
234
+ .map(({ name, ...metrics }) => ({
235
+ ...values,
236
+ ...(input.fields.includes("channel") ? { channel: name } : {}),
237
+ ...metrics,
238
+ }));
239
+ });
240
+ const rows = derived
241
+ .flat()
242
+ .sort((left, right) => right.visitors - left.visitors ||
243
+ right.pageviews - left.pageviews ||
244
+ JSON.stringify(left).localeCompare(JSON.stringify(right)));
245
+ return {
246
+ rows,
247
+ dataQuality: {
248
+ derivedChannelBreakdown: true,
249
+ upstreamCandidateRows: candidates.length,
250
+ sourceRowsTruncated,
251
+ omittedUnsupportedRows,
252
+ fanoutRequests: candidates.length,
253
+ },
254
+ };
255
+ }
256
+ //# sourceMappingURL=traffic-segmentation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"traffic-segmentation.js","sourceRoot":"","sources":["../../src/mcp/traffic-segmentation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ import type { UmamiCompassConfig } from "./config.js";
2
+ export declare function getServerInfo(config: UmamiCompassConfig): {
3
+ name: string;
4
+ version: string;
5
+ access: string;
6
+ upstreamCompatibility: {
7
+ product: string;
8
+ minimumVersion: string;
9
+ runtimeVersionDiscovery: boolean;
10
+ };
11
+ authType: "accessToken" | "apiKey" | "login";
12
+ enabledToolsets: ("core" | "events" | "heatmaps" | "insights" | "performance" | "replay" | "reports" | "revenue" | "sessions")[];
13
+ scope: {
14
+ websiteAllowlistSize: number | null;
15
+ teamAllowlistSize: number | null;
16
+ };
17
+ limits: {
18
+ maxRangeDays: number;
19
+ maxResponseBytes: number;
20
+ requestTimeoutMs: number;
21
+ channelBreakdownCandidates: number;
22
+ };
23
+ capabilities: {
24
+ structuredFilterOperators: boolean;
25
+ directTrafficIsolation: boolean;
26
+ derivedChannelBreakdowns: boolean;
27
+ referralSpamHeuristics: boolean;
28
+ humanTrafficPreset: boolean;
29
+ periodSeriesComparison: boolean;
30
+ };
31
+ };
32
+ //# sourceMappingURL=server-info.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server-info.d.ts","sourceRoot":"","sources":["../src/server-info.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAGtD,wBAAgB,aAAa,CAAC,MAAM,EAAE,kBAAkB;;;;;QAMlD,OAAO;QACP,cAAc;QACd,uBAAuB;;;;;QAKvB,oBAAoB;QACpB,iBAAiB;;;QAGjB,YAAY;QACZ,gBAAgB;QAChB,gBAAgB;QAChB,0BAA0B;;;QAG1B,yBAAyB;QACzB,sBAAsB;QACtB,wBAAwB;QACxB,sBAAsB;QACtB,kBAAkB;QAClB,sBAAsB;;EAG3B"}