@cyanheads/epa-mcp-server 0.3.3 → 0.4.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/AGENTS.md +2 -2
- package/CLAUDE.md +2 -2
- package/README.md +38 -8
- package/changelog/0.4.x/0.4.0.md +35 -0
- package/dist/mcp-server/tools/definitions/get-air-quality.tool.d.ts +23 -9
- package/dist/mcp-server/tools/definitions/get-air-quality.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/get-air-quality.tool.js +165 -93
- package/dist/mcp-server/tools/definitions/get-air-quality.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/get-facility.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/get-facility.tool.js +4 -11
- package/dist/mcp-server/tools/definitions/get-facility.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/get-tri-releases.tool.d.ts +2 -1
- package/dist/mcp-server/tools/definitions/get-tri-releases.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/get-tri-releases.tool.js +10 -14
- package/dist/mcp-server/tools/definitions/get-tri-releases.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/index.d.ts +51 -18
- package/dist/mcp-server/tools/definitions/index.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/search-facilities.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/search-facilities.tool.js +7 -12
- package/dist/mcp-server/tools/definitions/search-facilities.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/search-superfund.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/search-superfund.tool.js +2 -8
- package/dist/mcp-server/tools/definitions/search-superfund.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/search-tri-releases.tool.d.ts +10 -3
- package/dist/mcp-server/tools/definitions/search-tri-releases.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/search-tri-releases.tool.js +50 -10
- package/dist/mcp-server/tools/definitions/search-tri-releases.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/search-water-systems.tool.d.ts +3 -1
- package/dist/mcp-server/tools/definitions/search-water-systems.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/search-water-systems.tool.js +22 -7
- package/dist/mcp-server/tools/definitions/search-water-systems.tool.js.map +1 -1
- package/dist/mcp-server/tools/format-lbs.d.ts +14 -0
- package/dist/mcp-server/tools/format-lbs.d.ts.map +1 -0
- package/dist/mcp-server/tools/format-lbs.js +16 -0
- package/dist/mcp-server/tools/format-lbs.js.map +1 -0
- package/dist/mcp-server/tools/format-location.d.ts +18 -0
- package/dist/mcp-server/tools/format-location.d.ts.map +1 -0
- package/dist/mcp-server/tools/format-location.js +26 -0
- package/dist/mcp-server/tools/format-location.js.map +1 -0
- package/dist/mcp-server/tools/format-tri-release.d.ts +16 -0
- package/dist/mcp-server/tools/format-tri-release.d.ts.map +1 -0
- package/dist/mcp-server/tools/format-tri-release.js +23 -0
- package/dist/mcp-server/tools/format-tri-release.js.map +1 -0
- package/dist/services/airnow/airnow-service.d.ts +10 -29
- package/dist/services/airnow/airnow-service.d.ts.map +1 -1
- package/dist/services/airnow/airnow-service.js +148 -95
- package/dist/services/airnow/airnow-service.js.map +1 -1
- package/dist/services/airnow/types.d.ts +62 -23
- package/dist/services/airnow/types.d.ts.map +1 -1
- package/dist/services/airnow/types.js +2 -1
- package/dist/services/airnow/types.js.map +1 -1
- package/dist/services/dmap/dmap-service.d.ts +41 -2
- package/dist/services/dmap/dmap-service.d.ts.map +1 -1
- package/dist/services/dmap/dmap-service.js +231 -116
- package/dist/services/dmap/dmap-service.js.map +1 -1
- package/dist/services/dmap/types.d.ts +17 -4
- package/dist/services/dmap/types.d.ts.map +1 -1
- package/dist/services/echo/echo-service.js +1 -1
- package/package.json +3 -3
- package/server.json +9 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search-superfund.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/search-superfund.tool.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"search-superfund.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/search-superfund.tool.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,13 +10,20 @@ export declare const searchTriReleasesTool: import("@cyanheads/mcp-ts-core").Too
|
|
|
10
10
|
year: z.ZodOptional<z.ZodNumber>;
|
|
11
11
|
chemical_name: z.ZodOptional<z.ZodString>;
|
|
12
12
|
limit: z.ZodDefault<z.ZodNumber>;
|
|
13
|
+
include_release_breakdown: z.ZodDefault<z.ZodBoolean>;
|
|
13
14
|
}, z.core.$strip>, z.ZodObject<{
|
|
14
15
|
releases: z.ZodArray<z.ZodObject<{
|
|
15
16
|
facilityId: z.ZodString;
|
|
16
17
|
facilityName: z.ZodOptional<z.ZodString>;
|
|
18
|
+
countyName: z.ZodOptional<z.ZodString>;
|
|
17
19
|
chemicalName: z.ZodString;
|
|
18
20
|
reportingYear: z.ZodNumber;
|
|
21
|
+
reportedUnit: z.ZodOptional<z.ZodLiteral<"grams">>;
|
|
19
22
|
totalReleasesInLbs: z.ZodOptional<z.ZodNumber>;
|
|
23
|
+
releasesToAirInLbs: z.ZodOptional<z.ZodNumber>;
|
|
24
|
+
releasesToWaterInLbs: z.ZodOptional<z.ZodNumber>;
|
|
25
|
+
releasesToLandInLbs: z.ZodOptional<z.ZodNumber>;
|
|
26
|
+
releasesToUndergroundInjectionInLbs: z.ZodOptional<z.ZodNumber>;
|
|
20
27
|
}, z.core.$strip>>;
|
|
21
28
|
state: z.ZodString;
|
|
22
29
|
message: z.ZodOptional<z.ZodString>;
|
|
@@ -26,8 +33,8 @@ export declare const searchTriReleasesTool: import("@cyanheads/mcp-ts-core").Too
|
|
|
26
33
|
readonly when: "No TRI records found for the given state and filters.";
|
|
27
34
|
readonly recovery: "Verify the state abbreviation is valid. TRI data lags 18 months — try removing the year filter or using an earlier year.";
|
|
28
35
|
}], {
|
|
29
|
-
readonly truncated: z.ZodBoolean
|
|
30
|
-
readonly shown: z.ZodNumber
|
|
31
|
-
readonly cap: z.ZodNumber
|
|
36
|
+
readonly truncated: z.ZodOptional<z.ZodBoolean>;
|
|
37
|
+
readonly shown: z.ZodOptional<z.ZodNumber>;
|
|
38
|
+
readonly cap: z.ZodOptional<z.ZodNumber>;
|
|
32
39
|
}>;
|
|
33
40
|
//# sourceMappingURL=search-tri-releases.tool.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search-tri-releases.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/search-tri-releases.tool.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"search-tri-releases.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/search-tri-releases.tool.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAIjE,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAmMhC,CAAC"}
|
|
@@ -4,10 +4,11 @@
|
|
|
4
4
|
*/
|
|
5
5
|
import { tool, z } from '@cyanheads/mcp-ts-core';
|
|
6
6
|
import { JsonRpcErrorCode } from '@cyanheads/mcp-ts-core/errors';
|
|
7
|
+
import { formatTriReleaseLines } from '../format-tri-release.js';
|
|
7
8
|
import { getDmapService } from '../../../services/dmap/dmap-service.js';
|
|
8
9
|
export const searchTriReleasesTool = tool('epa_search_tri_releases', {
|
|
9
10
|
title: 'Search TRI Releases by Region',
|
|
10
|
-
description: 'Search Toxic Release Inventory data across facilities in a state or county for a given reporting year. Returns facility name, TRI ID, chemical name, and release quantity. Use to identify top polluters in an area or build an environmental exposure profile. Use epa_get_tri_releases for detailed release records for a single facility. TRI data lags ~18 months from the current calendar year.',
|
|
11
|
+
description: 'Search Toxic Release Inventory data across facilities in a state or county for a given reporting year. Returns facility name and county, TRI facility ID, chemical name, and the one-time / non-routine release quantity; set include_release_breakdown to add routine on-site releases by medium (air, water, land, and underground-injection), at the cost of a slower call. Quantities are in pounds; dioxin and dioxin-like compounds, which TRI has facilities report in grams, are converted and marked with reportedUnit. Use to identify top polluters in an area or build an environmental exposure profile. Use epa_get_tri_releases for detailed release records for a single facility. TRI data lags ~18 months from the current calendar year.',
|
|
11
12
|
annotations: { readOnlyHint: true, openWorldHint: true, idempotentHint: true },
|
|
12
13
|
input: z.object({
|
|
13
14
|
state: z
|
|
@@ -18,7 +19,7 @@ export const searchTriReleasesTool = tool('epa_search_tri_releases', {
|
|
|
18
19
|
county: z
|
|
19
20
|
.string()
|
|
20
21
|
.optional()
|
|
21
|
-
.describe('County name to narrow results within the state
|
|
22
|
+
.describe('County name to narrow results within the state, e.g. "King". Case-insensitive partial match on the bare name, so a short name can also match a longer one (LAKE matches LAKE OF THE WOODS; check countyName on each record); a trailing "County", "Parish", or "Borough" is dropped before matching.'),
|
|
22
23
|
year: z
|
|
23
24
|
.number()
|
|
24
25
|
.int()
|
|
@@ -37,6 +38,10 @@ export const searchTriReleasesTool = tool('epa_search_tri_releases', {
|
|
|
37
38
|
.max(200)
|
|
38
39
|
.default(50)
|
|
39
40
|
.describe('Maximum number of release records to return (1–200)'),
|
|
41
|
+
include_release_breakdown: z
|
|
42
|
+
.boolean()
|
|
43
|
+
.default(false)
|
|
44
|
+
.describe('Add routine on-site releases by medium (air, water, land, underground injection) to each record. Costs one extra upstream request, which can add about 20 seconds when EPA has not cached it.'),
|
|
40
45
|
}),
|
|
41
46
|
output: z.object({
|
|
42
47
|
releases: z
|
|
@@ -44,12 +49,36 @@ export const searchTriReleasesTool = tool('epa_search_tri_releases', {
|
|
|
44
49
|
.object({
|
|
45
50
|
facilityId: z.string().describe('TRI facility identifier'),
|
|
46
51
|
facilityName: z.string().optional().describe('Facility name'),
|
|
52
|
+
countyName: z
|
|
53
|
+
.string()
|
|
54
|
+
.optional()
|
|
55
|
+
.describe('County as TRI records the facility\'s location (e.g. "KING", "CALCASIEU PARISH"). The county filter is a partial match, so a short name can also match a longer one (LAKE matches LAKE OF THE WOODS); check this field to keep only the county you meant.'),
|
|
47
56
|
chemicalName: z.string().describe('Chemical name as reported to TRI'),
|
|
48
57
|
reportingYear: z.number().describe('Year of the TRI submission'),
|
|
58
|
+
reportedUnit: z
|
|
59
|
+
.literal('grams')
|
|
60
|
+
.optional()
|
|
61
|
+
.describe('Present as "grams" when TRI had the facility report this chemical in grams (dioxin and dioxin-like compounds); its quantities here are converted to pounds (1 lb = 453.59237 g). Absent for chemicals reported in pounds.'),
|
|
49
62
|
totalReleasesInLbs: z
|
|
50
63
|
.number()
|
|
51
64
|
.optional()
|
|
52
|
-
.describe('
|
|
65
|
+
.describe('TRI one-time / non-routine release quantity in pounds (spills, accidents) — a distinct TRI category, NOT the sum of the per-medium routine releases below.'),
|
|
66
|
+
releasesToAirInLbs: z
|
|
67
|
+
.number()
|
|
68
|
+
.optional()
|
|
69
|
+
.describe('On-site routine air releases (fugitive + stack emissions) in pounds, summed across air release types for this submission. Only with include_release_breakdown.'),
|
|
70
|
+
releasesToWaterInLbs: z
|
|
71
|
+
.number()
|
|
72
|
+
.optional()
|
|
73
|
+
.describe('On-site routine releases to surface water in pounds, summed across all reported outfalls for this submission. Only with include_release_breakdown.'),
|
|
74
|
+
releasesToLandInLbs: z
|
|
75
|
+
.number()
|
|
76
|
+
.optional()
|
|
77
|
+
.describe('On-site routine land releases in pounds — landfills, land treatment, surface impoundment, and other on-site disposal, summed for this submission. Only with include_release_breakdown.'),
|
|
78
|
+
releasesToUndergroundInjectionInLbs: z
|
|
79
|
+
.number()
|
|
80
|
+
.optional()
|
|
81
|
+
.describe('On-site routine releases via underground injection wells in pounds, summed across injection well classes for this submission. Only with include_release_breakdown.'),
|
|
53
82
|
})
|
|
54
83
|
.describe('TRI release record for a facility-chemical-year combination'))
|
|
55
84
|
.describe('TRI release records for facilities in the queried state and filters'),
|
|
@@ -62,9 +91,13 @@ export const searchTriReleasesTool = tool('epa_search_tri_releases', {
|
|
|
62
91
|
enrichment: {
|
|
63
92
|
truncated: z
|
|
64
93
|
.boolean()
|
|
65
|
-
.
|
|
66
|
-
|
|
67
|
-
|
|
94
|
+
.optional()
|
|
95
|
+
.describe('True when the result list was capped at the limit — more records may exist. Absent below the limit.'),
|
|
96
|
+
shown: z
|
|
97
|
+
.number()
|
|
98
|
+
.optional()
|
|
99
|
+
.describe('Number of release records returned. Present only when truncated.'),
|
|
100
|
+
cap: z.number().optional().describe('The limit that was applied. Present only when truncated.'),
|
|
68
101
|
},
|
|
69
102
|
errors: [
|
|
70
103
|
{
|
|
@@ -79,8 +112,13 @@ export const searchTriReleasesTool = tool('epa_search_tri_releases', {
|
|
|
79
112
|
state: input.state,
|
|
80
113
|
year: input.year,
|
|
81
114
|
county: input.county,
|
|
115
|
+
includeReleaseBreakdown: input.include_release_breakdown,
|
|
82
116
|
});
|
|
83
|
-
|
|
117
|
+
// TRI stores bare county names ("KING", never "KING COUNTY"), so a suffixed input would match nothing.
|
|
118
|
+
const county = input.county
|
|
119
|
+
?.trim()
|
|
120
|
+
.replace(/\s+(county|parish|borough)$/i, '')
|
|
121
|
+
.toUpperCase();
|
|
84
122
|
const chemicalName = input.chemical_name?.trim();
|
|
85
123
|
const releases = await getDmapService().searchTriReleases({
|
|
86
124
|
state: input.state.trim().toUpperCase(),
|
|
@@ -88,11 +126,12 @@ export const searchTriReleasesTool = tool('epa_search_tri_releases', {
|
|
|
88
126
|
...(input.year !== undefined && { year: input.year }),
|
|
89
127
|
...(chemicalName && { chemicalName }),
|
|
90
128
|
limit: input.limit,
|
|
129
|
+
includeReleaseBreakdown: input.include_release_breakdown,
|
|
91
130
|
}, ctx);
|
|
92
131
|
ctx.log.info('epa_search_tri_releases completed', { count: releases.length });
|
|
93
132
|
if (releases.length === 0) {
|
|
94
133
|
const yearNote = input.year ? ` for year ${input.year}` : '';
|
|
95
|
-
const countyNote =
|
|
134
|
+
const countyNote = county ? ` in ${county} county` : '';
|
|
96
135
|
const chemNote = input.chemical_name ? ` for chemical "${input.chemical_name}"` : '';
|
|
97
136
|
return {
|
|
98
137
|
releases: [],
|
|
@@ -114,8 +153,9 @@ export const searchTriReleasesTool = tool('epa_search_tri_releases', {
|
|
|
114
153
|
for (const r of result.releases) {
|
|
115
154
|
const facilityLabel = r.facilityName ? `${r.facilityName} (${r.facilityId})` : r.facilityId;
|
|
116
155
|
lines.push(`\n### ${r.chemicalName} — ${facilityLabel} (${r.reportingYear})`);
|
|
117
|
-
if (r.
|
|
118
|
-
lines.push(`**
|
|
156
|
+
if (r.countyName)
|
|
157
|
+
lines.push(`**County:** ${r.countyName}`);
|
|
158
|
+
lines.push(...formatTriReleaseLines(r));
|
|
119
159
|
}
|
|
120
160
|
return [{ type: 'text', text: lines.join('\n') }];
|
|
121
161
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search-tri-releases.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/search-tri-releases.tool.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAEjE,MAAM,CAAC,MAAM,qBAAqB,GAAG,IAAI,CAAC,yBAAyB,EAAE;IACnE,KAAK,EAAE,+BAA+B;IACtC,WAAW,EACT,
|
|
1
|
+
{"version":3,"file":"search-tri-releases.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/search-tri-releases.tool.ts"],"names":[],"mappings":"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"}
|
|
@@ -34,5 +34,7 @@ export declare const searchWaterSystemsTool: import("@cyanheads/mcp-ts-core").To
|
|
|
34
34
|
readonly code: JsonRpcErrorCode.ValidationError;
|
|
35
35
|
readonly when: "Neither state nor zip_code was provided.";
|
|
36
36
|
readonly recovery: "Provide at least one of state or zip_code to search drinking water systems.";
|
|
37
|
-
}],
|
|
37
|
+
}], {
|
|
38
|
+
readonly notice: z.ZodOptional<z.ZodString>;
|
|
39
|
+
}>;
|
|
38
40
|
//# sourceMappingURL=search-water-systems.tool.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search-water-systems.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/search-water-systems.tool.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAGjE,eAAO,MAAM,sBAAsB
|
|
1
|
+
{"version":3,"file":"search-water-systems.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/search-water-systems.tool.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAGjE,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAmLjC,CAAC"}
|
|
@@ -7,15 +7,18 @@ import { JsonRpcErrorCode } from '@cyanheads/mcp-ts-core/errors';
|
|
|
7
7
|
import { getDmapService } from '../../../services/dmap/dmap-service.js';
|
|
8
8
|
export const searchWaterSystemsTool = tool('epa_search_water_systems', {
|
|
9
9
|
title: 'Search Drinking Water Systems',
|
|
10
|
-
description: 'Search drinking water systems (SDWIS) by state or ZIP code. Returns system name, PWSID, population served, primary water source, and
|
|
10
|
+
description: 'Search drinking water systems (SDWIS) by state or ZIP code. Returns system name, PWSID, population served, primary water source, and activity status. With has_violation, returns only systems with an open violation — one SDWIS has not marked returned to compliance or closed out when the system was deactivated. At least one of state or zip_code is required.',
|
|
11
11
|
annotations: { readOnlyHint: true, openWorldHint: true, idempotentHint: true },
|
|
12
12
|
input: z.object({
|
|
13
13
|
state: z.string().optional().describe('2-letter US state abbreviation (e.g. "WA", "CA")'),
|
|
14
|
-
zip_code: z
|
|
14
|
+
zip_code: z
|
|
15
|
+
.string()
|
|
16
|
+
.optional()
|
|
17
|
+
.describe("5-digit ZIP code of the water system's address of record — often its owner's or operator's office, which can be far from the area the system serves"),
|
|
15
18
|
has_violation: z
|
|
16
19
|
.boolean()
|
|
17
20
|
.optional()
|
|
18
|
-
.describe('When true, return only systems with
|
|
21
|
+
.describe('When true, return only systems with an open SDWIS violation (not yet returned to compliance). Works with state, zip_code, or both.'),
|
|
19
22
|
pws_type: z
|
|
20
23
|
.enum(['community', 'non-transient', 'transient'])
|
|
21
24
|
.optional()
|
|
@@ -38,8 +41,14 @@ export const searchWaterSystemsTool = tool('epa_search_water_systems', {
|
|
|
38
41
|
.string()
|
|
39
42
|
.optional()
|
|
40
43
|
.describe('2-letter state abbreviation (primacy agency code)'),
|
|
41
|
-
city: z
|
|
42
|
-
|
|
44
|
+
city: z
|
|
45
|
+
.string()
|
|
46
|
+
.optional()
|
|
47
|
+
.describe("City of the water system's address of record — often its owner's or operator's office, not necessarily the area it serves"),
|
|
48
|
+
zip: z
|
|
49
|
+
.string()
|
|
50
|
+
.optional()
|
|
51
|
+
.describe("ZIP code of the water system's address of record (the value zip_code matches)"),
|
|
43
52
|
type: z
|
|
44
53
|
.string()
|
|
45
54
|
.optional()
|
|
@@ -55,7 +64,7 @@ export const searchWaterSystemsTool = tool('epa_search_water_systems', {
|
|
|
55
64
|
hasViolation: z
|
|
56
65
|
.boolean()
|
|
57
66
|
.optional()
|
|
58
|
-
.describe('
|
|
67
|
+
.describe('True when SDWIS lists an open violation for this system. Present only on has_violation searches, which return only such systems.'),
|
|
59
68
|
isActive: z
|
|
60
69
|
.boolean()
|
|
61
70
|
.optional()
|
|
@@ -69,6 +78,12 @@ export const searchWaterSystemsTool = tool('epa_search_water_systems', {
|
|
|
69
78
|
.optional()
|
|
70
79
|
.describe('Recovery hint when no systems are found. Absent when systems are returned.'),
|
|
71
80
|
}),
|
|
81
|
+
enrichment: {
|
|
82
|
+
notice: z
|
|
83
|
+
.string()
|
|
84
|
+
.optional()
|
|
85
|
+
.describe('Present when the has_violation check read only part of what it needed — the first 1,000 open violation records for the state, the first 1,000 systems in the ZIP, or the first 1,000 open violation records for a group of the ZIP’s systems — so violating systems outside that part may be missing from the results.'),
|
|
86
|
+
},
|
|
72
87
|
errors: [
|
|
73
88
|
{
|
|
74
89
|
reason: 'no_geographic_filter',
|
|
@@ -135,7 +150,7 @@ export const searchWaterSystemsTool = tool('epa_search_water_systems', {
|
|
|
135
150
|
if (s.primarySourceCode)
|
|
136
151
|
lines.push(`**Primary Source:** ${s.primarySourceCode}`);
|
|
137
152
|
if (s.hasViolation !== undefined)
|
|
138
|
-
lines.push(`**
|
|
153
|
+
lines.push(`**Open Violation:** ${s.hasViolation ? 'Yes' : 'No'}`);
|
|
139
154
|
if (s.isActive !== undefined)
|
|
140
155
|
lines.push(`**Active:** ${s.isActive ? 'Yes' : 'No'}`);
|
|
141
156
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search-water-systems.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/search-water-systems.tool.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAEjE,MAAM,CAAC,MAAM,sBAAsB,GAAG,IAAI,CAAC,0BAA0B,EAAE;IACrE,KAAK,EAAE,+BAA+B;IACtC,WAAW,EACT,
|
|
1
|
+
{"version":3,"file":"search-water-systems.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/search-water-systems.tool.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Renders a pound quantity for tool text output without rounding away small values.
|
|
3
|
+
* @module mcp-server/tools/format-lbs
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Format a quantity in pounds as `"<n> lbs"`, grouped and at full reported precision.
|
|
7
|
+
*
|
|
8
|
+
* Default `toLocaleString()` stops at 3 fraction digits, so a TRI release of 0.00062 lbs prints
|
|
9
|
+
* as 0.001. TRI quantities carry at most 7 significant digits; 12 keeps every one of them, and
|
|
10
|
+
* matches the 12 significant digits the DMAP service rounds its per-medium sums and gram-to-pound
|
|
11
|
+
* conversions to, so text and structuredContent show one value.
|
|
12
|
+
*/
|
|
13
|
+
export declare function formatLbs(lbs: number): string;
|
|
14
|
+
//# sourceMappingURL=format-lbs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"format-lbs.d.ts","sourceRoot":"","sources":["../../../src/mcp-server/tools/format-lbs.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;;GAOG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAE7C"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Renders a pound quantity for tool text output without rounding away small values.
|
|
3
|
+
* @module mcp-server/tools/format-lbs
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Format a quantity in pounds as `"<n> lbs"`, grouped and at full reported precision.
|
|
7
|
+
*
|
|
8
|
+
* Default `toLocaleString()` stops at 3 fraction digits, so a TRI release of 0.00062 lbs prints
|
|
9
|
+
* as 0.001. TRI quantities carry at most 7 significant digits; 12 keeps every one of them, and
|
|
10
|
+
* matches the 12 significant digits the DMAP service rounds its per-medium sums and gram-to-pound
|
|
11
|
+
* conversions to, so text and structuredContent show one value.
|
|
12
|
+
*/
|
|
13
|
+
export function formatLbs(lbs) {
|
|
14
|
+
return `${lbs.toLocaleString(undefined, { maximumSignificantDigits: 12 })} lbs`;
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=format-lbs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"format-lbs.js","sourceRoot":"","sources":["../../../src/mcp-server/tools/format-lbs.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;;GAOG;AACH,MAAM,UAAU,SAAS,CAAC,GAAW;IACnC,OAAO,GAAG,GAAG,CAAC,cAAc,CAAC,SAAS,EAAE,EAAE,wBAAwB,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC;AAClF,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Renders the address, county, and coordinate lines shared by facility and site tool output.
|
|
3
|
+
* @module mcp-server/tools/format-location
|
|
4
|
+
*/
|
|
5
|
+
interface LocatedRecord {
|
|
6
|
+
city?: string | undefined;
|
|
7
|
+
county?: string | undefined;
|
|
8
|
+
fipsCode?: string | undefined;
|
|
9
|
+
latitude?: number | undefined;
|
|
10
|
+
longitude?: number | undefined;
|
|
11
|
+
state?: string | undefined;
|
|
12
|
+
street?: string | undefined;
|
|
13
|
+
zip?: string | undefined;
|
|
14
|
+
}
|
|
15
|
+
/** Markdown lines for a record's address, county (with FIPS), and coordinates; absent parts are skipped. */
|
|
16
|
+
export declare function formatLocationLines(r: LocatedRecord): string[];
|
|
17
|
+
export {};
|
|
18
|
+
//# sourceMappingURL=format-location.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"format-location.d.ts","sourceRoot":"","sources":["../../../src/mcp-server/tools/format-location.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,UAAU,aAAa;IACrB,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC1B;AAED,4GAA4G;AAC5G,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,aAAa,GAAG,MAAM,EAAE,CAc9D"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Renders the address, county, and coordinate lines shared by facility and site tool output.
|
|
3
|
+
* @module mcp-server/tools/format-location
|
|
4
|
+
*/
|
|
5
|
+
/** Markdown lines for a record's address, county (with FIPS), and coordinates; absent parts are skipped. */
|
|
6
|
+
export function formatLocationLines(r) {
|
|
7
|
+
const lines = [];
|
|
8
|
+
const address = [r.street, r.city, r.state, r.zip].filter(Boolean).join(', ');
|
|
9
|
+
if (address)
|
|
10
|
+
lines.push(`**Location:** ${address}`);
|
|
11
|
+
if (r.county)
|
|
12
|
+
lines.push(`**County:** ${r.county}${r.fipsCode ? ` (FIPS: ${r.fipsCode})` : ''}`);
|
|
13
|
+
else if (r.fipsCode)
|
|
14
|
+
lines.push(`**County FIPS:** ${r.fipsCode}`);
|
|
15
|
+
if (r.latitude !== undefined && r.longitude !== undefined) {
|
|
16
|
+
lines.push(`**Coordinates:** ${r.latitude}, ${r.longitude}`);
|
|
17
|
+
}
|
|
18
|
+
else if (r.latitude !== undefined) {
|
|
19
|
+
lines.push(`**Latitude:** ${r.latitude}`);
|
|
20
|
+
}
|
|
21
|
+
else if (r.longitude !== undefined) {
|
|
22
|
+
lines.push(`**Longitude:** ${r.longitude}`);
|
|
23
|
+
}
|
|
24
|
+
return lines;
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=format-location.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"format-location.js","sourceRoot":"","sources":["../../../src/mcp-server/tools/format-location.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAaH,4GAA4G;AAC5G,MAAM,UAAU,mBAAmB,CAAC,CAAgB;IAClD,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,OAAO,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC9E,IAAI,OAAO;QAAE,KAAK,CAAC,IAAI,CAAC,iBAAiB,OAAO,EAAE,CAAC,CAAC;IACpD,IAAI,CAAC,CAAC,MAAM;QAAE,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;SAC5F,IAAI,CAAC,CAAC,QAAQ;QAAE,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;IAClE,IAAI,CAAC,CAAC,QAAQ,KAAK,SAAS,IAAI,CAAC,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;QAC1D,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC;IAC/D,CAAC;SAAM,IAAI,CAAC,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;QACpC,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC5C,CAAC;SAAM,IAAI,CAAC,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;QACrC,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC;IAC9C,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Renders the unit note and release-quantity lines shared by the TRI tools' text output.
|
|
3
|
+
* @module mcp-server/tools/format-tri-release
|
|
4
|
+
*/
|
|
5
|
+
interface TriReleaseQuantities {
|
|
6
|
+
releasesToAirInLbs?: number | undefined;
|
|
7
|
+
releasesToLandInLbs?: number | undefined;
|
|
8
|
+
releasesToUndergroundInjectionInLbs?: number | undefined;
|
|
9
|
+
releasesToWaterInLbs?: number | undefined;
|
|
10
|
+
reportedUnit?: 'grams' | undefined;
|
|
11
|
+
totalReleasesInLbs?: number | undefined;
|
|
12
|
+
}
|
|
13
|
+
/** Markdown lines for a TRI record's reported unit and per-medium and one-time quantities; absent fields are skipped. */
|
|
14
|
+
export declare function formatTriReleaseLines(r: TriReleaseQuantities): string[];
|
|
15
|
+
export {};
|
|
16
|
+
//# sourceMappingURL=format-tri-release.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"format-tri-release.d.ts","sourceRoot":"","sources":["../../../src/mcp-server/tools/format-tri-release.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,UAAU,oBAAoB;IAC5B,kBAAkB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACxC,mBAAmB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACzC,mCAAmC,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACzD,oBAAoB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1C,YAAY,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACnC,kBAAkB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACzC;AAED,yHAAyH;AACzH,wBAAgB,qBAAqB,CAAC,CAAC,EAAE,oBAAoB,GAAG,MAAM,EAAE,CAiBvE"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Renders the unit note and release-quantity lines shared by the TRI tools' text output.
|
|
3
|
+
* @module mcp-server/tools/format-tri-release
|
|
4
|
+
*/
|
|
5
|
+
import { formatLbs } from './format-lbs.js';
|
|
6
|
+
/** Markdown lines for a TRI record's reported unit and per-medium and one-time quantities; absent fields are skipped. */
|
|
7
|
+
export function formatTriReleaseLines(r) {
|
|
8
|
+
const lines = [];
|
|
9
|
+
if (r.reportedUnit)
|
|
10
|
+
lines.push(`**Reported Unit:** ${r.reportedUnit} — any quantities shown are converted to pounds (1 lb = 453.59237 g)`);
|
|
11
|
+
if (r.releasesToAirInLbs !== undefined)
|
|
12
|
+
lines.push(`**Air Releases:** ${formatLbs(r.releasesToAirInLbs)}`);
|
|
13
|
+
if (r.releasesToWaterInLbs !== undefined)
|
|
14
|
+
lines.push(`**Water Releases:** ${formatLbs(r.releasesToWaterInLbs)}`);
|
|
15
|
+
if (r.releasesToLandInLbs !== undefined)
|
|
16
|
+
lines.push(`**Land Releases:** ${formatLbs(r.releasesToLandInLbs)}`);
|
|
17
|
+
if (r.releasesToUndergroundInjectionInLbs !== undefined)
|
|
18
|
+
lines.push(`**Underground Injection:** ${formatLbs(r.releasesToUndergroundInjectionInLbs)}`);
|
|
19
|
+
if (r.totalReleasesInLbs !== undefined)
|
|
20
|
+
lines.push(`**One-Time / Non-Routine Release:** ${formatLbs(r.totalReleasesInLbs)}`);
|
|
21
|
+
return lines;
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=format-tri-release.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"format-tri-release.js","sourceRoot":"","sources":["../../../src/mcp-server/tools/format-tri-release.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,kCAAkC,CAAC;AAW7D,yHAAyH;AACzH,MAAM,UAAU,qBAAqB,CAAC,CAAuB;IAC3D,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,CAAC,CAAC,YAAY;QAChB,KAAK,CAAC,IAAI,CACR,sBAAsB,CAAC,CAAC,YAAY,sEAAsE,CAC3G,CAAC;IACJ,IAAI,CAAC,CAAC,kBAAkB,KAAK,SAAS;QACpC,KAAK,CAAC,IAAI,CAAC,qBAAqB,SAAS,CAAC,CAAC,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC;IACrE,IAAI,CAAC,CAAC,oBAAoB,KAAK,SAAS;QACtC,KAAK,CAAC,IAAI,CAAC,uBAAuB,SAAS,CAAC,CAAC,CAAC,oBAAoB,CAAC,EAAE,CAAC,CAAC;IACzE,IAAI,CAAC,CAAC,mBAAmB,KAAK,SAAS;QACrC,KAAK,CAAC,IAAI,CAAC,sBAAsB,SAAS,CAAC,CAAC,CAAC,mBAAmB,CAAC,EAAE,CAAC,CAAC;IACvE,IAAI,CAAC,CAAC,mCAAmC,KAAK,SAAS;QACrD,KAAK,CAAC,IAAI,CAAC,8BAA8B,SAAS,CAAC,CAAC,CAAC,mCAAmC,CAAC,EAAE,CAAC,CAAC;IAC/F,IAAI,CAAC,CAAC,kBAAkB,KAAK,SAAS;QACpC,KAAK,CAAC,IAAI,CAAC,uCAAuC,SAAS,CAAC,CAAC,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC;IACvF,OAAO,KAAK,CAAC;AACf,CAAC"}
|
|
@@ -1,44 +1,25 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @fileoverview AirNow API service for
|
|
3
|
-
* Wraps www.airnowapi.org/aq
|
|
4
|
-
* AirNow API's
|
|
2
|
+
* @fileoverview AirNow API service for current observations and issued forecasts.
|
|
3
|
+
* Wraps the 2026 www.airnowapi.org/aq web services `observation/current/ziplatlong/`
|
|
4
|
+
* and `forecast/current/`. Responses cached at ~1 hour TTL per the AirNow API's
|
|
5
|
+
* recommendation to avoid rate-limiting.
|
|
5
6
|
* @module services/airnow/airnow-service
|
|
6
7
|
*/
|
|
7
8
|
import type { Context } from '@cyanheads/mcp-ts-core';
|
|
8
9
|
import type { AppConfig } from '@cyanheads/mcp-ts-core/config';
|
|
9
10
|
import type { StorageService } from '@cyanheads/mcp-ts-core/storage';
|
|
10
|
-
import type {
|
|
11
|
+
import type { AirNowLocation, AirQualityLookup } from './types.js';
|
|
11
12
|
export declare class AirNowService {
|
|
12
13
|
private readonly baseUrl;
|
|
13
14
|
private readonly apiKey;
|
|
14
15
|
constructor(_config: AppConfig, _storage: StorageService);
|
|
16
|
+
/** Current hourly observations: per pollutant, the closest monitor within AirNow's 50-mile boundary. */
|
|
17
|
+
getCurrent(location: AirNowLocation, ctx: Context): Promise<AirQualityLookup>;
|
|
18
|
+
/** Every forecast day the location's reporting area has issued. */
|
|
19
|
+
getForecast(location: AirNowLocation, ctx: Context): Promise<AirQualityLookup>;
|
|
15
20
|
private buildUrl;
|
|
16
21
|
private cacheKey;
|
|
17
|
-
private
|
|
18
|
-
/** Get current air quality by ZIP code. */
|
|
19
|
-
getCurrentByZip(params: {
|
|
20
|
-
zipCode: string;
|
|
21
|
-
distanceMiles?: number;
|
|
22
|
-
}, ctx: Context): Promise<AirQualityResult[]>;
|
|
23
|
-
/** Get current air quality by lat/lng. */
|
|
24
|
-
getCurrentByLatLng(params: {
|
|
25
|
-
latitude: number;
|
|
26
|
-
longitude: number;
|
|
27
|
-
distanceMiles?: number;
|
|
28
|
-
}, ctx: Context): Promise<AirQualityResult[]>;
|
|
29
|
-
/** Get air quality forecast by ZIP code. */
|
|
30
|
-
getForecastByZip(params: {
|
|
31
|
-
zipCode: string;
|
|
32
|
-
date: string;
|
|
33
|
-
distanceMiles?: number;
|
|
34
|
-
}, ctx: Context): Promise<AirQualityResult[]>;
|
|
35
|
-
/** Get air quality forecast by lat/lng. */
|
|
36
|
-
getForecastByLatLng(params: {
|
|
37
|
-
latitude: number;
|
|
38
|
-
longitude: number;
|
|
39
|
-
date: string;
|
|
40
|
-
distanceMiles?: number;
|
|
41
|
-
}, ctx: Context): Promise<AirQualityResult[]>;
|
|
22
|
+
private fetchBody;
|
|
42
23
|
}
|
|
43
24
|
export declare function initAirNowService(config: AppConfig, storage: StorageService): void;
|
|
44
25
|
export declare function getAirNowService(): AirNowService;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"airnow-service.d.ts","sourceRoot":"","sources":["../../../src/services/airnow/airnow-service.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"airnow-service.d.ts","sourceRoot":"","sources":["../../../src/services/airnow/airnow-service.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAM/D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAGrE,OAAO,KAAK,EACV,cAAc,EAEd,gBAAgB,EAGjB,MAAM,YAAY,CAAC;AAyHpB,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAEhC,YAAY,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,cAAc,EAWvD;IAED,wGAAwG;IAClG,UAAU,CAAC,QAAQ,EAAE,cAAc,EAAE,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAKlF;IAED,mEAAmE;IAC7D,WAAW,CAAC,QAAQ,EAAE,cAAc,EAAE,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAKnF;IAED,OAAO,CAAC,QAAQ;IAUhB,OAAO,CAAC,QAAQ;YAUF,SAAS;CA4DxB;AAMD,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,cAAc,GAAG,IAAI,CAElF;AAED,wBAAgB,gBAAgB,IAAI,aAAa,CAKhD"}
|