@cyanheads/wsdot-mcp-server 0.2.0 → 0.2.2
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 +1 -1
- package/CLAUDE.md +1 -1
- package/README.md +10 -2
- package/changelog/0.2.x/0.2.1.md +16 -0
- package/changelog/0.2.x/0.2.2.md +15 -0
- package/dist/mcp-server/tools/definitions/get-ferry-alerts.tool.d.ts +4 -0
- package/dist/mcp-server/tools/definitions/get-ferry-alerts.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/get-ferry-alerts.tool.js +30 -3
- package/dist/mcp-server/tools/definitions/get-ferry-alerts.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/get-terminal-space.tool.d.ts +4 -0
- package/dist/mcp-server/tools/definitions/get-terminal-space.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/get-terminal-space.tool.js +61 -7
- package/dist/mcp-server/tools/definitions/get-terminal-space.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/get-toll-rates.tool.d.ts +6 -1
- package/dist/mcp-server/tools/definitions/get-toll-rates.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/get-toll-rates.tool.js +49 -9
- package/dist/mcp-server/tools/definitions/get-toll-rates.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/get-travel-times.tool.d.ts +4 -0
- package/dist/mcp-server/tools/definitions/get-travel-times.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/get-travel-times.tool.js +51 -7
- package/dist/mcp-server/tools/definitions/get-travel-times.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/search-alerts.tool.d.ts +4 -0
- package/dist/mcp-server/tools/definitions/search-alerts.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/search-alerts.tool.js +65 -10
- package/dist/mcp-server/tools/definitions/search-alerts.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/search-cameras.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/search-cameras.tool.js +7 -2
- package/dist/mcp-server/tools/definitions/search-cameras.tool.js.map +1 -1
- package/dist/services/ferry/ferry-service.d.ts.map +1 -1
- package/dist/services/ferry/ferry-service.js +24 -11
- package/dist/services/ferry/ferry-service.js.map +1 -1
- package/dist/services/ferry/types.d.ts +19 -2
- package/dist/services/ferry/types.d.ts.map +1 -1
- package/dist/services/html-text.d.ts +31 -0
- package/dist/services/html-text.d.ts.map +1 -0
- package/dist/services/html-text.js +285 -0
- package/dist/services/html-text.js.map +1 -0
- package/dist/services/traffic/stable-order.d.ts +20 -0
- package/dist/services/traffic/stable-order.d.ts.map +1 -0
- package/dist/services/traffic/stable-order.js +29 -0
- package/dist/services/traffic/stable-order.js.map +1 -0
- package/dist/services/traffic/traffic-service.d.ts.map +1 -1
- package/dist/services/traffic/traffic-service.js +17 -2
- package/dist/services/traffic/traffic-service.js.map +1 -1
- package/package.json +1 -1
- package/server.json +3 -3
|
@@ -6,13 +6,16 @@ import { tool, z } from '@cyanheads/mcp-ts-core';
|
|
|
6
6
|
import { JsonRpcErrorCode } from '@cyanheads/mcp-ts-core/errors';
|
|
7
7
|
import { routeMatches } from '../../../services/traffic/route-match.js';
|
|
8
8
|
import { getTrafficApiService } from '../../../services/traffic/traffic-service.js';
|
|
9
|
+
const DEFAULT_LIMIT = 50;
|
|
10
|
+
const MAX_LIMIT = 500;
|
|
9
11
|
export const getTravelTimes = tool('wsdot_get_travel_times', {
|
|
10
12
|
title: 'Get Travel Times',
|
|
11
13
|
description: 'Returns current vs. average travel times for named WA highway corridors (I-5, I-90, SR 520, SR 99, ' +
|
|
12
14
|
'I-405, SR 167, etc.). Use for "how congested is I-5?" or commute time estimates. ' +
|
|
13
15
|
'The route filter matches two ways: a route designation ("I-5", "5", "SR 520") returns every ' +
|
|
14
16
|
'corridor measured on that route, and any text also matches corridor names ("Everett"). ' +
|
|
15
|
-
'When current time exceeds average, the corridor is congested.'
|
|
17
|
+
'When current time exceeds average, the corridor is congested. ' +
|
|
18
|
+
'Results are paged — pass offset/limit to page through the full set (the notice reports the next offset).',
|
|
16
19
|
annotations: { readOnlyHint: true },
|
|
17
20
|
input: z.object({
|
|
18
21
|
route: z
|
|
@@ -22,6 +25,19 @@ export const getTravelTimes = tool('wsdot_get_travel_times', {
|
|
|
22
25
|
'corridor whose start or end point is on that route, whichever form the feed reports. ' +
|
|
23
26
|
'Any text also matches the corridor name as a case-insensitive substring, so "Everett" ' +
|
|
24
27
|
'finds the Seattle-Everett corridors. Omit to return all corridors.'),
|
|
28
|
+
offset: z
|
|
29
|
+
.number()
|
|
30
|
+
.int()
|
|
31
|
+
.min(0)
|
|
32
|
+
.optional()
|
|
33
|
+
.describe('Zero-based index of the first corridor to return, for paging. Defaults to 0.'),
|
|
34
|
+
limit: z
|
|
35
|
+
.number()
|
|
36
|
+
.int()
|
|
37
|
+
.min(1)
|
|
38
|
+
.max(MAX_LIMIT)
|
|
39
|
+
.optional()
|
|
40
|
+
.describe(`Maximum corridors to return in this page (1–${MAX_LIMIT}). Defaults to ${DEFAULT_LIMIT}.`),
|
|
25
41
|
}),
|
|
26
42
|
output: z.object({
|
|
27
43
|
corridors: z
|
|
@@ -77,7 +93,14 @@ export const getTravelTimes = tool('wsdot_get_travel_times', {
|
|
|
77
93
|
.describe('Travel time corridors matching the filter.'),
|
|
78
94
|
}),
|
|
79
95
|
enrichment: {
|
|
80
|
-
totalCount: z
|
|
96
|
+
totalCount: z
|
|
97
|
+
.number()
|
|
98
|
+
.describe('Total corridors matching the filter across all pages (not just this page).'),
|
|
99
|
+
nextOffset: z
|
|
100
|
+
.number()
|
|
101
|
+
.nullable()
|
|
102
|
+
.describe('Offset to pass to retrieve the next page, or null when this is the last page.'),
|
|
103
|
+
hasMore: z.boolean().describe('True when more corridors remain beyond the current page.'),
|
|
81
104
|
routeFilter: z
|
|
82
105
|
.string()
|
|
83
106
|
.optional()
|
|
@@ -85,7 +108,7 @@ export const getTravelTimes = tool('wsdot_get_travel_times', {
|
|
|
85
108
|
notice: z
|
|
86
109
|
.string()
|
|
87
110
|
.optional()
|
|
88
|
-
.describe('
|
|
111
|
+
.describe('Informational note about the page window, or guidance when no corridors matched the route filter or the offset ran past the end.'),
|
|
89
112
|
},
|
|
90
113
|
errors: [
|
|
91
114
|
{
|
|
@@ -113,19 +136,40 @@ export const getTravelTimes = tool('wsdot_get_travel_times', {
|
|
|
113
136
|
? all.filter((t) => t.name?.toLowerCase().includes(routeFilter) ||
|
|
114
137
|
[t.startPoint?.roadName, t.endPoint?.roadName].some((roadName) => roadName != null && routeMatches(routeFilter, roadName)))
|
|
115
138
|
: all;
|
|
116
|
-
|
|
139
|
+
// Page the full filtered set so structuredContent and content[] carry the identical
|
|
140
|
+
// page (the service stays filter-only; paging is a tool-handler concern). totalCount
|
|
141
|
+
// stays the full match count so the agent knows how much lies beyond this page.
|
|
142
|
+
const totalCount = filtered.length;
|
|
143
|
+
const offset = input.offset ?? 0;
|
|
144
|
+
const limit = input.limit ?? DEFAULT_LIMIT;
|
|
145
|
+
const corridors = filtered.slice(offset, offset + limit).map((t) => ({
|
|
117
146
|
...t,
|
|
118
147
|
delayInMinutes: t.currentTimeInMinutes != null && t.averageTimeInMinutes != null
|
|
119
148
|
? t.currentTimeInMinutes - t.averageTimeInMinutes
|
|
120
149
|
: undefined,
|
|
121
150
|
}));
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
151
|
+
const hasMore = offset + corridors.length < totalCount;
|
|
152
|
+
const nextOffset = hasMore ? offset + corridors.length : null;
|
|
153
|
+
ctx.log.info('Travel times fetched', {
|
|
154
|
+
total: all.length,
|
|
155
|
+
totalCount,
|
|
156
|
+
offset,
|
|
157
|
+
limit,
|
|
158
|
+
returned: corridors.length,
|
|
159
|
+
});
|
|
160
|
+
ctx.enrich({ totalCount, nextOffset, hasMore, ...(routeFilter && { routeFilter }) });
|
|
161
|
+
if (totalCount === 0) {
|
|
125
162
|
ctx.enrich.notice(routeFilter
|
|
126
163
|
? `No corridors matched the route filter "${routeFilter}". Try a broader filter (e.g. "I-5" instead of "I-5 NB") or omit the filter to list all corridors.`
|
|
127
164
|
: 'No travel time data available. The WSDOT API may be temporarily unavailable — retry in 30 seconds.');
|
|
128
165
|
}
|
|
166
|
+
else if (corridors.length === 0) {
|
|
167
|
+
ctx.enrich.notice(`Offset ${offset} is past the end of ${totalCount} matching corridors. Use an offset between 0 and ${totalCount - 1}.`);
|
|
168
|
+
}
|
|
169
|
+
else {
|
|
170
|
+
const window = `Showing corridors ${offset + 1}–${offset + corridors.length} of ${totalCount}.`;
|
|
171
|
+
ctx.enrich.notice(hasMore ? `${window} Pass offset=${nextOffset} for the next page.` : window);
|
|
172
|
+
}
|
|
129
173
|
return { corridors };
|
|
130
174
|
},
|
|
131
175
|
format: (result) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-travel-times.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/get-travel-times.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,YAAY,EAAE,MAAM,mCAAmC,CAAC;AACjE,OAAO,EAAE,oBAAoB,EAAE,MAAM,uCAAuC,CAAC;AAE7E,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,CAAC,wBAAwB,EAAE;IAC3D,KAAK,EAAE,kBAAkB;IACzB,WAAW,EACT,qGAAqG;QACrG,mFAAmF;QACnF,8FAA8F;QAC9F,yFAAyF;QACzF
|
|
1
|
+
{"version":3,"file":"get-travel-times.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/get-travel-times.tool.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,6 +9,8 @@ export declare const searchAlerts: import("@cyanheads/mcp-ts-core").ToolDefiniti
|
|
|
9
9
|
region: z.ZodOptional<z.ZodString>;
|
|
10
10
|
startMilepost: z.ZodOptional<z.ZodNumber>;
|
|
11
11
|
endMilepost: z.ZodOptional<z.ZodNumber>;
|
|
12
|
+
offset: z.ZodOptional<z.ZodNumber>;
|
|
13
|
+
limit: z.ZodOptional<z.ZodNumber>;
|
|
12
14
|
}, z.core.$strip>, z.ZodObject<{
|
|
13
15
|
alerts: z.ZodArray<z.ZodObject<{
|
|
14
16
|
alertId: z.ZodOptional<z.ZodNumber>;
|
|
@@ -51,6 +53,8 @@ export declare const searchAlerts: import("@cyanheads/mcp-ts-core").ToolDefiniti
|
|
|
51
53
|
readonly recovery: "Register an access code at https://wsdot.wa.gov/traffic/api/, set WSDOT_ACCESS_CODE on the server, and restart it.";
|
|
52
54
|
}], {
|
|
53
55
|
readonly totalCount: z.ZodNumber;
|
|
56
|
+
readonly nextOffset: z.ZodNullable<z.ZodNumber>;
|
|
57
|
+
readonly hasMore: z.ZodBoolean;
|
|
54
58
|
readonly appliedFilters: z.ZodObject<{
|
|
55
59
|
stateRoute: z.ZodOptional<z.ZodString>;
|
|
56
60
|
region: z.ZodOptional<z.ZodString>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search-alerts.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/search-alerts.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-alerts.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/search-alerts.tool.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAOjE,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAySvB,CAAC"}
|
|
@@ -4,14 +4,19 @@
|
|
|
4
4
|
*/
|
|
5
5
|
import { tool, z } from '@cyanheads/mcp-ts-core';
|
|
6
6
|
import { JsonRpcErrorCode } from '@cyanheads/mcp-ts-core/errors';
|
|
7
|
+
import { byIdThenContent } from '../../../services/traffic/stable-order.js';
|
|
7
8
|
import { getTrafficApiService } from '../../../services/traffic/traffic-service.js';
|
|
9
|
+
const DEFAULT_LIMIT = 50;
|
|
10
|
+
const MAX_LIMIT = 500;
|
|
8
11
|
export const searchAlerts = tool('wsdot_search_alerts', {
|
|
9
12
|
title: 'Search Highway Alerts',
|
|
10
13
|
description: 'Returns active WA highway alerts: incidents, construction, closures, and restrictions. ' +
|
|
11
14
|
'Filter by state route ("I-90", "90", "SR 520", or "520" all work), ' +
|
|
12
15
|
'WSDOT region (Northwest, Olympic, Southwest, South Central, North Central, Eastern), ' +
|
|
13
16
|
"or milepost range, matched against the alert's full extent. " +
|
|
14
|
-
'Omit all filters to return all current statewide alerts.'
|
|
17
|
+
'Omit all filters to return all current statewide alerts. ' +
|
|
18
|
+
'Results are ordered by alertId and paged — pass offset/limit to page through the full set ' +
|
|
19
|
+
'(the notice reports the next offset).',
|
|
15
20
|
annotations: { readOnlyHint: true },
|
|
16
21
|
input: z.object({
|
|
17
22
|
stateRoute: z
|
|
@@ -30,14 +35,33 @@ export const searchAlerts = tool('wsdot_search_alerts', {
|
|
|
30
35
|
.number()
|
|
31
36
|
.optional()
|
|
32
37
|
.describe('End of the milepost range. Matched by extent overlap like startMilepost, so an alert beginning inside the range and continuing past it is returned.'),
|
|
38
|
+
offset: z
|
|
39
|
+
.number()
|
|
40
|
+
.int()
|
|
41
|
+
.min(0)
|
|
42
|
+
.optional()
|
|
43
|
+
.describe('Zero-based index of the first alert to return, for paging. Defaults to 0.'),
|
|
44
|
+
limit: z
|
|
45
|
+
.number()
|
|
46
|
+
.int()
|
|
47
|
+
.min(1)
|
|
48
|
+
.max(MAX_LIMIT)
|
|
49
|
+
.optional()
|
|
50
|
+
.describe(`Maximum alerts to return in this page (1–${MAX_LIMIT}). Defaults to ${DEFAULT_LIMIT}.`),
|
|
33
51
|
}),
|
|
34
52
|
output: z.object({
|
|
35
53
|
alerts: z
|
|
36
54
|
.array(z
|
|
37
55
|
.object({
|
|
38
56
|
alertId: z.number().optional().describe('Unique alert identifier.'),
|
|
39
|
-
headlineDescription: z
|
|
40
|
-
|
|
57
|
+
headlineDescription: z
|
|
58
|
+
.string()
|
|
59
|
+
.optional()
|
|
60
|
+
.describe('Short summary of the alert, as plain text. Upstream authors these in a rich-text editor, so any markup is normalized away and a link is rendered inline as "link text (url)".'),
|
|
61
|
+
extendedDescription: z
|
|
62
|
+
.string()
|
|
63
|
+
.optional()
|
|
64
|
+
.describe('Full description of the alert, normalized to plain text on the same terms as headlineDescription. Often absent — most alerts carry only a headline.'),
|
|
41
65
|
eventCategory: z
|
|
42
66
|
.string()
|
|
43
67
|
.optional()
|
|
@@ -89,7 +113,14 @@ export const searchAlerts = tool('wsdot_search_alerts', {
|
|
|
89
113
|
.describe('Matching highway alerts.'),
|
|
90
114
|
}),
|
|
91
115
|
enrichment: {
|
|
92
|
-
totalCount: z
|
|
116
|
+
totalCount: z
|
|
117
|
+
.number()
|
|
118
|
+
.describe('Total alerts matching the filters across all pages (not just this page).'),
|
|
119
|
+
nextOffset: z
|
|
120
|
+
.number()
|
|
121
|
+
.nullable()
|
|
122
|
+
.describe('Offset to pass to retrieve the next page, or null when this is the last page.'),
|
|
123
|
+
hasMore: z.boolean().describe('True when more alerts remain beyond the current page.'),
|
|
93
124
|
appliedFilters: z
|
|
94
125
|
.object({
|
|
95
126
|
stateRoute: z.string().optional().describe('State route filter applied.'),
|
|
@@ -101,7 +132,7 @@ export const searchAlerts = tool('wsdot_search_alerts', {
|
|
|
101
132
|
notice: z
|
|
102
133
|
.string()
|
|
103
134
|
.optional()
|
|
104
|
-
.describe('
|
|
135
|
+
.describe('Informational note about the page window, or guidance when no alerts matched the filters or the offset ran past the end.'),
|
|
105
136
|
},
|
|
106
137
|
enrichmentTrailer: {
|
|
107
138
|
appliedFilters: {
|
|
@@ -140,26 +171,45 @@ export const searchAlerts = tool('wsdot_search_alerts', {
|
|
|
140
171
|
async handler(input, ctx) {
|
|
141
172
|
const stateRoute = input.stateRoute?.trim() || undefined;
|
|
142
173
|
const region = input.region?.trim() || undefined;
|
|
143
|
-
const
|
|
174
|
+
const fetched = await getTrafficApiService().searchAlerts({
|
|
144
175
|
...(stateRoute && { stateRoute }),
|
|
145
176
|
...(region && { region }),
|
|
146
177
|
...(input.startMilepost != null && { startMilepost: input.startMilepost }),
|
|
147
178
|
...(input.endMilepost != null && { endMilepost: input.endMilepost }),
|
|
148
179
|
}, ctx);
|
|
149
|
-
|
|
180
|
+
// The alerts feed serves one alert set in more than one row order, so a given offset is only
|
|
181
|
+
// reproducible once the rows are ordered here. Alerts with no alertId sort last.
|
|
182
|
+
const matched = fetched.toSorted(byIdThenContent((a) => a.alertId));
|
|
150
183
|
const appliedFilters = {
|
|
151
184
|
...(stateRoute && { stateRoute }),
|
|
152
185
|
...(region && { region }),
|
|
153
186
|
...(input.startMilepost != null && { startMilepost: input.startMilepost }),
|
|
154
187
|
...(input.endMilepost != null && { endMilepost: input.endMilepost }),
|
|
155
188
|
};
|
|
156
|
-
|
|
157
|
-
|
|
189
|
+
// Page the full filtered set so structuredContent and content[] carry the identical
|
|
190
|
+
// page (the service stays filter-only; paging is a tool-handler concern). totalCount
|
|
191
|
+
// stays the full match count so the agent knows how much lies beyond this page.
|
|
192
|
+
const totalCount = matched.length;
|
|
193
|
+
const offset = input.offset ?? 0;
|
|
194
|
+
const limit = input.limit ?? DEFAULT_LIMIT;
|
|
195
|
+
const alerts = matched.slice(offset, offset + limit);
|
|
196
|
+
const hasMore = offset + alerts.length < totalCount;
|
|
197
|
+
const nextOffset = hasMore ? offset + alerts.length : null;
|
|
198
|
+
ctx.log.info('Alerts fetched', { totalCount, offset, limit, returned: alerts.length });
|
|
199
|
+
ctx.enrich({ totalCount, appliedFilters, nextOffset, hasMore });
|
|
200
|
+
if (totalCount === 0) {
|
|
158
201
|
const hasFilters = Object.keys(appliedFilters).length > 0;
|
|
159
202
|
ctx.enrich.notice(hasFilters
|
|
160
203
|
? 'No alerts matched the applied filters. Try removing the stateRoute, region, or milepost filters to broaden results.'
|
|
161
204
|
: 'No active highway alerts statewide at this time.');
|
|
162
205
|
}
|
|
206
|
+
else if (alerts.length === 0) {
|
|
207
|
+
ctx.enrich.notice(`Offset ${offset} is past the end of ${totalCount} matching alerts. Use an offset between 0 and ${totalCount - 1}.`);
|
|
208
|
+
}
|
|
209
|
+
else {
|
|
210
|
+
const window = `Showing alerts ${offset + 1}–${offset + alerts.length} of ${totalCount}.`;
|
|
211
|
+
ctx.enrich.notice(hasMore ? `${window} Pass offset=${nextOffset} for the next page.` : window);
|
|
212
|
+
}
|
|
163
213
|
return { alerts };
|
|
164
214
|
},
|
|
165
215
|
format: (result) => {
|
|
@@ -169,7 +219,12 @@ export const searchAlerts = tool('wsdot_search_alerts', {
|
|
|
169
219
|
const lines = [];
|
|
170
220
|
for (const a of result.alerts) {
|
|
171
221
|
const id = a.alertId != null ? ` #${a.alertId}` : '';
|
|
172
|
-
|
|
222
|
+
// A headline can run to several paragraphs; only its first line belongs in the heading,
|
|
223
|
+
// otherwise the trailing alert ID lands at the end of the last paragraph.
|
|
224
|
+
const [heading, ...restOfHeadline] = (a.headlineDescription ?? '').split('\n');
|
|
225
|
+
lines.push(`### ${heading || 'Alert'}${id}`);
|
|
226
|
+
if (restOfHeadline.length > 0)
|
|
227
|
+
lines.push(restOfHeadline.join('\n'));
|
|
173
228
|
if (a.eventCategory)
|
|
174
229
|
lines.push(`**Category:** ${a.eventCategory}`);
|
|
175
230
|
if (a.eventStatus)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search-alerts.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/search-alerts.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,oBAAoB,EAAE,MAAM,uCAAuC,CAAC;AAE7E,MAAM,CAAC,MAAM,YAAY,GAAG,IAAI,CAAC,qBAAqB,EAAE;IACtD,KAAK,EAAE,uBAAuB;IAC9B,WAAW,EACT,yFAAyF;QACzF,qEAAqE;QACrE,uFAAuF;QACvF,8DAA8D;QAC9D,
|
|
1
|
+
{"version":3,"file":"search-alerts.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/search-alerts.tool.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search-cameras.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/search-cameras.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-cameras.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/search-cameras.tool.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAOjE,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAwNxB,CAAC"}
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
*/
|
|
5
5
|
import { tool, z } from '@cyanheads/mcp-ts-core';
|
|
6
6
|
import { JsonRpcErrorCode } from '@cyanheads/mcp-ts-core/errors';
|
|
7
|
+
import { byIdThenContent } from '../../../services/traffic/stable-order.js';
|
|
7
8
|
import { getTrafficApiService } from '../../../services/traffic/traffic-service.js';
|
|
8
9
|
const DEFAULT_LIMIT = 50;
|
|
9
10
|
const MAX_LIMIT = 500;
|
|
@@ -12,7 +13,8 @@ export const searchCameras = tool('wsdot_search_cameras', {
|
|
|
12
13
|
description: 'Returns WSDOT highway camera locations, descriptions, and image URLs. ' +
|
|
13
14
|
'Camera images are copyright WSDOT — only metadata and image URLs are returned, not image bytes. ' +
|
|
14
15
|
'Filter by state route ("I-90", "90", "SR 520", or "520" all work), WSDOT region, or milepost range. ' +
|
|
15
|
-
'Results are paged — pass offset/limit to page through the full set
|
|
16
|
+
'Results are ordered by cameraId and paged — pass offset/limit to page through the full set ' +
|
|
17
|
+
'(the notice reports the next offset).',
|
|
16
18
|
annotations: { readOnlyHint: true },
|
|
17
19
|
input: z.object({
|
|
18
20
|
stateRoute: z
|
|
@@ -124,12 +126,15 @@ export const searchCameras = tool('wsdot_search_cameras', {
|
|
|
124
126
|
async handler(input, ctx) {
|
|
125
127
|
const stateRoute = input.stateRoute?.trim() || undefined;
|
|
126
128
|
const region = input.region?.trim() || undefined;
|
|
127
|
-
const
|
|
129
|
+
const fetched = await getTrafficApiService().searchCameras({
|
|
128
130
|
...(stateRoute && { stateRoute }),
|
|
129
131
|
...(region && { region }),
|
|
130
132
|
...(input.startMilepost != null && { startMilepost: input.startMilepost }),
|
|
131
133
|
...(input.endMilepost != null && { endMilepost: input.endMilepost }),
|
|
132
134
|
}, ctx);
|
|
135
|
+
// The camera feed serves one camera set in more than one row order, so a given offset is only
|
|
136
|
+
// reproducible once the rows are ordered here. Cameras with no cameraId sort last.
|
|
137
|
+
const allCameras = fetched.toSorted(byIdThenContent((c) => c.cameraId));
|
|
133
138
|
const appliedFilters = {
|
|
134
139
|
...(stateRoute && { stateRoute }),
|
|
135
140
|
...(region && { region }),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search-cameras.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/search-cameras.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,oBAAoB,EAAE,MAAM,uCAAuC,CAAC;AAE7E,MAAM,aAAa,GAAG,EAAE,CAAC;AACzB,MAAM,SAAS,GAAG,GAAG,CAAC;AAEtB,MAAM,CAAC,MAAM,aAAa,GAAG,IAAI,CAAC,sBAAsB,EAAE;IACxD,KAAK,EAAE,wBAAwB;IAC/B,WAAW,EACT,wEAAwE;QACxE,kGAAkG;QAClG,sGAAsG;QACtG,
|
|
1
|
+
{"version":3,"file":"search-cameras.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/search-cameras.tool.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ferry-service.d.ts","sourceRoot":"","sources":["../../../src/services/ferry/ferry-service.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAE/D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;
|
|
1
|
+
{"version":3,"file":"ferry-service.d.ts","sourceRoot":"","sources":["../../../src/services/ferry/ferry-service.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAE/D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAMrE,OAAO,KAAK,EACV,UAAU,EACV,UAAU,EACV,aAAa,EACb,aAAa,EAOb,oBAAoB,EACpB,cAAc,EACf,MAAM,YAAY,CAAC;AAMpB,qBAAa,eAAe;IAC1B,YAAY,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,cAAc,EAAI;IAE5D,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,QAAQ;IAIhB,OAAO,CAAC,SAAS;IAgCjB;;;;;OAKG;IACH,MAAM,CAAC,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAc1C;IAED;;;;OAIG;IACH,MAAM,CAAC,cAAc,IAAI,MAAM,CAE9B;IAEK,YAAY,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC,CAUzD;IAEK,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,CAQrE;IAEK,WAAW,CACf,mBAAmB,EAAE,MAAM,EAC3B,kBAAkB,EAAE,MAAM,EAC1B,QAAQ,EAAE,MAAM,EAChB,aAAa,EAAE,OAAO,EACtB,GAAG,EAAE,OAAO,GACX,OAAO,CAAC,aAAa,CAAC,CAqCxB;IAEK,kBAAkB,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC,CAsBhE;IAEK,uBAAuB,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,oBAAoB,EAAE,CAAC,CAmD3E;IAEK,SAAS,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,CA0BnD;CACF;AAMD,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,cAAc,GAAG,IAAI,CAEpF;AAED,wBAAgB,kBAAkB,IAAI,eAAe,CAKpD"}
|
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
import { validationError } from '@cyanheads/mcp-ts-core/errors';
|
|
7
7
|
import { withRetry } from '@cyanheads/mcp-ts-core/utils';
|
|
8
8
|
import { getServerConfig } from '../../config/server-config.js';
|
|
9
|
+
import { htmlToText } from '../../services/html-text.js';
|
|
9
10
|
import { wcfDateField } from '../../services/wcf-date.js';
|
|
10
11
|
import { assertUpstreamJson, fetchUpstream, redactUrl } from '../../services/wsdot-http.js';
|
|
11
12
|
const BASE_URL = 'https://www.wsdot.wa.gov/Ferries/API';
|
|
@@ -200,17 +201,29 @@ export class FerryApiService {
|
|
|
200
201
|
async getAlerts(ctx) {
|
|
201
202
|
ctx.log.info('Fetching ferry alerts');
|
|
202
203
|
const raw = await this.fetchJson('Schedule/rest/alerts', ctx);
|
|
203
|
-
return (raw ?? []).map((a) =>
|
|
204
|
-
|
|
205
|
-
//
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
204
|
+
return (raw ?? []).map((a) => {
|
|
205
|
+
// The bulletin body is authored in a rich-text editor and arrives as HTML — nested spans
|
|
206
|
+
// carrying Word-paste attributes, lists, anchors. It is rendered to plain text here, before
|
|
207
|
+
// either response path reads it, so structuredContent and format() carry the same string.
|
|
208
|
+
const bulletinText = a.BulletinText != null ? htmlToText(a.BulletinText) : '';
|
|
209
|
+
return {
|
|
210
|
+
...(a.BulletinID != null && { alertId: a.BulletinID }),
|
|
211
|
+
...(a.AlertFullTitle != null && { alertTitle: a.AlertFullTitle }),
|
|
212
|
+
// Prefer plain-text RouteAlertText; fall back to AlertFullTitle when absent
|
|
213
|
+
...(a.RouteAlertText != null
|
|
214
|
+
? { alertDescription: a.RouteAlertText }
|
|
215
|
+
: a.AlertFullTitle != null
|
|
216
|
+
? { alertDescription: a.AlertFullTitle }
|
|
217
|
+
: {}),
|
|
218
|
+
...(bulletinText && { bulletinText }),
|
|
219
|
+
...(a.AlertType != null && { alertType: a.AlertType }),
|
|
220
|
+
// A fleet-wide alert carries no route IDs, so the flag is what separates "every route"
|
|
221
|
+
// from "no route" — it is mapped whenever upstream states it either way.
|
|
222
|
+
...(typeof a.AllRoutesFlag === 'boolean' && { affectsAllRoutes: a.AllRoutesFlag }),
|
|
223
|
+
impactedRouteIds: a.AffectedRouteIDs ?? [],
|
|
224
|
+
...wcfDateField('publishDate', a.PublishDate),
|
|
225
|
+
};
|
|
226
|
+
});
|
|
214
227
|
}
|
|
215
228
|
}
|
|
216
229
|
// --- Init/accessor pattern ---
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ferry-service.js","sourceRoot":"","sources":["../../../src/services/ferry/ferry-service.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ferry-service.js","sourceRoot":"","sources":["../../../src/services/ferry/ferry-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -180,20 +180,37 @@ export interface TerminalSailingSpace {
|
|
|
180
180
|
export interface RawFerryAlert {
|
|
181
181
|
/** Route IDs affected by this alert (was ImpactedRouteIds in older API). */
|
|
182
182
|
AffectedRouteIDs?: number[] | null;
|
|
183
|
-
/**
|
|
183
|
+
/** The bulletin's own title. Also the fallback description when RouteAlertText is absent. */
|
|
184
184
|
AlertFullTitle?: string | null;
|
|
185
185
|
AlertType?: string | null;
|
|
186
|
+
/**
|
|
187
|
+
* True when the alert applies fleet-wide, in which case AffectedRouteIDs need not enumerate
|
|
188
|
+
* anything — an empty list then means "every route", not "no route".
|
|
189
|
+
*/
|
|
190
|
+
AllRoutesFlag?: boolean | null;
|
|
186
191
|
/** Unique alert ID (was AlertID in older API). */
|
|
187
192
|
BulletinID?: number | null;
|
|
193
|
+
/**
|
|
194
|
+
* The bulletin body, and the only place the detail behind the marquee summary appears.
|
|
195
|
+
* Authored in a rich-text editor, so it arrives as HTML — normalized to plain text.
|
|
196
|
+
*/
|
|
197
|
+
BulletinText?: string | null;
|
|
188
198
|
/** WCF date string — decoded to ISO 8601 during normalization. */
|
|
189
199
|
PublishDate?: string | null;
|
|
190
|
-
/**
|
|
200
|
+
/** One-line marquee summary, already plain text. */
|
|
191
201
|
RouteAlertText?: string | null;
|
|
192
202
|
}
|
|
193
203
|
/** Normalized ferry alert. */
|
|
194
204
|
export interface FerryAlert {
|
|
205
|
+
/** True when the alert applies to every route, making an empty impactedRouteIds fleet-wide. */
|
|
206
|
+
affectsAllRoutes?: boolean;
|
|
195
207
|
alertDescription?: string;
|
|
196
208
|
alertId?: number;
|
|
209
|
+
alertTitle?: string;
|
|
210
|
+
/** Alert kind as WSF categorizes it, e.g. "All Alerts". */
|
|
211
|
+
alertType?: string;
|
|
212
|
+
/** Full bulletin body, normalized from upstream HTML to plain text. */
|
|
213
|
+
bulletinText?: string;
|
|
197
214
|
impactedRouteIds: number[];
|
|
198
215
|
publishDate?: string;
|
|
199
216
|
}
|