@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.
Files changed (135) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +195 -0
  3. package/dist/cache/occupancy-cache.d.ts +72 -0
  4. package/dist/cache/occupancy-cache.d.ts.map +1 -0
  5. package/dist/cache/occupancy-cache.js +166 -0
  6. package/dist/cache/occupancy-cache.js.map +1 -0
  7. package/dist/cache/topology-cache.d.ts +36 -0
  8. package/dist/cache/topology-cache.d.ts.map +1 -0
  9. package/dist/cache/topology-cache.js +74 -0
  10. package/dist/cache/topology-cache.js.map +1 -0
  11. package/dist/clients/auth-client.d.ts +22 -0
  12. package/dist/clients/auth-client.d.ts.map +1 -0
  13. package/dist/clients/auth-client.js +82 -0
  14. package/dist/clients/auth-client.js.map +1 -0
  15. package/dist/clients/graphql-client.d.ts +6 -0
  16. package/dist/clients/graphql-client.d.ts.map +1 -0
  17. package/dist/clients/graphql-client.js +106 -0
  18. package/dist/clients/graphql-client.js.map +1 -0
  19. package/dist/clients/queries/topology.d.ts +36 -0
  20. package/dist/clients/queries/topology.d.ts.map +1 -0
  21. package/dist/clients/queries/topology.js +252 -0
  22. package/dist/clients/queries/topology.js.map +1 -0
  23. package/dist/clients/reporting-client.d.ts +191 -0
  24. package/dist/clients/reporting-client.d.ts.map +1 -0
  25. package/dist/clients/reporting-client.js +353 -0
  26. package/dist/clients/reporting-client.js.map +1 -0
  27. package/dist/clients/stats-client.d.ts +119 -0
  28. package/dist/clients/stats-client.d.ts.map +1 -0
  29. package/dist/clients/stats-client.js +238 -0
  30. package/dist/clients/stats-client.js.map +1 -0
  31. package/dist/clients/types.d.ts +215 -0
  32. package/dist/clients/types.d.ts.map +1 -0
  33. package/dist/clients/types.js +6 -0
  34. package/dist/clients/types.js.map +1 -0
  35. package/dist/constants.d.ts +3 -0
  36. package/dist/constants.d.ts.map +1 -0
  37. package/dist/constants.js +3 -0
  38. package/dist/constants.js.map +1 -0
  39. package/dist/errors/mcp-errors.d.ts +63 -0
  40. package/dist/errors/mcp-errors.d.ts.map +1 -0
  41. package/dist/errors/mcp-errors.js +144 -0
  42. package/dist/errors/mcp-errors.js.map +1 -0
  43. package/dist/index.d.ts +3 -0
  44. package/dist/index.d.ts.map +1 -0
  45. package/dist/index.js +43 -0
  46. package/dist/index.js.map +1 -0
  47. package/dist/tools/butlr-available-rooms.d.ts +49 -0
  48. package/dist/tools/butlr-available-rooms.d.ts.map +1 -0
  49. package/dist/tools/butlr-available-rooms.js +492 -0
  50. package/dist/tools/butlr-available-rooms.js.map +1 -0
  51. package/dist/tools/butlr-fetch-entity-details.d.ts +42 -0
  52. package/dist/tools/butlr-fetch-entity-details.d.ts.map +1 -0
  53. package/dist/tools/butlr-fetch-entity-details.js +276 -0
  54. package/dist/tools/butlr-fetch-entity-details.js.map +1 -0
  55. package/dist/tools/butlr-get-asset-details.d.ts +51 -0
  56. package/dist/tools/butlr-get-asset-details.d.ts.map +1 -0
  57. package/dist/tools/butlr-get-asset-details.js +391 -0
  58. package/dist/tools/butlr-get-asset-details.js.map +1 -0
  59. package/dist/tools/butlr-get-current-occupancy.d.ts +21 -0
  60. package/dist/tools/butlr-get-current-occupancy.d.ts.map +1 -0
  61. package/dist/tools/butlr-get-current-occupancy.js +126 -0
  62. package/dist/tools/butlr-get-current-occupancy.js.map +1 -0
  63. package/dist/tools/butlr-get-occupancy-timeseries.d.ts +31 -0
  64. package/dist/tools/butlr-get-occupancy-timeseries.d.ts.map +1 -0
  65. package/dist/tools/butlr-get-occupancy-timeseries.js +145 -0
  66. package/dist/tools/butlr-get-occupancy-timeseries.js.map +1 -0
  67. package/dist/tools/butlr-hardware-snapshot.d.ts +55 -0
  68. package/dist/tools/butlr-hardware-snapshot.d.ts.map +1 -0
  69. package/dist/tools/butlr-hardware-snapshot.js +556 -0
  70. package/dist/tools/butlr-hardware-snapshot.js.map +1 -0
  71. package/dist/tools/butlr-list-topology.d.ts +27 -0
  72. package/dist/tools/butlr-list-topology.d.ts.map +1 -0
  73. package/dist/tools/butlr-list-topology.js +241 -0
  74. package/dist/tools/butlr-list-topology.js.map +1 -0
  75. package/dist/tools/butlr-search-assets.d.ts +53 -0
  76. package/dist/tools/butlr-search-assets.d.ts.map +1 -0
  77. package/dist/tools/butlr-search-assets.js +206 -0
  78. package/dist/tools/butlr-search-assets.js.map +1 -0
  79. package/dist/tools/butlr-space-busyness.d.ts +23 -0
  80. package/dist/tools/butlr-space-busyness.d.ts.map +1 -0
  81. package/dist/tools/butlr-space-busyness.js +304 -0
  82. package/dist/tools/butlr-space-busyness.js.map +1 -0
  83. package/dist/tools/butlr-traffic-flow.d.ts +39 -0
  84. package/dist/tools/butlr-traffic-flow.d.ts.map +1 -0
  85. package/dist/tools/butlr-traffic-flow.js +369 -0
  86. package/dist/tools/butlr-traffic-flow.js.map +1 -0
  87. package/dist/types/responses.d.ts +253 -0
  88. package/dist/types/responses.d.ts.map +1 -0
  89. package/dist/types/responses.js +8 -0
  90. package/dist/types/responses.js.map +1 -0
  91. package/dist/utils/asset-flattener.d.ts +50 -0
  92. package/dist/utils/asset-flattener.d.ts.map +1 -0
  93. package/dist/utils/asset-flattener.js +131 -0
  94. package/dist/utils/asset-flattener.js.map +1 -0
  95. package/dist/utils/asset-helpers.d.ts +8 -0
  96. package/dist/utils/asset-helpers.d.ts.map +1 -0
  97. package/dist/utils/asset-helpers.js +24 -0
  98. package/dist/utils/asset-helpers.js.map +1 -0
  99. package/dist/utils/field-validator.d.ts +29 -0
  100. package/dist/utils/field-validator.d.ts.map +1 -0
  101. package/dist/utils/field-validator.js +197 -0
  102. package/dist/utils/field-validator.js.map +1 -0
  103. package/dist/utils/fuzzy-match.d.ts +29 -0
  104. package/dist/utils/fuzzy-match.d.ts.map +1 -0
  105. package/dist/utils/fuzzy-match.js +70 -0
  106. package/dist/utils/fuzzy-match.js.map +1 -0
  107. package/dist/utils/graphql-helpers.d.ts +29 -0
  108. package/dist/utils/graphql-helpers.d.ts.map +1 -0
  109. package/dist/utils/graphql-helpers.js +43 -0
  110. package/dist/utils/graphql-helpers.js.map +1 -0
  111. package/dist/utils/natural-language.d.ts +73 -0
  112. package/dist/utils/natural-language.d.ts.map +1 -0
  113. package/dist/utils/natural-language.js +172 -0
  114. package/dist/utils/natural-language.js.map +1 -0
  115. package/dist/utils/occupancy-helpers.d.ts +63 -0
  116. package/dist/utils/occupancy-helpers.d.ts.map +1 -0
  117. package/dist/utils/occupancy-helpers.js +203 -0
  118. package/dist/utils/occupancy-helpers.js.map +1 -0
  119. package/dist/utils/path-builder.d.ts +10 -0
  120. package/dist/utils/path-builder.d.ts.map +1 -0
  121. package/dist/utils/path-builder.js +34 -0
  122. package/dist/utils/path-builder.js.map +1 -0
  123. package/dist/utils/time-range-validator.d.ts +13 -0
  124. package/dist/utils/time-range-validator.d.ts.map +1 -0
  125. package/dist/utils/time-range-validator.js +65 -0
  126. package/dist/utils/time-range-validator.js.map +1 -0
  127. package/dist/utils/timezone-helpers.d.ts +49 -0
  128. package/dist/utils/timezone-helpers.d.ts.map +1 -0
  129. package/dist/utils/timezone-helpers.js +209 -0
  130. package/dist/utils/timezone-helpers.js.map +1 -0
  131. package/dist/utils/tree-formatter.d.ts +23 -0
  132. package/dist/utils/tree-formatter.d.ts.map +1 -0
  133. package/dist/utils/tree-formatter.js +258 -0
  134. package/dist/utils/tree-formatter.js.map +1 -0
  135. 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,6 @@
1
+ /**
2
+ * TypeScript type definitions for Butlr GraphQL API
3
+ * Based on GraphQL schemas from butlr-api-container
4
+ */
5
+ export {};
6
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/clients/types.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
@@ -0,0 +1,3 @@
1
+ /** Maximum response size in characters. Responses exceeding this are truncated. */
2
+ export declare const CHARACTER_LIMIT = 25000;
3
+ //# sourceMappingURL=constants.d.ts.map
@@ -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,3 @@
1
+ /** Maximum response size in characters. Responses exceeding this are truncated. */
2
+ export const CHARACTER_LIMIT = 25_000;
3
+ //# sourceMappingURL=constants.js.map
@@ -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"}