@butlr/butlr-mcp-server 0.4.0 → 0.5.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 (42) hide show
  1. package/dist/clients/queries/topology.d.ts +8 -2
  2. package/dist/clients/queries/topology.d.ts.map +1 -1
  3. package/dist/clients/queries/topology.js +19 -2
  4. package/dist/clients/queries/topology.js.map +1 -1
  5. package/dist/clients/reporting-client.d.ts +4 -0
  6. package/dist/clients/reporting-client.d.ts.map +1 -1
  7. package/dist/clients/reporting-client.js +11 -5
  8. package/dist/clients/reporting-client.js.map +1 -1
  9. package/dist/tools/butlr-fetch-entity-details.d.ts +4 -0
  10. package/dist/tools/butlr-fetch-entity-details.d.ts.map +1 -1
  11. package/dist/tools/butlr-fetch-entity-details.js +25 -1
  12. package/dist/tools/butlr-fetch-entity-details.js.map +1 -1
  13. package/dist/tools/butlr-get-current-occupancy.d.ts.map +1 -1
  14. package/dist/tools/butlr-get-current-occupancy.js +1 -1
  15. package/dist/tools/butlr-get-current-occupancy.js.map +1 -1
  16. package/dist/tools/butlr-get-occupancy-timeseries.d.ts.map +1 -1
  17. package/dist/tools/butlr-get-occupancy-timeseries.js +1 -1
  18. package/dist/tools/butlr-get-occupancy-timeseries.js.map +1 -1
  19. package/dist/tools/butlr-space-busyness.d.ts.map +1 -1
  20. package/dist/tools/butlr-space-busyness.js +5 -2
  21. package/dist/tools/butlr-space-busyness.js.map +1 -1
  22. package/dist/tools/butlr-traffic-flow.d.ts.map +1 -1
  23. package/dist/tools/butlr-traffic-flow.js +112 -7
  24. package/dist/tools/butlr-traffic-flow.js.map +1 -1
  25. package/dist/types/responses.d.ts +1 -0
  26. package/dist/types/responses.d.ts.map +1 -1
  27. package/dist/utils/field-validator.d.ts +6 -0
  28. package/dist/utils/field-validator.d.ts.map +1 -1
  29. package/dist/utils/field-validator.js +2 -1
  30. package/dist/utils/field-validator.js.map +1 -1
  31. package/dist/utils/occupancy-helpers.d.ts +15 -2
  32. package/dist/utils/occupancy-helpers.d.ts.map +1 -1
  33. package/dist/utils/occupancy-helpers.js +104 -21
  34. package/dist/utils/occupancy-helpers.js.map +1 -1
  35. package/dist/utils/time-range-validator.d.ts.map +1 -1
  36. package/dist/utils/time-range-validator.js +3 -32
  37. package/dist/utils/time-range-validator.js.map +1 -1
  38. package/dist/utils/time-resolver.d.ts +18 -0
  39. package/dist/utils/time-resolver.d.ts.map +1 -0
  40. package/dist/utils/time-resolver.js +44 -0
  41. package/dist/utils/time-resolver.js.map +1 -0
  42. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"time-range-validator.js","sourceRoot":"","sources":["../../src/utils/time-range-validator.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;GAMG;AACH,MAAM,UAAU,iBAAiB,CAAC,QAAgB,EAAE,KAAa,EAAE,IAAY;IAC7E,gEAAgE;IAChE,MAAM,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;IACnC,MAAM,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IAEjC,8BAA8B;IAC9B,MAAM,UAAU,GAAG,QAAQ,CAAC,OAAO,EAAE,GAAG,SAAS,CAAC,OAAO,EAAE,CAAC;IAC5D,MAAM,aAAa,GAAG,UAAU,GAAG,CAAC,IAAI,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;IACpD,MAAM,YAAY,GAAG,aAAa,GAAG,EAAE,CAAC;IAExC,6BAA6B;IAC7B,IAAI,QAAQ,KAAK,IAAI,IAAI,aAAa,GAAG,CAAC,EAAE,CAAC;QAC3C,MAAM,IAAI,KAAK,CACb,qEAAqE,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CACvG,CAAC;IACJ,CAAC;IAED,IAAI,QAAQ,KAAK,IAAI,IAAI,aAAa,GAAG,EAAE,EAAE,CAAC;QAC5C,MAAM,IAAI,KAAK,CACb,uEAAuE,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CACzG,CAAC;IACJ,CAAC;IAED,IAAI,QAAQ,KAAK,IAAI,IAAI,YAAY,GAAG,EAAE,EAAE,CAAC;QAC3C,MAAM,IAAI,KAAK,CACb,sEAAsE,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CACtG,CAAC;IACJ,CAAC;IAED,gCAAgC;IAChC,IAAI,SAAS,IAAI,QAAQ,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CAAC,+CAA+C,KAAK,WAAW,IAAI,EAAE,CAAC,CAAC;IACzF,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,SAAS,CAAC,OAAe;IAChC,kDAAkD;IAClD,IAAI,OAAO,KAAK,KAAK,EAAE,CAAC;QACtB,OAAO,IAAI,IAAI,EAAE,CAAC;IACpB,CAAC;IAED,yCAAyC;IACzC,MAAM,aAAa,GAAG,OAAO,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;IACvD,IAAI,aAAa,EAAE,CAAC;QAClB,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC9C,MAAM,IAAI,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;QAC9B,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;QAEvB,QAAQ,IAAI,EAAE,CAAC;YACb,KAAK,GAAG;gBACN,OAAO,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,MAAM,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;YACtD,KAAK,GAAG;gBACN,OAAO,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,MAAM,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;YAC3D,KAAK,GAAG;gBACN,OAAO,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,MAAM,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;QAClE,CAAC;IACH,CAAC;IAED,0BAA0B;IAC1B,MAAM,MAAM,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC;IACjC,IAAI,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CACb,wBAAwB,OAAO,gDAAgD,CAChF,CAAC;IACJ,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
1
+ {"version":3,"file":"time-range-validator.js","sourceRoot":"","sources":["../../src/utils/time-range-validator.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAErD;;;;;;GAMG;AACH,MAAM,UAAU,iBAAiB,CAAC,QAAgB,EAAE,KAAa,EAAE,IAAY;IAC7E,gEAAgE;IAChE,MAAM,SAAS,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;IACzC,MAAM,QAAQ,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;IAEvC,8BAA8B;IAC9B,MAAM,UAAU,GAAG,QAAQ,CAAC,OAAO,EAAE,GAAG,SAAS,CAAC,OAAO,EAAE,CAAC;IAC5D,MAAM,aAAa,GAAG,UAAU,GAAG,CAAC,IAAI,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;IACpD,MAAM,YAAY,GAAG,aAAa,GAAG,EAAE,CAAC;IAExC,6BAA6B;IAC7B,IAAI,QAAQ,KAAK,IAAI,IAAI,aAAa,GAAG,CAAC,EAAE,CAAC;QAC3C,MAAM,IAAI,KAAK,CACb,qEAAqE,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CACvG,CAAC;IACJ,CAAC;IAED,IAAI,QAAQ,KAAK,IAAI,IAAI,aAAa,GAAG,EAAE,EAAE,CAAC;QAC5C,MAAM,IAAI,KAAK,CACb,uEAAuE,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CACzG,CAAC;IACJ,CAAC;IAED,IAAI,QAAQ,KAAK,IAAI,IAAI,YAAY,GAAG,EAAE,EAAE,CAAC;QAC3C,MAAM,IAAI,KAAK,CACb,sEAAsE,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CACtG,CAAC;IACJ,CAAC;IAED,gCAAgC;IAChC,IAAI,SAAS,IAAI,QAAQ,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CAAC,+CAA+C,KAAK,WAAW,IAAI,EAAE,CAAC,CAAC;IACzF,CAAC;AACH,CAAC"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Time string parsing shared by request builders and validators.
3
+ *
4
+ * The v3 reporting API (ETL backend since the Aug 2026 cutover) accepts only
5
+ * RFC3339 timestamps: relative forms like "-20m" are rejected with a 400, and
6
+ * omitting filter.stop returns an empty result set. All times must be
7
+ * resolved to absolute timestamps client-side before sending.
8
+ */
9
+ /**
10
+ * Parse a time string ("now", relative like "-24h", or ISO-8601) to a Date.
11
+ * @throws Error if the string is not a recognized time format
12
+ */
13
+ export declare function parseTimeString(timeStr: string): Date;
14
+ /**
15
+ * Resolve a time string to an absolute ISO-8601 timestamp string.
16
+ */
17
+ export declare function resolveTimeToIso(timeStr: string): string;
18
+ //# sourceMappingURL=time-resolver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"time-resolver.d.ts","sourceRoot":"","sources":["../../src/utils/time-resolver.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH;;;GAGG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CA8BrD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAExD"}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * Time string parsing shared by request builders and validators.
3
+ *
4
+ * The v3 reporting API (ETL backend since the Aug 2026 cutover) accepts only
5
+ * RFC3339 timestamps: relative forms like "-20m" are rejected with a 400, and
6
+ * omitting filter.stop returns an empty result set. All times must be
7
+ * resolved to absolute timestamps client-side before sending.
8
+ */
9
+ /**
10
+ * Parse a time string ("now", relative like "-24h", or ISO-8601) to a Date.
11
+ * @throws Error if the string is not a recognized time format
12
+ */
13
+ export function parseTimeString(timeStr) {
14
+ if (timeStr === "now") {
15
+ return new Date();
16
+ }
17
+ // Relative time pattern: -<number><unit>
18
+ const relativeMatch = timeStr.match(/^-(\d+)(m|h|d)$/);
19
+ if (relativeMatch) {
20
+ const amount = parseInt(relativeMatch[1], 10);
21
+ const unit = relativeMatch[2];
22
+ const now = new Date();
23
+ switch (unit) {
24
+ case "m":
25
+ return new Date(now.getTime() - amount * 60 * 1000);
26
+ case "h":
27
+ return new Date(now.getTime() - amount * 60 * 60 * 1000);
28
+ case "d":
29
+ return new Date(now.getTime() - amount * 24 * 60 * 60 * 1000);
30
+ }
31
+ }
32
+ const parsed = new Date(timeStr);
33
+ if (isNaN(parsed.getTime())) {
34
+ throw new Error(`Invalid time format: ${timeStr}. Use ISO-8601 or relative format like '-24h'.`);
35
+ }
36
+ return parsed;
37
+ }
38
+ /**
39
+ * Resolve a time string to an absolute ISO-8601 timestamp string.
40
+ */
41
+ export function resolveTimeToIso(timeStr) {
42
+ return parseTimeString(timeStr).toISOString();
43
+ }
44
+ //# sourceMappingURL=time-resolver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"time-resolver.js","sourceRoot":"","sources":["../../src/utils/time-resolver.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,OAAe;IAC7C,IAAI,OAAO,KAAK,KAAK,EAAE,CAAC;QACtB,OAAO,IAAI,IAAI,EAAE,CAAC;IACpB,CAAC;IAED,yCAAyC;IACzC,MAAM,aAAa,GAAG,OAAO,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;IACvD,IAAI,aAAa,EAAE,CAAC;QAClB,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC9C,MAAM,IAAI,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;QAC9B,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;QAEvB,QAAQ,IAAI,EAAE,CAAC;YACb,KAAK,GAAG;gBACN,OAAO,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,MAAM,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;YACtD,KAAK,GAAG;gBACN,OAAO,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,MAAM,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;YAC3D,KAAK,GAAG;gBACN,OAAO,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,MAAM,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;QAClE,CAAC;IACH,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC;IACjC,IAAI,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CACb,wBAAwB,OAAO,gDAAgD,CAChF,CAAC;IACJ,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,OAAe;IAC9C,OAAO,eAAe,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC;AAChD,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@butlr/butlr-mcp-server",
3
- "version": "0.4.0",
3
+ "version": "0.5.1",
4
4
  "description": "Model Context Protocol server providing secure, read-only access to Butlr occupancy and asset data",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",