@cyanheads/wsdot-mcp-server 0.1.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/CLAUDE.md +343 -0
- package/Dockerfile +99 -0
- package/LICENSE +201 -0
- package/README.md +364 -0
- package/changelog/0.1.x/0.1.0.md +24 -0
- package/changelog/0.1.x/0.1.1.md +26 -0
- package/changelog/template.md +119 -0
- package/dist/config/server-config.d.ts +12 -0
- package/dist/config/server-config.d.ts.map +1 -0
- package/dist/config/server-config.js +19 -0
- package/dist/config/server-config.js.map +1 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +33 -0
- package/dist/index.js.map +1 -0
- package/dist/mcp-server/tools/definitions/get-border-waits.tool.d.ts +28 -0
- package/dist/mcp-server/tools/definitions/get-border-waits.tool.d.ts.map +1 -0
- package/dist/mcp-server/tools/definitions/get-border-waits.tool.js +83 -0
- package/dist/mcp-server/tools/definitions/get-border-waits.tool.js.map +1 -0
- package/dist/mcp-server/tools/definitions/get-ferry-alerts.tool.d.ts +22 -0
- package/dist/mcp-server/tools/definitions/get-ferry-alerts.tool.d.ts.map +1 -0
- package/dist/mcp-server/tools/definitions/get-ferry-alerts.tool.js +67 -0
- package/dist/mcp-server/tools/definitions/get-ferry-alerts.tool.js.map +1 -0
- package/dist/mcp-server/tools/definitions/get-ferry-routes.tool.d.ts +33 -0
- package/dist/mcp-server/tools/definitions/get-ferry-routes.tool.d.ts.map +1 -0
- package/dist/mcp-server/tools/definitions/get-ferry-routes.tool.js +95 -0
- package/dist/mcp-server/tools/definitions/get-ferry-routes.tool.js.map +1 -0
- package/dist/mcp-server/tools/definitions/get-ferry-schedule.tool.d.ts +41 -0
- package/dist/mcp-server/tools/definitions/get-ferry-schedule.tool.d.ts.map +1 -0
- package/dist/mcp-server/tools/definitions/get-ferry-schedule.tool.js +117 -0
- package/dist/mcp-server/tools/definitions/get-ferry-schedule.tool.js.map +1 -0
- package/dist/mcp-server/tools/definitions/get-ferry-terminals.tool.d.ts +23 -0
- package/dist/mcp-server/tools/definitions/get-ferry-terminals.tool.d.ts.map +1 -0
- package/dist/mcp-server/tools/definitions/get-ferry-terminals.tool.js +56 -0
- package/dist/mcp-server/tools/definitions/get-ferry-terminals.tool.js.map +1 -0
- package/dist/mcp-server/tools/definitions/get-mountain-passes.tool.d.ts +35 -0
- package/dist/mcp-server/tools/definitions/get-mountain-passes.tool.d.ts.map +1 -0
- package/dist/mcp-server/tools/definitions/get-mountain-passes.tool.js +116 -0
- package/dist/mcp-server/tools/definitions/get-mountain-passes.tool.js.map +1 -0
- package/dist/mcp-server/tools/definitions/get-terminal-space.tool.d.ts +32 -0
- package/dist/mcp-server/tools/definitions/get-terminal-space.tool.d.ts.map +1 -0
- package/dist/mcp-server/tools/definitions/get-terminal-space.tool.js +118 -0
- package/dist/mcp-server/tools/definitions/get-terminal-space.tool.js.map +1 -0
- package/dist/mcp-server/tools/definitions/get-toll-rates.tool.d.ts +29 -0
- package/dist/mcp-server/tools/definitions/get-toll-rates.tool.d.ts.map +1 -0
- package/dist/mcp-server/tools/definitions/get-toll-rates.tool.js +85 -0
- package/dist/mcp-server/tools/definitions/get-toll-rates.tool.js.map +1 -0
- package/dist/mcp-server/tools/definitions/get-travel-times.tool.d.ts +38 -0
- package/dist/mcp-server/tools/definitions/get-travel-times.tool.d.ts.map +1 -0
- package/dist/mcp-server/tools/definitions/get-travel-times.tool.js +141 -0
- package/dist/mcp-server/tools/definitions/get-travel-times.tool.js.map +1 -0
- package/dist/mcp-server/tools/definitions/get-vessel-locations.tool.d.ts +35 -0
- package/dist/mcp-server/tools/definitions/get-vessel-locations.tool.d.ts.map +1 -0
- package/dist/mcp-server/tools/definitions/get-vessel-locations.tool.js +120 -0
- package/dist/mcp-server/tools/definitions/get-vessel-locations.tool.js.map +1 -0
- package/dist/mcp-server/tools/definitions/index.d.ts +17 -0
- package/dist/mcp-server/tools/definitions/index.d.ts.map +1 -0
- package/dist/mcp-server/tools/definitions/index.js +17 -0
- package/dist/mcp-server/tools/definitions/index.js.map +1 -0
- package/dist/mcp-server/tools/definitions/search-alerts.tool.d.ts +48 -0
- package/dist/mcp-server/tools/definitions/search-alerts.tool.d.ts.map +1 -0
- package/dist/mcp-server/tools/definitions/search-alerts.tool.js +155 -0
- package/dist/mcp-server/tools/definitions/search-alerts.tool.js.map +1 -0
- package/dist/mcp-server/tools/definitions/search-cameras.tool.d.ts +36 -0
- package/dist/mcp-server/tools/definitions/search-cameras.tool.d.ts.map +1 -0
- package/dist/mcp-server/tools/definitions/search-cameras.tool.js +116 -0
- package/dist/mcp-server/tools/definitions/search-cameras.tool.js.map +1 -0
- package/dist/services/ferry/ferry-service.d.ts +28 -0
- package/dist/services/ferry/ferry-service.d.ts.map +1 -0
- package/dist/services/ferry/ferry-service.js +222 -0
- package/dist/services/ferry/ferry-service.js.map +1 -0
- package/dist/services/ferry/types.d.ts +183 -0
- package/dist/services/ferry/types.d.ts.map +1 -0
- package/dist/services/ferry/types.js +6 -0
- package/dist/services/ferry/types.js.map +1 -0
- package/dist/services/traffic/traffic-service.d.ts +37 -0
- package/dist/services/traffic/traffic-service.d.ts.map +1 -0
- package/dist/services/traffic/traffic-service.js +290 -0
- package/dist/services/traffic/traffic-service.js.map +1 -0
- package/dist/services/traffic/types.d.ts +247 -0
- package/dist/services/traffic/types.d.ts.map +1 -0
- package/dist/services/traffic/types.js +6 -0
- package/dist/services/traffic/types.js.map +1 -0
- package/package.json +89 -0
- package/server.json +111 -0
|
@@ -0,0 +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;AAGrE,OAAO,KAAK,EACV,UAAU,EACV,UAAU,EACV,aAAa,EACb,aAAa,EAOb,oBAAoB,EACpB,cAAc,EACf,MAAM,YAAY,CAAC;AAKpB,qBAAa,eAAe;gBACd,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,cAAc;IAExD,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,QAAQ;IAIhB,OAAO,CAAC,SAAS;IAkDjB,iFAAiF;IACjF,MAAM,CAAC,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;IAW3C,gDAAgD;IAChD,MAAM,CAAC,cAAc,IAAI,MAAM;IAIzB,YAAY,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;IAYpD,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAchE,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;IAsCnB,kBAAkB,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IA0B3D,uBAAuB,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,oBAAoB,EAAE,CAAC;IAqCtE,SAAS,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;CAerD;AAeD,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,cAAc,GAAG,IAAI,CAEpF;AAED,wBAAgB,kBAAkB,IAAI,eAAe,CAKpD"}
|
|
@@ -0,0 +1,222 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview WSF (Washington State Ferries) API service — terminals, routes,
|
|
3
|
+
* schedules, vessel locations, terminal space, and alerts.
|
|
4
|
+
* @module services/ferry/ferry-service
|
|
5
|
+
*/
|
|
6
|
+
import { invalidParams, serviceUnavailable } from '@cyanheads/mcp-ts-core/errors';
|
|
7
|
+
import { withRetry } from '@cyanheads/mcp-ts-core/utils';
|
|
8
|
+
import { getServerConfig } from '../../config/server-config.js';
|
|
9
|
+
const BASE_URL = 'https://www.wsdot.wa.gov/Ferries/API';
|
|
10
|
+
const TIMEOUT_MS = 15_000;
|
|
11
|
+
export class FerryApiService {
|
|
12
|
+
constructor(_config, _storage) { }
|
|
13
|
+
accessCode() {
|
|
14
|
+
return getServerConfig().accessCode;
|
|
15
|
+
}
|
|
16
|
+
buildUrl(path) {
|
|
17
|
+
return `${BASE_URL}/${path}?apiaccesscode=${this.accessCode()}`;
|
|
18
|
+
}
|
|
19
|
+
fetchJson(path, ctx) {
|
|
20
|
+
const url = this.buildUrl(path);
|
|
21
|
+
return withRetry(async () => {
|
|
22
|
+
const timeoutSignal = AbortSignal.timeout(TIMEOUT_MS);
|
|
23
|
+
const signal = ctx.signal.aborted
|
|
24
|
+
? ctx.signal
|
|
25
|
+
: AbortSignal.any([ctx.signal, timeoutSignal]);
|
|
26
|
+
const response = await fetch(url, { signal });
|
|
27
|
+
if (!response.ok) {
|
|
28
|
+
throw serviceUnavailable(`WSF Ferry API returned HTTP ${response.status}.`, {
|
|
29
|
+
url,
|
|
30
|
+
status: response.status,
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
const contentType = response.headers.get('content-type') ?? '';
|
|
34
|
+
if (contentType.includes('text/html')) {
|
|
35
|
+
throw serviceUnavailable('WSF Ferry API returned an HTML page instead of JSON. Verify that WSDOT_ACCESS_CODE is set to a valid access code.', { url });
|
|
36
|
+
}
|
|
37
|
+
const text = await response.text();
|
|
38
|
+
if (/^\s*<(!DOCTYPE\s+html|html[\s>])/i.test(text)) {
|
|
39
|
+
throw serviceUnavailable('WSF Ferry API returned HTML content. Verify that WSDOT_ACCESS_CODE is set to a valid access code.', { url });
|
|
40
|
+
}
|
|
41
|
+
const parsed = JSON.parse(text);
|
|
42
|
+
// Ferry API returns HTTP 200 with {"Message":"..."} for validation errors
|
|
43
|
+
if (parsed !== null &&
|
|
44
|
+
typeof parsed === 'object' &&
|
|
45
|
+
!Array.isArray(parsed) &&
|
|
46
|
+
'Message' in parsed) {
|
|
47
|
+
const msg = parsed.Message;
|
|
48
|
+
throw invalidParams(`WSF Ferry API error: ${msg}`, { url });
|
|
49
|
+
}
|
|
50
|
+
return parsed;
|
|
51
|
+
}, {
|
|
52
|
+
operation: 'FerryApiService.fetchJson',
|
|
53
|
+
baseDelayMs: 1000,
|
|
54
|
+
signal: ctx.signal,
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
/** Validate and normalize an ISO 8601 date string for use in ferry API paths. */
|
|
58
|
+
static toFerryDate(isoDate) {
|
|
59
|
+
const d = new Date(isoDate);
|
|
60
|
+
if (Number.isNaN(d.getTime())) {
|
|
61
|
+
throw invalidParams(`Invalid date: "${isoDate}". Expected ISO 8601 format (e.g. 2026-05-23).`);
|
|
62
|
+
}
|
|
63
|
+
// Return YYYY-MM-DD — the WSF Schedule API requires ISO 8601
|
|
64
|
+
return isoDate.trim().slice(0, 10);
|
|
65
|
+
}
|
|
66
|
+
/** Return today's date in YYYY-MM-DD format. */
|
|
67
|
+
static todayFerryDate() {
|
|
68
|
+
return new Date().toISOString().slice(0, 10);
|
|
69
|
+
}
|
|
70
|
+
async getTerminals(ctx) {
|
|
71
|
+
ctx.log.info('Fetching ferry terminals');
|
|
72
|
+
const raw = await this.fetchJson('Terminals/rest/terminalbasics', ctx);
|
|
73
|
+
return (raw ?? []).map((t) => ({
|
|
74
|
+
terminalId: t.TerminalID ?? 0,
|
|
75
|
+
terminalName: t.TerminalName ?? 'Unknown',
|
|
76
|
+
...(t.TerminalAbbrev != null && { terminalAbbrev: t.TerminalAbbrev }),
|
|
77
|
+
...(t.Latitude != null && { latitude: t.Latitude }),
|
|
78
|
+
...(t.Longitude != null && { longitude: t.Longitude }),
|
|
79
|
+
}));
|
|
80
|
+
}
|
|
81
|
+
async getRoutes(tripDate, ctx) {
|
|
82
|
+
ctx.log.info('Fetching ferry routes', { tripDate });
|
|
83
|
+
const raw = await this.fetchJson(`Schedule/rest/routes/${tripDate}`, ctx);
|
|
84
|
+
return (raw ?? []).map((r) => ({
|
|
85
|
+
...(r.RouteID != null && { routeId: r.RouteID }),
|
|
86
|
+
...(r.RouteName != null && { routeName: r.RouteName }),
|
|
87
|
+
...(r.CrossingTime != null && { crossingTimeInMinutes: r.CrossingTime }),
|
|
88
|
+
...(r.DepartingTerminalID != null && { departingTerminalId: r.DepartingTerminalID }),
|
|
89
|
+
...(r.DepartingTerminalName != null && { departingTerminalName: r.DepartingTerminalName }),
|
|
90
|
+
...(r.ArrivingTerminalID != null && { arrivingTerminalId: r.ArrivingTerminalID }),
|
|
91
|
+
...(r.ArrivingTerminalName != null && { arrivingTerminalName: r.ArrivingTerminalName }),
|
|
92
|
+
}));
|
|
93
|
+
}
|
|
94
|
+
async getSchedule(departingTerminalId, arrivingTerminalId, tripDate, remainingOnly, ctx) {
|
|
95
|
+
let path;
|
|
96
|
+
const todayDate = FerryApiService.todayFerryDate();
|
|
97
|
+
if (tripDate === todayDate || remainingOnly) {
|
|
98
|
+
const flag = remainingOnly ? 'true' : 'false';
|
|
99
|
+
path = `Schedule/rest/scheduletoday/${departingTerminalId}/${arrivingTerminalId}/${flag}`;
|
|
100
|
+
}
|
|
101
|
+
else {
|
|
102
|
+
path = `Schedule/rest/schedule/${tripDate}/${departingTerminalId}/${arrivingTerminalId}`;
|
|
103
|
+
}
|
|
104
|
+
ctx.log.info('Fetching ferry schedule', {
|
|
105
|
+
departingTerminalId,
|
|
106
|
+
arrivingTerminalId,
|
|
107
|
+
tripDate,
|
|
108
|
+
remainingOnly,
|
|
109
|
+
});
|
|
110
|
+
const raw = await this.fetchJson(path, ctx);
|
|
111
|
+
// Schedule response nests sailings in TerminalCombos[0].Times
|
|
112
|
+
const combo = raw.TerminalCombos?.[0];
|
|
113
|
+
return {
|
|
114
|
+
...(combo?.DepartingTerminalName != null && {
|
|
115
|
+
departingTerminalName: combo.DepartingTerminalName,
|
|
116
|
+
}),
|
|
117
|
+
...(combo?.ArrivingTerminalName != null && {
|
|
118
|
+
arrivingTerminalName: combo.ArrivingTerminalName,
|
|
119
|
+
}),
|
|
120
|
+
tripDate,
|
|
121
|
+
sailings: (combo?.Times ?? []).map((s) => ({
|
|
122
|
+
...(s.DepartingTime != null && { departureTime: decodeWcfDate(s.DepartingTime) }),
|
|
123
|
+
...(s.ArrivingTime != null && { arrivalTime: decodeWcfDate(s.ArrivingTime) }),
|
|
124
|
+
...(typeof s.IsCancelled === 'boolean' && { isCancelled: s.IsCancelled }),
|
|
125
|
+
...(s.VesselName != null && { vesselName: s.VesselName }),
|
|
126
|
+
})),
|
|
127
|
+
};
|
|
128
|
+
}
|
|
129
|
+
async getVesselLocations(ctx) {
|
|
130
|
+
ctx.log.info('Fetching vessel locations');
|
|
131
|
+
const raw = await this.fetchJson('Vessels/rest/vessellocations', ctx);
|
|
132
|
+
return (raw ?? []).map((v) => ({
|
|
133
|
+
...(v.VesselID != null && { vesselId: v.VesselID }),
|
|
134
|
+
...(v.VesselName != null && { vesselName: v.VesselName }),
|
|
135
|
+
...(typeof v.InService === 'boolean' && { inService: v.InService }),
|
|
136
|
+
...(typeof v.AtDock === 'boolean' && { atDock: v.AtDock }),
|
|
137
|
+
...(v.DepartingTerminalID != null && { departingTerminalId: v.DepartingTerminalID }),
|
|
138
|
+
...(v.DepartingTerminalName != null && { departingTerminalName: v.DepartingTerminalName }),
|
|
139
|
+
...(v.ArrivingTerminalID != null && { arrivingTerminalId: v.ArrivingTerminalID }),
|
|
140
|
+
...(v.ArrivingTerminalName != null && { arrivingTerminalName: v.ArrivingTerminalName }),
|
|
141
|
+
...(v.Latitude != null && { latitude: v.Latitude }),
|
|
142
|
+
...(v.Longitude != null && { longitude: v.Longitude }),
|
|
143
|
+
...(v.Speed != null && { speed: v.Speed }),
|
|
144
|
+
...(v.Heading != null && { heading: v.Heading }),
|
|
145
|
+
...(v.LeftDock != null && { leftDock: decodeWcfDate(v.LeftDock) }),
|
|
146
|
+
...(v.Eta != null && { eta: decodeWcfDate(v.Eta) }),
|
|
147
|
+
...(v.ScheduledDeparture != null && {
|
|
148
|
+
scheduledDeparture: decodeWcfDate(v.ScheduledDeparture),
|
|
149
|
+
}),
|
|
150
|
+
opRouteAbbrev: v.OpRouteAbbrev ?? [],
|
|
151
|
+
...(v.TimeStamp != null && { timestamp: decodeWcfDate(v.TimeStamp) }),
|
|
152
|
+
}));
|
|
153
|
+
}
|
|
154
|
+
async getTerminalSailingSpace(ctx) {
|
|
155
|
+
ctx.log.info('Fetching terminal sailing space');
|
|
156
|
+
const raw = await this.fetchJson('Terminals/rest/terminalsailingspace', ctx);
|
|
157
|
+
return (raw ?? []).map((t) => ({
|
|
158
|
+
...(t.TerminalID != null && { terminalId: t.TerminalID }),
|
|
159
|
+
...(t.TerminalName != null && { terminalName: t.TerminalName }),
|
|
160
|
+
departingSpaces: (t.DepartingSpaces ?? []).flatMap((s) => {
|
|
161
|
+
// Space counts are nested per arriving terminal; expand into one entry per arrival terminal
|
|
162
|
+
const arrivalTerminals = s.SpaceForArrivalTerminals ?? [];
|
|
163
|
+
if (arrivalTerminals.length === 0) {
|
|
164
|
+
// Departure with no arrival terminal breakdowns — emit a row with just the vessel/departure info
|
|
165
|
+
return [
|
|
166
|
+
{
|
|
167
|
+
...(s.Departure != null && { departure: decodeWcfDate(s.Departure) }),
|
|
168
|
+
...(typeof s.IsCancelled === 'boolean' && { isCancelled: s.IsCancelled }),
|
|
169
|
+
...(s.VesselName != null && { vesselName: s.VesselName }),
|
|
170
|
+
...(s.MaxSpaceCount != null && { maxSpaceCount: s.MaxSpaceCount }),
|
|
171
|
+
},
|
|
172
|
+
];
|
|
173
|
+
}
|
|
174
|
+
return arrivalTerminals.map((a) => ({
|
|
175
|
+
...(s.Departure != null && { departure: decodeWcfDate(s.Departure) }),
|
|
176
|
+
...(typeof s.IsCancelled === 'boolean' && { isCancelled: s.IsCancelled }),
|
|
177
|
+
...(s.VesselName != null && { vesselName: s.VesselName }),
|
|
178
|
+
...(a.TerminalName != null && { arrivingTerminalName: a.TerminalName }),
|
|
179
|
+
...(a.DriveUpSpaceCount != null && { driveUpSpaceCount: a.DriveUpSpaceCount }),
|
|
180
|
+
...(a.ReservableSpaceCount != null && { reservableSpaceCount: a.ReservableSpaceCount }),
|
|
181
|
+
...(s.MaxSpaceCount != null && { maxSpaceCount: s.MaxSpaceCount }),
|
|
182
|
+
...(a.DriveUpSpaceHexColor != null && { driveUpSpaceHexColor: a.DriveUpSpaceHexColor }),
|
|
183
|
+
}));
|
|
184
|
+
}),
|
|
185
|
+
}));
|
|
186
|
+
}
|
|
187
|
+
async getAlerts(ctx) {
|
|
188
|
+
ctx.log.info('Fetching ferry alerts');
|
|
189
|
+
const raw = await this.fetchJson('Schedule/rest/alerts', ctx);
|
|
190
|
+
return (raw ?? []).map((a) => ({
|
|
191
|
+
...(a.BulletinID != null && { alertId: a.BulletinID }),
|
|
192
|
+
// Prefer plain-text RouteAlertText; fall back to AlertFullTitle when absent
|
|
193
|
+
...(a.RouteAlertText != null
|
|
194
|
+
? { alertDescription: a.RouteAlertText }
|
|
195
|
+
: a.AlertFullTitle != null
|
|
196
|
+
? { alertDescription: a.AlertFullTitle }
|
|
197
|
+
: {}),
|
|
198
|
+
impactedRouteIds: a.AffectedRouteIDs ?? [],
|
|
199
|
+
...(a.PublishDate != null && { publishDate: decodeWcfDate(a.PublishDate) }),
|
|
200
|
+
}));
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
// --- Utilities ---
|
|
204
|
+
/** Decode a WCF JSON date string (`/Date(ms±offset)/`) to ISO 8601, or return input unchanged. */
|
|
205
|
+
function decodeWcfDate(value) {
|
|
206
|
+
const match = /^\/Date\((-?\d+)([+-]\d{4})?\)\/$/.exec(value);
|
|
207
|
+
if (!match)
|
|
208
|
+
return value;
|
|
209
|
+
return new Date(Number(match[1])).toISOString();
|
|
210
|
+
}
|
|
211
|
+
// --- Init/accessor pattern ---
|
|
212
|
+
let _service;
|
|
213
|
+
export function initFerryApiService(config, storage) {
|
|
214
|
+
_service = new FerryApiService(config, storage);
|
|
215
|
+
}
|
|
216
|
+
export function getFerryApiService() {
|
|
217
|
+
if (!_service) {
|
|
218
|
+
throw new Error('FerryApiService not initialized — call initFerryApiService() in setup()');
|
|
219
|
+
}
|
|
220
|
+
return _service;
|
|
221
|
+
}
|
|
222
|
+
//# sourceMappingURL=ferry-service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ferry-service.js","sourceRoot":"","sources":["../../../src/services/ferry/ferry-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Domain types for the WSF (Washington State Ferries) API.
|
|
3
|
+
* @module services/ferry/types
|
|
4
|
+
*/
|
|
5
|
+
/** Raw ferry terminal from upstream API. */
|
|
6
|
+
export interface RawFerryTerminal {
|
|
7
|
+
Latitude?: number | null;
|
|
8
|
+
Longitude?: number | null;
|
|
9
|
+
TerminalAbbrev?: string | null;
|
|
10
|
+
TerminalID?: number | null;
|
|
11
|
+
TerminalName?: string | null;
|
|
12
|
+
}
|
|
13
|
+
/** Normalized ferry terminal. */
|
|
14
|
+
export interface FerryTerminal {
|
|
15
|
+
latitude?: number;
|
|
16
|
+
longitude?: number;
|
|
17
|
+
terminalAbbrev?: string;
|
|
18
|
+
terminalId: number;
|
|
19
|
+
terminalName: string;
|
|
20
|
+
}
|
|
21
|
+
/** Raw ferry route from upstream API. */
|
|
22
|
+
export interface RawFerryRoute {
|
|
23
|
+
ArrivingTerminalID?: number | null;
|
|
24
|
+
ArrivingTerminalName?: string | null;
|
|
25
|
+
CrossingTime?: number | null;
|
|
26
|
+
DepartingTerminalID?: number | null;
|
|
27
|
+
DepartingTerminalName?: string | null;
|
|
28
|
+
RouteID?: number | null;
|
|
29
|
+
RouteName?: string | null;
|
|
30
|
+
}
|
|
31
|
+
/** Normalized ferry route. */
|
|
32
|
+
export interface FerryRoute {
|
|
33
|
+
arrivingTerminalId?: number;
|
|
34
|
+
arrivingTerminalName?: string;
|
|
35
|
+
crossingTimeInMinutes?: number;
|
|
36
|
+
departingTerminalId?: number;
|
|
37
|
+
departingTerminalName?: string;
|
|
38
|
+
routeId?: number;
|
|
39
|
+
routeName?: string;
|
|
40
|
+
}
|
|
41
|
+
/** Raw sailing in a schedule response. */
|
|
42
|
+
export interface RawSailing {
|
|
43
|
+
/** Actual API field name (was ArrivalTime in older API). */
|
|
44
|
+
ArrivingTime?: string | null;
|
|
45
|
+
/** Actual API field name (was DepartureTime in older API). */
|
|
46
|
+
DepartingTime?: string | null;
|
|
47
|
+
IsCancelled?: boolean | null;
|
|
48
|
+
VesselID?: number | null;
|
|
49
|
+
VesselName?: string | null;
|
|
50
|
+
}
|
|
51
|
+
/** Terminal combo entry within a schedule response. */
|
|
52
|
+
export interface RawTerminalCombo {
|
|
53
|
+
ArrivingTerminalID?: number | null;
|
|
54
|
+
ArrivingTerminalName?: string | null;
|
|
55
|
+
DepartingTerminalID?: number | null;
|
|
56
|
+
DepartingTerminalName?: string | null;
|
|
57
|
+
Times?: RawSailing[] | null;
|
|
58
|
+
}
|
|
59
|
+
/** Raw ferry schedule response — times are nested under TerminalCombos[0].Times. */
|
|
60
|
+
export interface RawFerrySchedule {
|
|
61
|
+
ScheduleID?: number | null;
|
|
62
|
+
ScheduleName?: string | null;
|
|
63
|
+
TerminalCombos?: RawTerminalCombo[] | null;
|
|
64
|
+
}
|
|
65
|
+
/** Normalized sailing. */
|
|
66
|
+
export interface Sailing {
|
|
67
|
+
arrivalTime?: string;
|
|
68
|
+
departureTime?: string;
|
|
69
|
+
isCancelled?: boolean;
|
|
70
|
+
vesselName?: string;
|
|
71
|
+
}
|
|
72
|
+
/** Normalized ferry schedule. */
|
|
73
|
+
export interface FerrySchedule {
|
|
74
|
+
arrivingTerminalName?: string;
|
|
75
|
+
departingTerminalName?: string;
|
|
76
|
+
sailings: Sailing[];
|
|
77
|
+
tripDate: string;
|
|
78
|
+
}
|
|
79
|
+
/** Raw vessel location from upstream API. */
|
|
80
|
+
export interface RawVesselLocation {
|
|
81
|
+
ArrivingTerminalID?: number | null;
|
|
82
|
+
ArrivingTerminalName?: string | null;
|
|
83
|
+
AtDock?: boolean | null;
|
|
84
|
+
DepartingTerminalID?: number | null;
|
|
85
|
+
DepartingTerminalName?: string | null;
|
|
86
|
+
Eta?: string | null;
|
|
87
|
+
Heading?: number | null;
|
|
88
|
+
InService?: boolean | null;
|
|
89
|
+
Latitude?: number | null;
|
|
90
|
+
LeftDock?: string | null;
|
|
91
|
+
Longitude?: number | null;
|
|
92
|
+
OpRouteAbbrev?: string[] | null;
|
|
93
|
+
ScheduledDeparture?: string | null;
|
|
94
|
+
Speed?: number | null;
|
|
95
|
+
TimeStamp?: string | null;
|
|
96
|
+
VesselID?: number | null;
|
|
97
|
+
VesselName?: string | null;
|
|
98
|
+
}
|
|
99
|
+
/** Normalized vessel location. */
|
|
100
|
+
export interface VesselLocation {
|
|
101
|
+
arrivingTerminalId?: number;
|
|
102
|
+
arrivingTerminalName?: string;
|
|
103
|
+
atDock?: boolean;
|
|
104
|
+
departingTerminalId?: number;
|
|
105
|
+
departingTerminalName?: string;
|
|
106
|
+
eta?: string;
|
|
107
|
+
heading?: number;
|
|
108
|
+
inService?: boolean;
|
|
109
|
+
latitude?: number;
|
|
110
|
+
leftDock?: string;
|
|
111
|
+
longitude?: number;
|
|
112
|
+
opRouteAbbrev: string[];
|
|
113
|
+
scheduledDeparture?: string;
|
|
114
|
+
speed?: number;
|
|
115
|
+
timestamp?: string;
|
|
116
|
+
vesselId?: number;
|
|
117
|
+
vesselName?: string;
|
|
118
|
+
}
|
|
119
|
+
/** Space availability for one arriving terminal within a departure. */
|
|
120
|
+
export interface RawSpaceForArrivalTerminal {
|
|
121
|
+
DriveUpSpaceCount?: number | null;
|
|
122
|
+
DriveUpSpaceHexColor?: string | null;
|
|
123
|
+
MaxSpaceCount?: number | null;
|
|
124
|
+
ReservableSpaceCount?: number | null;
|
|
125
|
+
ReservableSpaceHexColor?: string | null;
|
|
126
|
+
TerminalID?: number | null;
|
|
127
|
+
TerminalName?: string | null;
|
|
128
|
+
}
|
|
129
|
+
/** Raw departure space entry from upstream API. */
|
|
130
|
+
export interface RawDepartureSpace {
|
|
131
|
+
Departure?: string | null;
|
|
132
|
+
IsCancelled?: boolean | null;
|
|
133
|
+
MaxSpaceCount?: number | null;
|
|
134
|
+
/** Space counts are nested per arriving terminal. */
|
|
135
|
+
SpaceForArrivalTerminals?: RawSpaceForArrivalTerminal[] | null;
|
|
136
|
+
VesselID?: number | null;
|
|
137
|
+
VesselName?: string | null;
|
|
138
|
+
}
|
|
139
|
+
/** Raw terminal sailing space from upstream API. */
|
|
140
|
+
export interface RawTerminalSailingSpace {
|
|
141
|
+
DepartingSpaces?: RawDepartureSpace[] | null;
|
|
142
|
+
TerminalID?: number | null;
|
|
143
|
+
TerminalName?: string | null;
|
|
144
|
+
}
|
|
145
|
+
/** Normalized departure space. */
|
|
146
|
+
export interface DepartureSpace {
|
|
147
|
+
arrivingTerminalName?: string;
|
|
148
|
+
departure?: string;
|
|
149
|
+
driveUpSpaceCount?: number;
|
|
150
|
+
driveUpSpaceHexColor?: string;
|
|
151
|
+
isCancelled?: boolean;
|
|
152
|
+
maxSpaceCount?: number;
|
|
153
|
+
reservableSpaceCount?: number;
|
|
154
|
+
vesselName?: string;
|
|
155
|
+
}
|
|
156
|
+
/** Normalized terminal sailing space. */
|
|
157
|
+
export interface TerminalSailingSpace {
|
|
158
|
+
departingSpaces: DepartureSpace[];
|
|
159
|
+
terminalId?: number;
|
|
160
|
+
terminalName?: string;
|
|
161
|
+
}
|
|
162
|
+
/** Raw ferry alert from upstream API. */
|
|
163
|
+
export interface RawFerryAlert {
|
|
164
|
+
/** Route IDs affected by this alert (was ImpactedRouteIds in older API). */
|
|
165
|
+
AffectedRouteIDs?: number[] | null;
|
|
166
|
+
/** Fallback title when RouteAlertText is absent. */
|
|
167
|
+
AlertFullTitle?: string | null;
|
|
168
|
+
AlertType?: string | null;
|
|
169
|
+
/** Unique alert ID (was AlertID in older API). */
|
|
170
|
+
BulletinID?: number | null;
|
|
171
|
+
/** WCF date string — decoded to ISO 8601 during normalization. */
|
|
172
|
+
PublishDate?: string | null;
|
|
173
|
+
/** Plain-text description (preferred over BulletinText which contains HTML). */
|
|
174
|
+
RouteAlertText?: string | null;
|
|
175
|
+
}
|
|
176
|
+
/** Normalized ferry alert. */
|
|
177
|
+
export interface FerryAlert {
|
|
178
|
+
alertDescription?: string;
|
|
179
|
+
alertId?: number;
|
|
180
|
+
impactedRouteIds: number[];
|
|
181
|
+
publishDate?: string;
|
|
182
|
+
}
|
|
183
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/services/ferry/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/services/ferry/types.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview WSDOT Traffic API service — mountain passes, alerts, travel times,
|
|
3
|
+
* toll rates, border crossings, and cameras.
|
|
4
|
+
* @module services/traffic/traffic-service
|
|
5
|
+
*/
|
|
6
|
+
import type { Context } from '@cyanheads/mcp-ts-core';
|
|
7
|
+
import type { AppConfig } from '@cyanheads/mcp-ts-core/config';
|
|
8
|
+
import type { StorageService } from '@cyanheads/mcp-ts-core/storage';
|
|
9
|
+
import type { BorderCrossing, Camera, HighwayAlert, MountainPass, TollRate, TravelTime } from './types.js';
|
|
10
|
+
/** Alert search parameters for `SearchAlertsAsJson`. */
|
|
11
|
+
export interface AlertSearchParams {
|
|
12
|
+
endMilepost?: number;
|
|
13
|
+
region?: string;
|
|
14
|
+
startMilepost?: number;
|
|
15
|
+
stateRoute?: string;
|
|
16
|
+
}
|
|
17
|
+
/** Camera search parameters for `SearchCamerasAsJson`. */
|
|
18
|
+
export interface CameraSearchParams {
|
|
19
|
+
endMilepost?: number;
|
|
20
|
+
region?: string;
|
|
21
|
+
startMilepost?: number;
|
|
22
|
+
stateRoute?: string;
|
|
23
|
+
}
|
|
24
|
+
export declare class TrafficApiService {
|
|
25
|
+
constructor(_config: AppConfig, _storage: StorageService);
|
|
26
|
+
private accessCode;
|
|
27
|
+
private fetchJson;
|
|
28
|
+
getMountainPasses(ctx: Context): Promise<MountainPass[]>;
|
|
29
|
+
searchAlerts(params: AlertSearchParams, ctx: Context): Promise<HighwayAlert[]>;
|
|
30
|
+
getTravelTimes(ctx: Context): Promise<TravelTime[]>;
|
|
31
|
+
getTollRates(ctx: Context): Promise<TollRate[]>;
|
|
32
|
+
getBorderCrossings(ctx: Context): Promise<BorderCrossing[]>;
|
|
33
|
+
searchCameras(params: CameraSearchParams, ctx: Context): Promise<Camera[]>;
|
|
34
|
+
}
|
|
35
|
+
export declare function initTrafficApiService(config: AppConfig, storage: StorageService): void;
|
|
36
|
+
export declare function getTrafficApiService(): TrafficApiService;
|
|
37
|
+
//# sourceMappingURL=traffic-service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"traffic-service.d.ts","sourceRoot":"","sources":["../../../src/services/traffic/traffic-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;AAGrE,OAAO,KAAK,EACV,cAAc,EACd,MAAM,EACN,YAAY,EACZ,YAAY,EAWZ,QAAQ,EACR,UAAU,EACX,MAAM,YAAY,CAAC;AAKpB,wDAAwD;AACxD,MAAM,WAAW,iBAAiB;IAChC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,0DAA0D;AAC1D,MAAM,WAAW,kBAAkB;IACjC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,qBAAa,iBAAiB;gBAChB,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,cAAc;IAExD,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,SAAS;IAwCX,iBAAiB,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAiDxD,YAAY,CAAC,MAAM,EAAE,iBAAiB,EAAE,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IA8B9E,cAAc,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAgCnD,YAAY,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;IAsB/C,kBAAkB,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAiC3D,aAAa,CAAC,MAAM,EAAE,kBAAkB,EAAE,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;CA0BjF;AAyED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,cAAc,GAAG,IAAI,CAEtF;AAED,wBAAgB,oBAAoB,IAAI,iBAAiB,CAKxD"}
|