@butlr/butlr-mcp-server 0.1.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/LICENSE +21 -0
- package/README.md +195 -0
- package/dist/cache/occupancy-cache.d.ts +72 -0
- package/dist/cache/occupancy-cache.d.ts.map +1 -0
- package/dist/cache/occupancy-cache.js +166 -0
- package/dist/cache/occupancy-cache.js.map +1 -0
- package/dist/cache/topology-cache.d.ts +36 -0
- package/dist/cache/topology-cache.d.ts.map +1 -0
- package/dist/cache/topology-cache.js +74 -0
- package/dist/cache/topology-cache.js.map +1 -0
- package/dist/clients/auth-client.d.ts +22 -0
- package/dist/clients/auth-client.d.ts.map +1 -0
- package/dist/clients/auth-client.js +82 -0
- package/dist/clients/auth-client.js.map +1 -0
- package/dist/clients/graphql-client.d.ts +6 -0
- package/dist/clients/graphql-client.d.ts.map +1 -0
- package/dist/clients/graphql-client.js +106 -0
- package/dist/clients/graphql-client.js.map +1 -0
- package/dist/clients/queries/topology.d.ts +36 -0
- package/dist/clients/queries/topology.d.ts.map +1 -0
- package/dist/clients/queries/topology.js +252 -0
- package/dist/clients/queries/topology.js.map +1 -0
- package/dist/clients/reporting-client.d.ts +191 -0
- package/dist/clients/reporting-client.d.ts.map +1 -0
- package/dist/clients/reporting-client.js +353 -0
- package/dist/clients/reporting-client.js.map +1 -0
- package/dist/clients/stats-client.d.ts +119 -0
- package/dist/clients/stats-client.d.ts.map +1 -0
- package/dist/clients/stats-client.js +238 -0
- package/dist/clients/stats-client.js.map +1 -0
- package/dist/clients/types.d.ts +215 -0
- package/dist/clients/types.d.ts.map +1 -0
- package/dist/clients/types.js +6 -0
- package/dist/clients/types.js.map +1 -0
- package/dist/constants.d.ts +3 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +3 -0
- package/dist/constants.js.map +1 -0
- package/dist/errors/mcp-errors.d.ts +63 -0
- package/dist/errors/mcp-errors.d.ts.map +1 -0
- package/dist/errors/mcp-errors.js +144 -0
- package/dist/errors/mcp-errors.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +43 -0
- package/dist/index.js.map +1 -0
- package/dist/tools/butlr-available-rooms.d.ts +49 -0
- package/dist/tools/butlr-available-rooms.d.ts.map +1 -0
- package/dist/tools/butlr-available-rooms.js +492 -0
- package/dist/tools/butlr-available-rooms.js.map +1 -0
- package/dist/tools/butlr-fetch-entity-details.d.ts +42 -0
- package/dist/tools/butlr-fetch-entity-details.d.ts.map +1 -0
- package/dist/tools/butlr-fetch-entity-details.js +276 -0
- package/dist/tools/butlr-fetch-entity-details.js.map +1 -0
- package/dist/tools/butlr-get-asset-details.d.ts +51 -0
- package/dist/tools/butlr-get-asset-details.d.ts.map +1 -0
- package/dist/tools/butlr-get-asset-details.js +391 -0
- package/dist/tools/butlr-get-asset-details.js.map +1 -0
- package/dist/tools/butlr-get-current-occupancy.d.ts +21 -0
- package/dist/tools/butlr-get-current-occupancy.d.ts.map +1 -0
- package/dist/tools/butlr-get-current-occupancy.js +126 -0
- package/dist/tools/butlr-get-current-occupancy.js.map +1 -0
- package/dist/tools/butlr-get-occupancy-timeseries.d.ts +31 -0
- package/dist/tools/butlr-get-occupancy-timeseries.d.ts.map +1 -0
- package/dist/tools/butlr-get-occupancy-timeseries.js +145 -0
- package/dist/tools/butlr-get-occupancy-timeseries.js.map +1 -0
- package/dist/tools/butlr-hardware-snapshot.d.ts +55 -0
- package/dist/tools/butlr-hardware-snapshot.d.ts.map +1 -0
- package/dist/tools/butlr-hardware-snapshot.js +556 -0
- package/dist/tools/butlr-hardware-snapshot.js.map +1 -0
- package/dist/tools/butlr-list-topology.d.ts +27 -0
- package/dist/tools/butlr-list-topology.d.ts.map +1 -0
- package/dist/tools/butlr-list-topology.js +241 -0
- package/dist/tools/butlr-list-topology.js.map +1 -0
- package/dist/tools/butlr-search-assets.d.ts +53 -0
- package/dist/tools/butlr-search-assets.d.ts.map +1 -0
- package/dist/tools/butlr-search-assets.js +206 -0
- package/dist/tools/butlr-search-assets.js.map +1 -0
- package/dist/tools/butlr-space-busyness.d.ts +23 -0
- package/dist/tools/butlr-space-busyness.d.ts.map +1 -0
- package/dist/tools/butlr-space-busyness.js +304 -0
- package/dist/tools/butlr-space-busyness.js.map +1 -0
- package/dist/tools/butlr-traffic-flow.d.ts +39 -0
- package/dist/tools/butlr-traffic-flow.d.ts.map +1 -0
- package/dist/tools/butlr-traffic-flow.js +369 -0
- package/dist/tools/butlr-traffic-flow.js.map +1 -0
- package/dist/types/responses.d.ts +253 -0
- package/dist/types/responses.d.ts.map +1 -0
- package/dist/types/responses.js +8 -0
- package/dist/types/responses.js.map +1 -0
- package/dist/utils/asset-flattener.d.ts +50 -0
- package/dist/utils/asset-flattener.d.ts.map +1 -0
- package/dist/utils/asset-flattener.js +131 -0
- package/dist/utils/asset-flattener.js.map +1 -0
- package/dist/utils/asset-helpers.d.ts +8 -0
- package/dist/utils/asset-helpers.d.ts.map +1 -0
- package/dist/utils/asset-helpers.js +24 -0
- package/dist/utils/asset-helpers.js.map +1 -0
- package/dist/utils/field-validator.d.ts +29 -0
- package/dist/utils/field-validator.d.ts.map +1 -0
- package/dist/utils/field-validator.js +197 -0
- package/dist/utils/field-validator.js.map +1 -0
- package/dist/utils/fuzzy-match.d.ts +29 -0
- package/dist/utils/fuzzy-match.d.ts.map +1 -0
- package/dist/utils/fuzzy-match.js +70 -0
- package/dist/utils/fuzzy-match.js.map +1 -0
- package/dist/utils/graphql-helpers.d.ts +29 -0
- package/dist/utils/graphql-helpers.d.ts.map +1 -0
- package/dist/utils/graphql-helpers.js +43 -0
- package/dist/utils/graphql-helpers.js.map +1 -0
- package/dist/utils/natural-language.d.ts +73 -0
- package/dist/utils/natural-language.d.ts.map +1 -0
- package/dist/utils/natural-language.js +172 -0
- package/dist/utils/natural-language.js.map +1 -0
- package/dist/utils/occupancy-helpers.d.ts +63 -0
- package/dist/utils/occupancy-helpers.d.ts.map +1 -0
- package/dist/utils/occupancy-helpers.js +203 -0
- package/dist/utils/occupancy-helpers.js.map +1 -0
- package/dist/utils/path-builder.d.ts +10 -0
- package/dist/utils/path-builder.d.ts.map +1 -0
- package/dist/utils/path-builder.js +34 -0
- package/dist/utils/path-builder.js.map +1 -0
- package/dist/utils/time-range-validator.d.ts +13 -0
- package/dist/utils/time-range-validator.d.ts.map +1 -0
- package/dist/utils/time-range-validator.js +65 -0
- package/dist/utils/time-range-validator.js.map +1 -0
- package/dist/utils/timezone-helpers.d.ts +49 -0
- package/dist/utils/timezone-helpers.d.ts.map +1 -0
- package/dist/utils/timezone-helpers.js +209 -0
- package/dist/utils/timezone-helpers.js.map +1 -0
- package/dist/utils/tree-formatter.d.ts +23 -0
- package/dist/utils/tree-formatter.d.ts.map +1 -0
- package/dist/utils/tree-formatter.js +258 -0
- package/dist/utils/tree-formatter.js.map +1 -0
- package/package.json +93 -0
|
@@ -0,0 +1,238 @@
|
|
|
1
|
+
import { request as httpRequest } from "undici";
|
|
2
|
+
import { authClient } from "./auth-client.js";
|
|
3
|
+
import { ApiError } from "./reporting-client.js";
|
|
4
|
+
const BASE_URL = process.env.BUTLR_BASE_URL || "https://api.butlr.io";
|
|
5
|
+
const STATS_ENDPOINT = `${BASE_URL}/api/v4/reporting/stats`;
|
|
6
|
+
/**
|
|
7
|
+
* Query v4 Stats API
|
|
8
|
+
*
|
|
9
|
+
* Note: This endpoint is production-ready but may occasionally return 504 errors
|
|
10
|
+
* under heavy load. Implement fallback to client-side calculation if needed.
|
|
11
|
+
*/
|
|
12
|
+
export async function queryStats(statsRequest) {
|
|
13
|
+
if (process.env.DEBUG) {
|
|
14
|
+
console.error(`[stats-client] POST ${STATS_ENDPOINT}`, JSON.stringify(statsRequest, null, 2));
|
|
15
|
+
}
|
|
16
|
+
try {
|
|
17
|
+
// Get auth token
|
|
18
|
+
const token = await authClient.getToken();
|
|
19
|
+
// Make request
|
|
20
|
+
const response = await httpRequest(STATS_ENDPOINT, {
|
|
21
|
+
method: "POST",
|
|
22
|
+
headers: {
|
|
23
|
+
"Content-Type": "application/json",
|
|
24
|
+
Authorization: `Bearer ${token}`,
|
|
25
|
+
},
|
|
26
|
+
body: JSON.stringify(statsRequest),
|
|
27
|
+
});
|
|
28
|
+
if (response.statusCode !== 200) {
|
|
29
|
+
const errorBody = await response.body.text();
|
|
30
|
+
// Special handling for 504 Gateway Timeout
|
|
31
|
+
if (response.statusCode === 504) {
|
|
32
|
+
console.error(`[stats-client] 504 Gateway Timeout - stats service may be overloaded`);
|
|
33
|
+
throw new ApiError(504, "Stats service temporarily unavailable (504). Try reducing the time range or number of assets.");
|
|
34
|
+
}
|
|
35
|
+
if (process.env.DEBUG) {
|
|
36
|
+
console.error(`[stats-client] API error body: ${errorBody}`);
|
|
37
|
+
}
|
|
38
|
+
throw new ApiError(response.statusCode, `Butlr API error (${response.statusCode}). Enable DEBUG=butlr-mcp for details.`);
|
|
39
|
+
}
|
|
40
|
+
const data = (await response.body.json());
|
|
41
|
+
if (process.env.DEBUG) {
|
|
42
|
+
console.error(`[stats-client] Response: statistics for ${Object.keys(data.data || {}).length} assets`);
|
|
43
|
+
}
|
|
44
|
+
return data;
|
|
45
|
+
}
|
|
46
|
+
catch (error) {
|
|
47
|
+
console.error(`[stats-client] Request failed:`, error);
|
|
48
|
+
// Translate common errors using structured ApiError
|
|
49
|
+
if (error instanceof ApiError) {
|
|
50
|
+
if (error.statusCode === 401 || error.statusCode === 403) {
|
|
51
|
+
authClient.clearToken();
|
|
52
|
+
throw new ApiError(error.statusCode, "Authentication failed. Check BUTLR_CLIENT_ID and BUTLR_CLIENT_SECRET.");
|
|
53
|
+
}
|
|
54
|
+
if (error.statusCode === 429) {
|
|
55
|
+
throw new ApiError(429, "Rate limit exceeded. Please retry after a few seconds.");
|
|
56
|
+
}
|
|
57
|
+
if (error.statusCode === 400) {
|
|
58
|
+
throw new ApiError(400, "Invalid request parameters. Check measurements and items.");
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
throw error;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Convert relative time to ISO-8601 timestamp
|
|
66
|
+
* e.g., "-7d" → "2025-10-06T00:00:00Z"
|
|
67
|
+
*/
|
|
68
|
+
function parseRelativeTime(relativeTime) {
|
|
69
|
+
const match = relativeTime.match(/^-(\d+)([mhd])$/);
|
|
70
|
+
if (!match) {
|
|
71
|
+
// If not relative format, return as-is (assume ISO-8601)
|
|
72
|
+
return relativeTime;
|
|
73
|
+
}
|
|
74
|
+
const value = parseInt(match[1], 10);
|
|
75
|
+
const unit = match[2];
|
|
76
|
+
const now = new Date();
|
|
77
|
+
switch (unit) {
|
|
78
|
+
case "m":
|
|
79
|
+
now.setMinutes(now.getMinutes() - value);
|
|
80
|
+
break;
|
|
81
|
+
case "h":
|
|
82
|
+
now.setHours(now.getHours() - value);
|
|
83
|
+
break;
|
|
84
|
+
case "d":
|
|
85
|
+
now.setDate(now.getDate() - value);
|
|
86
|
+
break;
|
|
87
|
+
}
|
|
88
|
+
return now.toISOString();
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Request builder for stats queries
|
|
92
|
+
*/
|
|
93
|
+
export class StatsRequestBuilder {
|
|
94
|
+
request;
|
|
95
|
+
constructor() {
|
|
96
|
+
this.request = {
|
|
97
|
+
measurements: [],
|
|
98
|
+
items: [],
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Set measurements to query
|
|
103
|
+
* Use v4-specific measurement names:
|
|
104
|
+
* - occupancy_avg_presence
|
|
105
|
+
* - occupancy_median_presence
|
|
106
|
+
* - occupancy_avg_traffic
|
|
107
|
+
* - occupancy_median_traffic
|
|
108
|
+
*/
|
|
109
|
+
measurements(measurements) {
|
|
110
|
+
this.request.measurements = measurements;
|
|
111
|
+
return this;
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Set asset IDs to query
|
|
115
|
+
*/
|
|
116
|
+
assets(assetIds) {
|
|
117
|
+
this.request.items = assetIds;
|
|
118
|
+
return this;
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Set time range (ISO-8601 timestamp or relative like '-7d')
|
|
122
|
+
* Relative times will be converted to ISO-8601
|
|
123
|
+
*/
|
|
124
|
+
timeRange(start, stop) {
|
|
125
|
+
// Convert start time
|
|
126
|
+
this.request.start = parseRelativeTime(start);
|
|
127
|
+
// Convert stop time - if not provided or "now", use current time
|
|
128
|
+
if (!stop || stop === "now") {
|
|
129
|
+
this.request.stop = new Date().toISOString();
|
|
130
|
+
}
|
|
131
|
+
else {
|
|
132
|
+
this.request.stop = parseRelativeTime(stop);
|
|
133
|
+
}
|
|
134
|
+
return this;
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Set time-of-day filters
|
|
138
|
+
*/
|
|
139
|
+
timeOfDayFilter(ranges) {
|
|
140
|
+
if (!this.request.filters) {
|
|
141
|
+
this.request.filters = {};
|
|
142
|
+
}
|
|
143
|
+
this.request.filters.time_ranges = ranges;
|
|
144
|
+
return this;
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* Exclude specific days of week
|
|
148
|
+
*/
|
|
149
|
+
excludeDays(days) {
|
|
150
|
+
if (!this.request.filters) {
|
|
151
|
+
this.request.filters = {};
|
|
152
|
+
}
|
|
153
|
+
this.request.filters.exclude_days_of_week = days;
|
|
154
|
+
return this;
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* Build and return the request
|
|
158
|
+
*/
|
|
159
|
+
build() {
|
|
160
|
+
// Validation
|
|
161
|
+
if (!this.request.measurements.length) {
|
|
162
|
+
throw new Error("At least one measurement is required");
|
|
163
|
+
}
|
|
164
|
+
if (!this.request.items.length) {
|
|
165
|
+
throw new Error("At least one asset ID is required");
|
|
166
|
+
}
|
|
167
|
+
return this.request;
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* Build and execute the query
|
|
171
|
+
*/
|
|
172
|
+
async execute() {
|
|
173
|
+
return queryStats(this.build());
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
/**
|
|
177
|
+
* Convenience function: Get statistics for multiple assets
|
|
178
|
+
* @param measurement - Use v4 format: 'occupancy_avg_presence', 'occupancy_median_presence', etc.
|
|
179
|
+
* @param assetIds - Array of asset IDs (rooms, floors, zones)
|
|
180
|
+
* @param start - ISO-8601 or relative time (will be converted)
|
|
181
|
+
* @param stop - ISO-8601 timestamp (optional)
|
|
182
|
+
*/
|
|
183
|
+
export async function getAssetStatistics(measurement, assetIds, start = "-7d", stop) {
|
|
184
|
+
return new StatsRequestBuilder()
|
|
185
|
+
.measurements([measurement])
|
|
186
|
+
.assets(assetIds)
|
|
187
|
+
.timeRange(start, stop)
|
|
188
|
+
.execute();
|
|
189
|
+
}
|
|
190
|
+
/**
|
|
191
|
+
* Convenience function: Get statistics for a single asset
|
|
192
|
+
* @param measurement - Use v4 format: 'occupancy_avg_presence', 'occupancy_median_presence', etc.
|
|
193
|
+
*/
|
|
194
|
+
export async function getSingleAssetStats(measurement, assetId, start = "-7d", stop) {
|
|
195
|
+
const response = await getAssetStatistics(measurement, [assetId], start, stop);
|
|
196
|
+
return response.data[assetId] || null;
|
|
197
|
+
}
|
|
198
|
+
/**
|
|
199
|
+
* Calculate client-side statistics as fallback
|
|
200
|
+
* Useful if v4/stats returns 504 error
|
|
201
|
+
*/
|
|
202
|
+
export function calculateStatistics(values) {
|
|
203
|
+
if (values.length === 0) {
|
|
204
|
+
return {
|
|
205
|
+
count: 0,
|
|
206
|
+
first: 0,
|
|
207
|
+
last: 0,
|
|
208
|
+
max: 0,
|
|
209
|
+
mean: 0,
|
|
210
|
+
median: 0,
|
|
211
|
+
min: 0,
|
|
212
|
+
stdev: 0,
|
|
213
|
+
sum: 0,
|
|
214
|
+
};
|
|
215
|
+
}
|
|
216
|
+
const sorted = [...values].sort((a, b) => a - b);
|
|
217
|
+
const sum = values.reduce((a, b) => a + b, 0);
|
|
218
|
+
const mean = sum / values.length;
|
|
219
|
+
// Calculate standard deviation
|
|
220
|
+
const squaredDiffs = values.map((v) => Math.pow(v - mean, 2));
|
|
221
|
+
const variance = squaredDiffs.reduce((a, b) => a + b, 0) / values.length;
|
|
222
|
+
const stdev = Math.sqrt(variance);
|
|
223
|
+
// Calculate median
|
|
224
|
+
const mid = Math.floor(sorted.length / 2);
|
|
225
|
+
const median = sorted.length % 2 === 0 ? (sorted[mid - 1] + sorted[mid]) / 2 : sorted[mid];
|
|
226
|
+
return {
|
|
227
|
+
count: values.length,
|
|
228
|
+
first: values[0],
|
|
229
|
+
last: values[values.length - 1],
|
|
230
|
+
max: values.reduce((a, b) => (b > a ? b : a), values[0]),
|
|
231
|
+
mean: parseFloat(mean.toFixed(2)),
|
|
232
|
+
median: parseFloat(median.toFixed(2)),
|
|
233
|
+
min: values.reduce((a, b) => (b < a ? b : a), values[0]),
|
|
234
|
+
stdev: parseFloat(stdev.toFixed(2)),
|
|
235
|
+
sum,
|
|
236
|
+
};
|
|
237
|
+
}
|
|
238
|
+
//# sourceMappingURL=stats-client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stats-client.js","sourceRoot":"","sources":["../../src/clients/stats-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,215 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TypeScript type definitions for Butlr GraphQL API
|
|
3
|
+
* Based on GraphQL schemas from butlr-api-container
|
|
4
|
+
*/
|
|
5
|
+
export interface Capacity {
|
|
6
|
+
max?: number;
|
|
7
|
+
mid?: number;
|
|
8
|
+
}
|
|
9
|
+
export interface Address {
|
|
10
|
+
lines?: string[];
|
|
11
|
+
country?: string;
|
|
12
|
+
}
|
|
13
|
+
export interface MetaData {
|
|
14
|
+
created_at?: number;
|
|
15
|
+
updated_at?: number;
|
|
16
|
+
deleted_at?: number;
|
|
17
|
+
}
|
|
18
|
+
export interface Area {
|
|
19
|
+
value?: number;
|
|
20
|
+
unit?: string;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Site - Top level organizational unit (campus)
|
|
24
|
+
*/
|
|
25
|
+
export interface Site {
|
|
26
|
+
id: string;
|
|
27
|
+
name: string;
|
|
28
|
+
timezone: string;
|
|
29
|
+
org_id: string;
|
|
30
|
+
siteNumber?: number;
|
|
31
|
+
customID?: string;
|
|
32
|
+
butlrCode?: string;
|
|
33
|
+
buildings: Building[];
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Building - Physical structure containing floors
|
|
37
|
+
*/
|
|
38
|
+
export interface Building {
|
|
39
|
+
id: string;
|
|
40
|
+
name: string;
|
|
41
|
+
site_id: string;
|
|
42
|
+
building_number?: number;
|
|
43
|
+
buildingNumber?: number;
|
|
44
|
+
butlr_code?: string;
|
|
45
|
+
capacity: Capacity;
|
|
46
|
+
address?: Address;
|
|
47
|
+
customID?: string;
|
|
48
|
+
floors: Floor[];
|
|
49
|
+
site: Site;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Floor - Level within a building
|
|
53
|
+
*/
|
|
54
|
+
export interface Floor {
|
|
55
|
+
id: string;
|
|
56
|
+
name: string;
|
|
57
|
+
building_id: string;
|
|
58
|
+
floorNumber?: number;
|
|
59
|
+
timezone: string;
|
|
60
|
+
installation_date: number;
|
|
61
|
+
installation_status?: string;
|
|
62
|
+
service_status?: string;
|
|
63
|
+
capacity: Capacity;
|
|
64
|
+
area: Area;
|
|
65
|
+
metadata: MetaData;
|
|
66
|
+
customID?: string;
|
|
67
|
+
butlrCode?: string;
|
|
68
|
+
rooms?: Room[];
|
|
69
|
+
zones?: Zone[];
|
|
70
|
+
sensors?: Sensor[];
|
|
71
|
+
hives?: Hive[];
|
|
72
|
+
floor_plans?: FloorPlan[];
|
|
73
|
+
building: Building;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Room - Defined space within a floor
|
|
77
|
+
*/
|
|
78
|
+
export interface Room {
|
|
79
|
+
id: string;
|
|
80
|
+
name: string;
|
|
81
|
+
floorID?: string;
|
|
82
|
+
floor_id?: string;
|
|
83
|
+
roomType?: string;
|
|
84
|
+
capacity: Capacity;
|
|
85
|
+
area: Area;
|
|
86
|
+
coordinates?: number[][];
|
|
87
|
+
rotation?: number;
|
|
88
|
+
metadata: MetaData;
|
|
89
|
+
customID?: string;
|
|
90
|
+
note?: string;
|
|
91
|
+
pir_zero_enable?: boolean;
|
|
92
|
+
pir_zero_threshold?: number;
|
|
93
|
+
pir_zero_window?: number;
|
|
94
|
+
sensors?: Sensor[];
|
|
95
|
+
floor: Floor;
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Zone - Sub-area within a floor or room
|
|
99
|
+
*/
|
|
100
|
+
export interface Zone {
|
|
101
|
+
id: string;
|
|
102
|
+
name: string;
|
|
103
|
+
floorID?: string;
|
|
104
|
+
floor_id?: string;
|
|
105
|
+
roomID?: string;
|
|
106
|
+
room_id?: string;
|
|
107
|
+
capacity: Capacity;
|
|
108
|
+
area: Area;
|
|
109
|
+
coordinates?: number[][];
|
|
110
|
+
rotation?: number;
|
|
111
|
+
metadata: MetaData;
|
|
112
|
+
customID?: string;
|
|
113
|
+
note?: string;
|
|
114
|
+
sensors?: Sensor[];
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Sensor - Individual detection device
|
|
118
|
+
*/
|
|
119
|
+
export interface Sensor {
|
|
120
|
+
id: string;
|
|
121
|
+
name: string;
|
|
122
|
+
mac_address: string;
|
|
123
|
+
mode: "presence" | "traffic";
|
|
124
|
+
model: string;
|
|
125
|
+
floorID?: string;
|
|
126
|
+
floor_id?: string;
|
|
127
|
+
roomID?: string;
|
|
128
|
+
room_id?: string;
|
|
129
|
+
hiveID?: string;
|
|
130
|
+
hive_id?: string;
|
|
131
|
+
hive_serial: string;
|
|
132
|
+
is_online: boolean;
|
|
133
|
+
is_streaming?: boolean;
|
|
134
|
+
height: number;
|
|
135
|
+
center: number[];
|
|
136
|
+
orientation: number[];
|
|
137
|
+
field_of_view: number;
|
|
138
|
+
door_line: number;
|
|
139
|
+
in_direction: number;
|
|
140
|
+
is_entrance: boolean;
|
|
141
|
+
parallel_to_door: boolean;
|
|
142
|
+
sensitivity: number;
|
|
143
|
+
metadata: MetaData;
|
|
144
|
+
note?: string;
|
|
145
|
+
last_heartbeat?: number;
|
|
146
|
+
last_raw_message?: number;
|
|
147
|
+
last_occupancy_message?: number;
|
|
148
|
+
power_type?: "Wired" | "Battery";
|
|
149
|
+
sensor_serial?: string;
|
|
150
|
+
installation_status?: "INSTALLED" | "UNINSTALLED";
|
|
151
|
+
last_battery_change_date?: string;
|
|
152
|
+
next_battery_change_date?: string;
|
|
153
|
+
battery_change_by_date?: string;
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* Hive - Gateway device managing sensors
|
|
157
|
+
*/
|
|
158
|
+
export interface Hive {
|
|
159
|
+
id: string;
|
|
160
|
+
name: string;
|
|
161
|
+
serialNumber: string;
|
|
162
|
+
floor_id: string;
|
|
163
|
+
floorID: string;
|
|
164
|
+
room_id?: string;
|
|
165
|
+
roomID?: string;
|
|
166
|
+
coordinates?: number[];
|
|
167
|
+
is_online: boolean;
|
|
168
|
+
isOnline: boolean;
|
|
169
|
+
is_streaming?: boolean;
|
|
170
|
+
isStreaming?: boolean;
|
|
171
|
+
hiveVersion?: string;
|
|
172
|
+
hiveType?: string;
|
|
173
|
+
metadata: MetaData;
|
|
174
|
+
note?: string;
|
|
175
|
+
last_heartbeat?: number;
|
|
176
|
+
lastHeartbeat?: number;
|
|
177
|
+
net_path_stability?: number;
|
|
178
|
+
netPathStability?: number;
|
|
179
|
+
installed: boolean;
|
|
180
|
+
sensors?: Sensor[];
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* FloorPlan - Visual layout of a floor
|
|
184
|
+
*/
|
|
185
|
+
export interface FloorPlan {
|
|
186
|
+
floor_plan_id: string;
|
|
187
|
+
name: string;
|
|
188
|
+
url?: string;
|
|
189
|
+
coordinates?: number[][];
|
|
190
|
+
}
|
|
191
|
+
/**
|
|
192
|
+
* GraphQL response wrapper types
|
|
193
|
+
*/
|
|
194
|
+
export interface SitesResponse {
|
|
195
|
+
data: Site[];
|
|
196
|
+
}
|
|
197
|
+
export interface BuildingsResponse {
|
|
198
|
+
data: Building[];
|
|
199
|
+
}
|
|
200
|
+
export interface FloorsResponse {
|
|
201
|
+
data: Floor[];
|
|
202
|
+
}
|
|
203
|
+
export interface RoomsResponse {
|
|
204
|
+
data: Room[];
|
|
205
|
+
}
|
|
206
|
+
export interface ZonesResponse {
|
|
207
|
+
data: Zone[];
|
|
208
|
+
}
|
|
209
|
+
export interface SensorsResponse {
|
|
210
|
+
data: Sensor[];
|
|
211
|
+
}
|
|
212
|
+
export interface HivesResponse {
|
|
213
|
+
data: Hive[];
|
|
214
|
+
}
|
|
215
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/clients/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/clients/types.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,mFAAmF;AACnF,eAAO,MAAM,eAAe,QAAS,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,mFAAmF;AACnF,MAAM,CAAC,MAAM,eAAe,GAAG,MAAM,CAAC"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Structural type for Apollo-like errors (ApolloError was removed in Apollo Client 4.0)
|
|
3
|
+
* Narrowed from `any` to `unknown` with runtime property checks inside translateGraphQLError.
|
|
4
|
+
*/
|
|
5
|
+
interface GraphQLClientError {
|
|
6
|
+
networkError?: {
|
|
7
|
+
statusCode?: number;
|
|
8
|
+
message?: string;
|
|
9
|
+
result?: unknown;
|
|
10
|
+
response?: {
|
|
11
|
+
headers?: {
|
|
12
|
+
get(name: string): string | null;
|
|
13
|
+
};
|
|
14
|
+
};
|
|
15
|
+
};
|
|
16
|
+
graphQLErrors?: Array<{
|
|
17
|
+
message: string;
|
|
18
|
+
extensions?: Record<string, unknown>;
|
|
19
|
+
}>;
|
|
20
|
+
message?: string;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* MCP Error Codes
|
|
24
|
+
* Standard error codes for Model Context Protocol
|
|
25
|
+
*/
|
|
26
|
+
export declare enum MCPErrorCode {
|
|
27
|
+
AUTH_EXPIRED = "AUTH_EXPIRED",
|
|
28
|
+
RATE_LIMITED = "RATE_LIMITED",
|
|
29
|
+
VALIDATION_FAILED = "VALIDATION_FAILED",
|
|
30
|
+
INTERNAL_ERROR = "INTERNAL_ERROR",
|
|
31
|
+
NOT_FOUND = "NOT_FOUND",
|
|
32
|
+
NETWORK_ERROR = "NETWORK_ERROR"
|
|
33
|
+
}
|
|
34
|
+
export interface MCPError {
|
|
35
|
+
code: MCPErrorCode;
|
|
36
|
+
message: string;
|
|
37
|
+
details?: Record<string, unknown>;
|
|
38
|
+
retryable?: boolean;
|
|
39
|
+
retryAfter?: number;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Translate GraphQL/Apollo errors to MCP error format
|
|
43
|
+
*/
|
|
44
|
+
export declare function translateGraphQLError(error: GraphQLClientError): MCPError;
|
|
45
|
+
/**
|
|
46
|
+
* Format MCP error for user-friendly display
|
|
47
|
+
*/
|
|
48
|
+
export declare function formatMCPError(error: MCPError): string;
|
|
49
|
+
/**
|
|
50
|
+
* Error subclass for MCP errors — provides stack traces and works with instanceof checks.
|
|
51
|
+
*/
|
|
52
|
+
export declare class MCPValidationError extends Error {
|
|
53
|
+
code: MCPErrorCode;
|
|
54
|
+
details?: Record<string, unknown>;
|
|
55
|
+
retryable: boolean;
|
|
56
|
+
constructor(message: string, details?: Record<string, unknown>);
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Create a validation error (throws a proper Error subclass with stack trace)
|
|
60
|
+
*/
|
|
61
|
+
export declare function createValidationError(message: string, details?: Record<string, unknown>): MCPValidationError;
|
|
62
|
+
export {};
|
|
63
|
+
//# sourceMappingURL=mcp-errors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-errors.d.ts","sourceRoot":"","sources":["../../src/errors/mcp-errors.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,UAAU,kBAAkB;IAC1B,YAAY,CAAC,EAAE;QACb,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,MAAM,CAAC,EAAE,OAAO,CAAC;QACjB,QAAQ,CAAC,EAAE;YAAE,OAAO,CAAC,EAAE;gBAAE,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAA;aAAE,CAAA;SAAE,CAAC;KAC/D,CAAC;IACF,aAAa,CAAC,EAAE,KAAK,CAAC;QACpB,OAAO,EAAE,MAAM,CAAC;QAChB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KACtC,CAAC,CAAC;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;GAGG;AACH,oBAAY,YAAY;IACtB,YAAY,iBAAiB;IAC7B,YAAY,iBAAiB;IAC7B,iBAAiB,sBAAsB;IACvC,cAAc,mBAAmB;IACjC,SAAS,cAAc;IACvB,aAAa,kBAAkB;CAChC;AAED,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,YAAY,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,kBAAkB,GAAG,QAAQ,CAmGzE;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,QAAQ,GAAG,MAAM,CAgBtD;AAED;;GAEG;AACH,qBAAa,kBAAmB,SAAQ,KAAK;IAC3C,IAAI,EAAE,YAAY,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,SAAS,EAAE,OAAO,CAAC;gBAEP,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAO/D;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAChC,kBAAkB,CAEpB"}
|