umami-compass 0.1.3 → 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.
Files changed (68) hide show
  1. package/README.md +44 -9
  2. package/SECURITY.md +2 -2
  3. package/dist/api/client.d.ts +1 -0
  4. package/dist/api/client.d.ts.map +1 -1
  5. package/dist/api/client.js +76 -19
  6. package/dist/api/client.js.map +1 -1
  7. package/dist/config.d.ts +2 -1
  8. package/dist/config.d.ts.map +1 -1
  9. package/dist/config.js +8 -6
  10. package/dist/config.js.map +1 -1
  11. package/dist/mcp/insights-utils.d.ts +206 -0
  12. package/dist/mcp/insights-utils.d.ts.map +1 -0
  13. package/dist/mcp/insights-utils.js +505 -0
  14. package/dist/mcp/insights-utils.js.map +1 -0
  15. package/dist/mcp/modules/core.d.ts.map +1 -1
  16. package/dist/mcp/modules/core.js +14 -6
  17. package/dist/mcp/modules/core.js.map +1 -1
  18. package/dist/mcp/modules/events.d.ts.map +1 -1
  19. package/dist/mcp/modules/events.js +3 -3
  20. package/dist/mcp/modules/events.js.map +1 -1
  21. package/dist/mcp/modules/heatmaps.d.ts.map +1 -1
  22. package/dist/mcp/modules/heatmaps.js +3 -2
  23. package/dist/mcp/modules/heatmaps.js.map +1 -1
  24. package/dist/mcp/modules/insights.d.ts +3 -0
  25. package/dist/mcp/modules/insights.d.ts.map +1 -0
  26. package/dist/mcp/modules/insights.js +963 -0
  27. package/dist/mcp/modules/insights.js.map +1 -0
  28. package/dist/mcp/modules/performance.d.ts.map +1 -1
  29. package/dist/mcp/modules/performance.js +5 -3
  30. package/dist/mcp/modules/performance.js.map +1 -1
  31. package/dist/mcp/modules/replay.d.ts.map +1 -1
  32. package/dist/mcp/modules/replay.js +3 -2
  33. package/dist/mcp/modules/replay.js.map +1 -1
  34. package/dist/mcp/modules/reports.d.ts.map +1 -1
  35. package/dist/mcp/modules/reports.js +71 -19
  36. package/dist/mcp/modules/reports.js.map +1 -1
  37. package/dist/mcp/modules/revenue.d.ts.map +1 -1
  38. package/dist/mcp/modules/revenue.js +2 -2
  39. package/dist/mcp/modules/revenue.js.map +1 -1
  40. package/dist/mcp/modules/sessions.d.ts.map +1 -1
  41. package/dist/mcp/modules/sessions.js +4 -4
  42. package/dist/mcp/modules/sessions.js.map +1 -1
  43. package/dist/mcp/report-utils.d.ts.map +1 -1
  44. package/dist/mcp/report-utils.js +2 -1
  45. package/dist/mcp/report-utils.js.map +1 -1
  46. package/dist/mcp/result.d.ts +13 -1
  47. package/dist/mcp/result.d.ts.map +1 -1
  48. package/dist/mcp/result.js +88 -2
  49. package/dist/mcp/result.js.map +1 -1
  50. package/dist/mcp/schemas.d.ts +1185 -20
  51. package/dist/mcp/schemas.d.ts.map +1 -1
  52. package/dist/mcp/schemas.js +182 -21
  53. package/dist/mcp/schemas.js.map +1 -1
  54. package/dist/mcp/traffic-segmentation.d.ts +82 -0
  55. package/dist/mcp/traffic-segmentation.d.ts.map +1 -0
  56. package/dist/mcp/traffic-segmentation.js +256 -0
  57. package/dist/mcp/traffic-segmentation.js.map +1 -0
  58. package/dist/server-info.d.ts +32 -0
  59. package/dist/server-info.d.ts.map +1 -0
  60. package/dist/server-info.js +34 -0
  61. package/dist/server-info.js.map +1 -0
  62. package/dist/server.d.ts.map +1 -1
  63. package/dist/server.js +152 -31
  64. package/dist/server.js.map +1 -1
  65. package/dist/version.d.ts +1 -1
  66. package/dist/version.js +1 -1
  67. package/package.json +1 -1
  68. package/server.json +9 -4
@@ -0,0 +1,206 @@
1
+ import type { z } from "zod";
2
+ import type { UmamiClient } from "../api/client.js";
3
+ import type { Website } from "../api/types.js";
4
+ import type { TimeInput } from "../time.js";
5
+ import { type filtersSchema } from "./schemas.js";
6
+ import { type TrafficChannel } from "./traffic-segmentation.js";
7
+ export declare const TRAFFIC_DIMENSIONS: readonly ["path", "referrer", "country", "device", "channel", "event"];
8
+ export type TrafficDimension = (typeof TRAFFIC_DIMENSIONS)[number];
9
+ export interface TimePeriod {
10
+ endAt: number;
11
+ startAt: number;
12
+ }
13
+ export interface WebsiteTotals {
14
+ bounces: number;
15
+ pageviews: number;
16
+ totaltime: number;
17
+ visitors: number;
18
+ visits: number;
19
+ }
20
+ export interface WebsiteStats extends WebsiteTotals {
21
+ comparison?: WebsiteTotals;
22
+ }
23
+ type Filters = z.infer<typeof filtersSchema> | undefined;
24
+ export declare function finiteNumber(value: unknown): number | undefined;
25
+ export declare function parseWebsiteStats(value: unknown): WebsiteStats;
26
+ export declare function percentChange(current: number, comparison: number): number | null;
27
+ export declare function totalsChanges(current: WebsiteTotals, comparison: WebsiteTotals): {
28
+ [k: string]: {
29
+ absolute: number;
30
+ percent: number | null;
31
+ };
32
+ };
33
+ export declare function isoPeriod(period: TimePeriod): {
34
+ start: string;
35
+ end: string;
36
+ };
37
+ export declare function normalizePeriod(start: TimeInput, end: TimeInput, maxRangeDays: number): TimePeriod;
38
+ export declare function comparisonPeriod(current: TimePeriod, mode: "previous" | "year_over_year"): TimePeriod;
39
+ export declare function mapConcurrent<T, R>(values: readonly T[], concurrency: number, operation: (value: T, index: number) => Promise<R>): Promise<R[]>;
40
+ export declare function fetchWebsiteStats(client: UmamiClient, websiteId: string, period: TimePeriod, maxRangeDays: number, filters: Filters, signal?: AbortSignal, excludedReferrers?: readonly string[]): Promise<WebsiteStats>;
41
+ export interface TrafficComparisonInput {
42
+ channel?: TrafficChannel;
43
+ comparison: TimePeriod;
44
+ current: TimePeriod;
45
+ dimensions: readonly TrafficDimension[];
46
+ excludedReferrers?: readonly string[];
47
+ filters?: Filters;
48
+ limit: number;
49
+ maxRangeDays: number;
50
+ signal?: AbortSignal;
51
+ website: Pick<Website, "domain" | "id" | "name">;
52
+ }
53
+ export declare function compareTraffic(client: UmamiClient, input: TrafficComparisonInput): Promise<{
54
+ dataStatus: "available" | "empty";
55
+ website: Pick<Website, "domain" | "id" | "name">;
56
+ channel?: "affiliate" | "direct" | "email" | "llm" | "organicSearch" | "organicShopping" | "organicSocial" | "organicVideo" | "paidAds" | "paidSearch" | "paidShopping" | "paidSocial" | "paidVideo" | "referral" | "sms" | undefined;
57
+ currentPeriod: {
58
+ start: string;
59
+ end: string;
60
+ };
61
+ comparisonPeriod: {
62
+ start: string;
63
+ end: string;
64
+ };
65
+ current: WebsiteTotals;
66
+ comparison: WebsiteTotals;
67
+ changes: {
68
+ [k: string]: {
69
+ absolute: number;
70
+ percent: number | null;
71
+ };
72
+ };
73
+ direction: string;
74
+ explanation: string;
75
+ breakdownMeasure: string;
76
+ breakdowns: ({
77
+ dimension: "channel";
78
+ status: "available";
79
+ measure: "visitors";
80
+ rows: {
81
+ name: string;
82
+ current: number;
83
+ comparison: number;
84
+ delta: number;
85
+ percent: number | null;
86
+ direction: string;
87
+ }[];
88
+ dataQuality: {
89
+ currentRowsTruncated: boolean;
90
+ comparisonRowsTruncated: boolean;
91
+ omittedUncertainRows: number;
92
+ };
93
+ error?: undefined;
94
+ } | {
95
+ dimension: "country" | "device" | "event" | "path" | "referrer";
96
+ status: "available";
97
+ measure: "visitors";
98
+ rows: {
99
+ name: string;
100
+ current: number;
101
+ comparison: number;
102
+ delta: number;
103
+ percent: number | null;
104
+ direction: string;
105
+ }[];
106
+ dataQuality: {
107
+ currentRowsTruncated: boolean;
108
+ comparisonRowsTruncated: boolean;
109
+ omittedUncertainRows: number;
110
+ candidateRowsTruncated: boolean;
111
+ candidateRows: number;
112
+ omittedUnsupportedRows: number;
113
+ fanoutRequests: number;
114
+ };
115
+ error?: undefined;
116
+ } | {
117
+ dimension: "country" | "device" | "event" | "path" | "referrer";
118
+ status: "available";
119
+ measure: "visitors";
120
+ rows: {
121
+ name: string;
122
+ current: number;
123
+ comparison: number;
124
+ delta: number;
125
+ percent: number | null;
126
+ direction: string;
127
+ }[];
128
+ dataQuality: {
129
+ currentRowsTruncated: boolean;
130
+ comparisonRowsTruncated: boolean;
131
+ omittedUncertainRows: number;
132
+ };
133
+ error?: undefined;
134
+ } | {
135
+ measure?: undefined;
136
+ rows?: undefined;
137
+ dataQuality?: undefined;
138
+ dimension: "channel" | "country" | "device" | "event" | "path" | "referrer";
139
+ status: "unavailable";
140
+ error: {
141
+ code: import("../api/errors.js").UmamiErrorCode;
142
+ message: string;
143
+ retryable: boolean;
144
+ status?: number;
145
+ };
146
+ })[];
147
+ leadingObservedChanges: {
148
+ name: string;
149
+ current: number;
150
+ comparison: number;
151
+ delta: number;
152
+ percent: number | null;
153
+ direction: string;
154
+ dimension: "channel" | "country" | "device" | "event" | "path" | "referrer";
155
+ }[];
156
+ dataQuality: {
157
+ comparisonBaselineZero: boolean;
158
+ currentPageviews: number;
159
+ comparisonPageviews: number;
160
+ unavailableDimensions: ("channel" | "country" | "device" | "event" | "path" | "referrer")[];
161
+ truncatedDimensions: ("channel" | "country" | "device" | "event" | "path" | "referrer")[];
162
+ omittedUncertainRows: number;
163
+ };
164
+ }>;
165
+ export declare function comparePerformance(client: UmamiClient, input: {
166
+ comparison: TimePeriod;
167
+ current: TimePeriod;
168
+ filters?: Filters;
169
+ signal?: AbortSignal;
170
+ timezone: string;
171
+ websiteId: string;
172
+ }): Promise<{
173
+ error?: undefined;
174
+ status: "available" | "empty";
175
+ currentSampleCount: number;
176
+ comparisonSampleCount: number;
177
+ minimumSampleCount: number;
178
+ sampleSufficient: boolean;
179
+ changes: {
180
+ [k: string]: {
181
+ currentP75: number;
182
+ comparisonP75: number;
183
+ absolute: number;
184
+ percent: number | null;
185
+ impact: string;
186
+ material: boolean;
187
+ currentRating: "good" | "needs_improvement" | "poor";
188
+ comparisonRating: "good" | "needs_improvement" | "poor";
189
+ };
190
+ };
191
+ } | {
192
+ currentSampleCount?: undefined;
193
+ comparisonSampleCount?: undefined;
194
+ minimumSampleCount?: undefined;
195
+ sampleSufficient?: undefined;
196
+ changes?: undefined;
197
+ status: string;
198
+ error: {
199
+ code: import("../api/errors.js").UmamiErrorCode;
200
+ message: string;
201
+ retryable: boolean;
202
+ status?: number;
203
+ };
204
+ }>;
205
+ export {};
206
+ //# sourceMappingURL=insights-utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"insights-utils.d.ts","sourceRoot":"","sources":["../../src/mcp/insights-utils.ts"],"names":[],"mappings":"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"}