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
package/dist/mcp/result.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { CallToolResult } from "@modelcontextprotocol/sdk/types.js";
|
|
2
|
+
import type { TimeInput } from "../time.js";
|
|
2
3
|
export declare function normalizeAnalyticsNumbers(value: unknown, depth?: number): unknown;
|
|
3
4
|
export declare const READ_ONLY_ANNOTATIONS: {
|
|
4
5
|
destructiveHint: false;
|
|
@@ -24,5 +25,16 @@ export declare const DESTRUCTIVE_ANNOTATIONS: {
|
|
|
24
25
|
openWorldHint: true;
|
|
25
26
|
readOnlyHint: false;
|
|
26
27
|
};
|
|
27
|
-
export
|
|
28
|
+
export type ToolDataStatus = "available" | "empty" | "unknown";
|
|
29
|
+
export interface ToolResultMetaInput {
|
|
30
|
+
dataStatus?: ToolDataStatus;
|
|
31
|
+
emptyReason?: string;
|
|
32
|
+
range?: {
|
|
33
|
+
end: TimeInput;
|
|
34
|
+
start: TimeInput;
|
|
35
|
+
};
|
|
36
|
+
timezone?: string;
|
|
37
|
+
websiteId?: string;
|
|
38
|
+
}
|
|
39
|
+
export declare function runTool<T>(operation: () => Promise<T>, meta?: ToolResultMetaInput): Promise<CallToolResult>;
|
|
28
40
|
//# sourceMappingURL=result.d.ts.map
|
package/dist/mcp/result.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"result.d.ts","sourceRoot":"","sources":["../../src/mcp/result.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAmB,MAAM,oCAAoC,CAAC;
|
|
1
|
+
{"version":3,"file":"result.d.ts","sourceRoot":"","sources":["../../src/mcp/result.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAmB,MAAM,oCAAoC,CAAC;AAE1F,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AA4C5C,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,SAAI,GAAG,OAAO,CAc5E;AAED,eAAO,MAAM,qBAAqB;;;;;CAKP,CAAC;AAE5B,eAAO,MAAM,kBAAkB;;;;;CAKJ,CAAC;AAE5B,eAAO,MAAM,kBAAkB;;;;;CAKJ,CAAC;AAE5B,eAAO,MAAM,uBAAuB;;;;;CAKT,CAAC;AAE5B,MAAM,MAAM,cAAc,GAAG,WAAW,GAAG,OAAO,GAAG,SAAS,CAAC;AAE/D,MAAM,WAAW,mBAAmB;IAClC,UAAU,CAAC,EAAE,cAAc,CAAC;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE;QACN,GAAG,EAAE,SAAS,CAAC;QACf,KAAK,EAAE,SAAS,CAAC;KAClB,CAAC;IACF,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AA2FD,wBAAsB,OAAO,CAAC,CAAC,EAC7B,SAAS,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EAC3B,IAAI,GAAE,mBAAwB,GAC7B,OAAO,CAAC,cAAc,CAAC,CAczB"}
|
package/dist/mcp/result.js
CHANGED
|
@@ -76,10 +76,96 @@ export const DESTRUCTIVE_ANNOTATIONS = {
|
|
|
76
76
|
openWorldHint: true,
|
|
77
77
|
readOnlyHint: false,
|
|
78
78
|
};
|
|
79
|
-
|
|
79
|
+
function isRecord(value) {
|
|
80
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
81
|
+
}
|
|
82
|
+
function analyticsNumber(value) {
|
|
83
|
+
if (typeof value === "number" && Number.isFinite(value))
|
|
84
|
+
return value;
|
|
85
|
+
if (typeof value !== "string" || !NUMERIC_STRING.test(value.trim()))
|
|
86
|
+
return undefined;
|
|
87
|
+
const parsed = Number(value);
|
|
88
|
+
return Number.isFinite(parsed) ? parsed : undefined;
|
|
89
|
+
}
|
|
90
|
+
function explicitDataStatus(data) {
|
|
91
|
+
if (Array.isArray(data))
|
|
92
|
+
return data.length === 0 ? "empty" : "available";
|
|
93
|
+
if (!isRecord(data))
|
|
94
|
+
return data === null || data === undefined ? "empty" : "available";
|
|
95
|
+
if (data.dataStatus === "available" ||
|
|
96
|
+
data.dataStatus === "empty" ||
|
|
97
|
+
data.dataStatus === "unknown") {
|
|
98
|
+
return data.dataStatus;
|
|
99
|
+
}
|
|
100
|
+
if (data.status === "not_found")
|
|
101
|
+
return "empty";
|
|
102
|
+
if (isRecord(data.coverage)) {
|
|
103
|
+
const successful = analyticsNumber(data.coverage.successfulWebsites);
|
|
104
|
+
const failed = analyticsNumber(data.coverage.failedWebsites);
|
|
105
|
+
if (successful === 0)
|
|
106
|
+
return failed !== undefined && failed > 0 ? "unknown" : "empty";
|
|
107
|
+
const covered = data.coverage.checkedWebsites;
|
|
108
|
+
if (covered === 0)
|
|
109
|
+
return "empty";
|
|
110
|
+
}
|
|
111
|
+
if (Array.isArray(data.data) && typeof data.count === "number") {
|
|
112
|
+
return data.count === 0 ? "empty" : "available";
|
|
113
|
+
}
|
|
114
|
+
if (Array.isArray(data.items) && typeof data.totalItems === "number") {
|
|
115
|
+
return data.totalItems === 0 ? "empty" : "available";
|
|
116
|
+
}
|
|
117
|
+
if (Array.isArray(data.pageviews) && Array.isArray(data.sessions)) {
|
|
118
|
+
return data.pageviews.length === 0 && data.sessions.length === 0 ? "empty" : "available";
|
|
119
|
+
}
|
|
120
|
+
const pageviews = analyticsNumber(data.pageviews);
|
|
121
|
+
const visitors = analyticsNumber(data.visitors);
|
|
122
|
+
const visits = analyticsNumber(data.visits);
|
|
123
|
+
if (pageviews !== undefined && visitors !== undefined && visits !== undefined) {
|
|
124
|
+
return pageviews === 0 && visitors === 0 && visits === 0 ? "empty" : "available";
|
|
125
|
+
}
|
|
126
|
+
const revenueSum = analyticsNumber(data.sum);
|
|
127
|
+
const revenueCount = analyticsNumber(data.count);
|
|
128
|
+
if (revenueSum !== undefined && revenueCount !== undefined && "unique_count" in data) {
|
|
129
|
+
return revenueSum === 0 && revenueCount === 0 ? "empty" : "available";
|
|
130
|
+
}
|
|
131
|
+
if ("startDate" in data && "endDate" in data) {
|
|
132
|
+
return data.startDate == null && data.endDate == null ? "empty" : "available";
|
|
133
|
+
}
|
|
134
|
+
return "available";
|
|
135
|
+
}
|
|
136
|
+
function hasTruncation(value, depth = 0) {
|
|
137
|
+
if (depth > 5 || value === null || typeof value !== "object")
|
|
138
|
+
return false;
|
|
139
|
+
if (Array.isArray(value))
|
|
140
|
+
return value.some((item) => hasTruncation(item, depth + 1));
|
|
141
|
+
for (const [key, item] of Object.entries(value)) {
|
|
142
|
+
if (key.toLowerCase().endsWith("truncated") && item === true)
|
|
143
|
+
return true;
|
|
144
|
+
if (hasTruncation(item, depth + 1))
|
|
145
|
+
return true;
|
|
146
|
+
}
|
|
147
|
+
return false;
|
|
148
|
+
}
|
|
149
|
+
function resultMeta(data, input) {
|
|
150
|
+
const embedded = isRecord(data) ? data : undefined;
|
|
151
|
+
const dataStatus = input.dataStatus ?? explicitDataStatus(data) ?? "unknown";
|
|
152
|
+
const embeddedEmptyReason = typeof embedded?.emptyReason === "string" ? embedded.emptyReason : undefined;
|
|
153
|
+
const emptyReason = input.emptyReason ??
|
|
154
|
+
embeddedEmptyReason ??
|
|
155
|
+
(dataStatus === "empty" ? (input.range ? "no_data_in_range" : "no_results") : undefined);
|
|
156
|
+
return {
|
|
157
|
+
dataStatus,
|
|
158
|
+
...(emptyReason ? { emptyReason } : {}),
|
|
159
|
+
...(input.websiteId ? { websiteId: input.websiteId } : {}),
|
|
160
|
+
...(input.range ? { requestedRange: input.range } : {}),
|
|
161
|
+
...(input.timezone ? { timezone: input.timezone } : {}),
|
|
162
|
+
truncated: hasTruncation(data),
|
|
163
|
+
};
|
|
164
|
+
}
|
|
165
|
+
export async function runTool(operation, meta = {}) {
|
|
80
166
|
try {
|
|
81
167
|
const data = normalizeAnalyticsNumbers(await operation());
|
|
82
|
-
const structuredContent = { data };
|
|
168
|
+
const structuredContent = { data, meta: resultMeta(data, meta) };
|
|
83
169
|
return {
|
|
84
170
|
content: [{ type: "text", text: JSON.stringify(structuredContent) }],
|
|
85
171
|
structuredContent,
|
package/dist/mcp/result.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"result.js","sourceRoot":"","sources":["../../src/mcp/result.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"result.js","sourceRoot":"","sources":["../../src/mcp/result.ts"],"names":[],"mappings":"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"}
|