@butlr/butlr-mcp-server 0.5.1 → 0.6.1

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 (41) hide show
  1. package/README.md +1 -1
  2. package/dist/cache/topology-cache.d.ts +6 -6
  3. package/dist/cache/topology-cache.js +6 -6
  4. package/dist/clients/queries/topology.d.ts +15 -0
  5. package/dist/clients/queries/topology.d.ts.map +1 -1
  6. package/dist/clients/queries/topology.js +49 -0
  7. package/dist/clients/queries/topology.js.map +1 -1
  8. package/dist/clients/reporting-client.d.ts +6 -0
  9. package/dist/clients/reporting-client.d.ts.map +1 -1
  10. package/dist/clients/reporting-client.js.map +1 -1
  11. package/dist/clients/types.d.ts +2 -2
  12. package/dist/clients/types.d.ts.map +1 -1
  13. package/dist/tools/butlr-list-topology.d.ts.map +1 -1
  14. package/dist/tools/butlr-list-topology.js +7 -53
  15. package/dist/tools/butlr-list-topology.js.map +1 -1
  16. package/dist/tools/butlr-search-assets.d.ts +1 -0
  17. package/dist/tools/butlr-search-assets.d.ts.map +1 -1
  18. package/dist/tools/butlr-search-assets.js +59 -15
  19. package/dist/tools/butlr-search-assets.js.map +1 -1
  20. package/dist/tools/butlr-traffic-flow.d.ts.map +1 -1
  21. package/dist/tools/butlr-traffic-flow.js +159 -54
  22. package/dist/tools/butlr-traffic-flow.js.map +1 -1
  23. package/dist/types/responses.d.ts +1 -1
  24. package/dist/types/responses.d.ts.map +1 -1
  25. package/dist/utils/asset-flattener.d.ts.map +1 -1
  26. package/dist/utils/asset-flattener.js +15 -3
  27. package/dist/utils/asset-flattener.js.map +1 -1
  28. package/dist/utils/graphql-helpers.d.ts +26 -1
  29. package/dist/utils/graphql-helpers.d.ts.map +1 -1
  30. package/dist/utils/graphql-helpers.js +30 -5
  31. package/dist/utils/graphql-helpers.js.map +1 -1
  32. package/dist/utils/occupancy-helpers.d.ts +72 -3
  33. package/dist/utils/occupancy-helpers.d.ts.map +1 -1
  34. package/dist/utils/occupancy-helpers.js +129 -18
  35. package/dist/utils/occupancy-helpers.js.map +1 -1
  36. package/dist/utils/topology-merge.d.ts +24 -0
  37. package/dist/utils/topology-merge.d.ts.map +1 -0
  38. package/dist/utils/topology-merge.js +57 -0
  39. package/dist/utils/topology-merge.js.map +1 -0
  40. package/llms.txt +1 -1
  41. package/package.json +1 -1
@@ -1,11 +1,12 @@
1
1
  import { apolloClient } from "../clients/graphql-client.js";
2
2
  import { z } from "zod";
3
- import { GET_FULL_TOPOLOGY } from "../clients/queries/topology.js";
3
+ import { GET_ALL_HIVES, GET_ALL_SENSORS, GET_FULL_TOPOLOGY } from "../clients/queries/topology.js";
4
4
  import { getCachedTopology, setCachedTopology, generateTopologyCacheKey, } from "../cache/topology-cache.js";
5
5
  import { flattenTopology } from "../utils/asset-flattener.js";
6
6
  import { searchAssets } from "../utils/fuzzy-match.js";
7
7
  import { buildAssetPath } from "../utils/path-builder.js";
8
- import { rethrowIfGraphQLError } from "../utils/graphql-helpers.js";
8
+ import { isProductionHive, isProductionSensor, rethrowIfGraphQLError, throwIfGraphQLErrors, } from "../utils/graphql-helpers.js";
9
+ import { mergeSensorsAndHivesIntoTopology } from "../utils/topology-merge.js";
9
10
  import { debug } from "../utils/debug.js";
10
11
  import { withToolErrorHandling } from "../errors/mcp-errors.js";
11
12
  const VALID_ASSET_TYPES = ["site", "building", "floor", "room", "zone", "sensor", "hive"];
@@ -85,15 +86,18 @@ export async function executeSearchAssets(args) {
85
86
  debug("search-assets", `Searching for "${args.query}"` +
86
87
  (args.asset_types ? ` in types: ${args.asset_types.join(",")}` : "") +
87
88
  ` (max: ${maxResults})`);
88
- // Use a generic cache key for full topology (we'll search across it).
89
- // `devicesMerged: false` because this tool intentionally caches the raw
90
- // `sites` tree without running mergeSensorsAndHivesIntoTopology — flattening
91
- // for fuzzy search doesn't need the per-floor sensors/hives arrays. The
92
- // distinct cache key prevents `butlr_list_topology` from reading this
93
- // device-incomplete shape and silently dropping device-level matches.
89
+ // `devicesMerged: true`: sensors and hives are merged onto their floors
90
+ // before flattening, because `flattenTopology` reads devices from
91
+ // `floor.sensors`/`floor.hives` and `GET_FULL_TOPOLOGY` selects neither.
92
+ // Without the merge this tool's corpus holds zero sensors and zero hives,
93
+ // while `VALID_ASSET_TYPES` advertises both and `butlr_hardware_snapshot`
94
+ // tells callers to find sensors here first.
95
+ //
96
+ // This is the same key `butlr_list_topology` writes, deliberately: both now
97
+ // hold the merged shape, so either can prime the other.
94
98
  const cacheKey = generateTopologyCacheKey(process.env.BUTLR_ORG_ID || "default", true, // include devices for comprehensive search
95
99
  true, // include zones
96
- false, // devicesMerged: search_assets does not merge sensors/hives
100
+ true, // devicesMerged: devices are nested onto their floors before flattening
97
101
  undefined);
98
102
  // Try to get cached topology
99
103
  let sites = [];
@@ -106,10 +110,20 @@ export async function executeSearchAssets(args) {
106
110
  // Fetch fresh topology
107
111
  debug("search-assets", "Fetching fresh topology for search");
108
112
  try {
109
- const result = await apolloClient.query({
110
- query: GET_FULL_TOPOLOGY,
111
- fetchPolicy: "network-only",
112
- });
113
+ const [result, sensorsResult, hivesResult] = await Promise.all([
114
+ apolloClient.query({
115
+ query: GET_FULL_TOPOLOGY,
116
+ fetchPolicy: "network-only",
117
+ }),
118
+ apolloClient.query({
119
+ query: GET_ALL_SENSORS,
120
+ fetchPolicy: "network-only",
121
+ }),
122
+ apolloClient.query({
123
+ query: GET_ALL_HIVES,
124
+ fetchPolicy: "network-only",
125
+ }),
126
+ ]);
113
127
  // Apollo can return both data and errors - only fail if we have no data
114
128
  if (!result.data || !result.data.sites || !result.data.sites.data) {
115
129
  // If we have error but no data, throw
@@ -118,12 +132,41 @@ export async function executeSearchAssets(args) {
118
132
  }
119
133
  throw new Error("Invalid response structure from API");
120
134
  }
121
- // Track whether the topology data is partial (errors alongside data)
122
- const partialData = !!result.error;
135
+ // A failed device fetch must surface as an error, not as
136
+ // `total_matches: 0` — and must never be cached under the key
137
+ // butlr_list_topology trusts.
138
+ throwIfGraphQLErrors(sensorsResult);
139
+ throwIfGraphQLErrors(hivesResult);
140
+ // Track whether the topology data is partial (errors alongside data).
141
+ // A device query that errored counts too: caching a tree whose floors
142
+ // carry empty sensor arrays would make every later cache hit report
143
+ // "no sensors in this org" as if it were the answer.
144
+ const partialData = !!result.error || !!sensorsResult.error || !!hivesResult.error;
123
145
  if (partialData) {
124
146
  debug("search-assets", "Warning: GraphQL errors present, data may be partial");
125
147
  }
126
148
  sites = result.data.sites.data;
149
+ // Same shape contract as butlr_list_topology, which reads the cache
150
+ // entry this tool writes: only an explicit array survives. `|| []`
151
+ // here would launder a serialisation regression into a device-empty
152
+ // tree, cached where that tool's own contract check never runs.
153
+ const rawSensors = sensorsResult.data?.sensors?.data;
154
+ if (!Array.isArray(rawSensors)) {
155
+ throw new Error("Unexpected response shape from sensors query (expected array, got " +
156
+ `${rawSensors === null ? "null" : typeof rawSensors}). Please retry; if persistent, the upstream API contract may have changed.`);
157
+ }
158
+ const rawHives = hivesResult.data?.hives?.data;
159
+ if (!Array.isArray(rawHives)) {
160
+ throw new Error("Unexpected response shape from hives query (expected array, got " +
161
+ `${rawHives === null ? "null" : typeof rawHives}). Please retry; if persistent, the upstream API contract may have changed.`);
162
+ }
163
+ // Test/mirror devices are excluded from the corpus, matching
164
+ // butlr_list_topology. A search hit on a mirror sensor would hand the
165
+ // caller an ID that every data tool then refuses.
166
+ const allSensors = rawSensors.filter(isProductionSensor);
167
+ const allHives = rawHives.filter(isProductionHive);
168
+ sites = mergeSensorsAndHivesIntoTopology(sites, allSensors, allHives);
169
+ debug("search-assets", `Merged ${allSensors.length} sensors and ${allHives.length} hives into topology`);
127
170
  // Only cache complete topology data — partial results should be re-fetched
128
171
  if (!partialData) {
129
172
  setCachedTopology(cacheKey, { sites });
@@ -162,6 +205,7 @@ export async function executeSearchAssets(args) {
162
205
  type: match.asset.type,
163
206
  path: buildAssetPath(match.asset),
164
207
  match_score: match.score,
208
+ ...(match.asset.type === "sensor" && match.asset.mode ? { mode: match.asset.mode } : {}),
165
209
  site_id: match.asset.site_id,
166
210
  building_id: match.asset.building_id,
167
211
  floor_id: match.asset.floor_id,
@@ -1 +1 @@
1
- {"version":3,"file":"butlr-search-assets.js","sourceRoot":"","sources":["../../src/tools/butlr-search-assets.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"butlr-search-assets.js","sourceRoot":"","sources":["../../src/tools/butlr-search-assets.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"butlr-traffic-flow.d.ts","sourceRoot":"","sources":["../../src/tools/butlr-traffic-flow.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAGzE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAexB,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AA0CjE,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;EAc/B,CAAC;AA+BJ,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAwBrE;;GAEG;AACH,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,eAAe,gCA+Y7D;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAsB3D"}
1
+ {"version":3,"file":"butlr-traffic-flow.d.ts","sourceRoot":"","sources":["../../src/tools/butlr-traffic-flow.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAGzE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAyBxB,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AA4CjE,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;EAc/B,CAAC;AAiCJ,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,qBAAqB,CAAC,CAAC;AA2CrE;;GAEG;AACH,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,eAAe,gCAggB7D;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAsB3D"}
@@ -2,12 +2,13 @@ import { apolloClient } from "../clients/graphql-client.js";
2
2
  import { gql } from "@apollo/client";
3
3
  import { z } from "zod";
4
4
  import { ReportingRequestBuilder } from "../clients/reporting-client.js";
5
- import { GET_ALL_SENSORS, GET_FULL_TOPOLOGY } from "../clients/queries/topology.js";
6
5
  import { executeSearchAssets } from "./butlr-search-assets.js";
7
6
  import { getTimezoneForAsset, buildTimezoneMetadata, getLocalMidnight, } from "../utils/timezone-helpers.js";
8
7
  import { createValidationError, withToolErrorHandling } from "../errors/mcp-errors.js";
9
8
  import { resolveTimeToIso } from "../utils/time-resolver.js";
10
- import { rethrowIfGraphQLError, throwIfGraphQLErrors } from "../utils/graphql-helpers.js";
9
+ import { rethrowIfGraphQLError, throwIfGraphQLErrors, isKnownTestSensor, } from "../utils/graphql-helpers.js";
10
+ import { fetchTopology, fetchSensorsByIds, fetchSensorsByRoomIds, resolveSensorContext, } from "../utils/occupancy-helpers.js";
11
+ import { detectAssetType } from "../utils/asset-helpers.js";
11
12
  import { debug } from "../utils/debug.js";
12
13
  const timeStringSchema = z.string().refine((val) => {
13
14
  const isoMatch = /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(\.\d{3})?Z?$/.test(val);
@@ -24,7 +25,7 @@ const trafficFlowInputShape = {
24
25
  .min(1, "space_id_or_name cannot be empty")
25
26
  .max(200)
26
27
  .trim()
27
- .describe("Space ID or search term"),
28
+ .describe("Room ID (room_...), sensor ID (sensor_...) for per-access-point counts, or a name search term (matches rooms and traffic sensors)"),
28
29
  time_window: z
29
30
  .enum(["20m", "1h", "today", "custom"])
30
31
  .default("today")
@@ -53,6 +54,7 @@ export const TrafficFlowArgsSchema = z
53
54
  path: ["custom_start"],
54
55
  });
55
56
  const TRAFFIC_FLOW_DESCRIPTION = "Get entry and exit counts for spaces equipped with traffic-mode sensors (typically lobbies, building entrances, elevator banks). Returns total movements, net flow (entries - exits), and hourly breakdown in the space's local timezone. Designed for space activation analysis, security/compliance, and amenity demand forecasting.\n\n" +
57
+ "Accepts a room ID (counts aggregate across the room's traffic sensors), a single sensor ID (sensor_...) for per-access-point counts, or a name to search. Sensors do not need to be assigned to a room to be queried directly, and a name search matches sensors as well as rooms, so an access point does not have to be modeled as a room. (Name search covers devices assigned to a floor; a floor-less or not-yet-MAC-bound sensor is still queryable by its sensor_... ID.)\n\n" +
56
58
  "Primary Users:\n" +
57
59
  "- Facilities Manager: Monitor building entry/exit patterns, optimize security staffing, validate badge system accuracy\n" +
58
60
  "- Workplace Manager: Understand amenity traffic (café, gym, event spaces), measure activation of new spaces\n" +
@@ -66,7 +68,8 @@ const TRAFFIC_FLOW_DESCRIPTION = "Get entry and exit counts for spaces equipped
66
68
  '5. "Show me lobby traffic for the last 20 minutes"\n' +
67
69
  '6. "What\'s the net flow (entries - exits) for Floor 2 today?"\n' +
68
70
  '7. "How many people entered the event space during lunch hour (12-1pm)?"\n' +
69
- '8. "Compare today\'s building entrance traffic to typical Monday"\n\n' +
71
+ '8. "Compare today\'s building entrance traffic to typical Monday"\n' +
72
+ '9. "How many people came through the north elevator door today?" (a single sensor, by name or by sensor_... ID)\n\n' +
70
73
  "When to Use:\n" +
71
74
  "- Entry/exit counts for lobbies, building entrances, elevator banks, or amenities\n" +
72
75
  "- Understand peak traffic hours for security, cleaning, or HVAC planning\n" +
@@ -100,69 +103,138 @@ const GET_ROOM_SENSORS = gql `
100
103
  }
101
104
  }
102
105
  `;
106
+ /**
107
+ * Fetch a room and its floor/building context. Kept separate from the shared
108
+ * topology fetch so it can run in parallel with it.
109
+ */
110
+ async function fetchRoom(roomId) {
111
+ try {
112
+ const result = await apolloClient.query({
113
+ query: GET_ROOM_SENSORS,
114
+ variables: { roomId },
115
+ fetchPolicy: "network-only",
116
+ });
117
+ throwIfGraphQLErrors(result);
118
+ return result;
119
+ }
120
+ catch (error) {
121
+ rethrowIfGraphQLError(error);
122
+ throw error;
123
+ }
124
+ }
103
125
  /**
104
126
  * Execute traffic flow tool
105
127
  */
106
128
  export async function executeTrafficFlow(args) {
107
129
  let spaceId = args.space_id_or_name;
108
- // If not an ID, search for the space
109
- if (!spaceId.match(/^room_/)) {
130
+ // One prefix detector for both branches. `asset-helpers.ts` is the single
131
+ // place that encodes ID prefixes, so re-testing the string with a local
132
+ // regex here would be a second thing to keep in sync with it.
133
+ let assetType = detectAssetType(spaceId);
134
+ // If it is neither a room nor a sensor ID, treat it as a search term.
135
+ // Direct sensor queries skip room resolution entirely: the reporting API
136
+ // serves sensor-level traffic via the sensors filter, so a sensor does not
137
+ // need a room wrapper to be queryable.
138
+ if (assetType !== "sensor" && assetType !== "room") {
110
139
  debug("traffic-flow", `Searching for space: "${args.space_id_or_name}"`);
140
+ // Both types, so a natural-language query can reach the sensor path too.
141
+ // The customer ask behind sensor support was to stop modeling each door as
142
+ // a room; searching rooms only would leave the capability reachable solely
143
+ // by callers who already know the sensor ID.
111
144
  const searchResults = await executeSearchAssets({
112
145
  query: args.space_id_or_name,
113
- asset_types: ["room"], // Traffic is room-level
146
+ asset_types: ["room", "sensor"],
114
147
  max_results: 5,
115
148
  });
116
149
  if (searchResults.matches.length === 0) {
117
- throw new Error(`No rooms found matching "${args.space_id_or_name}". Try a different search term.`);
150
+ throw new Error(`No rooms or sensors found matching "${args.space_id_or_name}". Try a different search term, or pass a room ID (room_...) or sensor ID (sensor_...) directly. butlr_search_assets finds both by name or MAC; butlr_hardware_snapshot lists sensors with their health.`);
118
151
  }
119
- spaceId = searchResults.matches[0].id;
120
- debug("traffic-flow", `Using best match: ${searchResults.matches[0].name} (${spaceId})`);
152
+ // Take the highest-ranked candidate that can actually serve traffic: any
153
+ // room (validated downstream), or a traffic-mode sensor. Taking
154
+ // matches[0] unconditionally let a presence sensor whose name outranks
155
+ // the intended room dead-end the whole query with the right room sitting
156
+ // at index 1.
157
+ const viable = searchResults.matches.find((m) => m.type === "room" || (m.type === "sensor" && m.mode === "traffic"));
158
+ if (!viable) {
159
+ throw new Error(`"${args.space_id_or_name}" matched only presence-mode sensors, which have no entry/exit counts. Try butlr_get_current_occupancy for occupancy data, or search for a room or traffic-mode sensor.`);
160
+ }
161
+ spaceId = viable.id;
162
+ assetType = detectAssetType(spaceId);
163
+ debug("traffic-flow", `Using best viable match: ${viable.name} (${spaceId}, ${assetType})`);
121
164
  }
122
- // Query room details, topology for timezone, and all sensors
123
- let room = null;
165
+ const isSensorQuery = assetType === "sensor";
166
+ // Query asset details, topology for timezone, and sensors
167
+ let displayName = "";
124
168
  let roomPath = "";
125
169
  let timezone;
126
170
  let tzMetadata;
127
171
  let timezoneFallback = false;
128
172
  let trafficSensors = [];
129
- try {
130
- const [roomResult, topoResult, sensorsResult] = await Promise.all([
131
- apolloClient.query({
132
- query: GET_ROOM_SENSORS,
133
- variables: { roomId: spaceId },
134
- fetchPolicy: "network-only",
135
- }),
136
- apolloClient.query({
137
- query: GET_FULL_TOPOLOGY,
138
- fetchPolicy: "network-only",
139
- }),
140
- apolloClient.query({
141
- query: GET_ALL_SENSORS,
142
- fetchPolicy: "network-only",
143
- }),
173
+ if (isSensorQuery) {
174
+ // One sensor by ID, not the org's whole inventory: the `sensors` root
175
+ // field accepts an `ids` argument, and nothing on this branch needs the
176
+ // full list. A capped or paged `sensors` field would otherwise turn a real
177
+ // sensor past the cap into a bogus "not found".
178
+ const [topology, sensors] = await Promise.all([fetchTopology(), fetchSensorsByIds([spaceId])]);
179
+ const sensor = sensors.find((s) => s.id === spaceId);
180
+ if (!sensor) {
181
+ throw new Error(`Sensor ${spaceId} not found`);
182
+ }
183
+ // Resolved up front so the rejections below can consult real topology
184
+ // rather than pointing the caller at an ID that may not resolve.
185
+ const sensorContext = resolveSensorContext(sensor, topology);
186
+ // Only a KNOWN test device is refused. isProductionSensor is stricter (it
187
+ // also drops MAC-less placeholder rows) and is the right filter for the
188
+ // room path's aggregate below, but applying it to a caller's explicit
189
+ // request would tell the owner of a real, not yet MAC bound sensor that
190
+ // their device is fake and leave them no way to query it.
191
+ if (isKnownTestSensor(sensor)) {
192
+ throw new Error(`Sensor "${sensor.name}" (${spaceId}) is a test/mirror device, not a production sensor — it has no real traffic data.`);
193
+ }
194
+ if (sensor.mode !== "traffic") {
195
+ // Only name the room when it actually resolves. A dangling room_id (the
196
+ // room was deleted) would otherwise send the caller to a second dead
197
+ // end: butlr_get_current_occupancy accepts the room_ prefix, finds no
198
+ // room, and answers "no sensors configured".
199
+ const suggestion = sensorContext.room
200
+ ? `Try butlr_get_current_occupancy with its room (${sensorContext.room.id}) instead.`
201
+ : `Try butlr_get_asset_details or butlr_hardware_snapshot to inspect it.`;
202
+ throw new Error(`Sensor "${sensor.name}" is ${sensor.mode ? `a ${sensor.mode}-mode sensor` : "not a traffic-mode sensor"}, so it has no entry/exit counts. ${suggestion}`);
203
+ }
204
+ trafficSensors = [sensor];
205
+ displayName = sensorContext.name;
206
+ roomPath = sensorContext.path;
207
+ timezone = sensorContext.timezone;
208
+ tzMetadata = sensorContext.tzMetadata;
209
+ timezoneFallback = sensorContext.timezoneFallback;
210
+ debug("traffic-flow", `Direct sensor query: ${displayName} (${spaceId})`);
211
+ }
212
+ else {
213
+ // The room's own sensor rows via `sensors(room_ids:)` rather than the
214
+ // org-wide inventory. The rows arrive unfiltered and only KNOWN test
215
+ // devices (mirror/fake prefixes) are dropped: this list drives the
216
+ // refusal gate and sensor_count, never the totals (the reporting API
217
+ // aggregates by room_id server-side), so a provisioned-but-MAC-less
218
+ // sensor must not disqualify its room the way the stricter
219
+ // isProductionSensor aggregate filter would.
220
+ const [topology, roomResult, roomSensorRows] = await Promise.all([
221
+ fetchTopology(),
222
+ fetchRoom(spaceId),
223
+ fetchSensorsByRoomIds([spaceId]),
144
224
  ]);
145
- throwIfGraphQLErrors(roomResult);
146
- throwIfGraphQLErrors(topoResult);
147
- throwIfGraphQLErrors(sensorsResult);
148
- if (!roomResult.data?.room) {
225
+ if (!roomResult?.data?.room) {
149
226
  throw new Error(`Room ${spaceId} not found`);
150
227
  }
151
- room = roomResult.data.room;
228
+ const room = roomResult.data.room;
229
+ displayName = room.name;
152
230
  const floor = room.floor;
153
231
  const building = floor?.building;
154
232
  roomPath = building ? `${building.name} > ${floor.name} > ${room.name}` : room.name;
155
- // Get timezone for this room
156
- const sites = topoResult.data?.sites?.data || [];
157
- const buildings = sites.flatMap((s) => s.buildings || []);
158
- const floors = buildings.flatMap((b) => b.floors || []);
159
- const resolved = getTimezoneForAsset(spaceId, "room", floors, buildings, sites);
233
+ const resolved = getTimezoneForAsset(spaceId, "room", topology.floors, topology.buildings, topology.sites);
160
234
  timezone = resolved.timezone;
161
235
  timezoneFallback = resolved.isFallback;
162
236
  tzMetadata = buildTimezoneMetadata(timezone);
163
- // Analyze traffic sensors for this room
164
- const allSensors = sensorsResult.data?.sensors?.data || [];
165
- const roomSensors = allSensors.filter((s) => (s.room_id || s.roomID) === spaceId);
237
+ const roomSensors = roomSensorRows.filter((s) => !isKnownTestSensor(s));
166
238
  // Room-level traffic counts every traffic-mode sensor bound to the room.
167
239
  // See `resolveAssetContext` in occupancy-helpers.ts for the canonical
168
240
  // rationale: `is_entrance` is a semantic flag, not a routing one, and the
@@ -173,10 +245,6 @@ export async function executeTrafficFlow(args) {
173
245
  }
174
246
  debug("traffic-flow", `Found ${trafficSensors.length} traffic sensors for room`);
175
247
  }
176
- catch (error) {
177
- rethrowIfGraphQLError(error);
178
- throw error;
179
- }
180
248
  // Calculate time range
181
249
  const timeWindow = args.time_window || "today";
182
250
  let start;
@@ -239,9 +307,10 @@ export async function executeTrafficFlow(args) {
239
307
  // enclosing hour; native 1h bucket labels pass through untouched (they may
240
308
  // sit on a non-UTC-aligned local grid, e.g. :30-offset timezones).
241
309
  let trafficData = [];
310
+ const queryAssetType = isSensorQuery ? "sensor" : "room";
242
311
  try {
243
312
  const response = await new ReportingRequestBuilder()
244
- .assets("room", [spaceId])
313
+ .assets(queryAssetType, [spaceId])
245
314
  .measurements(["traffic"])
246
315
  .timeRange(start, stop)
247
316
  .window(windowEvery, "sum", timezone) // Sum traffic per bucket, aligned to local timezone
@@ -273,7 +342,7 @@ export async function executeTrafficFlow(args) {
273
342
  if (tailStartMs < stopDate.getTime() && Date.now() - stopDate.getTime() < recentStopMs) {
274
343
  try {
275
344
  const tailResponse = await new ReportingRequestBuilder()
276
- .assets("room", [spaceId])
345
+ .assets(queryAssetType, [spaceId])
277
346
  .measurements(["traffic"])
278
347
  .timeRange(new Date(tailStartMs).toISOString(), stop)
279
348
  .window("1m", "sum", timezone)
@@ -294,7 +363,7 @@ export async function executeTrafficFlow(args) {
294
363
  rethrowIfGraphQLError(error);
295
364
  debug("traffic-flow", "Failed to get traffic data:", error);
296
365
  const msg = error instanceof Error ? error.message : String(error);
297
- throw new Error(`Failed to get traffic data for ${room.name}. ${msg}`);
366
+ throw new Error(`Failed to get traffic data for ${displayName}. ${msg}`);
298
367
  }
299
368
  // Parse traffic data: group by time, then by sensor, then aggregate
300
369
  // Store time separately to preserve full ISO timestamp. The fine flag is
@@ -394,13 +463,51 @@ export async function executeTrafficFlow(args) {
394
463
  }
395
464
  // Build enhanced summary
396
465
  const netFlowStr = netFlow >= 0 ? `+${netFlow}` : `${netFlow}`;
397
- const summary = `${room.name}: ${totalTraffic.toLocaleString()} movements ${periodDescription} (${totalEntries.toLocaleString()} entries, ${totalExits.toLocaleString()} exits, net flow: ${netFlowStr})`;
466
+ const summary = `${displayName}: ${totalTraffic.toLocaleString()} movements ${periodDescription} (${totalEntries.toLocaleString()} entries, ${totalExits.toLocaleString()} exits, net flow: ${netFlowStr})`;
467
+ // Compose the response warning. Two independent conditions can raise one and
468
+ // both matter, so they are joined rather than one silently shadowing the other.
469
+ const warnings = [];
470
+ // Offline warning — computed here, after the totals, because it must only
471
+ // qualify a zero the outage can actually explain. `is_online` is the
472
+ // liveness signal (NOT `installation_status`, a provisioning-workflow
473
+ // checkbox that nothing in the data pipeline reads and fleets routinely
474
+ // never flip). Truthiness matches butlr_hardware_snapshot: null/absent
475
+ // counts as offline. A last heartbeat at/after the window's stop means the
476
+ // outage began after the queried range, so the zero is real data — no
477
+ // warning. Sensors that dropped and reconnected inside the window can't be
478
+ // detected from a point-in-time heartbeat; that gap is documented, not
479
+ // guessed at.
480
+ const allSensorsOffline = trafficSensors.length > 0 && trafficSensors.every((s) => !s.is_online);
481
+ if (allSensorsOffline && totalTraffic === 0) {
482
+ const stopMs = new Date(stop).getTime();
483
+ const latestHeartbeatMs = Math.max(0, ...trafficSensors.map((s) => s.last_heartbeat || 0)) * 1000;
484
+ const outageBeganAfterWindow = latestHeartbeatMs >= stopMs;
485
+ if (!outageBeganAfterWindow) {
486
+ const lastSeen = latestHeartbeatMs > 0 ? ` (last seen ${new Date(latestHeartbeatMs).toISOString()})` : "";
487
+ warnings.push(isSensorQuery
488
+ ? `Sensor "${displayName}" is currently offline${lastSeen}. The zero count for this window may reflect the outage rather than actual traffic. Check butlr_get_asset_details for its current status.`
489
+ : `All ${trafficSensors.length} traffic sensor(s) in this room are currently offline${lastSeen}. The zero count for this window may reflect the outage rather than actual traffic. Check butlr_get_asset_details for their status.`);
490
+ }
491
+ }
492
+ if (usedUtcFallback) {
493
+ // Window-aware copy. The midnight sentence is only true on the `today`
494
+ // branch. The unassigned-sensor path sets timezoneFallback for every
495
+ // room-less, floor-less sensor, so on a 20m/1h/custom window the old text
496
+ // fired routinely and sent the reader chasing a day-alignment problem that
497
+ // no part of the query involved.
498
+ // `timezone` holds whatever the fallback actually resolved to — UTC, or
499
+ // BUTLR_TIMEZONE when configured — so the copy names it rather than
500
+ // asserting UTC for a query that may have used something else.
501
+ warnings.push(timeWindow === "today"
502
+ ? `Could not determine local timezone for this space; timestamps use midnight in the fallback timezone (${timezone}). 'Today' may not align with the site's actual local day.`
503
+ : `Could not determine local timezone for this space; hourly bucket alignment falls back to ${timezone}, so buckets may not line up with the site's local hours. The queried range itself is unaffected.`);
504
+ }
398
505
  // Build response with timezone metadata and in/out breakdown
399
506
  const response = {
400
507
  space: {
401
- id: room.id,
402
- name: room.name,
403
- type: "room",
508
+ id: spaceId,
509
+ name: displayName,
510
+ type: isSensorQuery ? "sensor" : "room",
404
511
  path: roomPath,
405
512
  sensor_mode: "traffic",
406
513
  ...tzMetadata,
@@ -435,9 +542,7 @@ export async function executeTrafficFlow(args) {
435
542
  ...(Date.now() - new Date(stop).getTime() < 10 * 60 * 1000 && {
436
543
  freshness_note: "Traffic data becomes available roughly 5-10 minutes after events occur. Counts for the most recent ~10 minutes may still be incomplete; re-query later for final numbers.",
437
544
  }),
438
- ...(usedUtcFallback && {
439
- warning: "Could not determine local timezone for this space; timestamps use UTC midnight as fallback. 'Today' may not align with the site's actual local day.",
440
- }),
545
+ ...(warnings.length > 0 && { warning: warnings.join(" ") }),
441
546
  };
442
547
  return response;
443
548
  }
@@ -1 +1 @@
1
- {"version":3,"file":"butlr-traffic-flow.js","sourceRoot":"","sources":["../../src/tools/butlr-traffic-flow.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"butlr-traffic-flow.js","sourceRoot":"","sources":["../../src/tools/butlr-traffic-flow.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAC5D,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AACrC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AACzE,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EACL,mBAAmB,EACnB,qBAAqB,EACrB,gBAAgB,GACjB,MAAM,8BAA8B,CAAC;AAEtC,OAAO,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AACvF,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EACL,qBAAqB,EACrB,oBAAoB,EACpB,iBAAiB,GAClB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EACL,aAAa,EACb,iBAAiB,EACjB,qBAAqB,EACrB,oBAAoB,GACrB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAG1C,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,MAAM,CACxC,CAAC,GAAG,EAAE,EAAE;IACN,MAAM,QAAQ,GAAG,mDAAmD,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC/E,MAAM,aAAa,GAAG,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC9C,MAAM,KAAK,GAAG,GAAG,KAAK,KAAK,CAAC;IAC5B,OAAO,QAAQ,IAAI,aAAa,IAAI,KAAK,CAAC;AAC5C,CAAC,EACD;IACE,OAAO,EACL,2FAA2F;CAC9F,CACF,CAAC;AAEF,gFAAgF;AAChF,MAAM,qBAAqB,GAAG;IAC5B,gBAAgB,EAAE,CAAC;SAChB,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,EAAE,kCAAkC,CAAC;SAC1C,GAAG,CAAC,GAAG,CAAC;SACR,IAAI,EAAE;SACN,QAAQ,CACP,mIAAmI,CACpI;IAEH,WAAW,EAAE,CAAC;SACX,IAAI,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;SACtC,OAAO,CAAC,OAAO,CAAC;SAChB,QAAQ,CAAC,+BAA+B,CAAC;IAE5C,YAAY,EAAE,CAAC;SACZ,MAAM,EAAE;SACR,IAAI,CAAC,gBAAgB,CAAC;SACtB,QAAQ,EAAE;SACV,QAAQ,CAAC,mFAAmF,CAAC;IAEhG,WAAW,EAAE,CAAC;SACX,MAAM,EAAE;SACR,IAAI,CAAC,gBAAgB,CAAC;SACtB,QAAQ,EAAE;SACV,QAAQ,CAAC,qCAAqC,CAAC;CACnD,CAAC;AAEF,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC;KACnC,MAAM,CAAC,qBAAqB,CAAC;KAC7B,MAAM,EAAE;KACR,MAAM,CACL,CAAC,IAAI,EAAE,EAAE;IACP,IAAI,IAAI,CAAC,WAAW,KAAK,QAAQ,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;QACxD,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC,EACD;IACE,OAAO,EAAE,oDAAoD;IAC7D,IAAI,EAAE,CAAC,cAAc,CAAC;CACvB,CACF,CAAC;AAEJ,MAAM,wBAAwB,GAC5B,4UAA4U;IAC5U,sdAAsd;IACtd,kBAAkB;IAClB,0HAA0H;IAC1H,+GAA+G;IAC/G,2HAA2H;IAC3H,2GAA2G;IAC3G,oBAAoB;IACpB,sDAAsD;IACtD,gEAAgE;IAChE,sEAAsE;IACtE,8DAA8D;IAC9D,sDAAsD;IACtD,kEAAkE;IAClE,4EAA4E;IAC5E,qEAAqE;IACrE,qHAAqH;IACrH,gBAAgB;IAChB,qFAAqF;IACrF,4EAA4E;IAC5E,iEAAiE;IACjE,4DAA4D;IAC5D,wFAAwF;IACxF,oBAAoB;IACpB,mHAAmH;IACnH,0FAA0F;IAC1F,+FAA+F;IAC/F,qPAAqP;IACrP,2GAA2G,CAAC;AAI9G,MAAM,gBAAgB,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;CAoB3B,CAAC;AAEF;;;GAGG;AACH,KAAK,UAAU,SAAS,CAAC,MAAc;IACrC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,KAAK,CAAiB;YACtD,KAAK,EAAE,gBAAgB;YACvB,SAAS,EAAE,EAAE,MAAM,EAAE;YACrB,WAAW,EAAE,cAAc;SAC5B,CAAC,CAAC;QACH,oBAAoB,CAAC,MAAM,CAAC,CAAC;QAC7B,OAAO,MAAM,CAAC;IAChB,CAAC;IAAC,OAAO,KAAc,EAAE,CAAC;QACxB,qBAAqB,CAAC,KAAK,CAAC,CAAC;QAC7B,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,IAAqB;IAC5D,IAAI,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC;IAEpC,0EAA0E;IAC1E,wEAAwE;IACxE,8DAA8D;IAC9D,IAAI,SAAS,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;IAEzC,sEAAsE;IACtE,yEAAyE;IACzE,2EAA2E;IAC3E,uCAAuC;IACvC,IAAI,SAAS,KAAK,QAAQ,IAAI,SAAS,KAAK,MAAM,EAAE,CAAC;QACnD,KAAK,CAAC,cAAc,EAAE,yBAAyB,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAC;QAEzE,yEAAyE;QACzE,2EAA2E;QAC3E,2EAA2E;QAC3E,6CAA6C;QAC7C,MAAM,aAAa,GAAG,MAAM,mBAAmB,CAAC;YAC9C,KAAK,EAAE,IAAI,CAAC,gBAAgB;YAC5B,WAAW,EAAE,CAAC,MAAM,EAAE,QAAQ,CAAC;YAC/B,WAAW,EAAE,CAAC;SACf,CAAC,CAAC;QAEH,IAAI,aAAa,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvC,MAAM,IAAI,KAAK,CACb,uCAAuC,IAAI,CAAC,gBAAgB,0MAA0M,CACvQ,CAAC;QACJ,CAAC;QAED,yEAAyE;QACzE,gEAAgE;QAChE,uEAAuE;QACvE,yEAAyE;QACzE,cAAc;QACd,MAAM,MAAM,GAAG,aAAa,CAAC,OAAO,CAAC,IAAI,CACvC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,IAAI,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,CAC1E,CAAC;QACF,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CACb,IAAI,IAAI,CAAC,gBAAgB,yKAAyK,CACnM,CAAC;QACJ,CAAC;QAED,OAAO,GAAG,MAAM,CAAC,EAAE,CAAC;QACpB,SAAS,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;QAErC,KAAK,CAAC,cAAc,EAAE,4BAA4B,MAAM,CAAC,IAAI,KAAK,OAAO,KAAK,SAAS,GAAG,CAAC,CAAC;IAC9F,CAAC;IAED,MAAM,aAAa,GAAG,SAAS,KAAK,QAAQ,CAAC;IAE7C,0DAA0D;IAC1D,IAAI,WAAW,GAAG,EAAE,CAAC;IACrB,IAAI,QAAQ,GAAG,EAAE,CAAC;IAClB,IAAI,QAAgB,CAAC;IACrB,IAAI,UAA4B,CAAC;IACjC,IAAI,gBAAgB,GAAG,KAAK,CAAC;IAC7B,IAAI,cAAc,GAAa,EAAE,CAAC;IAElC,IAAI,aAAa,EAAE,CAAC;QAClB,sEAAsE;QACtE,wEAAwE;QACxE,2EAA2E;QAC3E,gDAAgD;QAChD,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,aAAa,EAAE,EAAE,iBAAiB,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;QAE/F,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,OAAO,CAAC,CAAC;QACrD,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,UAAU,OAAO,YAAY,CAAC,CAAC;QACjD,CAAC;QAED,sEAAsE;QACtE,iEAAiE;QACjE,MAAM,aAAa,GAAG,oBAAoB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QAE7D,0EAA0E;QAC1E,wEAAwE;QACxE,sEAAsE;QACtE,wEAAwE;QACxE,0DAA0D;QAC1D,IAAI,iBAAiB,CAAC,MAAM,CAAC,EAAE,CAAC;YAC9B,MAAM,IAAI,KAAK,CACb,WAAW,MAAM,CAAC,IAAI,MAAM,OAAO,mFAAmF,CACvH,CAAC;QACJ,CAAC;QACD,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAC9B,wEAAwE;YACxE,qEAAqE;YACrE,sEAAsE;YACtE,6CAA6C;YAC7C,MAAM,UAAU,GAAG,aAAa,CAAC,IAAI;gBACnC,CAAC,CAAC,kDAAkD,aAAa,CAAC,IAAI,CAAC,EAAE,YAAY;gBACrF,CAAC,CAAC,uEAAuE,CAAC;YAC5E,MAAM,IAAI,KAAK,CACb,WAAW,MAAM,CAAC,IAAI,QACpB,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,IAAI,cAAc,CAAC,CAAC,CAAC,2BACjD,qCAAqC,UAAU,EAAE,CAClD,CAAC;QACJ,CAAC;QAED,cAAc,GAAG,CAAC,MAAM,CAAC,CAAC;QAC1B,WAAW,GAAG,aAAa,CAAC,IAAI,CAAC;QACjC,QAAQ,GAAG,aAAa,CAAC,IAAI,CAAC;QAC9B,QAAQ,GAAG,aAAa,CAAC,QAAQ,CAAC;QAClC,UAAU,GAAG,aAAa,CAAC,UAAU,CAAC;QACtC,gBAAgB,GAAG,aAAa,CAAC,gBAAgB,CAAC;QAElD,KAAK,CAAC,cAAc,EAAE,wBAAwB,WAAW,KAAK,OAAO,GAAG,CAAC,CAAC;IAC5E,CAAC;SAAM,CAAC;QACN,sEAAsE;QACtE,qEAAqE;QACrE,mEAAmE;QACnE,qEAAqE;QACrE,oEAAoE;QACpE,2DAA2D;QAC3D,6CAA6C;QAC7C,MAAM,CAAC,QAAQ,EAAE,UAAU,EAAE,cAAc,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YAC/D,aAAa,EAAE;YACf,SAAS,CAAC,OAAO,CAAC;YAClB,qBAAqB,CAAC,CAAC,OAAO,CAAC,CAAC;SACjC,CAAC,CAAC;QAEH,IAAI,CAAC,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;YAC5B,MAAM,IAAI,KAAK,CAAC,QAAQ,OAAO,YAAY,CAAC,CAAC;QAC/C,CAAC;QAED,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;QAClC,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC;QACxB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACzB,MAAM,QAAQ,GAAG,KAAK,EAAE,QAAQ,CAAC;QACjC,QAAQ,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,IAAI,MAAM,KAAK,CAAC,IAAI,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;QAEpF,MAAM,QAAQ,GAAG,mBAAmB,CAClC,OAAO,EACP,MAAM,EACN,QAAQ,CAAC,MAAM,EACf,QAAQ,CAAC,SAAS,EAClB,QAAQ,CAAC,KAAK,CACf,CAAC;QAEF,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC;QAC7B,gBAAgB,GAAG,QAAQ,CAAC,UAAU,CAAC;QACvC,UAAU,GAAG,qBAAqB,CAAC,QAAQ,CAAC,CAAC;QAE7C,MAAM,WAAW,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC;QACxE,yEAAyE;QACzE,sEAAsE;QACtE,0EAA0E;QAC1E,oDAAoD;QACpD,cAAc,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC;QAEjE,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAChC,MAAM,IAAI,KAAK,CACb,SAAS,IAAI,CAAC,IAAI,mGAAmG,CACtH,CAAC;QACJ,CAAC;QAED,KAAK,CAAC,cAAc,EAAE,SAAS,cAAc,CAAC,MAAM,2BAA2B,CAAC,CAAC;IACnF,CAAC;IAED,uBAAuB;IACvB,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,IAAI,OAAO,CAAC;IAC/C,IAAI,KAAa,CAAC;IAClB,IAAI,IAAI,GAAW,KAAK,CAAC;IACzB,IAAI,iBAAyB,CAAC;IAC9B,IAAI,eAAe,GAAG,gBAAgB,CAAC;IAEvC,IAAI,UAAU,KAAK,QAAQ,EAAE,CAAC;QAC5B,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;YACvB,MAAM,qBAAqB,CAAC,oDAAoD,CAAC,CAAC;QACpF,CAAC;QACD,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC;QAC1B,IAAI,GAAG,IAAI,CAAC,WAAW,IAAI,KAAK,CAAC;QACjC,iBAAiB,GAAG,eAAe,CAAC;IACtC,CAAC;SAAM,IAAI,UAAU,KAAK,KAAK,EAAE,CAAC;QAChC,KAAK,GAAG,MAAM,CAAC;QACf,iBAAiB,GAAG,iBAAiB,CAAC;IACxC,CAAC;SAAM,IAAI,UAAU,KAAK,IAAI,EAAE,CAAC;QAC/B,KAAK,GAAG,KAAK,CAAC;QACd,iBAAiB,GAAG,WAAW,CAAC;IAClC,CAAC;SAAM,CAAC;QACN,iDAAiD;QACjD,MAAM,aAAa,GAAG,gBAAgB,CAAC,IAAI,IAAI,EAAE,EAAE,QAAQ,CAAC,CAAC;QAE7D,IAAI,KAAK,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;YACnC,6DAA6D;YAC7D,eAAe,GAAG,IAAI,CAAC;QACzB,CAAC;QAED,oEAAoE;QACpE,qFAAqF;QACrF,MAAM,WAAW,GAAG,IAAI,IAAI,EAAE,CAAC;QAC/B,WAAW,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACpC,IAAI,QAAQ,KAAK,KAAK,IAAI,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,OAAO,EAAE,GAAG,WAAW,CAAC,OAAO,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC;YAC3F,wEAAwE;YACxE,qCAAqC;YACrC,eAAe,GAAG,IAAI,CAAC;QACzB,CAAC;QAED,KAAK,GAAG,aAAa,CAAC,WAAW,EAAE,CAAC;QACpC,iBAAiB,GAAG,eAAe;YACjC,CAAC,CAAC,sBAAsB;YACxB,CAAC,CAAC,UAAU,UAAU,CAAC,aAAa,GAAG,CAAC;QAE1C,KAAK,CACH,cAAc,EACd,mBAAmB,KAAK,cAAc,eAAe,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,UAAU,CAAC,aAAa,GAAG,CACrG,CAAC;IACJ,CAAC;IAED,qEAAqE;IACrE,qEAAqE;IACrE,sEAAsE;IACtE,KAAK,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;IAChC,IAAI,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;IAE9B,sEAAsE;IACtE,2EAA2E;IAC3E,mEAAmE;IACnE,yEAAyE;IACzE,0EAA0E;IAC1E,6CAA6C;IAC7C,MAAM,UAAU,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC;IACxE,MAAM,WAAW,GAAG,UAAU,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;IAEnE,KAAK,CAAC,cAAc,EAAE,yBAAyB,KAAK,OAAO,IAAI,YAAY,WAAW,GAAG,CAAC,CAAC;IAU3F,0EAA0E;IAC1E,2EAA2E;IAC3E,mEAAmE;IACnE,IAAI,WAAW,GAAgD,EAAE,CAAC;IAElE,MAAM,cAAc,GAAG,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC;IAEzD,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,IAAI,uBAAuB,EAAE;aACjD,MAAM,CAAC,cAAc,EAAE,CAAC,OAAO,CAAC,CAAC;aACjC,YAAY,CAAC,CAAC,SAAS,CAAC,CAAC;aACzB,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC;aACtB,MAAM,CAAC,WAAW,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC,oDAAoD;aACzF,OAAO,EAAE,CAAC;QAEb,4BAA4B;QAC5B,sEAAsE;QACtE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YAClC,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;QAChE,CAAC;QAED,WAAW,GAAI,QAAQ,CAAC,IAA2B,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC9D,GAAG,CAAC;YACJ,IAAI,EAAE,WAAW,KAAK,IAAI;SAC3B,CAAC,CAAC,CAAC;QAEJ,KAAK,CACH,cAAc,EACd,YAAY,WAAW,CAAC,MAAM,qBAAqB,cAAc,CAAC,MAAM,UAAU,CACnF,CAAC;QAEF,uEAAuE;QACvE,yEAAyE;QACzE,wEAAwE;QACxE,uEAAuE;QACvE,kEAAkE;QAClE,uEAAuE;QACvE,wEAAwE;QACxE,yDAAyD;QACzD,IAAI,WAAW,KAAK,IAAI,EAAE,CAAC;YACzB,MAAM,QAAQ,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC;YAChC,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC;YAClC,MAAM,UAAU,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;YACtC,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,QAAQ,CAAC,OAAO,EAAE,GAAG,UAAU,CAAC,CAAC;YACnF,MAAM,YAAY,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;YACxC,IAAI,WAAW,GAAG,QAAQ,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,CAAC,OAAO,EAAE,GAAG,YAAY,EAAE,CAAC;gBACvF,IAAI,CAAC;oBACH,MAAM,YAAY,GAAG,MAAM,IAAI,uBAAuB,EAAE;yBACrD,MAAM,CAAC,cAAc,EAAE,CAAC,OAAO,CAAC,CAAC;yBACjC,YAAY,CAAC,CAAC,SAAS,CAAC,CAAC;yBACzB,SAAS,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC,WAAW,EAAE,EAAE,IAAI,CAAC;yBACpD,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,QAAQ,CAAC;yBAC7B,OAAO,EAAE,CAAC;oBACb,IAAI,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;wBACrC,WAAW,GAAG,WAAW,CAAC,MAAM,CAC7B,YAAY,CAAC,IAA2B,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAC7E,CAAC;wBACF,KAAK,CAAC,cAAc,EAAE,UAAU,YAAY,CAAC,IAAI,CAAC,MAAM,wBAAwB,CAAC,CAAC;oBACpF,CAAC;gBACH,CAAC;gBAAC,OAAO,SAAkB,EAAE,CAAC;oBAC5B,uDAAuD;oBACvD,KAAK,CAAC,cAAc,EAAE,iCAAiC,EAAE,SAAS,CAAC,CAAC;gBACtE,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAAC,OAAO,KAAc,EAAE,CAAC;QACxB,qBAAqB,CAAC,KAAK,CAAC,CAAC;QAC7B,KAAK,CAAC,cAAc,EAAE,6BAA6B,EAAE,KAAK,CAAC,CAAC;QAC5D,MAAM,GAAG,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACnE,MAAM,IAAI,KAAK,CAAC,kCAAkC,WAAW,KAAK,GAAG,EAAE,CAAC,CAAC;IAC3E,CAAC;IAED,oEAAoE;IACpE,yEAAyE;IACzE,uEAAuE;IACvE,uEAAuE;IACvE,mDAAmD;IACnD,MAAM,YAAY,GAAG,IAAI,GAAG,EAGzB,CAAC;IAEJ,KAAK,MAAM,KAAK,IAAI,WAAW,EAAE,CAAC;QAChC,MAAM,GAAG,GAAG,GAAG,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;QAC7D,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YAC3B,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE;gBACpB,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,SAAS,EAAE,KAAK,CAAC,SAAS;gBAC1B,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,EAAE,EAAE,CAAC;gBACL,GAAG,EAAE,CAAC;aACP,CAAC,CAAC;QACL,CAAC;QAED,MAAM,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,GAAG,CAAE,CAAC;QACtC,IAAI,KAAK,CAAC,KAAK,KAAK,IAAI,EAAE,CAAC;YACzB,MAAM,CAAC,EAAE,GAAG,KAAK,CAAC,KAAK,IAAI,CAAC,CAAC;QAC/B,CAAC;aAAM,IAAI,KAAK,CAAC,KAAK,KAAK,KAAK,EAAE,CAAC;YACjC,MAAM,CAAC,GAAG,GAAG,KAAK,CAAC,KAAK,IAAI,CAAC,CAAC;QAChC,CAAC;IACH,CAAC;IAED,0EAA0E;IAC1E,uEAAuE;IACvE,sEAAsE;IACtE,WAAW;IACX,MAAM,SAAS,GAAG,CAAC,GAAW,EAAU,EAAE;QACxC,MAAM,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC;QACxB,IAAI,CAAC,CAAC,aAAa,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,aAAa,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,kBAAkB,EAAE,KAAK,CAAC,EAAE,CAAC;YACvF,CAAC,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YACzB,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,CAAC;QACrC,CAAC;QACD,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IAC/C,CAAC,CAAC;IAEF,qEAAqE;IACrE,qEAAqE;IACrE,sEAAsE;IACtE,uEAAuE;IACvE,0EAA0E;IAC1E,sEAAsE;IACtE,mEAAmE;IACnE,uEAAuE;IACvE,sBAAsB;IACtB,MAAM,OAAO,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;IAC/B,MAAM,kBAAkB,GAAG,IAAI,GAAG,EAAoB,CAAC;IACvD,KAAK,MAAM,CAAC,EAAE,IAAI,CAAC,IAAI,YAAY,EAAE,CAAC;QACpC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YACf,MAAM,IAAI,GAAG,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;YAC1D,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;YACzC,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;IACD,MAAM,eAAe,GAAG,CAAC,QAAgB,EAAE,GAAW,EAAW,EAAE;QACjE,MAAM,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC;QAClC,MAAM,IAAI,GAAG,kBAAkB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC9C,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IAC1E,CAAC,CAAC;IAEF,wDAAwD;IACxD,MAAM,MAAM,GAAG,IAAI,GAAG,EAAuC,CAAC;IAC9D,KAAK,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,YAAY,EAAE,CAAC;QACxC,IAAI,IAAI,CAAC,IAAI,IAAI,eAAe,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAC5D,SAAS;QACX,CAAC;QACD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;QAC1D,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YACtB,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;QACtC,CAAC;QAED,MAAM,UAAU,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAE,CAAC;QACrC,UAAU,CAAC,EAAE,IAAI,IAAI,CAAC,EAAE,CAAC;QACzB,UAAU,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC;IAC7B,CAAC;IAED,kEAAkE;IAClE,MAAM,eAAe,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;SACjD,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;QACxB,QAAQ,EAAE,IAAI,EAAE,8BAA8B;QAC9C,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;QAC9B,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC;QAC7B,aAAa,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,GAAG,MAAM,CAAC,GAAG,CAAC;QACjD,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,GAAG,MAAM,CAAC,GAAG,CAAC;KAC7C,CAAC,CAAC;SACF,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;IAExD,mBAAmB;IACnB,MAAM,YAAY,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IAC5E,MAAM,UAAU,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IACxE,MAAM,YAAY,GAAG,YAAY,GAAG,UAAU,CAAC;IAC/C,MAAM,OAAO,GAAG,YAAY,GAAG,UAAU,CAAC;IAE1C,oCAAoC;IACpC,IAAI,QAAQ,GAAG,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACtE,KAAK,MAAM,IAAI,IAAI,eAAe,EAAE,CAAC;QACnC,IAAI,IAAI,CAAC,aAAa,GAAG,CAAC,QAAQ,EAAE,aAAa,IAAI,CAAC,CAAC,EAAE,CAAC;YACxD,QAAQ,GAAG,IAAI,CAAC;QAClB,CAAC;IACH,CAAC;IAED,yBAAyB;IACzB,MAAM,UAAU,GAAG,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,OAAO,EAAE,CAAC,CAAC,CAAC,GAAG,OAAO,EAAE,CAAC;IAC/D,MAAM,OAAO,GAAG,GAAG,WAAW,KAAK,YAAY,CAAC,cAAc,EAAE,cAAc,iBAAiB,KAAK,YAAY,CAAC,cAAc,EAAE,aAAa,UAAU,CAAC,cAAc,EAAE,qBAAqB,UAAU,GAAG,CAAC;IAE5M,6EAA6E;IAC7E,gFAAgF;IAChF,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,0EAA0E;IAC1E,qEAAqE;IACrE,sEAAsE;IACtE,wEAAwE;IACxE,uEAAuE;IACvE,2EAA2E;IAC3E,sEAAsE;IACtE,2EAA2E;IAC3E,uEAAuE;IACvE,cAAc;IACd,MAAM,iBAAiB,GAAG,cAAc,CAAC,MAAM,GAAG,CAAC,IAAI,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IACjG,IAAI,iBAAiB,IAAI,YAAY,KAAK,CAAC,EAAE,CAAC;QAC5C,MAAM,MAAM,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC;QACxC,MAAM,iBAAiB,GACrB,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,cAAc,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;QAC1E,MAAM,sBAAsB,GAAG,iBAAiB,IAAI,MAAM,CAAC;QAC3D,IAAI,CAAC,sBAAsB,EAAE,CAAC;YAC5B,MAAM,QAAQ,GACZ,iBAAiB,GAAG,CAAC,CAAC,CAAC,CAAC,eAAe,IAAI,IAAI,CAAC,iBAAiB,CAAC,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3F,QAAQ,CAAC,IAAI,CACX,aAAa;gBACX,CAAC,CAAC,WAAW,WAAW,yBAAyB,QAAQ,2IAA2I;gBACpM,CAAC,CAAC,OAAO,cAAc,CAAC,MAAM,wDAAwD,QAAQ,qIAAqI,CACtO,CAAC;QACJ,CAAC;IACH,CAAC;IACD,IAAI,eAAe,EAAE,CAAC;QACpB,uEAAuE;QACvE,qEAAqE;QACrE,0EAA0E;QAC1E,2EAA2E;QAC3E,iCAAiC;QACjC,wEAAwE;QACxE,oEAAoE;QACpE,+DAA+D;QAC/D,QAAQ,CAAC,IAAI,CACX,UAAU,KAAK,OAAO;YACpB,CAAC,CAAC,wGAAwG,QAAQ,4DAA4D;YAC9K,CAAC,CAAC,4FAA4F,QAAQ,mGAAmG,CAC5M,CAAC;IACJ,CAAC;IAED,6DAA6D;IAC7D,MAAM,QAAQ,GAAwB;QACpC,KAAK,EAAE;YACL,EAAE,EAAE,OAAO;YACX,IAAI,EAAE,WAAW;YACjB,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM;YACvC,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,SAAS;YACtB,GAAG,UAAU;SACd;QACD,OAAO,EAAE;YACP,aAAa,EAAE,YAAY;YAC3B,WAAW,EAAE,UAAU;YACvB,aAAa,EAAE,YAAY;YAC3B,QAAQ,EAAE,OAAO;YACjB,YAAY,EAAE,cAAc,CAAC,MAAM;YACnC,MAAM,EAAE;gBACN,SAAS,EAAE,KAAK;gBAChB,QAAQ,EAAE,IAAI;gBACd,WAAW,EAAE,iBAAiB;aAC/B;SACF;QACD,gBAAgB,EAAE,eAAe;QACjC,SAAS,EAAE,QAAQ;YACjB,CAAC,CAAC;gBACE,QAAQ,EAAE,QAAQ,CAAC,QAAQ;gBAC3B,aAAa,EAAE,QAAQ,CAAC,aAAa;gBACrC,OAAO,EAAE,QAAQ,CAAC,OAAO;gBACzB,KAAK,EAAE,QAAQ,CAAC,KAAK;gBACrB,QAAQ,EAAE,QAAQ,CAAC,QAAQ;aAC5B;YACH,CAAC,CAAC,IAAI;QACR,OAAO;QACP,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACnC,aAAa,EACX,kFAAkF;QACpF,wEAAwE;QACxE,0EAA0E;QAC1E,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,IAAI;YAC5D,cAAc,EACZ,2KAA2K;SAC9K,CAAC;QACF,GAAG,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;KAC5D,CAAC;IAEF,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,MAAiB;IACnD,MAAM,CAAC,YAAY,CACjB,oBAAoB,EACpB;QACE,KAAK,EAAE,cAAc;QACrB,WAAW,EAAE,wBAAwB;QACrC,WAAW,EAAE,qBAAqB;QAClC,WAAW,EAAE;YACX,YAAY,EAAE,IAAI;YAClB,eAAe,EAAE,KAAK;YACtB,cAAc,EAAE,KAAK;YACrB,aAAa,EAAE,KAAK;SACrB;KACF,EACD,qBAAqB,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;QACnC,MAAM,SAAS,GAAG,qBAAqB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACpD,MAAM,MAAM,GAAG,MAAM,kBAAkB,CAAC,SAAS,CAAC,CAAC;QACnD,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;SAC5E,CAAC;IACJ,CAAC,CAAC,CACH,CAAC;AACJ,CAAC"}
@@ -105,7 +105,7 @@ export interface TrafficFlowResponse {
105
105
  space: {
106
106
  id: string;
107
107
  name: string;
108
- type: "room";
108
+ type: "room" | "sensor";
109
109
  path: string;
110
110
  sensor_mode: "traffic";
111
111
  } & TimezoneMetadata;
@@ -1 +1 @@
1
- {"version":3,"file":"responses.d.ts","sourceRoot":"","sources":["../../src/types/responses.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"responses.d.ts","sourceRoot":"","sources":["../../src/types/responses.ts"],"names":[],"mappings":"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"}