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.
- package/README.md +44 -9
- package/SECURITY.md +2 -2
- package/dist/api/client.d.ts +1 -0
- package/dist/api/client.d.ts.map +1 -1
- package/dist/api/client.js +76 -19
- package/dist/api/client.js.map +1 -1
- package/dist/config.d.ts +2 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +8 -6
- package/dist/config.js.map +1 -1
- package/dist/mcp/insights-utils.d.ts +206 -0
- package/dist/mcp/insights-utils.d.ts.map +1 -0
- package/dist/mcp/insights-utils.js +505 -0
- package/dist/mcp/insights-utils.js.map +1 -0
- package/dist/mcp/modules/core.d.ts.map +1 -1
- package/dist/mcp/modules/core.js +14 -6
- package/dist/mcp/modules/core.js.map +1 -1
- package/dist/mcp/modules/events.d.ts.map +1 -1
- package/dist/mcp/modules/events.js +3 -3
- package/dist/mcp/modules/events.js.map +1 -1
- package/dist/mcp/modules/heatmaps.d.ts.map +1 -1
- package/dist/mcp/modules/heatmaps.js +3 -2
- package/dist/mcp/modules/heatmaps.js.map +1 -1
- package/dist/mcp/modules/insights.d.ts +3 -0
- package/dist/mcp/modules/insights.d.ts.map +1 -0
- package/dist/mcp/modules/insights.js +963 -0
- package/dist/mcp/modules/insights.js.map +1 -0
- package/dist/mcp/modules/performance.d.ts.map +1 -1
- package/dist/mcp/modules/performance.js +5 -3
- package/dist/mcp/modules/performance.js.map +1 -1
- package/dist/mcp/modules/replay.d.ts.map +1 -1
- package/dist/mcp/modules/replay.js +3 -2
- package/dist/mcp/modules/replay.js.map +1 -1
- package/dist/mcp/modules/reports.d.ts.map +1 -1
- package/dist/mcp/modules/reports.js +71 -19
- package/dist/mcp/modules/reports.js.map +1 -1
- package/dist/mcp/modules/revenue.d.ts.map +1 -1
- package/dist/mcp/modules/revenue.js +2 -2
- package/dist/mcp/modules/revenue.js.map +1 -1
- package/dist/mcp/modules/sessions.d.ts.map +1 -1
- package/dist/mcp/modules/sessions.js +4 -4
- package/dist/mcp/modules/sessions.js.map +1 -1
- package/dist/mcp/report-utils.d.ts.map +1 -1
- package/dist/mcp/report-utils.js +2 -1
- package/dist/mcp/report-utils.js.map +1 -1
- package/dist/mcp/result.d.ts +13 -1
- package/dist/mcp/result.d.ts.map +1 -1
- package/dist/mcp/result.js +88 -2
- package/dist/mcp/result.js.map +1 -1
- package/dist/mcp/schemas.d.ts +1185 -20
- package/dist/mcp/schemas.d.ts.map +1 -1
- package/dist/mcp/schemas.js +182 -21
- package/dist/mcp/schemas.js.map +1 -1
- package/dist/mcp/traffic-segmentation.d.ts +82 -0
- package/dist/mcp/traffic-segmentation.d.ts.map +1 -0
- package/dist/mcp/traffic-segmentation.js +256 -0
- package/dist/mcp/traffic-segmentation.js.map +1 -0
- package/dist/server-info.d.ts +32 -0
- package/dist/server-info.d.ts.map +1 -0
- package/dist/server-info.js +34 -0
- package/dist/server-info.js.map +1 -0
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +152 -31
- package/dist/server.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +1 -1
- 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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"}
|