@butlr/butlr-mcp-server 0.1.2 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +27 -1
- package/dist/clients/queries/tags.d.ts +39 -0
- package/dist/clients/queries/tags.d.ts.map +1 -0
- package/dist/clients/queries/tags.js +42 -0
- package/dist/clients/queries/tags.js.map +1 -0
- package/dist/clients/types.d.ts +2 -2
- package/dist/clients/types.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/tools/butlr-available-rooms.d.ts +25 -1
- package/dist/tools/butlr-available-rooms.d.ts.map +1 -1
- package/dist/tools/butlr-available-rooms.js +114 -35
- package/dist/tools/butlr-available-rooms.js.map +1 -1
- package/dist/tools/butlr-get-current-occupancy.d.ts.map +1 -1
- package/dist/tools/butlr-get-current-occupancy.js +13 -3
- package/dist/tools/butlr-get-current-occupancy.js.map +1 -1
- package/dist/tools/butlr-get-occupancy-timeseries.d.ts.map +1 -1
- package/dist/tools/butlr-get-occupancy-timeseries.js +17 -7
- package/dist/tools/butlr-get-occupancy-timeseries.js.map +1 -1
- package/dist/tools/butlr-list-tags.d.ts +32 -0
- package/dist/tools/butlr-list-tags.d.ts.map +1 -0
- package/dist/tools/butlr-list-tags.js +108 -0
- package/dist/tools/butlr-list-tags.js.map +1 -0
- package/dist/tools/butlr-space-busyness.d.ts.map +1 -1
- package/dist/tools/butlr-space-busyness.js +13 -3
- package/dist/tools/butlr-space-busyness.js.map +1 -1
- package/dist/tools/butlr-traffic-flow.d.ts.map +1 -1
- package/dist/tools/butlr-traffic-flow.js +5 -6
- package/dist/tools/butlr-traffic-flow.js.map +1 -1
- package/dist/types/responses.d.ts +4 -0
- package/dist/types/responses.d.ts.map +1 -1
- package/dist/utils/asset-flattener.js +2 -2
- package/dist/utils/asset-flattener.js.map +1 -1
- package/dist/utils/graphql-helpers.d.ts +13 -0
- package/dist/utils/graphql-helpers.d.ts.map +1 -1
- package/dist/utils/graphql-helpers.js +25 -0
- package/dist/utils/graphql-helpers.js.map +1 -1
- package/dist/utils/occupancy-helpers.d.ts +2 -0
- package/dist/utils/occupancy-helpers.d.ts.map +1 -1
- package/dist/utils/occupancy-helpers.js +8 -5
- package/dist/utils/occupancy-helpers.js.map +1 -1
- package/dist/utils/timezone-helpers.d.ts +8 -3
- package/dist/utils/timezone-helpers.d.ts.map +1 -1
- package/dist/utils/timezone-helpers.js +22 -14
- package/dist/utils/timezone-helpers.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -18,7 +18,7 @@ A [Model Context Protocol](https://modelcontextprotocol.io) (MCP) server that co
|
|
|
18
18
|
## Prerequisites
|
|
19
19
|
|
|
20
20
|
- [Node.js](https://nodejs.org/) 18 or higher
|
|
21
|
-
- An MCP-compatible client ([Claude Desktop](https://claude.ai/download), [Claude Code](https://docs.anthropic.com/en/docs/claude-code), [VS Code](https://code.visualstudio.com/), [Cursor](https://cursor.com/), etc.)
|
|
21
|
+
- An MCP-compatible client ([Claude Desktop](https://claude.ai/download), [Claude Code](https://docs.anthropic.com/en/docs/claude-code), [Codex CLI](https://developers.openai.com/codex/cli), [VS Code](https://code.visualstudio.com/), [Cursor](https://cursor.com/), etc.)
|
|
22
22
|
- Butlr API token — see [Getting API Credentials](#getting-api-credentials)
|
|
23
23
|
|
|
24
24
|
## Quick Start
|
|
@@ -57,6 +57,32 @@ claude mcp add butlr \
|
|
|
57
57
|
|
|
58
58
|
</details>
|
|
59
59
|
|
|
60
|
+
<details>
|
|
61
|
+
<summary><strong>Codex CLI</strong></summary>
|
|
62
|
+
|
|
63
|
+
Add with the `codex mcp` command:
|
|
64
|
+
|
|
65
|
+
```bash
|
|
66
|
+
codex mcp add butlr \
|
|
67
|
+
--env BUTLR_CLIENT_ID=your_client_id \
|
|
68
|
+
--env BUTLR_CLIENT_SECRET=your_client_secret \
|
|
69
|
+
-- npx -y @butlr/butlr-mcp-server@latest
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
Or edit `~/.codex/config.toml` directly:
|
|
73
|
+
|
|
74
|
+
```toml
|
|
75
|
+
[mcp_servers.butlr]
|
|
76
|
+
command = "npx"
|
|
77
|
+
args = ["-y", "@butlr/butlr-mcp-server@latest"]
|
|
78
|
+
|
|
79
|
+
[mcp_servers.butlr.env]
|
|
80
|
+
BUTLR_CLIENT_ID = "your_client_id"
|
|
81
|
+
BUTLR_CLIENT_SECRET = "your_client_secret"
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
</details>
|
|
85
|
+
|
|
60
86
|
<details>
|
|
61
87
|
<summary><strong>VS Code (Copilot)</strong></summary>
|
|
62
88
|
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* GraphQL queries for tag retrieval and lookups.
|
|
3
|
+
*
|
|
4
|
+
* Tags are org-scoped: a single tag (id, name, organization_id) can be
|
|
5
|
+
* applied to any combination of rooms, zones, and floors via separate
|
|
6
|
+
* association tables. There is no per-level tag namespace.
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* Branded string types for tag identifiers.
|
|
10
|
+
*
|
|
11
|
+
* The Butlr API filter `roomsByTag` accepts tag *IDs*, not tag *names*.
|
|
12
|
+
* These two are both `string` at runtime, which previously led to silent
|
|
13
|
+
* filter failures when names were sent in the IDs slot. Branding them keeps
|
|
14
|
+
* the distinction visible at the type level so the wrong one cannot be
|
|
15
|
+
* passed by accident.
|
|
16
|
+
*/
|
|
17
|
+
export type TagId = string & {
|
|
18
|
+
readonly __brand: "TagId";
|
|
19
|
+
};
|
|
20
|
+
export type TagName = string & {
|
|
21
|
+
readonly __brand: "TagName";
|
|
22
|
+
};
|
|
23
|
+
export declare const asTagId: (value: string) => TagId;
|
|
24
|
+
export declare const asTagName: (value: string) => TagName;
|
|
25
|
+
/**
|
|
26
|
+
* List every tag in the org along with its application footprint.
|
|
27
|
+
*
|
|
28
|
+
* Each tag's `rooms`, `zones`, and `floors` arrays are returned with
|
|
29
|
+
* id-only payloads so the response stays bounded by tag count.
|
|
30
|
+
*/
|
|
31
|
+
export declare const GET_TAGS_WITH_USAGE: import("@apollo/client").DocumentNode;
|
|
32
|
+
/**
|
|
33
|
+
* Minimal tag listing — id and name only.
|
|
34
|
+
*
|
|
35
|
+
* Used to resolve user-supplied tag names to tag IDs before invoking
|
|
36
|
+
* tag-filtered queries (e.g. `roomsByTag(tagIDs:..)`).
|
|
37
|
+
*/
|
|
38
|
+
export declare const GET_TAGS_MINIMAL: import("@apollo/client").DocumentNode;
|
|
39
|
+
//# sourceMappingURL=tags.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tags.d.ts","sourceRoot":"","sources":["../../../src/clients/queries/tags.ts"],"names":[],"mappings":"AAEA;;;;;;GAMG;AAEH;;;;;;;;GAQG;AACH,MAAM,MAAM,KAAK,GAAG,MAAM,GAAG;IAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;CAAE,CAAC;AAC3D,MAAM,MAAM,OAAO,GAAG,MAAM,GAAG;IAAE,QAAQ,CAAC,OAAO,EAAE,SAAS,CAAA;CAAE,CAAC;AAE/D,eAAO,MAAM,OAAO,GAAI,OAAO,MAAM,KAAG,KAAuB,CAAC;AAChE,eAAO,MAAM,SAAS,GAAI,OAAO,MAAM,KAAG,OAA2B,CAAC;AAEtE;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB,uCAiB/B,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,uCAO5B,CAAC"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { gql } from "@apollo/client";
|
|
2
|
+
export const asTagId = (value) => value;
|
|
3
|
+
export const asTagName = (value) => value;
|
|
4
|
+
/**
|
|
5
|
+
* List every tag in the org along with its application footprint.
|
|
6
|
+
*
|
|
7
|
+
* Each tag's `rooms`, `zones`, and `floors` arrays are returned with
|
|
8
|
+
* id-only payloads so the response stays bounded by tag count.
|
|
9
|
+
*/
|
|
10
|
+
export const GET_TAGS_WITH_USAGE = gql `
|
|
11
|
+
query GetTagsWithUsage {
|
|
12
|
+
tags {
|
|
13
|
+
id
|
|
14
|
+
name
|
|
15
|
+
organization_id
|
|
16
|
+
rooms {
|
|
17
|
+
id
|
|
18
|
+
}
|
|
19
|
+
zones {
|
|
20
|
+
id
|
|
21
|
+
}
|
|
22
|
+
floors {
|
|
23
|
+
id
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
`;
|
|
28
|
+
/**
|
|
29
|
+
* Minimal tag listing — id and name only.
|
|
30
|
+
*
|
|
31
|
+
* Used to resolve user-supplied tag names to tag IDs before invoking
|
|
32
|
+
* tag-filtered queries (e.g. `roomsByTag(tagIDs:..)`).
|
|
33
|
+
*/
|
|
34
|
+
export const GET_TAGS_MINIMAL = gql `
|
|
35
|
+
query GetTagsMinimal {
|
|
36
|
+
tags {
|
|
37
|
+
id
|
|
38
|
+
name
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
`;
|
|
42
|
+
//# sourceMappingURL=tags.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tags.js","sourceRoot":"","sources":["../../../src/clients/queries/tags.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AAsBrC,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,KAAa,EAAS,EAAE,CAAC,KAAc,CAAC;AAChE,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,KAAa,EAAW,EAAE,CAAC,KAAgB,CAAC;AAEtE;;;;;GAKG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;CAiBrC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,GAAG,CAAA;;;;;;;CAOlC,CAAC"}
|
package/dist/clients/types.d.ts
CHANGED
|
@@ -24,7 +24,7 @@ export interface Area {
|
|
|
24
24
|
export interface Site {
|
|
25
25
|
id: string;
|
|
26
26
|
name: string;
|
|
27
|
-
timezone: string;
|
|
27
|
+
timezone: string | null;
|
|
28
28
|
org_id: string;
|
|
29
29
|
siteNumber?: number;
|
|
30
30
|
customID?: string;
|
|
@@ -55,7 +55,7 @@ export interface Floor {
|
|
|
55
55
|
name: string;
|
|
56
56
|
building_id: string;
|
|
57
57
|
floorNumber?: number;
|
|
58
|
-
timezone: string;
|
|
58
|
+
timezone: string | null;
|
|
59
59
|
installation_date: number;
|
|
60
60
|
installation_status?: string;
|
|
61
61
|
service_status?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/clients/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,QAAQ;IACvB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,OAAO;IACtB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,QAAQ;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,IAAI;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,MAAM,WAAW,IAAI;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/clients/types.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -12,6 +12,7 @@ import { registerListTopology } from "./tools/butlr-list-topology.js";
|
|
|
12
12
|
import { registerFetchEntityDetails } from "./tools/butlr-fetch-entity-details.js";
|
|
13
13
|
import { registerGetOccupancyTimeseries } from "./tools/butlr-get-occupancy-timeseries.js";
|
|
14
14
|
import { registerGetCurrentOccupancy } from "./tools/butlr-get-current-occupancy.js";
|
|
15
|
+
import { registerListTags } from "./tools/butlr-list-tags.js";
|
|
15
16
|
import { debug } from "./utils/debug.js";
|
|
16
17
|
const require = createRequire(import.meta.url);
|
|
17
18
|
const { version: SERVER_VERSION } = require("../package.json");
|
|
@@ -31,6 +32,7 @@ registerListTopology(server);
|
|
|
31
32
|
registerFetchEntityDetails(server);
|
|
32
33
|
registerGetOccupancyTimeseries(server);
|
|
33
34
|
registerGetCurrentOccupancy(server);
|
|
35
|
+
registerListTags(server);
|
|
34
36
|
async function main() {
|
|
35
37
|
const transport = new StdioServerTransport();
|
|
36
38
|
await server.connect(transport);
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AACtE,OAAO,EAAE,uBAAuB,EAAE,MAAM,oCAAoC,CAAC;AAC7E,OAAO,EAAE,wBAAwB,EAAE,MAAM,oCAAoC,CAAC;AAC9E,OAAO,EAAE,sBAAsB,EAAE,MAAM,kCAAkC,CAAC;AAC1E,OAAO,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AACxE,OAAO,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AACtE,OAAO,EAAE,0BAA0B,EAAE,MAAM,uCAAuC,CAAC;AACnF,OAAO,EAAE,8BAA8B,EAAE,MAAM,2CAA2C,CAAC;AAC3F,OAAO,EAAE,2BAA2B,EAAE,MAAM,wCAAwC,CAAC;AACrF,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAEzC,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,MAAM,EAAE,OAAO,EAAE,cAAc,EAAE,GAAG,OAAO,CAAC,iBAAiB,CAAwB,CAAC;AAEtF,MAAM,WAAW,GAAG,kBAAkB,CAAC;AAEvC,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC;IAC3B,IAAI,EAAE,WAAW;IACjB,OAAO,EAAE,cAAc;CACxB,CAAC,CAAC;AAEH,qBAAqB;AACrB,oBAAoB,CAAC,MAAM,CAAC,CAAC;AAC7B,uBAAuB,CAAC,MAAM,CAAC,CAAC;AAChC,wBAAwB,CAAC,MAAM,CAAC,CAAC;AACjC,sBAAsB,CAAC,MAAM,CAAC,CAAC;AAC/B,qBAAqB,CAAC,MAAM,CAAC,CAAC;AAC9B,mBAAmB,CAAC,MAAM,CAAC,CAAC;AAC5B,oBAAoB,CAAC,MAAM,CAAC,CAAC;AAC7B,0BAA0B,CAAC,MAAM,CAAC,CAAC;AACnC,8BAA8B,CAAC,MAAM,CAAC,CAAC;AACvC,2BAA2B,CAAC,MAAM,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AACtE,OAAO,EAAE,uBAAuB,EAAE,MAAM,oCAAoC,CAAC;AAC7E,OAAO,EAAE,wBAAwB,EAAE,MAAM,oCAAoC,CAAC;AAC9E,OAAO,EAAE,sBAAsB,EAAE,MAAM,kCAAkC,CAAC;AAC1E,OAAO,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AACxE,OAAO,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AACtE,OAAO,EAAE,0BAA0B,EAAE,MAAM,uCAAuC,CAAC;AACnF,OAAO,EAAE,8BAA8B,EAAE,MAAM,2CAA2C,CAAC;AAC3F,OAAO,EAAE,2BAA2B,EAAE,MAAM,wCAAwC,CAAC;AACrF,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAEzC,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,MAAM,EAAE,OAAO,EAAE,cAAc,EAAE,GAAG,OAAO,CAAC,iBAAiB,CAAwB,CAAC;AAEtF,MAAM,WAAW,GAAG,kBAAkB,CAAC;AAEvC,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC;IAC3B,IAAI,EAAE,WAAW;IACjB,OAAO,EAAE,cAAc;CACxB,CAAC,CAAC;AAEH,qBAAqB;AACrB,oBAAoB,CAAC,MAAM,CAAC,CAAC;AAC7B,uBAAuB,CAAC,MAAM,CAAC,CAAC;AAChC,wBAAwB,CAAC,MAAM,CAAC,CAAC;AACjC,sBAAsB,CAAC,MAAM,CAAC,CAAC;AAC/B,qBAAqB,CAAC,MAAM,CAAC,CAAC;AAC9B,mBAAmB,CAAC,MAAM,CAAC,CAAC;AAC5B,oBAAoB,CAAC,MAAM,CAAC,CAAC;AAC7B,0BAA0B,CAAC,MAAM,CAAC,CAAC;AACnC,8BAA8B,CAAC,MAAM,CAAC,CAAC;AACvC,2BAA2B,CAAC,MAAM,CAAC,CAAC;AACpC,gBAAgB,CAAC,MAAM,CAAC,CAAC;AAEzB,KAAK,UAAU,IAAI;IACjB,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAEhC,KAAK,CAAC,WAAW,EAAE,mCAAmC,CAAC,CAAC;IACxD,KAAK,CAAC,WAAW,EAAE,YAAY,cAAc,EAAE,CAAC,CAAC;AACnD,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IACrB,OAAO,CAAC,KAAK,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;IACtC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
|
|
@@ -1,15 +1,18 @@
|
|
|
1
1
|
import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
2
2
|
import { z } from "zod";
|
|
3
|
+
import { type TagName } from "../clients/queries/tags.js";
|
|
3
4
|
import type { AvailableRoomsResponse } from "../types/responses.js";
|
|
4
5
|
export declare const AvailableRoomsArgsSchema: z.ZodEffects<z.ZodObject<{
|
|
5
6
|
min_capacity: z.ZodOptional<z.ZodNumber>;
|
|
6
7
|
max_capacity: z.ZodOptional<z.ZodNumber>;
|
|
7
8
|
tags: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
9
|
+
tag_match: z.ZodDefault<z.ZodEnum<["all", "any"]>>;
|
|
8
10
|
building_id: z.ZodOptional<z.ZodString>;
|
|
9
11
|
floor_id: z.ZodOptional<z.ZodString>;
|
|
10
12
|
max_results: z.ZodDefault<z.ZodNumber>;
|
|
11
13
|
}, "strict", z.ZodTypeAny, {
|
|
12
14
|
max_results: number;
|
|
15
|
+
tag_match: "all" | "any";
|
|
13
16
|
building_id?: string | undefined;
|
|
14
17
|
tags?: string[] | undefined;
|
|
15
18
|
min_capacity?: number | undefined;
|
|
@@ -21,9 +24,11 @@ export declare const AvailableRoomsArgsSchema: z.ZodEffects<z.ZodObject<{
|
|
|
21
24
|
tags?: string[] | undefined;
|
|
22
25
|
min_capacity?: number | undefined;
|
|
23
26
|
max_capacity?: number | undefined;
|
|
27
|
+
tag_match?: "all" | "any" | undefined;
|
|
24
28
|
floor_id?: string | undefined;
|
|
25
29
|
}>, {
|
|
26
30
|
max_results: number;
|
|
31
|
+
tag_match: "all" | "any";
|
|
27
32
|
building_id?: string | undefined;
|
|
28
33
|
tags?: string[] | undefined;
|
|
29
34
|
min_capacity?: number | undefined;
|
|
@@ -35,13 +40,32 @@ export declare const AvailableRoomsArgsSchema: z.ZodEffects<z.ZodObject<{
|
|
|
35
40
|
tags?: string[] | undefined;
|
|
36
41
|
min_capacity?: number | undefined;
|
|
37
42
|
max_capacity?: number | undefined;
|
|
43
|
+
tag_match?: "all" | "any" | undefined;
|
|
38
44
|
floor_id?: string | undefined;
|
|
39
45
|
}>;
|
|
40
46
|
export type AvailableRoomsArgs = z.output<typeof AvailableRoomsArgsSchema>;
|
|
47
|
+
export declare const GET_ROOMS_BY_TAG: import("@apollo/client").DocumentNode;
|
|
41
48
|
/**
|
|
42
49
|
* Execute available rooms tool
|
|
43
50
|
*/
|
|
44
|
-
export declare function executeAvailableRooms(args: AvailableRoomsArgs): Promise<AvailableRoomsResponse
|
|
51
|
+
export declare function executeAvailableRooms(args: AvailableRoomsArgs): Promise<AvailableRoomsResponse | {
|
|
52
|
+
summary: string;
|
|
53
|
+
available_rooms: never[];
|
|
54
|
+
total_available: number;
|
|
55
|
+
showing: number;
|
|
56
|
+
timestamp: string;
|
|
57
|
+
filtered_by: {
|
|
58
|
+
max_results: number;
|
|
59
|
+
tag_match: "all" | "any";
|
|
60
|
+
building_id?: string | undefined;
|
|
61
|
+
tags?: string[] | undefined;
|
|
62
|
+
min_capacity?: number | undefined;
|
|
63
|
+
max_capacity?: number | undefined;
|
|
64
|
+
floor_id?: string | undefined;
|
|
65
|
+
};
|
|
66
|
+
unknown_tags: TagName[];
|
|
67
|
+
warning: string;
|
|
68
|
+
}>;
|
|
45
69
|
/**
|
|
46
70
|
* Register butlr_available_rooms with an McpServer instance
|
|
47
71
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"butlr-available-rooms.d.ts","sourceRoot":"","sources":["../../src/tools/butlr-available-rooms.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAGzE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAMxB,OAAO,KAAK,EAAiB,sBAAsB,EAAmB,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"butlr-available-rooms.d.ts","sourceRoot":"","sources":["../../src/tools/butlr-available-rooms.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAGzE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAMxB,OAAO,EAKL,KAAK,OAAO,EACb,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EAAiB,sBAAsB,EAAmB,MAAM,uBAAuB,CAAC;AA2EpG,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAclC,CAAC;AAgCJ,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAgE3E,eAAO,MAAM,gBAAgB,uCA+B5B,CAAC;AAuCF;;GAEG;AACH,wBAAsB,qBAAqB,CAAC,IAAI,EAAE,kBAAkB;;;;;;;;;;;;;;;;;GA8XnE;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAsB9D"}
|
|
@@ -4,9 +4,18 @@ import { z } from "zod";
|
|
|
4
4
|
import { getCurrentOccupancy } from "../clients/reporting-client.js";
|
|
5
5
|
import { buildAvailableRoomsSummary } from "../utils/natural-language.js";
|
|
6
6
|
import { getCachedOccupancy, setBulkCachedOccupancy } from "../cache/occupancy-cache.js";
|
|
7
|
-
import { rethrowIfGraphQLError } from "../utils/graphql-helpers.js";
|
|
7
|
+
import { rethrowIfGraphQLError, throwIfGraphQLErrors } from "../utils/graphql-helpers.js";
|
|
8
|
+
import { GET_TAGS_MINIMAL, asTagId, asTagName, } from "../clients/queries/tags.js";
|
|
8
9
|
import { debug } from "../utils/debug.js";
|
|
9
|
-
import { withToolErrorHandling } from "../errors/mcp-errors.js";
|
|
10
|
+
import { withToolErrorHandling, formatMCPError, MCPErrorCode, } from "../errors/mcp-errors.js";
|
|
11
|
+
function throwInternalError(message) {
|
|
12
|
+
const mcpError = {
|
|
13
|
+
code: MCPErrorCode.INTERNAL_ERROR,
|
|
14
|
+
message,
|
|
15
|
+
retryable: true,
|
|
16
|
+
};
|
|
17
|
+
throw new Error(formatMCPError(mcpError));
|
|
18
|
+
}
|
|
10
19
|
/** Shared shape — used by both registerTool (SDK schema) and full validation */
|
|
11
20
|
const availableRoomsInputShape = {
|
|
12
21
|
min_capacity: z
|
|
@@ -27,7 +36,11 @@ const availableRoomsInputShape = {
|
|
|
27
36
|
.array(z.string().min(1, "Tag cannot be empty").trim())
|
|
28
37
|
.min(1, "tags array cannot be empty")
|
|
29
38
|
.optional()
|
|
30
|
-
.describe("Filter by
|
|
39
|
+
.describe("Filter by tag names (case-insensitive). Use butlr_list_tags to discover what tags exist."),
|
|
40
|
+
tag_match: z
|
|
41
|
+
.enum(["all", "any"])
|
|
42
|
+
.default("all")
|
|
43
|
+
.describe("Multi-tag semantics when tags has more than one entry: 'all' (default) requires every tag, 'any' requires at least one"),
|
|
31
44
|
building_id: z
|
|
32
45
|
.string()
|
|
33
46
|
.regex(/^building_[a-zA-Z0-9_-]+$/, "building_id must match pattern: 'building_<id>'")
|
|
@@ -76,7 +89,7 @@ const AVAILABLE_ROOMS_DESCRIPTION = "Find meeting rooms and collaboration spaces
|
|
|
76
89
|
"When to Use:\n" +
|
|
77
90
|
"- Real-time room availability for immediate use (next 5-10 minutes)\n" +
|
|
78
91
|
"- Filter by capacity (e.g., rooms for 6-8 people)\n" +
|
|
79
|
-
"- Filter by room types using tags (conference, collaboration, focus)
|
|
92
|
+
"- Filter by room types using tags (conference, collaboration, focus). Tag names are case-insensitive; pass tag_match='all' (default) or 'any' for multi-tag semantics. Use butlr_list_tags first to discover what tag vocabulary exists in this org.\n" +
|
|
80
93
|
"- Validating room booking system accuracy against actual occupancy\n" +
|
|
81
94
|
"- Analyzing meeting room demand vs. supply across buildings/floors\n\n" +
|
|
82
95
|
"When NOT to Use:\n" +
|
|
@@ -146,31 +159,33 @@ const GET_ROOMS_BY_BUILDING = gql `
|
|
|
146
159
|
}
|
|
147
160
|
}
|
|
148
161
|
`;
|
|
149
|
-
const GET_ROOMS_BY_TAG = gql `
|
|
150
|
-
query GetRoomsByTag($
|
|
151
|
-
roomsByTag(
|
|
152
|
-
|
|
153
|
-
name
|
|
154
|
-
floorID
|
|
155
|
-
roomType
|
|
156
|
-
capacity {
|
|
157
|
-
max
|
|
158
|
-
mid
|
|
159
|
-
}
|
|
160
|
-
area {
|
|
161
|
-
value
|
|
162
|
-
unit
|
|
163
|
-
}
|
|
164
|
-
coordinates
|
|
165
|
-
customID
|
|
166
|
-
floor {
|
|
162
|
+
export const GET_ROOMS_BY_TAG = gql `
|
|
163
|
+
query GetRoomsByTag($tagIDs: [String!]!, $useOR: Boolean) {
|
|
164
|
+
roomsByTag(tagIDs: $tagIDs, useOR: $useOR) {
|
|
165
|
+
data {
|
|
167
166
|
id
|
|
168
167
|
name
|
|
169
|
-
|
|
170
|
-
|
|
168
|
+
floorID
|
|
169
|
+
roomType
|
|
170
|
+
capacity {
|
|
171
|
+
max
|
|
172
|
+
mid
|
|
173
|
+
}
|
|
174
|
+
area {
|
|
175
|
+
value
|
|
176
|
+
unit
|
|
177
|
+
}
|
|
178
|
+
coordinates
|
|
179
|
+
customID
|
|
180
|
+
floor {
|
|
171
181
|
id
|
|
172
182
|
name
|
|
173
|
-
|
|
183
|
+
building_id
|
|
184
|
+
building {
|
|
185
|
+
id
|
|
186
|
+
name
|
|
187
|
+
site_id
|
|
188
|
+
}
|
|
174
189
|
}
|
|
175
190
|
}
|
|
176
191
|
}
|
|
@@ -221,14 +236,16 @@ export async function executeAvailableRooms(args) {
|
|
|
221
236
|
let rooms = [];
|
|
222
237
|
let buildings = [];
|
|
223
238
|
let floors = [];
|
|
239
|
+
const warnings = [];
|
|
240
|
+
let unknownTagNames = [];
|
|
224
241
|
try {
|
|
225
242
|
if (args.floor_id) {
|
|
226
|
-
// Query specific floor
|
|
227
243
|
const result = await apolloClient.query({
|
|
228
244
|
query: GET_ROOMS_BY_FLOOR,
|
|
229
245
|
variables: { floorId: args.floor_id },
|
|
230
246
|
fetchPolicy: "network-only",
|
|
231
247
|
});
|
|
248
|
+
throwIfGraphQLErrors(result);
|
|
232
249
|
if (!result.data?.floor) {
|
|
233
250
|
throw new Error(`Floor ${args.floor_id} not found`);
|
|
234
251
|
}
|
|
@@ -237,12 +254,12 @@ export async function executeAvailableRooms(args) {
|
|
|
237
254
|
buildings = result.data.floor.building ? [result.data.floor.building] : [];
|
|
238
255
|
}
|
|
239
256
|
else if (args.building_id) {
|
|
240
|
-
// Query specific building
|
|
241
257
|
const result = await apolloClient.query({
|
|
242
258
|
query: GET_ROOMS_BY_BUILDING,
|
|
243
259
|
variables: { buildingId: args.building_id },
|
|
244
260
|
fetchPolicy: "network-only",
|
|
245
261
|
});
|
|
262
|
+
throwIfGraphQLErrors(result);
|
|
246
263
|
if (!result.data?.building) {
|
|
247
264
|
throw new Error(`Building ${args.building_id} not found`);
|
|
248
265
|
}
|
|
@@ -251,16 +268,73 @@ export async function executeAvailableRooms(args) {
|
|
|
251
268
|
rooms = floors.flatMap((f) => f.rooms || []);
|
|
252
269
|
}
|
|
253
270
|
else if (args.tags && args.tags.length > 0) {
|
|
254
|
-
//
|
|
271
|
+
// Resolve tag names → tag IDs (the API requires IDs, not names)
|
|
272
|
+
const tagsResult = await apolloClient.query({
|
|
273
|
+
query: GET_TAGS_MINIMAL,
|
|
274
|
+
fetchPolicy: "network-only",
|
|
275
|
+
});
|
|
276
|
+
throwIfGraphQLErrors(tagsResult);
|
|
277
|
+
const allTags = tagsResult.data?.tags ?? [];
|
|
278
|
+
// Lookup is keyed by lowercased name; values are typed TagIds so the
|
|
279
|
+
// resolver boundary cannot accidentally surface raw names downstream.
|
|
280
|
+
const lookup = new Map(allTags.map((t) => [t.name.toLowerCase(), asTagId(t.id)]));
|
|
281
|
+
const resolvedIDs = [];
|
|
282
|
+
const unknownNames = [];
|
|
283
|
+
for (const rawName of args.tags) {
|
|
284
|
+
const name = asTagName(rawName);
|
|
285
|
+
const id = lookup.get(name.toLowerCase());
|
|
286
|
+
if (id) {
|
|
287
|
+
resolvedIDs.push(id);
|
|
288
|
+
}
|
|
289
|
+
else {
|
|
290
|
+
unknownNames.push(name);
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
if (resolvedIDs.length === 0) {
|
|
294
|
+
return {
|
|
295
|
+
summary: buildAvailableRoomsSummary({ count: 0, roomType: args.tags?.[0] }),
|
|
296
|
+
available_rooms: [],
|
|
297
|
+
total_available: 0,
|
|
298
|
+
showing: 0,
|
|
299
|
+
timestamp: new Date().toISOString(),
|
|
300
|
+
filtered_by: args,
|
|
301
|
+
unknown_tags: unknownNames,
|
|
302
|
+
warning: `No matching tags found in this org for: ${unknownNames.join(", ")}. ` +
|
|
303
|
+
"Use butlr_list_tags to see available tag names.",
|
|
304
|
+
};
|
|
305
|
+
}
|
|
306
|
+
// Under tag_match='all' (the default), an unresolved tag means the AND
|
|
307
|
+
// constraint is unsatisfiable — querying with the resolved subset would
|
|
308
|
+
// return a strictly broader result that silently answers a different
|
|
309
|
+
// question. Only continue-with-warning is safe under tag_match='any'.
|
|
310
|
+
if (unknownNames.length > 0 && args.tag_match !== "any") {
|
|
311
|
+
return {
|
|
312
|
+
summary: buildAvailableRoomsSummary({ count: 0, roomType: args.tags?.[0] }),
|
|
313
|
+
available_rooms: [],
|
|
314
|
+
total_available: 0,
|
|
315
|
+
showing: 0,
|
|
316
|
+
timestamp: new Date().toISOString(),
|
|
317
|
+
filtered_by: args,
|
|
318
|
+
unknown_tags: unknownNames,
|
|
319
|
+
warning: `Cannot satisfy tag_match='all': unknown tag(s) ${unknownNames.join(", ")}. ` +
|
|
320
|
+
"Use butlr_list_tags to see available tag names, or pass tag_match='any' to match rooms tagged with any of the supplied tags.",
|
|
321
|
+
};
|
|
322
|
+
}
|
|
323
|
+
if (unknownNames.length > 0) {
|
|
324
|
+
unknownTagNames = unknownNames;
|
|
325
|
+
warnings.push(`Unknown tag(s) ignored: ${unknownNames.join(", ")}. Use butlr_list_tags to see available tag names.`);
|
|
326
|
+
}
|
|
327
|
+
const useOR = args.tag_match === "any";
|
|
255
328
|
const result = await apolloClient.query({
|
|
256
329
|
query: GET_ROOMS_BY_TAG,
|
|
257
|
-
variables: {
|
|
330
|
+
variables: { tagIDs: resolvedIDs, useOR },
|
|
258
331
|
fetchPolicy: "network-only",
|
|
259
332
|
});
|
|
260
|
-
|
|
261
|
-
|
|
333
|
+
throwIfGraphQLErrors(result);
|
|
334
|
+
if (!result.data?.roomsByTag?.data) {
|
|
335
|
+
throwInternalError("Unexpected response shape from roomsByTag query (missing data envelope). Please retry; if persistent, the upstream API contract may have changed.");
|
|
262
336
|
}
|
|
263
|
-
rooms = result.data.roomsByTag;
|
|
337
|
+
rooms = result.data.roomsByTag.data;
|
|
264
338
|
// Extract floors and buildings from room.floor references
|
|
265
339
|
for (const room of rooms) {
|
|
266
340
|
if (room.floor) {
|
|
@@ -272,13 +346,13 @@ export async function executeAvailableRooms(args) {
|
|
|
272
346
|
}
|
|
273
347
|
}
|
|
274
348
|
else {
|
|
275
|
-
// Query all rooms (org-wide)
|
|
276
349
|
const result = await apolloClient.query({
|
|
277
350
|
query: GET_ALL_ROOMS,
|
|
278
351
|
fetchPolicy: "network-only",
|
|
279
352
|
});
|
|
353
|
+
throwIfGraphQLErrors(result);
|
|
280
354
|
if (!result.data?.sites?.data) {
|
|
281
|
-
|
|
355
|
+
throwInternalError("Unexpected response shape from sites query (missing data envelope). Please retry; if persistent, the upstream API contract may have changed.");
|
|
282
356
|
}
|
|
283
357
|
buildings = result.data.sites.data.flatMap((s) => s.buildings || []);
|
|
284
358
|
floors = buildings.flatMap((b) => b.floors || []);
|
|
@@ -291,7 +365,6 @@ export async function executeAvailableRooms(args) {
|
|
|
291
365
|
}
|
|
292
366
|
debug("available-rooms", `Found ${rooms.length} rooms before filtering`);
|
|
293
367
|
// Apply capacity filters and track rooms excluded due to missing capacity data
|
|
294
|
-
const warnings = [];
|
|
295
368
|
if (args.min_capacity !== undefined || args.max_capacity !== undefined) {
|
|
296
369
|
const roomsWithoutCapacity = rooms.filter((r) => !r.capacity?.max).length;
|
|
297
370
|
const minCapacity = args.min_capacity;
|
|
@@ -324,6 +397,9 @@ export async function executeAvailableRooms(args) {
|
|
|
324
397
|
if (warnings.length > 0) {
|
|
325
398
|
response.warning = warnings.join(" ");
|
|
326
399
|
}
|
|
400
|
+
if (unknownTagNames.length > 0) {
|
|
401
|
+
response.unknown_tags = unknownTagNames;
|
|
402
|
+
}
|
|
327
403
|
return response;
|
|
328
404
|
}
|
|
329
405
|
// Get current occupancy for all rooms
|
|
@@ -459,6 +535,9 @@ export async function executeAvailableRooms(args) {
|
|
|
459
535
|
if (warnings.length > 0) {
|
|
460
536
|
response.warning = warnings.join(" ");
|
|
461
537
|
}
|
|
538
|
+
if (unknownTagNames.length > 0) {
|
|
539
|
+
response.unknown_tags = unknownTagNames;
|
|
540
|
+
}
|
|
462
541
|
return response;
|
|
463
542
|
}
|
|
464
543
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"butlr-available-rooms.js","sourceRoot":"","sources":["../../src/tools/butlr-available-rooms.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"butlr-available-rooms.js","sourceRoot":"","sources":["../../src/tools/butlr-available-rooms.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,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AACrE,OAAO,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;AAC1E,OAAO,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACzF,OAAO,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAC1F,OAAO,EACL,gBAAgB,EAChB,OAAO,EACP,SAAS,GAGV,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EACL,qBAAqB,EACrB,cAAc,EACd,YAAY,GAEb,MAAM,yBAAyB,CAAC;AAEjC,SAAS,kBAAkB,CAAC,OAAe;IACzC,MAAM,QAAQ,GAAa;QACzB,IAAI,EAAE,YAAY,CAAC,cAAc;QACjC,OAAO;QACP,SAAS,EAAE,IAAI;KAChB,CAAC;IACF,MAAM,IAAI,KAAK,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC5C,CAAC;AAED,gFAAgF;AAChF,MAAM,wBAAwB,GAAG;IAC/B,YAAY,EAAE,CAAC;SACZ,MAAM,EAAE;SACR,GAAG,CAAC,iCAAiC,CAAC;SACtC,GAAG,CAAC,CAAC,EAAE,wCAAwC,CAAC;SAChD,GAAG,CAAC,KAAK,CAAC;SACV,QAAQ,EAAE;SACV,QAAQ,CAAC,uBAAuB,CAAC;IAEpC,YAAY,EAAE,CAAC;SACZ,MAAM,EAAE;SACR,GAAG,CAAC,iCAAiC,CAAC;SACtC,GAAG,CAAC,CAAC,EAAE,wCAAwC,CAAC;SAChD,GAAG,CAAC,KAAK,CAAC;SACV,QAAQ,EAAE;SACV,QAAQ,CAAC,uBAAuB,CAAC;IAEpC,IAAI,EAAE,CAAC;SACJ,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,qBAAqB,CAAC,CAAC,IAAI,EAAE,CAAC;SACtD,GAAG,CAAC,CAAC,EAAE,4BAA4B,CAAC;SACpC,QAAQ,EAAE;SACV,QAAQ,CACP,0FAA0F,CAC3F;IAEH,SAAS,EAAE,CAAC;SACT,IAAI,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;SACpB,OAAO,CAAC,KAAK,CAAC;SACd,QAAQ,CACP,wHAAwH,CACzH;IAEH,WAAW,EAAE,CAAC;SACX,MAAM,EAAE;SACR,KAAK,CAAC,2BAA2B,EAAE,iDAAiD,CAAC;SACrF,QAAQ,EAAE;SACV,QAAQ,CAAC,4BAA4B,CAAC;IAEzC,QAAQ,EAAE,CAAC;SACR,MAAM,EAAE;SACR,KAAK,CACJ,gCAAgC,EAChC,2DAA2D,CAC5D;SACA,QAAQ,EAAE;SACV,QAAQ,CAAC,yBAAyB,CAAC;IAEtC,WAAW,EAAE,CAAC;SACX,MAAM,EAAE;SACR,GAAG,EAAE;SACL,GAAG,CAAC,CAAC,CAAC;SACN,GAAG,CAAC,GAAG,CAAC;SACR,OAAO,CAAC,EAAE,CAAC;SACX,QAAQ,CAAC,uCAAuC,CAAC;CACrD,CAAC;AAEF,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC;KACtC,MAAM,CAAC,wBAAwB,CAAC;KAChC,MAAM,EAAE;KACR,MAAM,CACL,CAAC,IAAI,EAAE,EAAE;IACP,IAAI,IAAI,CAAC,YAAY,KAAK,SAAS,IAAI,IAAI,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;QACvE,OAAO,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY,CAAC;IAChD,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC,EACD;IACE,OAAO,EAAE,kDAAkD;IAC3D,IAAI,EAAE,CAAC,cAAc,CAAC;CACvB,CACF,CAAC;AAEJ,MAAM,2BAA2B,GAC/B,mSAAmS;IACnS,kBAAkB;IAClB,sHAAsH;IACtH,gHAAgH;IAChH,iHAAiH;IACjH,oHAAoH;IACpH,oBAAoB;IACpB,qEAAqE;IACrE,iEAAiE;IACjE,0DAA0D;IAC1D,4DAA4D;IAC5D,0DAA0D;IAC1D,oEAAoE;IACpE,4DAA4D;IAC5D,4DAA4D;IAC5D,gBAAgB;IAChB,uEAAuE;IACvE,qDAAqD;IACrD,wPAAwP;IACxP,sEAAsE;IACtE,wEAAwE;IACxE,oBAAoB;IACpB,0EAA0E;IAC1E,6FAA6F;IAC7F,mFAAmF;IACnF,uFAAuF;IACvF,sMAAsM;IACtM,qFAAqF,CAAC;AAIxF,MAAM,kBAAkB,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6B7B,CAAC;AAEF,MAAM,qBAAqB,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6BhC,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+BlC,CAAC;AAEF,MAAM,aAAa,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmCxB,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,IAAwB;IAClE,KAAK,CAAC,iBAAiB,EAAE,uCAAuC,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAEjG,6BAA6B;IAC7B,IAAI,KAAK,GAAW,EAAE,CAAC;IACvB,IAAI,SAAS,GAAe,EAAE,CAAC;IAC/B,IAAI,MAAM,GAAY,EAAE,CAAC;IACzB,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,IAAI,eAAe,GAAc,EAAE,CAAC;IAEpC,IAAI,CAAC;QACH,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,KAAK,CAAmB;gBACxD,KAAK,EAAE,kBAAkB;gBACzB,SAAS,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,QAAQ,EAAE;gBACrC,WAAW,EAAE,cAAc;aAC5B,CAAC,CAAC;YACH,oBAAoB,CAAC,MAAM,CAAC,CAAC;YAE7B,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC;gBACxB,MAAM,IAAI,KAAK,CAAC,SAAS,IAAI,CAAC,QAAQ,YAAY,CAAC,CAAC;YACtD,CAAC;YAED,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC;YACtC,MAAM,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC7B,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7E,CAAC;aAAM,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YAC5B,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,KAAK,CAAyB;gBAC9D,KAAK,EAAE,qBAAqB;gBAC5B,SAAS,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC,WAAW,EAAE;gBAC3C,WAAW,EAAE,cAAc;aAC5B,CAAC,CAAC;YACH,oBAAoB,CAAC,MAAM,CAAC,CAAC;YAE7B,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,QAAQ,EAAE,CAAC;gBAC3B,MAAM,IAAI,KAAK,CAAC,YAAY,IAAI,CAAC,WAAW,YAAY,CAAC,CAAC;YAC5D,CAAC;YAED,SAAS,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACnC,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,EAAE,CAAC;YAC3C,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;QAC/C,CAAC;aAAM,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC7C,gEAAgE;YAChE,MAAM,UAAU,GAAG,MAAM,YAAY,CAAC,KAAK,CAExC;gBACD,KAAK,EAAE,gBAAgB;gBACvB,WAAW,EAAE,cAAc;aAC5B,CAAC,CAAC;YACH,oBAAoB,CAAC,UAAU,CAAC,CAAC;YAEjC,MAAM,OAAO,GAAG,UAAU,CAAC,IAAI,EAAE,IAAI,IAAI,EAAE,CAAC;YAC5C,qEAAqE;YACrE,sEAAsE;YACtE,MAAM,MAAM,GAAG,IAAI,GAAG,CACpB,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAC1D,CAAC;YAEF,MAAM,WAAW,GAAY,EAAE,CAAC;YAChC,MAAM,YAAY,GAAc,EAAE,CAAC;YACnC,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;gBAChC,MAAM,IAAI,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC;gBAChC,MAAM,EAAE,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;gBAC1C,IAAI,EAAE,EAAE,CAAC;oBACP,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACvB,CAAC;qBAAM,CAAC;oBACN,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC1B,CAAC;YACH,CAAC;YAED,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC7B,OAAO;oBACL,OAAO,EAAE,0BAA0B,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBAC3E,eAAe,EAAE,EAAE;oBACnB,eAAe,EAAE,CAAC;oBAClB,OAAO,EAAE,CAAC;oBACV,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;oBACnC,WAAW,EAAE,IAAI;oBACjB,YAAY,EAAE,YAAY;oBAC1B,OAAO,EACL,2CAA2C,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;wBACtE,iDAAiD;iBACpD,CAAC;YACJ,CAAC;YAED,uEAAuE;YACvE,wEAAwE;YACxE,qEAAqE;YACrE,sEAAsE;YACtE,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,SAAS,KAAK,KAAK,EAAE,CAAC;gBACxD,OAAO;oBACL,OAAO,EAAE,0BAA0B,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBAC3E,eAAe,EAAE,EAAE;oBACnB,eAAe,EAAE,CAAC;oBAClB,OAAO,EAAE,CAAC;oBACV,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;oBACnC,WAAW,EAAE,IAAI;oBACjB,YAAY,EAAE,YAAY;oBAC1B,OAAO,EACL,kDAAkD,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;wBAC7E,8HAA8H;iBACjI,CAAC;YACJ,CAAC;YAED,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC5B,eAAe,GAAG,YAAY,CAAC;gBAC/B,QAAQ,CAAC,IAAI,CACX,2BAA2B,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,mDAAmD,CACtG,CAAC;YACJ,CAAC;YAED,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,KAAK,KAAK,CAAC;YAEvC,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,KAAK,CAA0C;gBAC/E,KAAK,EAAE,gBAAgB;gBACvB,SAAS,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE;gBACzC,WAAW,EAAE,cAAc;aAC5B,CAAC,CAAC;YACH,oBAAoB,CAAC,MAAM,CAAC,CAAC;YAE7B,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;gBACnC,kBAAkB,CAChB,mJAAmJ,CACpJ,CAAC;YACJ,CAAC;YAED,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;YAEpC,0DAA0D;YAC1D,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;oBACf,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;oBACxB,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;wBACxB,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;oBACtC,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;aAAM,CAAC;YACN,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,KAAK,CAEpC;gBACD,KAAK,EAAE,aAAa;gBACpB,WAAW,EAAE,cAAc;aAC5B,CAAC,CAAC;YACH,oBAAoB,CAAC,MAAM,CAAC,CAAC;YAE7B,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;gBAC9B,kBAAkB,CAChB,8IAA8I,CAC/I,CAAC;YACJ,CAAC;YAED,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC;YACrE,MAAM,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;YAClD,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;IAAC,OAAO,KAAc,EAAE,CAAC;QACxB,qBAAqB,CAAC,KAAK,CAAC,CAAC;QAC7B,MAAM,KAAK,CAAC;IACd,CAAC;IAED,KAAK,CAAC,iBAAiB,EAAE,SAAS,KAAK,CAAC,MAAM,yBAAyB,CAAC,CAAC;IAEzE,+EAA+E;IAC/E,IAAI,IAAI,CAAC,YAAY,KAAK,SAAS,IAAI,IAAI,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;QACvE,MAAM,oBAAoB,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC;QAE1E,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC;QACtC,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;YAC9B,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC,CAAC,QAAQ,CAAC,GAAG,IAAI,WAAW,CAAC,CAAC;QAChF,CAAC;QAED,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC;QACtC,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;YAC9B,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC,CAAC,QAAQ,CAAC,GAAG,IAAI,WAAW,CAAC,CAAC;QAChF,CAAC;QAED,IAAI,oBAAoB,GAAG,CAAC,EAAE,CAAC;YAC7B,QAAQ,CAAC,IAAI,CACX,GAAG,oBAAoB,kEAAkE,CAC1F,CAAC;QACJ,CAAC;IACH,CAAC;IAED,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,gDAAgD;QAChD,MAAM,QAAQ,GAA2B;YACvC,OAAO,EAAE,0BAA0B,CAAC;gBAClC,KAAK,EAAE,CAAC;gBACR,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;aACzB,CAAC;YACF,eAAe,EAAE,EAAE;YACnB,eAAe,EAAE,CAAC;YAClB,OAAO,EAAE,CAAC;YACV,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACpC,CAAC;QAEF,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACjC,QAAQ,CAAC,WAAW,GAAG,IAAI,CAAC;QAC9B,CAAC;QAED,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxB,QAAQ,CAAC,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACxC,CAAC;QAED,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC/B,QAAQ,CAAC,YAAY,GAAG,eAAe,CAAC;QAC1C,CAAC;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,sCAAsC;IACtC,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAEvC,KAAK,CAAC,iBAAiB,EAAE,0BAA0B,OAAO,CAAC,MAAM,QAAQ,CAAC,CAAC;IAE3E,oBAAoB;IACpB,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;IACvB,MAAM,YAAY,GAA2B,EAAE,CAAC;IAEhD,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,MAAM,MAAM,GAAG,kBAAkB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAC/C,IAAI,MAAM,EAAE,CAAC;YACX,YAAY,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,SAAS,CAAC;QAC1C,CAAC;IACH,CAAC;IAED,uBAAuB;IACvB,MAAM,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,YAAY,CAAC,CAAC,CAAC;IACtE,IAAI,oBAAoB,GAAG,KAAK,CAAC;IAEjC,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC/B,KAAK,CAAC,iBAAiB,EAAE,kBAAkB,eAAe,CAAC,MAAM,sBAAsB,CAAC,CAAC;QAEzF,IAAI,CAAC;YACH,MAAM,aAAa,GAAG,MAAM,mBAAmB,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;YAEzE,mCAAmC;YACnC,MAAM,YAAY,GAAG,EAAE,CAAC;YACxB,KAAK,MAAM,KAAK,IAAI,aAAa,EAAE,CAAC;gBAClC,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;oBACnB,YAAY,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC;oBAC3C,YAAY,CAAC,IAAI,CAAC;wBAChB,OAAO,EAAE,KAAK,CAAC,QAAQ;wBACvB,SAAS,EAAE,KAAK,CAAC,KAAK;wBACtB,SAAS,EAAE,MAAM;wBACjB,SAAS,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;qBACjC,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;YAED,sBAAsB,CAAC,YAAY,CAAC,CAAC;QACvC,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,KAAK,CAAC,iBAAiB,EAAE,+BAA+B,EAAE,KAAK,CAAC,CAAC;YACjE,oBAAoB,GAAG,IAAI,CAAC;QAC9B,CAAC;IACH,CAAC;IAED,2FAA2F;IAC3F,IAAI,oBAAoB,IAAI,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACnE,MAAM,IAAI,KAAK,CACb,sGAAsG;YACpG,uDAAuD,CAC1D,CAAC;IACJ,CAAC;IAED,+EAA+E;IAC/E,+BAA+B;IAC/B,MAAM,cAAc,GAAoB,EAAE,CAAC;IAE3C,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,SAAS,GAAG,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC;QAEhD,IAAI,SAAS,KAAK,CAAC,EAAE,CAAC;YACpB,aAAa;YACb,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,OAAO,CAAC,CAAC;YACxD,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YAElF,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;YACrB,IAAI,KAAK,EAAE,CAAC;gBACV,IAAI,GAAG,GAAG,KAAK,CAAC,IAAI,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;gBACtC,IAAI,QAAQ,EAAE,CAAC;oBACb,IAAI,GAAG,GAAG,QAAQ,CAAC,IAAI,MAAM,IAAI,EAAE,CAAC;gBACtC,CAAC;YACH,CAAC;YAED,cAAc,CAAC,IAAI,CAAC;gBAClB,EAAE,EAAE,IAAI,CAAC,EAAE;gBACX,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,IAAI;gBACJ,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,mBAAmB,EAAE,CAAC;aACvB,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,wEAAwE;IACxE,IAAI,oBAAoB,EAAE,CAAC;QACzB,MAAM,gBAAgB,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC;QAC7E,IAAI,gBAAgB,GAAG,CAAC,EAAE,CAAC;YACzB,QAAQ,CAAC,IAAI,CACX,kCAAkC,gBAAgB,YAAY;gBAC5D,qDAAqD,CACxD,CAAC;QACJ,CAAC;IACH,CAAC;IAED,KAAK,CAAC,iBAAiB,EAAE,GAAG,cAAc,CAAC,MAAM,gCAAgC,CAAC,CAAC;IAEnF,qDAAqD;IACrD,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IAC/E,MAAM,cAAc,GAAG,cAAc,CAAC,MAAM,CAAC;IAC7C,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,IAAI,EAAE,CAAC;IAC1C,MAAM,YAAY,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;IAEzD,2BAA2B;IAC3B,MAAM,UAAU,GAAG,cAAc;SAC9B,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,GAAG,CAAC;SAC3B,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,SAAS,CAAa,CAAC;IAC9C,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC3E,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAE3E,uCAAuC;IACvC,IAAI,eAA4C,CAAC;IACjD,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;QACrB,MAAM,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,WAAW,CAAC,CAAC;QAClE,IAAI,QAAQ,EAAE,CAAC;YACb,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC;YAChC,MAAM,aAAa,GAAG,UAAU,GAAG,cAAc,CAAC,MAAM,CAAC;YACzD,MAAM,gBAAgB,GAAG,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,aAAa,GAAG,UAAU,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAE7F,eAAe,GAAG;gBAChB,aAAa,EAAE,QAAQ,CAAC,IAAI;gBAC5B,WAAW,EAAE,UAAU;gBACvB,eAAe,EAAE,cAAc,CAAC,MAAM;gBACtC,iBAAiB,EAAE,gBAAgB;aACpC,CAAC;QACJ,CAAC;IACH,CAAC;IAED,gBAAgB;IAChB,MAAM,OAAO,GAAG,0BAA0B,CAAC;QACzC,KAAK,EAAE,YAAY,CAAC,MAAM;QAC1B,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QACxB,WAAW,EAAE,MAAM;QACnB,WAAW,EAAE,MAAM;KACpB,CAAC,CAAC;IAEH,iBAAiB;IACjB,MAAM,QAAQ,GAA2B;QACvC,OAAO;QACP,eAAe,EAAE,YAAY;QAC7B,eAAe,EAAE,cAAc;QAC/B,OAAO,EAAE,YAAY,CAAC,MAAM;QAC5B,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KACpC,CAAC;IAEF,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACjC,QAAQ,CAAC,WAAW,GAAG,IAAI,CAAC;IAC9B,CAAC;IAED,IAAI,eAAe,EAAE,CAAC;QACpB,QAAQ,CAAC,gBAAgB,GAAG,eAAe,CAAC;IAC9C,CAAC;IAED,IAAI,oBAAoB,EAAE,CAAC;QACzB,QAAQ,CAAC,IAAI,CACX,iGAAiG,CAClG,CAAC;IACJ,CAAC;IAED,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxB,QAAQ,CAAC,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACxC,CAAC;IAED,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC/B,QAAQ,CAAC,YAAY,GAAG,eAAe,CAAC;IAC1C,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,sBAAsB,CAAC,MAAiB;IACtD,MAAM,CAAC,YAAY,CACjB,uBAAuB,EACvB;QACE,KAAK,EAAE,iBAAiB;QACxB,WAAW,EAAE,2BAA2B;QACxC,WAAW,EAAE,wBAAwB;QACrC,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,wBAAwB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACvD,MAAM,MAAM,GAAG,MAAM,qBAAqB,CAAC,SAAS,CAAC,CAAC;QACtD,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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"butlr-get-current-occupancy.d.ts","sourceRoot":"","sources":["../../src/tools/butlr-get-current-occupancy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAYxB,OAAO,KAAK,EACV,wBAAwB,EAGzB,MAAM,uBAAuB,CAAC;AAiB/B,eAAO,MAAM,6BAA6B;;;;;;EAAmD,CAAC;AAE9F,iDAAiD;AACjD,MAAM,MAAM,uBAAuB,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,6BAA6B,CAAC,CAAC;AAErF;;GAEG;AACH,wBAAsB,0BAA0B,CAC9C,IAAI,EAAE,uBAAuB,GAC5B,OAAO,CAAC,wBAAwB,CAAC,
|
|
1
|
+
{"version":3,"file":"butlr-get-current-occupancy.d.ts","sourceRoot":"","sources":["../../src/tools/butlr-get-current-occupancy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAYxB,OAAO,KAAK,EACV,wBAAwB,EAGzB,MAAM,uBAAuB,CAAC;AAiB/B,eAAO,MAAM,6BAA6B;;;;;;EAAmD,CAAC;AAE9F,iDAAiD;AACjD,MAAM,MAAM,uBAAuB,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,6BAA6B,CAAC,CAAC;AAErF;;GAEG;AACH,wBAAsB,0BAA0B,CAC9C,IAAI,EAAE,uBAAuB,GAC5B,OAAO,CAAC,wBAAwB,CAAC,CAmHnC;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAsBnE"}
|
|
@@ -25,6 +25,7 @@ export async function executeGetCurrentOccupancy(args) {
|
|
|
25
25
|
const ctx = await fetchTopologyAndSensors();
|
|
26
26
|
// Process each asset
|
|
27
27
|
const assets = [];
|
|
28
|
+
let hasAnyFallback = false;
|
|
28
29
|
const now = new Date();
|
|
29
30
|
const fiveMinAgo = new Date(now.getTime() - 5 * 60 * 1000);
|
|
30
31
|
for (const assetId of args.asset_ids) {
|
|
@@ -90,7 +91,7 @@ export async function executeGetCurrentOccupancy(args) {
|
|
|
90
91
|
}
|
|
91
92
|
// ---- Recommendation (checks data success, not just sensor availability) ----
|
|
92
93
|
const recommendation = buildRecommendation(presenceData, trafficData, presenceHasData, trafficHasData);
|
|
93
|
-
|
|
94
|
+
const assetEntry = {
|
|
94
95
|
asset_id: assetId,
|
|
95
96
|
asset_type: asset.assetType,
|
|
96
97
|
asset_name: asset.assetName,
|
|
@@ -98,12 +99,21 @@ export async function executeGetCurrentOccupancy(args) {
|
|
|
98
99
|
presence: presenceData,
|
|
99
100
|
traffic: trafficData,
|
|
100
101
|
...recommendation,
|
|
101
|
-
}
|
|
102
|
+
};
|
|
103
|
+
if (asset.timezoneWarning) {
|
|
104
|
+
assetEntry.timezone_warning = asset.timezoneWarning;
|
|
105
|
+
}
|
|
106
|
+
if (asset.timezoneFallback) {
|
|
107
|
+
hasAnyFallback = true;
|
|
108
|
+
}
|
|
109
|
+
assets.push(assetEntry);
|
|
102
110
|
}
|
|
103
111
|
return {
|
|
104
112
|
assets,
|
|
105
113
|
timestamp: now.toISOString(),
|
|
106
|
-
timezone_note:
|
|
114
|
+
timezone_note: hasAnyFallback
|
|
115
|
+
? "All timestamps are UTC (ISO-8601). WARNING: One or more assets have no site timezone configured — UTC was used as fallback. Local time conversions may not reflect the site's actual local time."
|
|
116
|
+
: "All timestamps are UTC (ISO-8601). Use site_timezone for local conversion.",
|
|
107
117
|
};
|
|
108
118
|
}
|
|
109
119
|
/**
|