go-transit-mcp 0.0.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/LICENSE +21 -0
- package/README.md +68 -0
- package/dist/entry/http.js +78 -0
- package/dist/entry/http.js.map +1 -0
- package/dist/entry/stdio.js +16 -0
- package/dist/entry/stdio.js.map +1 -0
- package/dist/errors.js +30 -0
- package/dist/errors.js.map +1 -0
- package/dist/metrolinx/cache.js +29 -0
- package/dist/metrolinx/cache.js.map +1 -0
- package/dist/metrolinx/client.js +180 -0
- package/dist/metrolinx/client.js.map +1 -0
- package/dist/metrolinx/types.js +5 -0
- package/dist/metrolinx/types.js.map +1 -0
- package/dist/normalize/fares.js +44 -0
- package/dist/normalize/fares.js.map +1 -0
- package/dist/normalize/fleet-consist.js +31 -0
- package/dist/normalize/fleet-consist.js.map +1 -0
- package/dist/normalize/journey.js +184 -0
- package/dist/normalize/journey.js.map +1 -0
- package/dist/normalize/line-schedule.js +56 -0
- package/dist/normalize/line-schedule.js.map +1 -0
- package/dist/normalize/list-lines.js +29 -0
- package/dist/normalize/list-lines.js.map +1 -0
- package/dist/normalize/next-service.js +59 -0
- package/dist/normalize/next-service.js.map +1 -0
- package/dist/normalize/search-stops.js +113 -0
- package/dist/normalize/search-stops.js.map +1 -0
- package/dist/normalize/service-alerts.js +61 -0
- package/dist/normalize/service-alerts.js.map +1 -0
- package/dist/normalize/service-exceptions.js +51 -0
- package/dist/normalize/service-exceptions.js.map +1 -0
- package/dist/normalize/service-guarantee.js +23 -0
- package/dist/normalize/service-guarantee.js.map +1 -0
- package/dist/normalize/stop-destinations.js +54 -0
- package/dist/normalize/stop-destinations.js.map +1 -0
- package/dist/normalize/stop-details.js +44 -0
- package/dist/normalize/stop-details.js.map +1 -0
- package/dist/normalize/trip-status.js +88 -0
- package/dist/normalize/trip-status.js.map +1 -0
- package/dist/normalize/trip-updates.js +113 -0
- package/dist/normalize/trip-updates.js.map +1 -0
- package/dist/normalize/union-departures.js +52 -0
- package/dist/normalize/union-departures.js.map +1 -0
- package/dist/normalize/vehicle-positions.js +67 -0
- package/dist/normalize/vehicle-positions.js.map +1 -0
- package/dist/prompts.js +96 -0
- package/dist/prompts.js.map +1 -0
- package/dist/resources.js +61 -0
- package/dist/resources.js.map +1 -0
- package/dist/schemas/fares.js +30 -0
- package/dist/schemas/fares.js.map +1 -0
- package/dist/schemas/fleet-consist.js +32 -0
- package/dist/schemas/fleet-consist.js.map +1 -0
- package/dist/schemas/journey.js +127 -0
- package/dist/schemas/journey.js.map +1 -0
- package/dist/schemas/line-schedule.js +43 -0
- package/dist/schemas/line-schedule.js.map +1 -0
- package/dist/schemas/list-lines.js +29 -0
- package/dist/schemas/list-lines.js.map +1 -0
- package/dist/schemas/next-service.js +29 -0
- package/dist/schemas/next-service.js.map +1 -0
- package/dist/schemas/search-stops.js +35 -0
- package/dist/schemas/search-stops.js.map +1 -0
- package/dist/schemas/service-alerts.js +55 -0
- package/dist/schemas/service-alerts.js.map +1 -0
- package/dist/schemas/service-exceptions.js +27 -0
- package/dist/schemas/service-exceptions.js.map +1 -0
- package/dist/schemas/service-guarantee.js +32 -0
- package/dist/schemas/service-guarantee.js.map +1 -0
- package/dist/schemas/stop-destinations.js +32 -0
- package/dist/schemas/stop-destinations.js.map +1 -0
- package/dist/schemas/stop-details.js +27 -0
- package/dist/schemas/stop-details.js.map +1 -0
- package/dist/schemas/trip-status.js +39 -0
- package/dist/schemas/trip-status.js.map +1 -0
- package/dist/schemas/trip-updates.js +51 -0
- package/dist/schemas/trip-updates.js.map +1 -0
- package/dist/schemas/union-departures.js +26 -0
- package/dist/schemas/union-departures.js.map +1 -0
- package/dist/schemas/vehicle-positions.js +48 -0
- package/dist/schemas/vehicle-positions.js.map +1 -0
- package/dist/server.js +58 -0
- package/dist/server.js.map +1 -0
- package/dist/time.js +159 -0
- package/dist/time.js.map +1 -0
- package/dist/tools/get-fares.js +26 -0
- package/dist/tools/get-fares.js.map +1 -0
- package/dist/tools/get-fleet-consist.js +34 -0
- package/dist/tools/get-fleet-consist.js.map +1 -0
- package/dist/tools/get-line-schedule.js +27 -0
- package/dist/tools/get-line-schedule.js.map +1 -0
- package/dist/tools/get-next-service.js +25 -0
- package/dist/tools/get-next-service.js.map +1 -0
- package/dist/tools/get-service-alerts.js +45 -0
- package/dist/tools/get-service-alerts.js.map +1 -0
- package/dist/tools/get-service-exceptions.js +25 -0
- package/dist/tools/get-service-exceptions.js.map +1 -0
- package/dist/tools/get-service-guarantee.js +26 -0
- package/dist/tools/get-service-guarantee.js.map +1 -0
- package/dist/tools/get-stop-destinations.js +28 -0
- package/dist/tools/get-stop-destinations.js.map +1 -0
- package/dist/tools/get-stop-details.js +25 -0
- package/dist/tools/get-stop-details.js.map +1 -0
- package/dist/tools/get-trip-status.js +31 -0
- package/dist/tools/get-trip-status.js.map +1 -0
- package/dist/tools/get-trip-updates.js +26 -0
- package/dist/tools/get-trip-updates.js.map +1 -0
- package/dist/tools/get-union-departures.js +29 -0
- package/dist/tools/get-union-departures.js.map +1 -0
- package/dist/tools/get-vehicle-positions.js +30 -0
- package/dist/tools/get-vehicle-positions.js.map +1 -0
- package/dist/tools/list-lines.js +27 -0
- package/dist/tools/list-lines.js.map +1 -0
- package/dist/tools/plan-journey.js +46 -0
- package/dist/tools/plan-journey.js.map +1 -0
- package/dist/tools/plan-trip.js +81 -0
- package/dist/tools/plan-trip.js.map +1 -0
- package/dist/tools/search-stops.js +25 -0
- package/dist/tools/search-stops.js.map +1 -0
- package/dist/tools/test-support.js +93 -0
- package/dist/tools/test-support.js.map +1 -0
- package/package.json +57 -0
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
const YYYY_MM_DD_PATTERN = /^\d{4}-\d{2}-\d{2}$/;
|
|
3
|
+
export const getFaresInputShape = {
|
|
4
|
+
from_stop_code: z
|
|
5
|
+
.string()
|
|
6
|
+
.min(1)
|
|
7
|
+
.describe("GO stop code to travel from, e.g. 'UN' (Union Station). Obtain via search_stops — do not guess."),
|
|
8
|
+
to_stop_code: z
|
|
9
|
+
.string()
|
|
10
|
+
.min(1)
|
|
11
|
+
.describe("GO stop code to travel to, e.g. 'OA' (Oakville GO). Obtain via search_stops — do not guess."),
|
|
12
|
+
date: z
|
|
13
|
+
.string()
|
|
14
|
+
.regex(YYYY_MM_DD_PATTERN)
|
|
15
|
+
.optional()
|
|
16
|
+
.describe("Operational day, YYYY-MM-DD. Defaults to the standard fare table (undated)."),
|
|
17
|
+
};
|
|
18
|
+
export const fareSchema = z.object({
|
|
19
|
+
rider: z.enum(["adult", "student", "senior", "child"]),
|
|
20
|
+
method: z.enum(["presto", "paper"]),
|
|
21
|
+
amount: z.number(),
|
|
22
|
+
category: z.string(),
|
|
23
|
+
});
|
|
24
|
+
export const faresOutputSchema = z.object({
|
|
25
|
+
fares: z.array(fareSchema),
|
|
26
|
+
truncated: z.boolean(),
|
|
27
|
+
total_matched: z.number().optional(),
|
|
28
|
+
});
|
|
29
|
+
export const faresOutputShape = faresOutputSchema.shape;
|
|
30
|
+
//# sourceMappingURL=fares.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fares.js","sourceRoot":"","sources":["../../src/schemas/fares.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,kBAAkB,GAAG,qBAAqB,CAAC;AAEjD,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,cAAc,EAAE,CAAC;SACd,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,CACP,iGAAiG,CAClG;IACH,YAAY,EAAE,CAAC;SACZ,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,CACP,6FAA6F,CAC9F;IACH,IAAI,EAAE,CAAC;SACJ,MAAM,EAAE;SACR,KAAK,CAAC,kBAAkB,CAAC;SACzB,QAAQ,EAAE;SACV,QAAQ,CACP,6EAA6E,CAC9E;CACJ,CAAC;AAEF,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,CAAC,MAAM,CAAC;IACjC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;IACtD,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IACnC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;IAClB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;CACrB,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IACxC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC;IAC1B,SAAS,EAAE,CAAC,CAAC,OAAO,EAAE;IACtB,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACrC,CAAC,CAAC;AAKH,MAAM,CAAC,MAAM,gBAAgB,GAAG,iBAAiB,CAAC,KAAK,CAAC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
export const getFleetConsistInputShape = {
|
|
3
|
+
trip_number: z
|
|
4
|
+
.string()
|
|
5
|
+
.min(1)
|
|
6
|
+
.optional()
|
|
7
|
+
.describe("Trip number to look up the currently-assigned consist for (obtain via get_trip_status or get_vehicle_positions). Provide exactly one of trip_number/engine_number."),
|
|
8
|
+
engine_number: z
|
|
9
|
+
.string()
|
|
10
|
+
.min(1)
|
|
11
|
+
.optional()
|
|
12
|
+
.describe("Locomotive engine number to look up directly. Provide exactly one of trip_number/engine_number."),
|
|
13
|
+
};
|
|
14
|
+
export const consistCarSchema = z.object({
|
|
15
|
+
type: z.string(),
|
|
16
|
+
order: z.number(),
|
|
17
|
+
number: z.string(),
|
|
18
|
+
});
|
|
19
|
+
export const remainingTripSchema = z.object({
|
|
20
|
+
trip_number: z.string(),
|
|
21
|
+
line: z.string(),
|
|
22
|
+
start_time: z.string(),
|
|
23
|
+
end_time: z.string(),
|
|
24
|
+
});
|
|
25
|
+
export const fleetConsistOutputSchema = z.object({
|
|
26
|
+
engine_number: z.string(),
|
|
27
|
+
coach_count: z.number(),
|
|
28
|
+
cars: z.array(consistCarSchema),
|
|
29
|
+
remaining_trips: z.array(remainingTripSchema),
|
|
30
|
+
});
|
|
31
|
+
export const fleetConsistOutputShape = fleetConsistOutputSchema.shape;
|
|
32
|
+
//# sourceMappingURL=fleet-consist.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fleet-consist.js","sourceRoot":"","sources":["../../src/schemas/fleet-consist.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,yBAAyB,GAAG;IACvC,WAAW,EAAE,CAAC;SACX,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,EAAE;SACV,QAAQ,CACP,oKAAoK,CACrK;IACH,aAAa,EAAE,CAAC;SACb,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,EAAE;SACV,QAAQ,CACP,iGAAiG,CAClG;CACJ,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IACvC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IACjB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;CACnB,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1C,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE;IACvB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;IACtB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;CACrB,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC/C,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE;IACzB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE;IACvB,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC;IAC/B,eAAe,EAAE,CAAC,CAAC,KAAK,CAAC,mBAAmB,CAAC;CAC9C,CAAC,CAAC;AAMH,MAAM,CAAC,MAAM,uBAAuB,GAAG,wBAAwB,CAAC,KAAK,CAAC"}
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { DATE_PATTERN } from "./list-lines.js";
|
|
3
|
+
import { stopMatchSchema } from "./search-stops.js";
|
|
4
|
+
const HHMM_PATTERN = /^([01]\d|2[0-3]):[0-5]\d$/;
|
|
5
|
+
const stopRefSchema = z.object({
|
|
6
|
+
stop_code: z.string(),
|
|
7
|
+
stop_name: z.string(),
|
|
8
|
+
});
|
|
9
|
+
const legStopSchema = z.object({
|
|
10
|
+
stop_code: z.string(),
|
|
11
|
+
stop_name: z.string(),
|
|
12
|
+
time: z.string(),
|
|
13
|
+
});
|
|
14
|
+
export const itineraryLegSchema = z.object({
|
|
15
|
+
mode: z.enum(["train", "bus"]),
|
|
16
|
+
line_code: z.string(),
|
|
17
|
+
line_name: z.string(),
|
|
18
|
+
direction: z.string(),
|
|
19
|
+
from: legStopSchema,
|
|
20
|
+
to: legStopSchema,
|
|
21
|
+
trip_number: z.string(),
|
|
22
|
+
});
|
|
23
|
+
export const itinerarySchema = z.object({
|
|
24
|
+
departure_time: z.string(),
|
|
25
|
+
arrival_time: z.string(),
|
|
26
|
+
duration_minutes: z.number(),
|
|
27
|
+
transfers: z.number(),
|
|
28
|
+
accessible: z.boolean(),
|
|
29
|
+
legs: z.array(itineraryLegSchema),
|
|
30
|
+
});
|
|
31
|
+
export const ambiguitySchema = z.object({
|
|
32
|
+
field: z.enum(["from", "to"]),
|
|
33
|
+
query: z.string(),
|
|
34
|
+
candidates: z.array(stopMatchSchema),
|
|
35
|
+
});
|
|
36
|
+
const maxResultsSchema = z
|
|
37
|
+
.number()
|
|
38
|
+
.int()
|
|
39
|
+
.min(1)
|
|
40
|
+
.max(10)
|
|
41
|
+
.optional()
|
|
42
|
+
.describe("Maximum itineraries to return; defaults to 3, max 10 (mirrors Metrolinx's MaxJourney).");
|
|
43
|
+
export const planTripInputShape = {
|
|
44
|
+
from: z
|
|
45
|
+
.string()
|
|
46
|
+
.min(1)
|
|
47
|
+
.describe("Origin station/stop name (fuzzy-matched, e.g. 'union') or exact stop code."),
|
|
48
|
+
to: z
|
|
49
|
+
.string()
|
|
50
|
+
.min(1)
|
|
51
|
+
.describe("Destination station/stop name (fuzzy-matched, e.g. 'oakville') or exact stop code."),
|
|
52
|
+
date: z
|
|
53
|
+
.string()
|
|
54
|
+
.regex(DATE_PATTERN)
|
|
55
|
+
.optional()
|
|
56
|
+
.describe("Travel date, YYYY-MM-DD. Defaults to today (Toronto)."),
|
|
57
|
+
time: z
|
|
58
|
+
.string()
|
|
59
|
+
.regex(HHMM_PATTERN)
|
|
60
|
+
.optional()
|
|
61
|
+
.describe("Departure or arrival time (see time_mode), HH:MM 24h. Defaults to now (Toronto)."),
|
|
62
|
+
time_mode: z
|
|
63
|
+
.enum(["depart_after", "arrive_by"])
|
|
64
|
+
.optional()
|
|
65
|
+
.describe("'depart_after' (default) finds itineraries leaving at/after time; " +
|
|
66
|
+
"'arrive_by' emulates an arrive-by search by back-shifting the " +
|
|
67
|
+
"query window and filtering on arrival at/before time."),
|
|
68
|
+
max_results: maxResultsSchema,
|
|
69
|
+
lang: z
|
|
70
|
+
.enum(["en", "fr"])
|
|
71
|
+
.optional()
|
|
72
|
+
.describe("Response language; defaults to 'en'."),
|
|
73
|
+
};
|
|
74
|
+
export const planTripOutputSchema = z.object({
|
|
75
|
+
status: z.enum(["ok", "ambiguous"]),
|
|
76
|
+
from: stopRefSchema
|
|
77
|
+
.optional()
|
|
78
|
+
.describe("Only present when status is 'ok' — what 'from' resolved to."),
|
|
79
|
+
to: stopRefSchema
|
|
80
|
+
.optional()
|
|
81
|
+
.describe("Only present when status is 'ok' — what 'to' resolved to."),
|
|
82
|
+
itineraries: z
|
|
83
|
+
.array(itinerarySchema)
|
|
84
|
+
.optional()
|
|
85
|
+
.describe("Only present when status is 'ok'. Cross-line trips are composed " +
|
|
86
|
+
"automatically via a Union Station transfer when no direct journey " +
|
|
87
|
+
"exists. Empty means nothing was found in the requested window even " +
|
|
88
|
+
"via Union — suggest a different time/date, or a bus-terminal " +
|
|
89
|
+
"transfer the server does not compose yet."),
|
|
90
|
+
ambiguities: z
|
|
91
|
+
.array(ambiguitySchema)
|
|
92
|
+
.optional()
|
|
93
|
+
.describe("Only present when status is 'ambiguous'. Disambiguation is not a " +
|
|
94
|
+
"failure — ask the user to pick a candidate, then retry."),
|
|
95
|
+
});
|
|
96
|
+
export const planTripOutputShape = planTripOutputSchema.shape;
|
|
97
|
+
export const planJourneyInputShape = {
|
|
98
|
+
from_stop_code: z
|
|
99
|
+
.string()
|
|
100
|
+
.min(1)
|
|
101
|
+
.describe("Exact GO stop code, e.g. 'UN' (Union Station). Obtain via search_stops — no fuzzy resolution here, use plan_trip for that."),
|
|
102
|
+
to_stop_code: z
|
|
103
|
+
.string()
|
|
104
|
+
.min(1)
|
|
105
|
+
.describe("Exact GO stop code, e.g. 'OA' (Oakville GO). Obtain via search_stops — no fuzzy resolution here, use plan_trip for that."),
|
|
106
|
+
date: z
|
|
107
|
+
.string()
|
|
108
|
+
.regex(DATE_PATTERN)
|
|
109
|
+
.optional()
|
|
110
|
+
.describe("Travel date, YYYY-MM-DD. Defaults to today (Toronto)."),
|
|
111
|
+
time: z
|
|
112
|
+
.string()
|
|
113
|
+
.regex(HHMM_PATTERN)
|
|
114
|
+
.optional()
|
|
115
|
+
.describe("Depart-after time, HH:MM 24h. Defaults to now (Toronto). No arrive_by mode — use plan_trip for that."),
|
|
116
|
+
max_results: maxResultsSchema,
|
|
117
|
+
};
|
|
118
|
+
export const planJourneyOutputSchema = z.object({
|
|
119
|
+
itineraries: z
|
|
120
|
+
.array(itinerarySchema)
|
|
121
|
+
.describe("Raw single-call mirror: Metrolinx's journey planner only returns " +
|
|
122
|
+
"single-service journeys, and this tool does not compose " +
|
|
123
|
+
"transfers. Empty on a cross-line pair is expected — use plan_trip, " +
|
|
124
|
+
"which composes a via-Union transfer automatically."),
|
|
125
|
+
});
|
|
126
|
+
export const planJourneyOutputShape = planJourneyOutputSchema.shape;
|
|
127
|
+
//# sourceMappingURL=journey.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"journey.js","sourceRoot":"","sources":["../../src/schemas/journey.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { DATE_PATTERN } from "./list-lines.js";
|
|
3
|
+
export const getLineScheduleInputShape = {
|
|
4
|
+
line_code: z
|
|
5
|
+
.string()
|
|
6
|
+
.min(1)
|
|
7
|
+
.describe("GO line code, e.g. 'LW' (Lakeshore West). From list_lines."),
|
|
8
|
+
direction: z
|
|
9
|
+
.string()
|
|
10
|
+
.min(1)
|
|
11
|
+
.describe("Line direction code, e.g. 'E'. Valid values from list_lines."),
|
|
12
|
+
date: z
|
|
13
|
+
.string()
|
|
14
|
+
.regex(DATE_PATTERN)
|
|
15
|
+
.optional()
|
|
16
|
+
.describe("Service day, YYYY-MM-DD. Defaults to today (Toronto)."),
|
|
17
|
+
stop_code: z
|
|
18
|
+
.string()
|
|
19
|
+
.optional()
|
|
20
|
+
.describe("GO stop code to get times at that stop. Without it, only trip " +
|
|
21
|
+
"summaries (first/last stop) are returned — a full day's stop-by-stop " +
|
|
22
|
+
"times for every trip is never dumped. Obtain via search_stops."),
|
|
23
|
+
};
|
|
24
|
+
export const scheduleTripSchema = z.object({
|
|
25
|
+
trip_number: z.string(),
|
|
26
|
+
display: z.string(),
|
|
27
|
+
departs_first_stop: z
|
|
28
|
+
.string()
|
|
29
|
+
.optional()
|
|
30
|
+
.describe("Only present without stop_code."),
|
|
31
|
+
arrives_last_stop: z
|
|
32
|
+
.string()
|
|
33
|
+
.optional()
|
|
34
|
+
.describe("Only present without stop_code."),
|
|
35
|
+
time: z.string().optional().describe("Only present with stop_code."),
|
|
36
|
+
});
|
|
37
|
+
export const lineScheduleOutputSchema = z.object({
|
|
38
|
+
trips: z.array(scheduleTripSchema),
|
|
39
|
+
truncated: z.boolean(),
|
|
40
|
+
total_matched: z.number().optional(),
|
|
41
|
+
});
|
|
42
|
+
export const lineScheduleOutputShape = lineScheduleOutputSchema.shape;
|
|
43
|
+
//# sourceMappingURL=line-schedule.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"line-schedule.js","sourceRoot":"","sources":["../../src/schemas/line-schedule.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,MAAM,CAAC,MAAM,yBAAyB,GAAG;IACvC,SAAS,EAAE,CAAC;SACT,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,CAAC,4DAA4D,CAAC;IACzE,SAAS,EAAE,CAAC;SACT,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,CAAC,8DAA8D,CAAC;IAC3E,IAAI,EAAE,CAAC;SACJ,MAAM,EAAE;SACR,KAAK,CAAC,YAAY,CAAC;SACnB,QAAQ,EAAE;SACV,QAAQ,CAAC,uDAAuD,CAAC;IACpE,SAAS,EAAE,CAAC;SACT,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CACP,gEAAgE;QAC9D,uEAAuE;QACvE,gEAAgE,CACnE;CACJ,CAAC;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE;IACvB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB,kBAAkB,EAAE,CAAC;SAClB,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,iCAAiC,CAAC;IAC9C,iBAAiB,EAAE,CAAC;SACjB,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,iCAAiC,CAAC;IAC9C,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,8BAA8B,CAAC;CACrE,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC/C,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,kBAAkB,CAAC;IAClC,SAAS,EAAE,CAAC,CAAC,OAAO,EAAE;IACtB,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACrC,CAAC,CAAC;AAKH,MAAM,CAAC,MAAM,uBAAuB,GAAG,wBAAwB,CAAC,KAAK,CAAC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
export const DATE_PATTERN = /^\d{4}-\d{2}-\d{2}$/;
|
|
3
|
+
export const listLinesInputShape = {
|
|
4
|
+
date: z
|
|
5
|
+
.string()
|
|
6
|
+
.regex(DATE_PATTERN)
|
|
7
|
+
.optional()
|
|
8
|
+
.describe("Service day, YYYY-MM-DD. Defaults to today (Toronto)."),
|
|
9
|
+
};
|
|
10
|
+
export const lineVariantSchema = z.object({
|
|
11
|
+
code: z.string(),
|
|
12
|
+
direction: z
|
|
13
|
+
.string()
|
|
14
|
+
.describe("Valid direction code for this line — pass to get_line_schedule's direction param."),
|
|
15
|
+
display: z.string(),
|
|
16
|
+
});
|
|
17
|
+
export const lineSchema = z.object({
|
|
18
|
+
line_code: z.string(),
|
|
19
|
+
line_name: z.string(),
|
|
20
|
+
modes: z.array(z.enum(["train", "bus"])),
|
|
21
|
+
variants: z.array(lineVariantSchema),
|
|
22
|
+
});
|
|
23
|
+
export const listLinesOutputSchema = z.object({
|
|
24
|
+
lines: z.array(lineSchema),
|
|
25
|
+
truncated: z.boolean(),
|
|
26
|
+
total_matched: z.number().optional(),
|
|
27
|
+
});
|
|
28
|
+
export const listLinesOutputShape = listLinesOutputSchema.shape;
|
|
29
|
+
//# sourceMappingURL=list-lines.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list-lines.js","sourceRoot":"","sources":["../../src/schemas/list-lines.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,YAAY,GAAG,qBAAqB,CAAC;AAElD,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,IAAI,EAAE,CAAC;SACJ,MAAM,EAAE;SACR,KAAK,CAAC,YAAY,CAAC;SACnB,QAAQ,EAAE;SACV,QAAQ,CAAC,uDAAuD,CAAC;CACrE,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IACxC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,SAAS,EAAE,CAAC;SACT,MAAM,EAAE;SACR,QAAQ,CACP,mFAAmF,CACpF;IACH,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;CACpB,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,CAAC,MAAM,CAAC;IACjC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;IACrB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;IACrB,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;IACxC,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,iBAAiB,CAAC;CACrC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5C,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC;IAC1B,SAAS,EAAE,CAAC,CAAC,OAAO,EAAE;IACtB,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACrC,CAAC,CAAC;AAMH,MAAM,CAAC,MAAM,oBAAoB,GAAG,qBAAqB,CAAC,KAAK,CAAC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
export const getNextServiceInputShape = {
|
|
3
|
+
stop_code: z
|
|
4
|
+
.string()
|
|
5
|
+
.min(1)
|
|
6
|
+
.describe("GO stop code, e.g. 'UN' (Union Station). Obtain via search_stops — do not guess."),
|
|
7
|
+
};
|
|
8
|
+
export const departureSchema = z.object({
|
|
9
|
+
line_code: z.string(),
|
|
10
|
+
line_name: z.string(),
|
|
11
|
+
direction: z.string(),
|
|
12
|
+
mode: z.enum(["train", "bus"]),
|
|
13
|
+
scheduled_time: z.string(),
|
|
14
|
+
expected_time: z.string(),
|
|
15
|
+
delay_minutes: z.number(),
|
|
16
|
+
status: z.string(),
|
|
17
|
+
platform: z.object({
|
|
18
|
+
scheduled: z.string().optional(),
|
|
19
|
+
actual: z.string().optional(),
|
|
20
|
+
}),
|
|
21
|
+
trip_number: z.string(),
|
|
22
|
+
});
|
|
23
|
+
export const nextServiceOutputSchema = z.object({
|
|
24
|
+
departures: z.array(departureSchema),
|
|
25
|
+
truncated: z.boolean(),
|
|
26
|
+
total_matched: z.number().optional(),
|
|
27
|
+
});
|
|
28
|
+
export const nextServiceOutputShape = nextServiceOutputSchema.shape;
|
|
29
|
+
//# sourceMappingURL=next-service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"next-service.js","sourceRoot":"","sources":["../../src/schemas/next-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,wBAAwB,GAAG;IACtC,SAAS,EAAE,CAAC;SACT,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,CACP,kFAAkF,CACnF;CACJ,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC;IACtC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;IACrB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;IACrB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;IACrB,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAC9B,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE;IAC1B,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE;IACzB,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE;IACzB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;IAClB,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC;QACjB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAChC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;KAC9B,CAAC;IACF,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE;CACxB,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC9C,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,eAAe,CAAC;IACpC,SAAS,EAAE,CAAC,CAAC,OAAO,EAAE;IACtB,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACrC,CAAC,CAAC;AAKH,MAAM,CAAC,MAAM,sBAAsB,GAAG,uBAAuB,CAAC,KAAK,CAAC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
export const searchStopsInputShape = {
|
|
3
|
+
query: z
|
|
4
|
+
.string()
|
|
5
|
+
.min(1)
|
|
6
|
+
.describe("Stop or station name fragment to search for, e.g. 'union' or 'oakville'."),
|
|
7
|
+
stop_type: z
|
|
8
|
+
.enum(["train", "bus", "any"])
|
|
9
|
+
.optional()
|
|
10
|
+
.describe("Filter by service type; defaults to any."),
|
|
11
|
+
limit: z
|
|
12
|
+
.number()
|
|
13
|
+
.int()
|
|
14
|
+
.min(1)
|
|
15
|
+
.max(25)
|
|
16
|
+
.optional()
|
|
17
|
+
.describe("Maximum results to return; defaults to 10, max 25."),
|
|
18
|
+
};
|
|
19
|
+
export const stopMatchSchema = z.object({
|
|
20
|
+
stop_code: z
|
|
21
|
+
.string()
|
|
22
|
+
.describe("Unified GO stop code — pass this to get_stop_details / get_next_service, do not guess."),
|
|
23
|
+
stop_name: z.string(),
|
|
24
|
+
stop_type: z.enum(["train", "bus", "both"]),
|
|
25
|
+
city: z.string().optional(),
|
|
26
|
+
});
|
|
27
|
+
export const searchStopsOutputSchema = z.object({
|
|
28
|
+
matches: z.array(stopMatchSchema),
|
|
29
|
+
truncated: z
|
|
30
|
+
.boolean()
|
|
31
|
+
.describe("True when more stops matched than fit under limit — narrow the query, don't request more."),
|
|
32
|
+
total_matched: z.number().optional(),
|
|
33
|
+
});
|
|
34
|
+
export const searchStopsOutputShape = searchStopsOutputSchema.shape;
|
|
35
|
+
//# sourceMappingURL=search-stops.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search-stops.js","sourceRoot":"","sources":["../../src/schemas/search-stops.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,KAAK,EAAE,CAAC;SACL,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,CACP,0EAA0E,CAC3E;IACH,SAAS,EAAE,CAAC;SACT,IAAI,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;SAC7B,QAAQ,EAAE;SACV,QAAQ,CAAC,0CAA0C,CAAC;IACvD,KAAK,EAAE,CAAC;SACL,MAAM,EAAE;SACR,GAAG,EAAE;SACL,GAAG,CAAC,CAAC,CAAC;SACN,GAAG,CAAC,EAAE,CAAC;SACP,QAAQ,EAAE;SACV,QAAQ,CAAC,oDAAoD,CAAC;CAClE,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC;IACtC,SAAS,EAAE,CAAC;SACT,MAAM,EAAE;SACR,QAAQ,CACP,wFAAwF,CACzF;IACH,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;IACrB,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IAC3C,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAC5B,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC9C,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,eAAe,CAAC;IACjC,SAAS,EAAE,CAAC;SACT,OAAO,EAAE;SACT,QAAQ,CACP,2FAA2F,CAC5F;IACH,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACrC,CAAC,CAAC;AAKH,MAAM,CAAC,MAAM,sBAAsB,GAAG,uBAAuB,CAAC,KAAK,CAAC"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
export const getServiceAlertsInputShape = {
|
|
3
|
+
line: z
|
|
4
|
+
.string()
|
|
5
|
+
.min(1)
|
|
6
|
+
.optional()
|
|
7
|
+
.describe("Filter to alerts affecting this line code. Valid values from list_lines."),
|
|
8
|
+
stop: z
|
|
9
|
+
.string()
|
|
10
|
+
.min(1)
|
|
11
|
+
.optional()
|
|
12
|
+
.describe("Filter to alerts affecting this stop code. Obtain via search_stops — do not guess."),
|
|
13
|
+
category: z
|
|
14
|
+
.enum(["service", "information", "marketing"])
|
|
15
|
+
.optional()
|
|
16
|
+
.describe("Filter to one alert category. Defaults to service + information combined; marketing is opt-in only."),
|
|
17
|
+
lang: z
|
|
18
|
+
.enum(["en", "fr"])
|
|
19
|
+
.optional()
|
|
20
|
+
.describe("Response language; defaults to English."),
|
|
21
|
+
limit: z
|
|
22
|
+
.number()
|
|
23
|
+
.int()
|
|
24
|
+
.min(1)
|
|
25
|
+
.max(50)
|
|
26
|
+
.optional()
|
|
27
|
+
.describe("Maximum alerts to return; defaults to 20, max 50."),
|
|
28
|
+
};
|
|
29
|
+
export const alertStopSchema = z.object({
|
|
30
|
+
stop_code: z.string(),
|
|
31
|
+
stop_name: z.string(),
|
|
32
|
+
});
|
|
33
|
+
export const alertAffectedSchema = z.object({
|
|
34
|
+
lines: z.array(z.string()),
|
|
35
|
+
stops: z.array(alertStopSchema),
|
|
36
|
+
trips: z.array(z.string()),
|
|
37
|
+
});
|
|
38
|
+
export const alertSchema = z.object({
|
|
39
|
+
id: z.string(),
|
|
40
|
+
category: z.enum(["service", "information", "marketing"]),
|
|
41
|
+
status: z.enum(["new", "updated", "corrected", "final"]),
|
|
42
|
+
posted_at: z.string(),
|
|
43
|
+
subject: z.string(),
|
|
44
|
+
body: z.string(),
|
|
45
|
+
affected: alertAffectedSchema,
|
|
46
|
+
});
|
|
47
|
+
export const serviceAlertsOutputSchema = z.object({
|
|
48
|
+
alerts: z.array(alertSchema),
|
|
49
|
+
truncated: z
|
|
50
|
+
.boolean()
|
|
51
|
+
.describe("True when more alerts matched than fit under limit — narrow the filter, don't request more."),
|
|
52
|
+
total_matched: z.number().optional(),
|
|
53
|
+
});
|
|
54
|
+
export const serviceAlertsOutputShape = serviceAlertsOutputSchema.shape;
|
|
55
|
+
//# sourceMappingURL=service-alerts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"service-alerts.js","sourceRoot":"","sources":["../../src/schemas/service-alerts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,0BAA0B,GAAG;IACxC,IAAI,EAAE,CAAC;SACJ,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,EAAE;SACV,QAAQ,CACP,0EAA0E,CAC3E;IACH,IAAI,EAAE,CAAC;SACJ,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,EAAE;SACV,QAAQ,CACP,oFAAoF,CACrF;IACH,QAAQ,EAAE,CAAC;SACR,IAAI,CAAC,CAAC,SAAS,EAAE,aAAa,EAAE,WAAW,CAAC,CAAC;SAC7C,QAAQ,EAAE;SACV,QAAQ,CACP,qGAAqG,CACtG;IACH,IAAI,EAAE,CAAC;SACJ,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;SAClB,QAAQ,EAAE;SACV,QAAQ,CAAC,yCAAyC,CAAC;IACtD,KAAK,EAAE,CAAC;SACL,MAAM,EAAE;SACR,GAAG,EAAE;SACL,GAAG,CAAC,CAAC,CAAC;SACN,GAAG,CAAC,EAAE,CAAC;SACP,QAAQ,EAAE;SACV,QAAQ,CAAC,mDAAmD,CAAC;CACjE,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC;IACtC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;IACrB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;CACtB,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1C,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAC1B,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,eAAe,CAAC;IAC/B,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;CAC3B,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC;IAClC,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;IACd,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,aAAa,EAAE,WAAW,CAAC,CAAC;IACzD,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;IACxD,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;IACrB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,QAAQ,EAAE,mBAAmB;CAC9B,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,CAAC,MAAM,CAAC;IAChD,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC;IAC5B,SAAS,EAAE,CAAC;SACT,OAAO,EAAE;SACT,QAAQ,CACP,6FAA6F,CAC9F;IACH,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACrC,CAAC,CAAC;AAKH,MAAM,CAAC,MAAM,wBAAwB,GAAG,yBAAyB,CAAC,KAAK,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
export const getServiceExceptionsInputShape = {
|
|
3
|
+
mode: z
|
|
4
|
+
.enum(["train", "bus", "any"])
|
|
5
|
+
.optional()
|
|
6
|
+
.describe("Filter by service type; defaults to any."),
|
|
7
|
+
};
|
|
8
|
+
export const affectedStopSchema = z.object({
|
|
9
|
+
stop_code: z.string(),
|
|
10
|
+
stop_name: z.string(),
|
|
11
|
+
scheduled_time: z.string(),
|
|
12
|
+
cancelled: z.boolean(),
|
|
13
|
+
actual_time: z.string().optional(),
|
|
14
|
+
});
|
|
15
|
+
export const exceptionSchema = z.object({
|
|
16
|
+
trip_number: z.string(),
|
|
17
|
+
trip_name: z.string(),
|
|
18
|
+
cancelled: z.boolean(),
|
|
19
|
+
affected_stops: z.array(affectedStopSchema),
|
|
20
|
+
});
|
|
21
|
+
export const serviceExceptionsOutputSchema = z.object({
|
|
22
|
+
exceptions: z.array(exceptionSchema),
|
|
23
|
+
truncated: z.boolean(),
|
|
24
|
+
total_matched: z.number().optional(),
|
|
25
|
+
});
|
|
26
|
+
export const serviceExceptionsOutputShape = serviceExceptionsOutputSchema.shape;
|
|
27
|
+
//# sourceMappingURL=service-exceptions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"service-exceptions.js","sourceRoot":"","sources":["../../src/schemas/service-exceptions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,8BAA8B,GAAG;IAC5C,IAAI,EAAE,CAAC;SACJ,IAAI,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;SAC7B,QAAQ,EAAE;SACV,QAAQ,CAAC,0CAA0C,CAAC;CACxD,CAAC;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;IACrB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;IACrB,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE;IAC1B,SAAS,EAAE,CAAC,CAAC,OAAO,EAAE;IACtB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACnC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC;IACtC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE;IACvB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;IACrB,SAAS,EAAE,CAAC,CAAC,OAAO,EAAE;IACtB,cAAc,EAAE,CAAC,CAAC,KAAK,CAAC,kBAAkB,CAAC;CAC5C,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAAC,CAAC,MAAM,CAAC;IACpD,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,eAAe,CAAC;IACpC,SAAS,EAAE,CAAC,CAAC,OAAO,EAAE;IACtB,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACrC,CAAC,CAAC;AAQH,MAAM,CAAC,MAAM,4BAA4B,GAAG,6BAA6B,CAAC,KAAK,CAAC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
const YYYYMMDD_PATTERN = /^\d{4}-\d{2}-\d{2}$/;
|
|
3
|
+
export const getServiceGuaranteeInputShape = {
|
|
4
|
+
trip_number: z
|
|
5
|
+
.string()
|
|
6
|
+
.min(1)
|
|
7
|
+
.describe("GO trip number, e.g. '1004'. Obtain via get_line_schedule — do not guess."),
|
|
8
|
+
date: z
|
|
9
|
+
.string()
|
|
10
|
+
.regex(YYYYMMDD_PATTERN)
|
|
11
|
+
.describe("Operational day, YYYY-MM-DD — the day the trip departed its first " +
|
|
12
|
+
"stop, not necessarily the calendar date of the stop you're " +
|
|
13
|
+
"checking. Trips that run past midnight keep their origin day " +
|
|
14
|
+
"even though later stops show the next calendar date (confirmed " +
|
|
15
|
+
"live). Get this from get_line_schedule's departs_first_stop or " +
|
|
16
|
+
"get_trip_status, not by reading a later stop's timestamp."),
|
|
17
|
+
lang: z
|
|
18
|
+
.enum(["en", "fr"])
|
|
19
|
+
.optional()
|
|
20
|
+
.describe("Response language; defaults to English."),
|
|
21
|
+
};
|
|
22
|
+
export const guaranteeStopSchema = z.object({
|
|
23
|
+
stop_code: z.string(),
|
|
24
|
+
scope: z.string(),
|
|
25
|
+
reason: z.string(),
|
|
26
|
+
});
|
|
27
|
+
export const serviceGuaranteeOutputSchema = z.object({
|
|
28
|
+
eligible: z.boolean(),
|
|
29
|
+
stops: z.array(guaranteeStopSchema),
|
|
30
|
+
});
|
|
31
|
+
export const serviceGuaranteeOutputShape = serviceGuaranteeOutputSchema.shape;
|
|
32
|
+
//# sourceMappingURL=service-guarantee.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"service-guarantee.js","sourceRoot":"","sources":["../../src/schemas/service-guarantee.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,gBAAgB,GAAG,qBAAqB,CAAC;AAE/C,MAAM,CAAC,MAAM,6BAA6B,GAAG;IAC3C,WAAW,EAAE,CAAC;SACX,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,CACP,2EAA2E,CAC5E;IACH,IAAI,EAAE,CAAC;SACJ,MAAM,EAAE;SACR,KAAK,CAAC,gBAAgB,CAAC;SACvB,QAAQ,CACP,oEAAoE;QAClE,6DAA6D;QAC7D,+DAA+D;QAC/D,iEAAiE;QACjE,iEAAiE;QACjE,2DAA2D,CAC9D;IACH,IAAI,EAAE,CAAC;SACJ,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;SAClB,QAAQ,EAAE;SACV,QAAQ,CAAC,yCAAyC,CAAC;CACvD,CAAC;AAEF,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1C,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;IACrB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IACjB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;CACnB,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAAC,CAAC,MAAM,CAAC;IACnD,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE;IACrB,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,mBAAmB,CAAC;CACpC,CAAC,CAAC;AAOH,MAAM,CAAC,MAAM,2BAA2B,GAAG,4BAA4B,CAAC,KAAK,CAAC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
const HHMM_PATTERN = /^([01]\d|2[0-3]):[0-5]\d$/;
|
|
3
|
+
export const getStopDestinationsInputShape = {
|
|
4
|
+
stop_code: z
|
|
5
|
+
.string()
|
|
6
|
+
.min(1)
|
|
7
|
+
.describe("GO stop code, e.g. 'UN' (Union Station). Obtain via search_stops — do not guess."),
|
|
8
|
+
from_time: z
|
|
9
|
+
.string()
|
|
10
|
+
.regex(HHMM_PATTERN)
|
|
11
|
+
.optional()
|
|
12
|
+
.describe("Window start, HH:MM 24h. Defaults to now (Toronto)."),
|
|
13
|
+
to_time: z
|
|
14
|
+
.string()
|
|
15
|
+
.regex(HHMM_PATTERN)
|
|
16
|
+
.optional()
|
|
17
|
+
.describe("Window end, HH:MM 24h. Defaults to 4 hours after from_time."),
|
|
18
|
+
};
|
|
19
|
+
export const destinationSchema = z.object({
|
|
20
|
+
line_code: z.string(),
|
|
21
|
+
line_name: z.string(),
|
|
22
|
+
direction: z.string(),
|
|
23
|
+
destination_stop_code: z.string(),
|
|
24
|
+
destination_stop_name: z.string(),
|
|
25
|
+
});
|
|
26
|
+
export const stopDestinationsOutputSchema = z.object({
|
|
27
|
+
destinations: z.array(destinationSchema),
|
|
28
|
+
truncated: z.boolean(),
|
|
29
|
+
total_matched: z.number().optional(),
|
|
30
|
+
});
|
|
31
|
+
export const stopDestinationsOutputShape = stopDestinationsOutputSchema.shape;
|
|
32
|
+
//# sourceMappingURL=stop-destinations.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stop-destinations.js","sourceRoot":"","sources":["../../src/schemas/stop-destinations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,YAAY,GAAG,2BAA2B,CAAC;AAEjD,MAAM,CAAC,MAAM,6BAA6B,GAAG;IAC3C,SAAS,EAAE,CAAC;SACT,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,CACP,kFAAkF,CACnF;IACH,SAAS,EAAE,CAAC;SACT,MAAM,EAAE;SACR,KAAK,CAAC,YAAY,CAAC;SACnB,QAAQ,EAAE;SACV,QAAQ,CAAC,qDAAqD,CAAC;IAClE,OAAO,EAAE,CAAC;SACP,MAAM,EAAE;SACR,KAAK,CAAC,YAAY,CAAC;SACnB,QAAQ,EAAE;SACV,QAAQ,CAAC,6DAA6D,CAAC;CAC3E,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IACxC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;IACrB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;IACrB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;IACrB,qBAAqB,EAAE,CAAC,CAAC,MAAM,EAAE;IACjC,qBAAqB,EAAE,CAAC,CAAC,MAAM,EAAE;CAClC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAAC,CAAC,MAAM,CAAC;IACnD,YAAY,EAAE,CAAC,CAAC,KAAK,CAAC,iBAAiB,CAAC;IACxC,SAAS,EAAE,CAAC,CAAC,OAAO,EAAE;IACtB,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACrC,CAAC,CAAC;AAOH,MAAM,CAAC,MAAM,2BAA2B,GAAG,4BAA4B,CAAC,KAAK,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
// Zod is the single source for inputSchema AND outputSchema (tool-schemas
|
|
3
|
+
// spec §1.2); resources reuse these same schemas when they land.
|
|
4
|
+
export const getStopDetailsInputShape = {
|
|
5
|
+
stop_code: z
|
|
6
|
+
.string()
|
|
7
|
+
.min(1)
|
|
8
|
+
.describe("GO stop code, e.g. 'UN' (Union Station). Obtain via search_stops — do not guess."),
|
|
9
|
+
lang: z
|
|
10
|
+
.enum(["en", "fr"])
|
|
11
|
+
.optional()
|
|
12
|
+
.describe("Response language; defaults to English."),
|
|
13
|
+
};
|
|
14
|
+
export const stopDetailsSchema = z.object({
|
|
15
|
+
stop_code: z.string(),
|
|
16
|
+
stop_name: z.string(),
|
|
17
|
+
city: z.string(),
|
|
18
|
+
coordinates: z.object({ lat: z.number(), lon: z.number() }),
|
|
19
|
+
served_by: z.object({ train: z.boolean(), bus: z.boolean() }),
|
|
20
|
+
facilities: z.array(z.string()),
|
|
21
|
+
parking: z.array(z.object({ name: z.string(), spaces: z.number(), type: z.string() })),
|
|
22
|
+
accessibility_info: z.string().optional(),
|
|
23
|
+
boarding_info: z.string().optional(),
|
|
24
|
+
driving_directions: z.string().optional(),
|
|
25
|
+
});
|
|
26
|
+
export const stopDetailsOutputShape = stopDetailsSchema.shape;
|
|
27
|
+
//# sourceMappingURL=stop-details.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stop-details.js","sourceRoot":"","sources":["../../src/schemas/stop-details.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,0EAA0E;AAC1E,iEAAiE;AAEjE,MAAM,CAAC,MAAM,wBAAwB,GAAG;IACtC,SAAS,EAAE,CAAC;SACT,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,CACP,kFAAkF,CACnF;IACH,IAAI,EAAE,CAAC;SACJ,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;SAClB,QAAQ,EAAE;SACV,QAAQ,CAAC,yCAAyC,CAAC;CACvD,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IACxC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;IACrB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;IACrB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC;IAC3D,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC;IAC7D,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAC/B,OAAO,EAAE,CAAC,CAAC,KAAK,CACd,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CACrE;IACD,kBAAkB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACzC,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACpC,kBAAkB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAC1C,CAAC,CAAC;AAIH,MAAM,CAAC,MAAM,sBAAsB,GAAG,iBAAiB,CAAC,KAAK,CAAC"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { DATE_PATTERN } from "./list-lines.js";
|
|
3
|
+
export const getTripStatusInputShape = {
|
|
4
|
+
trip_number: z
|
|
5
|
+
.string()
|
|
6
|
+
.min(1)
|
|
7
|
+
.describe("GO trip number, e.g. '1004'. Obtain via get_next_service, " +
|
|
8
|
+
"get_union_departures, or list_lines + get_line_schedule."),
|
|
9
|
+
date: z
|
|
10
|
+
.string()
|
|
11
|
+
.regex(DATE_PATTERN)
|
|
12
|
+
.optional()
|
|
13
|
+
.describe("Operational day, YYYY-MM-DD — the day the trip departed its first " +
|
|
14
|
+
"stop. Trips that run past midnight keep their origin day even " +
|
|
15
|
+
"though later stops show the next calendar date (confirmed live). " +
|
|
16
|
+
"Defaults to today (Toronto)."),
|
|
17
|
+
};
|
|
18
|
+
export const tripStatusStopSchema = z.object({
|
|
19
|
+
stop_code: z.string(),
|
|
20
|
+
stop_name: z.string(),
|
|
21
|
+
scheduled_arrival: z.string().optional(),
|
|
22
|
+
expected_arrival: z.string().optional(),
|
|
23
|
+
scheduled_departure: z.string().optional(),
|
|
24
|
+
expected_departure: z.string().optional(),
|
|
25
|
+
track: z.object({
|
|
26
|
+
scheduled: z.string().optional(),
|
|
27
|
+
actual: z.string().optional(),
|
|
28
|
+
}),
|
|
29
|
+
status: z.string(),
|
|
30
|
+
});
|
|
31
|
+
export const tripStatusOutputSchema = z.object({
|
|
32
|
+
trip_number: z.string(),
|
|
33
|
+
destination: z.string(),
|
|
34
|
+
status: z.string(),
|
|
35
|
+
position: z.object({ lat: z.number(), lon: z.number() }).optional(),
|
|
36
|
+
stops: z.array(tripStatusStopSchema),
|
|
37
|
+
});
|
|
38
|
+
export const tripStatusOutputShape = tripStatusOutputSchema.shape;
|
|
39
|
+
//# sourceMappingURL=trip-status.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trip-status.js","sourceRoot":"","sources":["../../src/schemas/trip-status.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,MAAM,CAAC,MAAM,uBAAuB,GAAG;IACrC,WAAW,EAAE,CAAC;SACX,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,CACP,4DAA4D;QAC1D,0DAA0D,CAC7D;IACH,IAAI,EAAE,CAAC;SACJ,MAAM,EAAE;SACR,KAAK,CAAC,YAAY,CAAC;SACnB,QAAQ,EAAE;SACV,QAAQ,CACP,oEAAoE;QAClE,gEAAgE;QAChE,mEAAmE;QACnE,8BAA8B,CACjC;CACJ,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3C,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;IACrB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;IACrB,iBAAiB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACxC,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACvC,mBAAmB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC1C,kBAAkB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACzC,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;QACd,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAChC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;KAC9B,CAAC;IACF,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;CACnB,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC7C,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE;IACvB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE;IACvB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;IAClB,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,QAAQ,EAAE;IACnE,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,oBAAoB,CAAC;CACrC,CAAC,CAAC;AAKH,MAAM,CAAC,MAAM,qBAAqB,GAAG,sBAAsB,CAAC,KAAK,CAAC"}
|