@hotscots/mcp 1.2.0 → 1.3.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.
- package/README.md +48 -11
- package/dist/index.js +444 -18
- package/dist/index.js.map +1 -1
- package/package.json +5 -4
package/README.md
CHANGED
|
@@ -2,13 +2,32 @@
|
|
|
2
2
|
|
|
3
3
|
Give AI assistants like Claude direct access to the [Hots&Cots](https://hotscots.app) military quality-of-life database — barracks conditions, DFAC ratings, and on-base facility reviews from service members across the DoD.
|
|
4
4
|
|
|
5
|
-
**Requires an H&CPro API key** (`
|
|
5
|
+
**Requires an H&CPro API key** (`hc_` followed by 64 hex characters) — generate yours at [hotscots.app/subscription/dashboard](https://hotscots.app/subscription/dashboard).
|
|
6
6
|
|
|
7
7
|
---
|
|
8
8
|
|
|
9
|
-
## Setup
|
|
9
|
+
## Setup
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
1. **Get your API key** at [hotscots.app/subscription/dashboard](https://hotscots.app/subscription/dashboard)
|
|
12
|
+
2. **Download [hotscots.mcpb](https://hotscots.app/download/mcp)**
|
|
13
|
+
3. **Double-click it.** Claude Desktop opens an install dialog.
|
|
14
|
+
4. **Paste your API key** and click Install.
|
|
15
|
+
5. **Check it's enabled** in Settings → Extensions.
|
|
16
|
+
|
|
17
|
+
No config files, no terminal. Your key is stored in your operating system's
|
|
18
|
+
keychain rather than in a plaintext config file.
|
|
19
|
+
|
|
20
|
+
> **If no tools appear, check step 5.** The API key is required, so installing
|
|
21
|
+
> without it leaves the extension installed but *disabled*, with no tools and
|
|
22
|
+
> no error message. Open Settings → Extensions, enter the key, and toggle it on.
|
|
23
|
+
|
|
24
|
+
---
|
|
25
|
+
|
|
26
|
+
<details>
|
|
27
|
+
<summary><strong>Advanced: manual config for other MCP clients</strong></summary>
|
|
28
|
+
|
|
29
|
+
For Cursor, VS Code, Claude Code, or any other MCP client. Add this to your
|
|
30
|
+
client's config file:
|
|
12
31
|
|
|
13
32
|
**macOS:** `~/Library/Application Support/Claude/claude_desktop_config.json`
|
|
14
33
|
**Windows:** `%APPDATA%\Claude\claude_desktop_config.json`
|
|
@@ -20,20 +39,16 @@ No cloning or building required. Add this to your Claude Desktop config file:
|
|
|
20
39
|
"command": "npx",
|
|
21
40
|
"args": ["-y", "@hotscots/mcp"],
|
|
22
41
|
"env": {
|
|
23
|
-
"HOTSCOTS_API_KEY": "
|
|
42
|
+
"HOTSCOTS_API_KEY": "hc_YOUR_KEY_HERE"
|
|
24
43
|
}
|
|
25
44
|
}
|
|
26
45
|
}
|
|
27
46
|
}
|
|
28
47
|
```
|
|
29
48
|
|
|
30
|
-
Restart
|
|
31
|
-
|
|
32
|
-
---
|
|
33
|
-
|
|
34
|
-
## Setup — Cursor / Other MCP Clients
|
|
49
|
+
Restart your client. The Hots&Cots tools will appear automatically.
|
|
35
50
|
|
|
36
|
-
|
|
51
|
+
</details>
|
|
37
52
|
|
|
38
53
|
---
|
|
39
54
|
|
|
@@ -45,6 +60,8 @@ Same config block — check your client's documentation for the config file loca
|
|
|
45
60
|
- *"What percentage of barracks reviews at Fort Hood report mold?"*
|
|
46
61
|
- *"How do service members rate the DFACs at Camp Lejeune?"*
|
|
47
62
|
- *"Show medical and CDC facility reviews for Army bases in Texas."*
|
|
63
|
+
- *"How do official ICE satisfaction scores compare to Hots&Cots reviews at the same base?"*
|
|
64
|
+
- *"What's on the breakfast menu at Stackhouse today, and what does it cost?"*
|
|
48
65
|
|
|
49
66
|
---
|
|
50
67
|
|
|
@@ -57,6 +74,10 @@ Same config block — check your client's documentation for the config file loca
|
|
|
57
74
|
| `hotscots_get_barracks_reviews` | Paginated barracks / housing (Cots) reviews |
|
|
58
75
|
| `hotscots_get_dfac_reviews` | Paginated dining facility / DFAC (Hots) reviews |
|
|
59
76
|
| `hotscots_get_other_reviews` | Reviews for medical, CDC, gym, PX/BX, lodging, and moving services |
|
|
77
|
+
| `hotscots_list_ice_facilities` | Installations with ICE survey data, by dining / public-works kind |
|
|
78
|
+
| `hotscots_get_ice_ratings` | Official DoD ICE satisfaction scores for DFACs and public works |
|
|
79
|
+
| `hotscots_list_menu_locations` | CSDV dining venues with menu coverage dates |
|
|
80
|
+
| `hotscots_get_menu_items` | Dining menu items with prices, nutrition, allergens, and G4G tags |
|
|
60
81
|
|
|
61
82
|
---
|
|
62
83
|
|
|
@@ -76,11 +97,27 @@ The server runs locally on your machine — your API key never leaves your devic
|
|
|
76
97
|
|
|
77
98
|
---
|
|
78
99
|
|
|
100
|
+
## Building the desktop extension
|
|
101
|
+
|
|
102
|
+
```bash
|
|
103
|
+
npm run bundle
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
Compiles TypeScript, stages runtime dependencies, prunes non-runtime files,
|
|
107
|
+
validates the manifest, smoke-tests `tools/list` over stdio, and packs
|
|
108
|
+
`mcpb/hotscots-<version>.mcpb` (~1.9 MB). Attach that file to the GitHub
|
|
109
|
+
release and upload it wherever the download link points.
|
|
110
|
+
|
|
111
|
+
`mcpb/manifest.json` is the committed source of truth; `mcpb/build/` and the
|
|
112
|
+
packed `.mcpb` are build artifacts and are gitignored.
|
|
113
|
+
|
|
114
|
+
---
|
|
115
|
+
|
|
79
116
|
## Environment Variables
|
|
80
117
|
|
|
81
118
|
| Variable | Required | Description |
|
|
82
119
|
|---|---|---|
|
|
83
|
-
| `HOTSCOTS_API_KEY` | ✅ | Your API key (`
|
|
120
|
+
| `HOTSCOTS_API_KEY` | ✅ | Your API key (`hc_` + 64 hex characters) |
|
|
84
121
|
| `HOTSCOTS_API_URL` | ❌ | Override the API base URL |
|
|
85
122
|
| `TRANSPORT` | ❌ | `stdio` (default) or `http` for remote/multi-user mode |
|
|
86
123
|
| `PORT` | ❌ | HTTP port when `TRANSPORT=http` (default: `3000`) |
|
package/dist/index.js
CHANGED
|
@@ -2,14 +2,13 @@
|
|
|
2
2
|
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
3
3
|
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
|
|
4
4
|
import { StreamableHTTPServerTransport } from "@modelcontextprotocol/sdk/server/streamableHttp.js";
|
|
5
|
-
import express from "express";
|
|
6
5
|
import { z } from "zod";
|
|
7
6
|
// ─── Config ──────────────────────────────────────────────────────────────────
|
|
8
7
|
const API_BASE_URL = process.env.HOTSCOTS_API_URL ?? "https://api.hotscots.app/functions/v1/api";
|
|
9
|
-
const CHARACTER_LIMIT =
|
|
8
|
+
const CHARACTER_LIMIT = 500000;
|
|
10
9
|
// When filtering client-side we must over-fetch. Cap how many records we'll
|
|
11
10
|
// pull in a single request to avoid burning the user's monthly quota.
|
|
12
|
-
const FILTER_FETCH_CAP =
|
|
11
|
+
const FILTER_FETCH_CAP = 2000;
|
|
13
12
|
var EndpointType;
|
|
14
13
|
(function (EndpointType) {
|
|
15
14
|
EndpointType["HOTS"] = "hots";
|
|
@@ -23,7 +22,10 @@ var ResponseFormat;
|
|
|
23
22
|
})(ResponseFormat || (ResponseFormat = {}));
|
|
24
23
|
// ─── API key validation ───────────────────────────────────────────────────────
|
|
25
24
|
function requireApiKey() {
|
|
26
|
-
|
|
25
|
+
// Trim before use. A key pasted with a trailing newline or space is sent
|
|
26
|
+
// verbatim in the Authorization header, fails the server's HMAC comparison,
|
|
27
|
+
// and surfaces as "invalid key" — indistinguishable from a wrong key.
|
|
28
|
+
const key = process.env.HOTSCOTS_API_KEY?.trim();
|
|
27
29
|
if (!key) {
|
|
28
30
|
console.error("\n❌ HOTSCOTS_API_KEY is not set.\n" +
|
|
29
31
|
" Add it to the env block in your MCP client config and restart.\n" +
|
|
@@ -59,7 +61,10 @@ async function apiGet(path, params) {
|
|
|
59
61
|
}
|
|
60
62
|
if (!res.ok) {
|
|
61
63
|
switch (res.status) {
|
|
62
|
-
case 401: throw new Error("Invalid or expired API key
|
|
64
|
+
case 401: throw new Error("Invalid or expired API key.\n" +
|
|
65
|
+
" - Confirm HOTSCOTS_API_KEY in your MCP client config matches a current key.\n" +
|
|
66
|
+
" - If you recently generated a new key, restart the client so it picks it up.\n" +
|
|
67
|
+
" - An old key left in a second config entry will fail even if a newer one exists.");
|
|
63
68
|
case 403: throw new Error("Your plan does not have access to this data. Check your subscription tier.");
|
|
64
69
|
case 429: throw new Error("Monthly request quota exceeded. Upgrade your plan or wait for the next billing cycle.");
|
|
65
70
|
default: throw new Error("The Hots&Cots server encountered an error. Please try again shortly.");
|
|
@@ -105,14 +110,43 @@ const SAFE_FIELDS = new Set([
|
|
|
105
110
|
"cdc_wait_times", "mover_company", "professionalism_rating", "timeliness_rating",
|
|
106
111
|
"origin_location", "destination_location",
|
|
107
112
|
]);
|
|
108
|
-
function
|
|
113
|
+
function pick(row, fields) {
|
|
109
114
|
const result = {};
|
|
110
|
-
for (const key of
|
|
111
|
-
if (key in
|
|
112
|
-
result[key] =
|
|
115
|
+
for (const key of fields) {
|
|
116
|
+
if (key in row)
|
|
117
|
+
result[key] = row[key];
|
|
113
118
|
}
|
|
114
119
|
return result;
|
|
115
120
|
}
|
|
121
|
+
function sanitizeReview(r) {
|
|
122
|
+
return pick(r, SAFE_FIELDS);
|
|
123
|
+
}
|
|
124
|
+
// Same opt-in discipline as SAFE_FIELDS: a new upstream column is dropped
|
|
125
|
+
// until it is listed here.
|
|
126
|
+
const ICE_SAFE_FIELDS = new Set([
|
|
127
|
+
"kind", "site_id", "installation_key", "service_provider_id", "sp_name",
|
|
128
|
+
"facility_name", "is_mapped_barracks_sp", "window_start", "window_end",
|
|
129
|
+
"overall_responses", "overall_satisfied_pct", "met_needs_responses",
|
|
130
|
+
"met_needs_pct", "appearance_score", "appearance_responses", "staff_score",
|
|
131
|
+
"staff_responses", "timeliness_score", "timeliness_responses", "hours_score",
|
|
132
|
+
"hours_responses", "composite_score", "extra_scale_questions",
|
|
133
|
+
"extra_yesno_questions", "scraped_at",
|
|
134
|
+
]);
|
|
135
|
+
const ICE_FACILITY_FIELDS = new Set([
|
|
136
|
+
"installation_key", "kind", "facility_count", "latest_window_end",
|
|
137
|
+
]);
|
|
138
|
+
const MENU_SAFE_FIELDS = new Set([
|
|
139
|
+
"location", "profit_center_id", "profit_center_name", "category", "item_id",
|
|
140
|
+
"item_name", "description", "price", "calories", "calories_max", "total_fat",
|
|
141
|
+
"saturated_fat", "total_carbohydrate", "total_sugars", "protein", "sodium",
|
|
142
|
+
"dietary_fiber", "ingredients", "tags", "is_vegan", "is_vegetarian",
|
|
143
|
+
"allergens", "choice_groups", "is_alcohol_restricted", "source", "daypart",
|
|
144
|
+
"scrape_date", "scrape_datetime",
|
|
145
|
+
]);
|
|
146
|
+
const MENU_LOCATION_FIELDS = new Set([
|
|
147
|
+
"location", "latest_scrape_date", "earliest_scrape_date", "date_count",
|
|
148
|
+
"total_items",
|
|
149
|
+
]);
|
|
116
150
|
// ─── Shared schemas ───────────────────────────────────────────────────────────
|
|
117
151
|
// Raw shapes (not z.object wrappers) — required by the MCP SDK's registerTool.
|
|
118
152
|
const PaginationSchema = {
|
|
@@ -120,9 +154,9 @@ const PaginationSchema = {
|
|
|
120
154
|
.number()
|
|
121
155
|
.int()
|
|
122
156
|
.min(1)
|
|
123
|
-
.max(
|
|
157
|
+
.max(1000)
|
|
124
158
|
.default(20)
|
|
125
|
-
.describe("Records per page, 1–
|
|
159
|
+
.describe("Records per page, 1–1000 (default 20)."),
|
|
126
160
|
offset: z
|
|
127
161
|
.number()
|
|
128
162
|
.int()
|
|
@@ -139,6 +173,31 @@ const InstallationFilterSchema = z
|
|
|
139
173
|
.max(100)
|
|
140
174
|
.optional()
|
|
141
175
|
.describe("Filter by installation name (partial, case-insensitive)");
|
|
176
|
+
// The API clamps limit at 500, so advertise 500 rather than the 1000 the
|
|
177
|
+
// review tools claim.
|
|
178
|
+
const DatasetPaginationSchema = {
|
|
179
|
+
limit: z
|
|
180
|
+
.number()
|
|
181
|
+
.int()
|
|
182
|
+
.min(1)
|
|
183
|
+
.max(500)
|
|
184
|
+
.default(50)
|
|
185
|
+
.describe("Records per page, 1–500 (default 50)."),
|
|
186
|
+
offset: z
|
|
187
|
+
.number()
|
|
188
|
+
.int()
|
|
189
|
+
.min(0)
|
|
190
|
+
.default(0)
|
|
191
|
+
.describe("Records to skip for pagination (default 0)."),
|
|
192
|
+
};
|
|
193
|
+
const IsoDateSchema = z
|
|
194
|
+
.string()
|
|
195
|
+
.regex(/^\d{4}-\d{2}-\d{2}$/, "Use YYYY-MM-DD")
|
|
196
|
+
.optional();
|
|
197
|
+
const IceKindSchema = z
|
|
198
|
+
.enum(["dfac", "dpw"])
|
|
199
|
+
.optional()
|
|
200
|
+
.describe("Filter by survey kind: 'dfac' (dining) or 'dpw' (public works / barracks)");
|
|
142
201
|
// ─── Formatters ───────────────────────────────────────────────────────────────
|
|
143
202
|
function starsFor(rating) {
|
|
144
203
|
const r = Math.round(rating);
|
|
@@ -177,6 +236,136 @@ function formatReviews(data, endpointLabel, pagination, filtered) {
|
|
|
177
236
|
}
|
|
178
237
|
return lines.join("\n");
|
|
179
238
|
}
|
|
239
|
+
// Upstream sends "" for missing menu values, and numerics arrive as strings.
|
|
240
|
+
function present(value) {
|
|
241
|
+
return value !== null && value !== undefined && String(value).trim() !== "";
|
|
242
|
+
}
|
|
243
|
+
function pct(value) {
|
|
244
|
+
return present(value) ? `${Number(value).toFixed(1)}%` : "—";
|
|
245
|
+
}
|
|
246
|
+
function num(value, digits = 2) {
|
|
247
|
+
return present(value) ? Number(value).toFixed(digits) : "—";
|
|
248
|
+
}
|
|
249
|
+
function scoreCell(score, responses) {
|
|
250
|
+
if (!present(score))
|
|
251
|
+
return "—";
|
|
252
|
+
const n = present(responses) ? ` (n=${responses})` : "";
|
|
253
|
+
return `${Number(score).toFixed(1)}${n}`;
|
|
254
|
+
}
|
|
255
|
+
function formatIceRatings(data, pagination, filters) {
|
|
256
|
+
const lines = ["# Hots&Cots — ICE Satisfaction Snapshots"];
|
|
257
|
+
const window = filters?.window_end;
|
|
258
|
+
if (filters?.all_windows) {
|
|
259
|
+
lines.push("_All snapshot windows, newest first._");
|
|
260
|
+
}
|
|
261
|
+
else if (present(window)) {
|
|
262
|
+
lines.push(`_Snapshot window ending ${window}._`);
|
|
263
|
+
}
|
|
264
|
+
lines.push(`_Showing ${pagination.returned} records (offset ${pagination.offset}, limit ${pagination.limit})_`);
|
|
265
|
+
lines.push("");
|
|
266
|
+
lines.push("| Installation | Facility | Kind | Satisfied | Met needs | Appearance | Staff | Timeliness | Hours | Composite | Window |");
|
|
267
|
+
lines.push("|---|---|---|---:|---:|---:|---:|---:|---:|---:|---|");
|
|
268
|
+
for (const r of data) {
|
|
269
|
+
lines.push(`| ${r.installation_key} | ${r.facility_name ?? r.sp_name ?? "—"} | ${r.kind} ` +
|
|
270
|
+
`| ${pct(r.overall_satisfied_pct)} | ${pct(r.met_needs_pct)} ` +
|
|
271
|
+
`| ${scoreCell(r.appearance_score, r.appearance_responses)} ` +
|
|
272
|
+
`| ${scoreCell(r.staff_score, r.staff_responses)} ` +
|
|
273
|
+
`| ${scoreCell(r.timeliness_score, r.timeliness_responses)} ` +
|
|
274
|
+
`| ${scoreCell(r.hours_score, r.hours_responses)} ` +
|
|
275
|
+
`| ${num(r.composite_score)} | ${r.window_end} |`);
|
|
276
|
+
}
|
|
277
|
+
lines.push("");
|
|
278
|
+
lines.push("_Sub-scores are 1–5. `n` is the response count behind each score — treat small n with care._");
|
|
279
|
+
if (pagination.returned === pagination.limit) {
|
|
280
|
+
lines.push(`_More results available — use offset=${pagination.offset + pagination.limit} to continue._`);
|
|
281
|
+
}
|
|
282
|
+
return lines.join("\n");
|
|
283
|
+
}
|
|
284
|
+
function formatIceFacilities(data) {
|
|
285
|
+
const sorted = [...data].sort((a, b) => b.facility_count - a.facility_count ||
|
|
286
|
+
a.installation_key.localeCompare(b.installation_key));
|
|
287
|
+
const lines = [
|
|
288
|
+
`# Hots&Cots — ICE Facilities (${data.length} installation/kind pairs)`,
|
|
289
|
+
"",
|
|
290
|
+
"| Installation | Kind | Facilities | Latest window |",
|
|
291
|
+
"|---|---|---:|---|",
|
|
292
|
+
];
|
|
293
|
+
for (const f of sorted) {
|
|
294
|
+
lines.push(`| ${f.installation_key} | ${f.kind} | ${f.facility_count} | ${f.latest_window_end} |`);
|
|
295
|
+
}
|
|
296
|
+
lines.push("");
|
|
297
|
+
lines.push("_Use an exact `installation_key` with hotscots_get_ice_ratings._");
|
|
298
|
+
return lines.join("\n");
|
|
299
|
+
}
|
|
300
|
+
function formatMenuItems(data, pagination, resolvedDates) {
|
|
301
|
+
const lines = ["# Hots&Cots — CSDV Dining Menus"];
|
|
302
|
+
if (resolvedDates?.length) {
|
|
303
|
+
lines.push(`_Latest menu per venue: ${resolvedDates
|
|
304
|
+
.map((d) => `${d.location} ${d.scrape_date}`)
|
|
305
|
+
.join(", ")}._`);
|
|
306
|
+
}
|
|
307
|
+
lines.push(`_Showing ${pagination.returned} items (offset ${pagination.offset}, limit ${pagination.limit})_`);
|
|
308
|
+
lines.push("");
|
|
309
|
+
// Group under venue + profit centre; the upstream ordering already matches.
|
|
310
|
+
let currentGroup = "";
|
|
311
|
+
for (const item of data) {
|
|
312
|
+
const group = `${item.location} — ${item.profit_center_name}`;
|
|
313
|
+
if (group !== currentGroup) {
|
|
314
|
+
lines.push("");
|
|
315
|
+
lines.push(`## ${group}`);
|
|
316
|
+
currentGroup = group;
|
|
317
|
+
}
|
|
318
|
+
const bits = [];
|
|
319
|
+
if (present(item.price))
|
|
320
|
+
bits.push(`$${item.price}`);
|
|
321
|
+
if (present(item.calories)) {
|
|
322
|
+
bits.push(present(item.calories_max) && item.calories_max !== item.calories
|
|
323
|
+
? `${item.calories}–${item.calories_max} cal`
|
|
324
|
+
: `${item.calories} cal`);
|
|
325
|
+
}
|
|
326
|
+
if (present(item.daypart) && item.daypart !== "unknown")
|
|
327
|
+
bits.push(item.daypart);
|
|
328
|
+
const meta = bits.length ? ` — ${bits.join(" · ")}` : "";
|
|
329
|
+
lines.push(`- **${item.item_name}**${meta}`);
|
|
330
|
+
if (present(item.category))
|
|
331
|
+
lines.push(` - Category: ${item.category}`);
|
|
332
|
+
if (present(item.description))
|
|
333
|
+
lines.push(` - ${item.description}`);
|
|
334
|
+
if (present(item.tags))
|
|
335
|
+
lines.push(` - Tags: ${item.tags}`);
|
|
336
|
+
if (present(item.allergens))
|
|
337
|
+
lines.push(` - Allergens: ${item.allergens}`);
|
|
338
|
+
const macros = [
|
|
339
|
+
["Protein", item.protein],
|
|
340
|
+
["Fat", item.total_fat],
|
|
341
|
+
["Carbs", item.total_carbohydrate],
|
|
342
|
+
["Sodium", item.sodium],
|
|
343
|
+
["Fiber", item.dietary_fiber],
|
|
344
|
+
].filter(([, v]) => present(v));
|
|
345
|
+
if (macros.length) {
|
|
346
|
+
lines.push(` - ${macros.map(([k, v]) => `${k}: ${v}`).join(" · ")}`);
|
|
347
|
+
}
|
|
348
|
+
}
|
|
349
|
+
if (pagination.returned === pagination.limit) {
|
|
350
|
+
lines.push("");
|
|
351
|
+
lines.push(`_More results available — use offset=${pagination.offset + pagination.limit} to continue._`);
|
|
352
|
+
}
|
|
353
|
+
return lines.join("\n");
|
|
354
|
+
}
|
|
355
|
+
function formatMenuLocations(data) {
|
|
356
|
+
const lines = [
|
|
357
|
+
`# Hots&Cots — CSDV Dining Venues (${data.length} total)`,
|
|
358
|
+
"",
|
|
359
|
+
"| Venue | Latest menu | Earliest menu | Days captured | Items |",
|
|
360
|
+
"|---|---|---|---:|---:|",
|
|
361
|
+
];
|
|
362
|
+
for (const loc of data) {
|
|
363
|
+
lines.push(`| ${loc.location} | ${loc.latest_scrape_date} | ${loc.earliest_scrape_date} | ${loc.date_count} | ${loc.total_items} |`);
|
|
364
|
+
}
|
|
365
|
+
lines.push("");
|
|
366
|
+
lines.push("_Venues are scraped on different schedules, so latest menu dates can differ._");
|
|
367
|
+
return lines.join("\n");
|
|
368
|
+
}
|
|
180
369
|
function formatInstallations(data) {
|
|
181
370
|
const sorted = [...data].sort((a, b) => b.counts.total - a.counts.total);
|
|
182
371
|
const lines = [
|
|
@@ -220,7 +409,7 @@ async function fetchReviews(endpoint, params) {
|
|
|
220
409
|
// ─── MCP Server ───────────────────────────────────────────────────────────────
|
|
221
410
|
const server = new McpServer({
|
|
222
411
|
name: "Hots&Cots",
|
|
223
|
-
version: "1.
|
|
412
|
+
version: "1.3.0",
|
|
224
413
|
});
|
|
225
414
|
// ── Tool: health check ────────────────────────────────────────────────────────
|
|
226
415
|
server.registerTool("hotscots_health", {
|
|
@@ -292,14 +481,14 @@ server.registerTool("hotscots_get_barracks_reviews", {
|
|
|
292
481
|
title: "Get Barracks Reviews",
|
|
293
482
|
description: `Fetch barracks / housing (Cots) reviews from Hots&Cots. Costs 1 API request.
|
|
294
483
|
|
|
295
|
-
|
|
484
|
+
Use a larger limit (up to 1000) to assemble datasets for analysis; page with offset for more.
|
|
296
485
|
⚠️ If installation is set, up to ${FILTER_FETCH_CAP} records are fetched and filtered locally. Pagination with an installation filter returns the first matching records from that pool.
|
|
297
486
|
|
|
298
487
|
Each review includes: rating (1–5), feedback, tags, branch, and barracks-specific fields such as mold_issues, pest_issues, working_air_heat, working_furniture, accessible_laundry, private_sleeping_area, lockable_doors, dpw_satisfaction_rating, is_privatized_barracks.
|
|
299
488
|
|
|
300
489
|
Args:
|
|
301
490
|
- installation (string, optional): Filter by installation name (partial match). Run hotscots_list_installations first to get exact names.
|
|
302
|
-
- limit (integer): Records per page, 1–
|
|
491
|
+
- limit (integer): Records per page, 1–1000 (default 20)
|
|
303
492
|
- offset (integer): Records to skip (default 0). Only reliable without an installation filter.
|
|
304
493
|
- response_format: 'markdown' (default) or 'json'`,
|
|
305
494
|
inputSchema: {
|
|
@@ -332,14 +521,14 @@ server.registerTool("hotscots_get_dfac_reviews", {
|
|
|
332
521
|
title: "Get DFAC / Dining Reviews",
|
|
333
522
|
description: `Fetch dining facility / DFAC (Hots) reviews from Hots&Cots. Costs 1 API request.
|
|
334
523
|
|
|
335
|
-
|
|
524
|
+
Use a larger limit (up to 1000) to assemble datasets for analysis; page with offset for more.
|
|
336
525
|
⚠️ If installation is set, up to ${FILTER_FETCH_CAP} records are fetched and filtered locally. Pagination with an installation filter returns the first matching records from that pool.
|
|
337
526
|
|
|
338
527
|
Each review includes: rating (1–5), feedback, tags, branch, dfac_name, and dining-specific fields such as breakfast_ranking, lunch_ranking, dinner_ranking, dfac_choices, dfac_healthy, dfac_filling, dfac_temp, dfac_police, has_shuttle, walking_distance, kiosk_level, inedible_food_issue.
|
|
339
528
|
|
|
340
529
|
Args:
|
|
341
530
|
- installation (string, optional): Filter by installation name (partial match). Run hotscots_list_installations first to get exact names.
|
|
342
|
-
- limit (integer): Records per page, 1–
|
|
531
|
+
- limit (integer): Records per page, 1–1000 (default 20)
|
|
343
532
|
- offset (integer): Records to skip (default 0). Only reliable without an installation filter.
|
|
344
533
|
- response_format: 'markdown' (default) or 'json'`,
|
|
345
534
|
inputSchema: {
|
|
@@ -372,14 +561,14 @@ server.registerTool("hotscots_get_other_reviews", {
|
|
|
372
561
|
title: "Get Other Facility Reviews",
|
|
373
562
|
description: `Fetch reviews of other on-base facilities from Hots&Cots. Costs 1 API request.
|
|
374
563
|
|
|
375
|
-
|
|
564
|
+
Use a larger limit (up to 1000) to assemble datasets for analysis; page with offset for more.
|
|
376
565
|
⚠️ If installation is set, up to ${FILTER_FETCH_CAP} records are fetched and filtered locally.
|
|
377
566
|
|
|
378
567
|
Covers: Medical clinics, Child Development Centers (CDC), gyms, PX/BX, legal offices, lodging, and moving/transportation services. Use the facility_type field to distinguish between them.
|
|
379
568
|
|
|
380
569
|
Args:
|
|
381
570
|
- installation (string, optional): Filter by installation name (partial match)
|
|
382
|
-
- limit (integer): Records per page, 1–
|
|
571
|
+
- limit (integer): Records per page, 1–1000 (default 20)
|
|
383
572
|
- offset (integer): Records to skip (default 0). Only reliable without an installation filter.
|
|
384
573
|
- response_format: 'markdown' (default) or 'json'`,
|
|
385
574
|
inputSchema: {
|
|
@@ -407,6 +596,231 @@ Args:
|
|
|
407
596
|
return { content: [{ type: "text", text: handleError(err) }] };
|
|
408
597
|
}
|
|
409
598
|
});
|
|
599
|
+
// ── Tool: ICE facilities (discovery) ──────────────────────────────────────────
|
|
600
|
+
server.registerTool("hotscots_list_ice_facilities", {
|
|
601
|
+
title: "List ICE Facilities",
|
|
602
|
+
description: `List every installation with ICE (Interactive Customer Evaluation) satisfaction data, broken down by survey kind. Costs 1 API request.
|
|
603
|
+
|
|
604
|
+
ICE is the DoD's official customer-satisfaction survey programme. Hots&Cots captures periodic snapshots of the published scores.
|
|
605
|
+
|
|
606
|
+
Returns per installation/kind pair:
|
|
607
|
+
- installation_key: full name including state, e.g. "Beale Air Force Base, California"
|
|
608
|
+
- kind: 'dfac' (dining facilities) or 'dpw' (public works, which covers barracks)
|
|
609
|
+
- facility_count: distinct facilities surveyed
|
|
610
|
+
- latest_window_end: most recent snapshot window available
|
|
611
|
+
|
|
612
|
+
Run this first to get exact installation_key values before calling hotscots_get_ice_ratings.
|
|
613
|
+
|
|
614
|
+
Args:
|
|
615
|
+
- kind (string, optional): 'dfac' or 'dpw'
|
|
616
|
+
- installation (string, optional): Filter by installation name (partial match)
|
|
617
|
+
- response_format: 'markdown' (default) or 'json'`,
|
|
618
|
+
inputSchema: {
|
|
619
|
+
kind: IceKindSchema,
|
|
620
|
+
installation: InstallationFilterSchema,
|
|
621
|
+
response_format: ResponseFormatSchema,
|
|
622
|
+
},
|
|
623
|
+
annotations: { readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: true },
|
|
624
|
+
}, async (params) => {
|
|
625
|
+
try {
|
|
626
|
+
const result = await apiGet("/ice-facilities", {
|
|
627
|
+
kind: params.kind,
|
|
628
|
+
installation: params.installation,
|
|
629
|
+
});
|
|
630
|
+
const data = result.data.map((r) => pick(r, ICE_FACILITY_FIELDS));
|
|
631
|
+
if (!data.length) {
|
|
632
|
+
const where = params.installation ? ` for "${params.installation}"` : "";
|
|
633
|
+
return { content: [{ type: "text", text: `No ICE facilities found${where}.` }] };
|
|
634
|
+
}
|
|
635
|
+
const text = params.response_format === ResponseFormat.JSON
|
|
636
|
+
? JSON.stringify({ endpoint: "ice", count: data.length, data }, null, 2)
|
|
637
|
+
: formatIceFacilities(data);
|
|
638
|
+
return {
|
|
639
|
+
content: [{ type: "text", text: truncate(text) }],
|
|
640
|
+
structuredContent: { endpoint: "ice", count: data.length, data },
|
|
641
|
+
};
|
|
642
|
+
}
|
|
643
|
+
catch (err) {
|
|
644
|
+
return { content: [{ type: "text", text: handleError(err) }] };
|
|
645
|
+
}
|
|
646
|
+
});
|
|
647
|
+
// ── Tool: ICE ratings ─────────────────────────────────────────────────────────
|
|
648
|
+
server.registerTool("hotscots_get_ice_ratings", {
|
|
649
|
+
title: "Get ICE Satisfaction Ratings",
|
|
650
|
+
description: `Fetch ICE (Interactive Customer Evaluation) satisfaction snapshots for dining facilities and public works. Costs 1 API request.
|
|
651
|
+
|
|
652
|
+
These are official DoD survey scores, not Hots&Cots user reviews — useful for comparing what the command reports against what service members say.
|
|
653
|
+
|
|
654
|
+
Defaults to the most recent snapshot window. Pass window_end for a specific window, or all_windows=true to page through history.
|
|
655
|
+
|
|
656
|
+
Each record includes: installation_key, facility_name, kind, overall_satisfied_pct, met_needs_pct, 1–5 sub-scores for appearance / staff / timeliness / hours (each with its response count), composite_score, and the window dates.
|
|
657
|
+
|
|
658
|
+
⚠️ Response counts are often very small (n=1 is common). Do not treat a single-response score as representative.
|
|
659
|
+
|
|
660
|
+
Args:
|
|
661
|
+
- kind (string, optional): 'dfac' (dining) or 'dpw' (public works / barracks)
|
|
662
|
+
- installation (string, optional): Filter by installation name (partial match). Run hotscots_list_ice_facilities first for exact names.
|
|
663
|
+
- window_end (string, optional): Snapshot window end date, YYYY-MM-DD. Defaults to the newest available.
|
|
664
|
+
- all_windows (boolean): Set true to include every window instead of just the latest (default false)
|
|
665
|
+
- limit (integer): Records per page, 1–500 (default 50)
|
|
666
|
+
- offset (integer): Records to skip (default 0)
|
|
667
|
+
- response_format: 'markdown' (default) or 'json'`,
|
|
668
|
+
inputSchema: {
|
|
669
|
+
kind: IceKindSchema,
|
|
670
|
+
installation: InstallationFilterSchema,
|
|
671
|
+
window_end: IsoDateSchema.describe("Snapshot window end date (YYYY-MM-DD). Defaults to the newest available."),
|
|
672
|
+
all_windows: z
|
|
673
|
+
.boolean()
|
|
674
|
+
.default(false)
|
|
675
|
+
.describe("Include every snapshot window instead of only the latest"),
|
|
676
|
+
...DatasetPaginationSchema,
|
|
677
|
+
response_format: ResponseFormatSchema,
|
|
678
|
+
},
|
|
679
|
+
annotations: { readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: true },
|
|
680
|
+
}, async (params) => {
|
|
681
|
+
try {
|
|
682
|
+
const result = await apiGet("/ice-ratings", {
|
|
683
|
+
kind: params.kind,
|
|
684
|
+
installation: params.installation,
|
|
685
|
+
window_end: params.window_end,
|
|
686
|
+
all_windows: params.all_windows ? "true" : undefined,
|
|
687
|
+
limit: params.limit,
|
|
688
|
+
offset: params.offset,
|
|
689
|
+
});
|
|
690
|
+
const data = result.data.map((r) => pick(r, ICE_SAFE_FIELDS));
|
|
691
|
+
if (!data.length) {
|
|
692
|
+
const where = params.installation ? ` for "${params.installation}"` : "";
|
|
693
|
+
return { content: [{ type: "text", text: `No ICE ratings found${where}.` }] };
|
|
694
|
+
}
|
|
695
|
+
const payload = {
|
|
696
|
+
endpoint: "ice",
|
|
697
|
+
data,
|
|
698
|
+
pagination: result.pagination,
|
|
699
|
+
filters: result.filters,
|
|
700
|
+
};
|
|
701
|
+
const text = params.response_format === ResponseFormat.JSON
|
|
702
|
+
? JSON.stringify(payload, null, 2)
|
|
703
|
+
: formatIceRatings(data, result.pagination, result.filters);
|
|
704
|
+
return {
|
|
705
|
+
content: [{ type: "text", text: truncate(text) }],
|
|
706
|
+
structuredContent: payload,
|
|
707
|
+
};
|
|
708
|
+
}
|
|
709
|
+
catch (err) {
|
|
710
|
+
return { content: [{ type: "text", text: handleError(err) }] };
|
|
711
|
+
}
|
|
712
|
+
});
|
|
713
|
+
// ── Tool: menu venues (discovery) ─────────────────────────────────────────────
|
|
714
|
+
server.registerTool("hotscots_list_menu_locations", {
|
|
715
|
+
title: "List Dining Venues",
|
|
716
|
+
description: `List the CSDV dining venues that have captured menus, with coverage dates. Costs 1 API request.
|
|
717
|
+
|
|
718
|
+
Returns per venue:
|
|
719
|
+
- location: venue key, e.g. "stackhouse"
|
|
720
|
+
- latest_scrape_date / earliest_scrape_date: coverage range
|
|
721
|
+
- date_count: distinct days captured
|
|
722
|
+
- total_items: menu item rows on record
|
|
723
|
+
|
|
724
|
+
Venues are scraped on different schedules, so their latest menu dates can differ. Run this first to get exact location values for hotscots_get_menu_items.
|
|
725
|
+
|
|
726
|
+
Args:
|
|
727
|
+
- response_format: 'markdown' (default) or 'json'`,
|
|
728
|
+
inputSchema: {
|
|
729
|
+
response_format: ResponseFormatSchema,
|
|
730
|
+
},
|
|
731
|
+
annotations: { readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: true },
|
|
732
|
+
}, async (params) => {
|
|
733
|
+
try {
|
|
734
|
+
const result = await apiGet("/menu-locations");
|
|
735
|
+
const data = result.data.map((r) => pick(r, MENU_LOCATION_FIELDS));
|
|
736
|
+
if (!data.length) {
|
|
737
|
+
return { content: [{ type: "text", text: "No dining venues found." }] };
|
|
738
|
+
}
|
|
739
|
+
const text = params.response_format === ResponseFormat.JSON
|
|
740
|
+
? JSON.stringify({ endpoint: "menu", count: data.length, data }, null, 2)
|
|
741
|
+
: formatMenuLocations(data);
|
|
742
|
+
return {
|
|
743
|
+
content: [{ type: "text", text: truncate(text) }],
|
|
744
|
+
structuredContent: { endpoint: "menu", count: data.length, data },
|
|
745
|
+
};
|
|
746
|
+
}
|
|
747
|
+
catch (err) {
|
|
748
|
+
return { content: [{ type: "text", text: handleError(err) }] };
|
|
749
|
+
}
|
|
750
|
+
});
|
|
751
|
+
// ── Tool: menu items ──────────────────────────────────────────────────────────
|
|
752
|
+
server.registerTool("hotscots_get_menu_items", {
|
|
753
|
+
title: "Get Dining Menu Items",
|
|
754
|
+
description: `Fetch menu items — with prices and nutrition — from CSDV dining venues. Costs 1 API request.
|
|
755
|
+
|
|
756
|
+
Defaults to the latest captured menu for each venue. Because venues are scraped on different schedules, "latest" is resolved per venue, and the response reports which date was used for each.
|
|
757
|
+
|
|
758
|
+
Pass scrape_date to read a historical menu, which is how you compare prices or offerings over time.
|
|
759
|
+
|
|
760
|
+
Each item includes: item_name, category, profit_center_name (the station or outlet), description, price, calories, macros, ingredients, allergens, Go-for-Green tags, and daypart.
|
|
761
|
+
|
|
762
|
+
⚠️ Nutrition fields are frequently empty upstream — absent values mean "not published", not zero.
|
|
763
|
+
|
|
764
|
+
Args:
|
|
765
|
+
- location (string, optional): Venue key. Run hotscots_list_menu_locations for valid values.
|
|
766
|
+
- scrape_date (string, optional): Menu date, YYYY-MM-DD. Defaults to each venue's latest.
|
|
767
|
+
- daypart (string, optional): 'breakfast', 'lunch', 'dinner', 'all-day', or 'unknown'
|
|
768
|
+
- profit_center (string, optional): Filter by station / outlet name (partial match)
|
|
769
|
+
- category (string, optional): Filter by menu category (partial match)
|
|
770
|
+
- search (string, optional): Filter by item name (partial match)
|
|
771
|
+
- limit (integer): Records per page, 1–500 (default 50)
|
|
772
|
+
- offset (integer): Records to skip (default 0)
|
|
773
|
+
- response_format: 'markdown' (default) or 'json'`,
|
|
774
|
+
inputSchema: {
|
|
775
|
+
location: z.string().max(100).optional().describe("Venue key, e.g. 'stackhouse'"),
|
|
776
|
+
scrape_date: IsoDateSchema.describe("Menu date (YYYY-MM-DD). Defaults to each venue's latest."),
|
|
777
|
+
daypart: z
|
|
778
|
+
.enum(["breakfast", "lunch", "dinner", "all-day", "unknown"])
|
|
779
|
+
.optional()
|
|
780
|
+
.describe("Filter by daypart"),
|
|
781
|
+
profit_center: z.string().max(100).optional().describe("Filter by station / outlet name (partial)"),
|
|
782
|
+
category: z.string().max(100).optional().describe("Filter by menu category (partial)"),
|
|
783
|
+
search: z.string().max(100).optional().describe("Filter by item name (partial)"),
|
|
784
|
+
...DatasetPaginationSchema,
|
|
785
|
+
response_format: ResponseFormatSchema,
|
|
786
|
+
},
|
|
787
|
+
annotations: { readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: true },
|
|
788
|
+
}, async (params) => {
|
|
789
|
+
try {
|
|
790
|
+
const result = await apiGet("/menu-items", {
|
|
791
|
+
location: params.location,
|
|
792
|
+
scrape_date: params.scrape_date,
|
|
793
|
+
daypart: params.daypart,
|
|
794
|
+
profit_center: params.profit_center,
|
|
795
|
+
category: params.category,
|
|
796
|
+
search: params.search,
|
|
797
|
+
limit: params.limit,
|
|
798
|
+
offset: params.offset,
|
|
799
|
+
});
|
|
800
|
+
const data = result.data.map((r) => pick(r, MENU_SAFE_FIELDS));
|
|
801
|
+
if (!data.length) {
|
|
802
|
+
const where = params.location ? ` at "${params.location}"` : "";
|
|
803
|
+
return { content: [{ type: "text", text: `No menu items found${where}.` }] };
|
|
804
|
+
}
|
|
805
|
+
const payload = {
|
|
806
|
+
endpoint: "menu",
|
|
807
|
+
data,
|
|
808
|
+
pagination: result.pagination,
|
|
809
|
+
filters: result.filters,
|
|
810
|
+
resolved_dates: result.resolved_dates ?? null,
|
|
811
|
+
};
|
|
812
|
+
const text = params.response_format === ResponseFormat.JSON
|
|
813
|
+
? JSON.stringify(payload, null, 2)
|
|
814
|
+
: formatMenuItems(data, result.pagination, result.resolved_dates);
|
|
815
|
+
return {
|
|
816
|
+
content: [{ type: "text", text: truncate(text) }],
|
|
817
|
+
structuredContent: payload,
|
|
818
|
+
};
|
|
819
|
+
}
|
|
820
|
+
catch (err) {
|
|
821
|
+
return { content: [{ type: "text", text: handleError(err) }] };
|
|
822
|
+
}
|
|
823
|
+
});
|
|
410
824
|
// ─── Transport ────────────────────────────────────────────────────────────────
|
|
411
825
|
async function runStdio() {
|
|
412
826
|
const transport = new StdioServerTransport();
|
|
@@ -414,6 +828,18 @@ async function runStdio() {
|
|
|
414
828
|
console.error("Hots&Cots MCP server running via stdio");
|
|
415
829
|
}
|
|
416
830
|
async function runHTTP() {
|
|
831
|
+
// Imported lazily: the desktop extension bundle ships only the stdio path.
|
|
832
|
+
let expressModule;
|
|
833
|
+
try {
|
|
834
|
+
expressModule = await import("express");
|
|
835
|
+
}
|
|
836
|
+
catch {
|
|
837
|
+
console.error("\n❌ TRANSPORT=http requires the 'express' package.\n" +
|
|
838
|
+
" It is not included in the desktop extension bundle.\n" +
|
|
839
|
+
" Use the default stdio transport, or install via npx -y @hotscots/mcp.\n");
|
|
840
|
+
process.exit(1);
|
|
841
|
+
}
|
|
842
|
+
const express = expressModule.default;
|
|
417
843
|
const app = express();
|
|
418
844
|
app.disable("x-powered-by");
|
|
419
845
|
app.use(express.json({ limit: "64kb" }));
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,6BAA6B,EAAE,MAAM,oDAAoD,CAAC;AACnG,OAAO,OAAO,MAAM,SAAS,CAAC;AAC9B,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,gFAAgF;AAEhF,MAAM,YAAY,GAChB,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,2CAA2C,CAAC;AAC9E,MAAM,eAAe,GAAG,KAAK,CAAC;AAE9B,4EAA4E;AAC5E,sEAAsE;AACtE,MAAM,gBAAgB,GAAG,GAAG,CAAC;AAE7B,IAAK,YAIJ;AAJD,WAAK,YAAY;IACf,6BAAa,CAAA;IACb,6BAAa,CAAA;IACb,+BAAe,CAAA;AACjB,CAAC,EAJI,YAAY,KAAZ,YAAY,QAIhB;AAED,IAAK,cAGJ;AAHD,WAAK,cAAc;IACjB,uCAAqB,CAAA;IACrB,+BAAa,CAAA;AACf,CAAC,EAHI,cAAc,KAAd,cAAc,QAGlB;AAED,iFAAiF;AAEjF,SAAS,aAAa;IACpB,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC;IACzC,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,OAAO,CAAC,KAAK,CACX,oCAAoC;YACpC,qEAAqE;YACrE,mEAAmE,CACpE,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,wEAAwE;AACxE,MAAM,OAAO,GAAG,aAAa,EAAE,CAAC;AAEhC,iFAAiF;AAEjF,KAAK,UAAU,MAAM,CACnB,IAAY,EACZ,MAAoD;IAEpD,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,YAAY,GAAG,IAAI,EAAE,CAAC,CAAC;IAC9C,IAAI,MAAM,EAAE,CAAC;QACX,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YAC5C,IAAI,CAAC,KAAK,SAAS;gBAAE,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1D,CAAC;IACH,CAAC;IAED,IAAI,GAAa,CAAC;IAClB,IAAI,CAAC;QACH,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE;YAChC,OAAO,EAAE;gBACP,aAAa,EAAE,UAAU,OAAO,EAAE;gBAClC,MAAM,EAAE,kBAAkB;aAC3B;YACD,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC;SACpC,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC7D,MAAM,IAAI,KAAK,CAAC,4EAA4E,CAAC,CAAC;IAChG,CAAC;IAED,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QACZ,QAAQ,GAAG,CAAC,MAAM,EAAE,CAAC;YACnB,KAAK,GAAG,CAAC,CAAC,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAC;YACtF,KAAK,GAAG,CAAC,CAAC,MAAM,IAAI,KAAK,CAAC,4EAA4E,CAAC,CAAC;YACxG,KAAK,GAAG,CAAC,CAAC,MAAM,IAAI,KAAK,CAAC,uFAAuF,CAAC,CAAC;YACnH,OAAO,CAAC,CAAE,MAAM,IAAI,KAAK,CAAC,sEAAsE,CAAC,CAAC;QACpG,CAAC;IACH,CAAC;IAED,OAAO,GAAG,CAAC,IAAI,EAAgB,CAAC;AAClC,CAAC;AAED,SAAS,WAAW,CAAC,GAAY;IAC/B,IAAI,GAAG,YAAY,KAAK;QAAE,OAAO,GAAG,CAAC,OAAO,CAAC;IAC7C,OAAO,yCAAyC,CAAC;AACnD,CAAC;AAED,SAAS,QAAQ,CAAC,IAAY;IAC5B,IAAI,IAAI,CAAC,MAAM,IAAI,eAAe;QAAE,OAAO,IAAI,CAAC;IAChD,OAAO,CACL,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,eAAe,CAAC;QAC9B,4FAA4F,CAC7F,CAAC;AACJ,CAAC;AAqID,iFAAiF;AAEjF,oEAAoE;AACpE,sEAAsE;AACtE,MAAM,WAAW,GAAwB,IAAI,GAAG,CAAmB;IACjE,YAAY,EAAE,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM;IACnE,QAAQ,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,aAAa;IAChE,oBAAoB,EAAE,+BAA+B,EAAE,gCAAgC;IACvF,YAAY,EAAE,gBAAgB,EAAE,aAAa,EAAE,aAAa,EAAE,kBAAkB;IAChF,mBAAmB,EAAE,oBAAoB,EAAE,uBAAuB,EAAE,gBAAgB;IACpF,wBAAwB,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,iBAAiB;IACrF,yBAAyB,EAAE,wBAAwB;IACnD,WAAW,EAAE,mBAAmB,EAAE,eAAe,EAAE,gBAAgB,EAAE,WAAW;IAChF,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,aAAa,EAAE,WAAW;IAC1E,aAAa,EAAE,cAAc,EAAE,aAAa,EAAE,kBAAkB,EAAE,aAAa;IAC/E,qBAAqB;IACrB,eAAe,EAAE,oBAAoB,EAAE,aAAa,EAAE,aAAa,EAAE,eAAe;IACpF,mBAAmB,EAAE,cAAc,EAAE,wBAAwB,EAAE,WAAW;IAC1E,yBAAyB,EAAE,uBAAuB,EAAE,8BAA8B;IAClF,qBAAqB,EAAE,eAAe,EAAE,cAAc,EAAE,gBAAgB;IACxE,eAAe,EAAE,eAAe,EAAE,aAAa,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS;IAC5E,uBAAuB,EAAE,qBAAqB,EAAE,sBAAsB;IACtE,oBAAoB,EAAE,mBAAmB,EAAE,gBAAgB;IAC3D,6BAA6B,EAAE,aAAa,EAAE,qBAAqB;IACnE,kCAAkC,EAAE,yBAAyB,EAAE,sBAAsB;IACrF,gBAAgB,EAAE,eAAe,EAAE,wBAAwB,EAAE,mBAAmB;IAChF,iBAAiB,EAAE,sBAAsB;CACjC,CAAC,CAAC;AAEZ,SAAS,cAAc,CAAC,CAAY;IAClC,MAAM,MAAM,GAA4B,EAAE,CAAC;IAC3C,KAAK,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC;QAC9B,IAAI,GAAG,IAAI,CAAC;YAAE,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;IACrC,CAAC;IACD,OAAO,MAA+B,CAAC;AACzC,CAAC;AAED,iFAAiF;AAEjF,+EAA+E;AAC/E,MAAM,gBAAgB,GAAG;IACvB,KAAK,EAAE,CAAC;SACL,MAAM,EAAE;SACR,GAAG,EAAE;SACL,GAAG,CAAC,CAAC,CAAC;SACN,GAAG,CAAC,GAAG,CAAC;SACR,OAAO,CAAC,EAAE,CAAC;SACX,QAAQ,CAAC,mFAAmF,CAAC;IAChG,MAAM,EAAE,CAAC;SACN,MAAM,EAAE;SACR,GAAG,EAAE;SACL,GAAG,CAAC,CAAC,CAAC;SACN,OAAO,CAAC,CAAC,CAAC;SACV,QAAQ,CAAC,6CAA6C,CAAC;CAC3D,CAAC;AAEF,MAAM,oBAAoB,GAAG,CAAC;KAC3B,UAAU,CAAC,cAAc,CAAC;KAC1B,OAAO,CAAC,cAAc,CAAC,QAAQ,CAAC;KAChC,QAAQ,CAAC,2EAA2E,CAAC,CAAC;AAEzF,MAAM,wBAAwB,GAAG,CAAC;KAC/B,MAAM,EAAE;KACR,GAAG,CAAC,GAAG,CAAC;KACR,QAAQ,EAAE;KACV,QAAQ,CAAC,yDAAyD,CAAC,CAAC;AAEvE,iFAAiF;AAEjF,SAAS,QAAQ,CAAC,MAAc;IAC9B,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC7B,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACxD,CAAC;AAED,SAAS,aAAa,CACpB,IAAkB,EAClB,aAAqB,EACrB,UAA+D,EAC/D,QAAyD;IAEzD,MAAM,KAAK,GAAG,CAAC,iBAAiB,aAAa,UAAU,CAAC,CAAC;IAEzD,IAAI,QAAQ,EAAE,CAAC;QACb,KAAK,CAAC,IAAI,CAAC,iBAAiB,QAAQ,CAAC,YAAY,aAAa,IAAI,CAAC,MAAM,2BAA2B,QAAQ,CAAC,YAAY,oBAAoB,CAAC,CAAC;QAC/I,IAAI,QAAQ,CAAC,YAAY,IAAI,gBAAgB,IAAI,IAAI,CAAC,MAAM,KAAK,UAAU,CAAC,KAAK,EAAE,CAAC;YAClF,KAAK,CAAC,IAAI,CAAC,6BAA6B,gBAAgB,yDAAyD,CAAC,CAAC;QACrH,CAAC;IACH,CAAC;SAAM,CAAC;QACN,KAAK,CAAC,IAAI,CAAC,YAAY,UAAU,CAAC,QAAQ,oBAAoB,UAAU,CAAC,MAAM,WAAW,UAAU,CAAC,KAAK,IAAI,CAAC,CAAC;IAClH,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAEf,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;QACrB,KAAK,CAAC,IAAI,CAAC,MAAM,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;QAClD,KAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC;QAClD,IAAI,CAAC,CAAC,MAAM;YAAE,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;QACpD,KAAK,CAAC,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,kBAAkB,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC,CAAC;QACnI,IAAI,CAAC,CAAC,IAAI,EAAE,MAAM;YAAE,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACjE,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC;YAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;QAAC,CAAC;QAC3D,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACpD,CAAC;IAED,IAAI,CAAC,QAAQ,IAAI,UAAU,CAAC,QAAQ,KAAK,UAAU,CAAC,KAAK,EAAE,CAAC;QAC1D,KAAK,CAAC,IAAI,CAAC,wCAAwC,UAAU,CAAC,MAAM,GAAG,UAAU,CAAC,KAAK,gBAAgB,CAAC,CAAC;IAC3G,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,SAAS,mBAAmB,CAAC,IAA0B;IACrD,MAAM,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACzE,MAAM,KAAK,GAAG;QACZ,yCAAyC,IAAI,CAAC,MAAM,SAAS;QAC7D,EAAE;QACF,sDAAsD;QACtD,2BAA2B;KAC5B,CAAC;IACF,KAAK,MAAM,IAAI,IAAI,MAAM,EAAE,CAAC;QAC1B,KAAK,CAAC,IAAI,CACR,KAAK,IAAI,CAAC,YAAY,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,KAAK,MAAM,CACzH,CAAC;IACJ,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,iFAAiF;AAEjF,KAAK,UAAU,YAAY,CACzB,QAAsB,EACtB,MAAgE;IAMhE,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;QACxB,MAAM,MAAM,GAAG,MAAM,MAAM,CAAkB,UAAU,EAAE;YACvD,QAAQ;YACR,KAAK,EAAE,gBAAgB;YACvB,MAAM,EAAE,CAAC;SACV,CAAC,CAAC;QAEH,MAAM,CAAC,GAAG,MAAM,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC;QAC5C,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;QACpF,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;QAExE,OAAO;YACL,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC;YAC9B,UAAU,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,CAAC,MAAM,EAAE;YACjF,QAAQ,EAAE,EAAE,YAAY,EAAE,MAAM,CAAC,YAAY,EAAE,YAAY,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE;SAClF,CAAC;IACJ,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,MAAM,CAAkB,UAAU,EAAE;QACvD,QAAQ;QACR,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,MAAM,EAAE,MAAM,CAAC,MAAM;KACtB,CAAC,CAAC;IAEH,OAAO;QACL,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC;QACrC,UAAU,EAAE,MAAM,CAAC,UAAU;KAC9B,CAAC;AACJ,CAAC;AAED,iFAAiF;AAEjF,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC;IAC3B,IAAI,EAAE,WAAW;IACjB,OAAO,EAAE,OAAO;CACjB,CAAC,CAAC;AAEH,iFAAiF;AAEjF,MAAM,CAAC,YAAY,CACjB,iBAAiB,EACjB;IACE,KAAK,EAAE,kBAAkB;IACzB,WAAW,EAAE;;;6DAG4C;IACzD,WAAW,EAAE,EAAE;IACf,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE;CACvG,EACD,KAAK,IAAI,EAAE;IACT,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAiB,SAAS,CAAC,CAAC;QACvD,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,+BAA+B,MAAM,CAAC,MAAM,aAAa,MAAM,CAAC,SAAS,EAAE,EAAE,CAAC;SAC/G,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;IACjE,CAAC;AACH,CAAC,CACF,CAAC;AAEF,iFAAiF;AAEjF,MAAM,CAAC,YAAY,CACjB,6BAA6B,EAC7B;IACE,KAAK,EAAE,6BAA6B;IACpC,WAAW,EAAE;;;;;;;;;;;;;oDAamC;IAChD,WAAW,EAAE;QACX,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mEAAmE,CAAC;QACpH,eAAe,EAAE,oBAAoB;KACtC;IACD,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE;CACvG,EACD,KAAK,EAAE,MAAM,EAAE,EAAE;IACf,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAwB,gBAAgB,CAAC,CAAC;QAErE,IAAI,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;QACvB,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;YAClB,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;YACtC,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;QACtE,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,oCAAoC,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC,EAAE,CAAC;QACtG,CAAC;QAED,MAAM,IAAI,GACR,MAAM,CAAC,eAAe,KAAK,cAAc,CAAC,IAAI;YAC5C,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;YACvD,CAAC,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;QAEhC,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YACjD,iBAAiB,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,EAAwC;SACtF,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;IACjE,CAAC;AACH,CAAC,CACF,CAAC;AAEF,iFAAiF;AAEjF,MAAM,CAAC,YAAY,CACjB,+BAA+B,EAC/B;IACE,KAAK,EAAE,sBAAsB;IAC7B,WAAW,EAAE;;;mCAGkB,gBAAgB;;;;;;;;oDAQC;IAChD,WAAW,EAAE;QACX,YAAY,EAAE,wBAAwB;QACtC,GAAG,gBAAgB;QACnB,eAAe,EAAE,oBAAoB;KACtC;IACD,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE;CACvG,EACD,KAAK,EAAE,MAAM,EAAE,EAAE;IACf,IAAI,CAAC;QACH,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,MAAM,YAAY,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAErF,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,MAAM,KAAK,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,MAAM,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;YACzE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,4BAA4B,KAAK,GAAG,EAAE,CAAC,EAAE,CAAC;QACrF,CAAC;QAED,MAAM,IAAI,GACR,MAAM,CAAC,eAAe,KAAK,cAAc,CAAC,IAAI;YAC5C,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;YACjE,CAAC,CAAC,aAAa,CAAC,IAAI,EAAE,iBAAiB,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;QAEnE,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YACjD,iBAAiB,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAwC;SAChG,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;IACjE,CAAC;AACH,CAAC,CACF,CAAC;AAEF,gFAAgF;AAEhF,MAAM,CAAC,YAAY,CACjB,2BAA2B,EAC3B;IACE,KAAK,EAAE,2BAA2B;IAClC,WAAW,EAAE;;;mCAGkB,gBAAgB;;;;;;;;oDAQC;IAChD,WAAW,EAAE;QACX,YAAY,EAAE,wBAAwB;QACtC,GAAG,gBAAgB;QACnB,eAAe,EAAE,oBAAoB;KACtC;IACD,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE;CACvG,EACD,KAAK,EAAE,MAAM,EAAE,EAAE;IACf,IAAI,CAAC;QACH,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,MAAM,YAAY,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAErF,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,MAAM,KAAK,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,MAAM,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;YACzE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,0BAA0B,KAAK,GAAG,EAAE,CAAC,EAAE,CAAC;QACnF,CAAC;QAED,MAAM,IAAI,GACR,MAAM,CAAC,eAAe,KAAK,cAAc,CAAC,IAAI;YAC5C,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;YACjE,CAAC,CAAC,aAAa,CAAC,IAAI,EAAE,sBAAsB,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;QAExE,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YACjD,iBAAiB,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAwC;SAChG,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;IACjE,CAAC;AACH,CAAC,CACF,CAAC;AAEF,iFAAiF;AAEjF,MAAM,CAAC,YAAY,CACjB,4BAA4B,EAC5B;IACE,KAAK,EAAE,4BAA4B;IACnC,WAAW,EAAE;;;mCAGkB,gBAAgB;;;;;;;;oDAQC;IAChD,WAAW,EAAE;QACX,YAAY,EAAE,wBAAwB;QACtC,GAAG,gBAAgB;QACnB,eAAe,EAAE,oBAAoB;KACtC;IACD,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE;CACvG,EACD,KAAK,EAAE,MAAM,EAAE,EAAE;IACf,IAAI,CAAC;QACH,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,MAAM,YAAY,CAAC,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAEtF,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,MAAM,KAAK,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,MAAM,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;YACzE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,kCAAkC,KAAK,GAAG,EAAE,CAAC,EAAE,CAAC;QAC3F,CAAC;QAED,MAAM,IAAI,GACR,MAAM,CAAC,eAAe,KAAK,cAAc,CAAC,IAAI;YAC5C,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;YAClE,CAAC,CAAC,aAAa,CAAC,IAAI,EAAE,kBAAkB,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;QAEpE,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YACjD,iBAAiB,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAwC;SACjG,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;IACjE,CAAC;AACH,CAAC,CACF,CAAC;AAEF,iFAAiF;AAEjF,KAAK,UAAU,QAAQ;IACrB,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAChC,OAAO,CAAC,KAAK,CAAC,wCAAwC,CAAC,CAAC;AAC1D,CAAC;AAED,KAAK,UAAU,OAAO;IACpB,MAAM,GAAG,GAAG,OAAO,EAAE,CAAC;IACtB,GAAG,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;IAC5B,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;IAEzC,yDAAyD;IACzD,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,CAAC,kBAAkB,EAAE,kBAAkB,CAAC,CAAC,CAAC;IAE1E,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;QAClC,+CAA+C;QAC/C,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC;QACxC,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa;QAC7D,IAAI,MAAM,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;YAC/C,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC;YAC7C,OAAO;QACT,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,6BAA6B,CAAC;YAClD,kBAAkB,EAAE,SAAS;YAC7B,kBAAkB,EAAE,IAAI;SACzB,CAAC,CAAC;QACH,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,CAAC;QACzC,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAChC,MAAM,SAAS,CAAC,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IACpD,CAAC,CAAC,CAAC;IAEH,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,MAAM,EAAE,EAAE,CAAC,CAAC;IACtD,2DAA2D;IAC3D,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,WAAW,EAAE,GAAG,EAAE;QACjC,OAAO,CAAC,KAAK,CAAC,oDAAoD,IAAI,MAAM,CAAC,CAAC;IAChF,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,OAAO,CAAC;AACvD,IAAI,aAAa,KAAK,MAAM,EAAE,CAAC;IAC7B,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACrE,CAAC;KAAM,CAAC;IACN,QAAQ,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACtE,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hotscots/mcp",
|
|
3
|
-
"version": "1.
|
|
4
|
-
"description": "Official Hots&Cots MCP server
|
|
3
|
+
"version": "1.3.1",
|
|
4
|
+
"description": "Official Hots&Cots MCP server \u2014 barracks, DFAC, and facility reviews for U.S. military installations",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"bin": {
|
|
@@ -15,7 +15,8 @@
|
|
|
15
15
|
"build": "tsc",
|
|
16
16
|
"postbuild": "chmod +x dist/index.js",
|
|
17
17
|
"start": "node dist/index.js",
|
|
18
|
-
"dev": "tsc --watch"
|
|
18
|
+
"dev": "tsc --watch",
|
|
19
|
+
"bundle": "./mcpb/build.sh"
|
|
19
20
|
},
|
|
20
21
|
"keywords": [
|
|
21
22
|
"mcp",
|
|
@@ -32,7 +33,7 @@
|
|
|
32
33
|
"homepage": "https://hotscots.app",
|
|
33
34
|
"repository": {
|
|
34
35
|
"type": "git",
|
|
35
|
-
"url": "https://github.com/arbyruns/hotscots-mcp.git"
|
|
36
|
+
"url": "git+https://github.com/arbyruns/hotscots-mcp-server.git"
|
|
36
37
|
},
|
|
37
38
|
"publishConfig": {
|
|
38
39
|
"access": "public"
|