@mapbox/mcp-server 0.14.0 → 0.15.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +11 -0
- package/dist/commonjs/index.js +38 -1
- package/dist/commonjs/index.js.map +1 -1
- package/dist/commonjs/resources/BaseResource.d.ts +18 -0
- package/dist/commonjs/resources/BaseResource.d.ts.map +1 -1
- package/dist/commonjs/resources/BaseResource.js +26 -4
- package/dist/commonjs/resources/BaseResource.js.map +1 -1
- package/dist/commonjs/resources/temporary/TemporaryDataResource.d.ts.map +1 -1
- package/dist/commonjs/resources/temporary/TemporaryDataResource.js +20 -10
- package/dist/commonjs/resources/temporary/TemporaryDataResource.js.map +1 -1
- package/dist/commonjs/resources/ui-apps/MapAppUIResource.d.ts.map +1 -1
- package/dist/commonjs/resources/ui-apps/MapAppUIResource.js +2 -8
- package/dist/commonjs/resources/ui-apps/MapAppUIResource.js.map +1 -1
- package/dist/commonjs/resources/ui-apps/mapAppCsp.d.ts +22 -0
- package/dist/commonjs/resources/ui-apps/mapAppCsp.d.ts.map +1 -0
- package/dist/commonjs/resources/ui-apps/mapAppCsp.js +39 -0
- package/dist/commonjs/resources/ui-apps/mapAppCsp.js.map +1 -0
- package/dist/commonjs/resources/ui-apps/mapAppHtml.d.ts.map +1 -1
- package/dist/commonjs/resources/ui-apps/mapAppHtml.js +71 -9
- package/dist/commonjs/resources/ui-apps/mapAppHtml.js.map +1 -1
- package/dist/commonjs/tools/BaseTool.d.ts +19 -0
- package/dist/commonjs/tools/BaseTool.d.ts.map +1 -1
- package/dist/commonjs/tools/BaseTool.js +25 -3
- package/dist/commonjs/tools/BaseTool.js.map +1 -1
- package/dist/commonjs/tools/directions-tool/DirectionsTool.d.ts.map +1 -1
- package/dist/commonjs/tools/directions-tool/DirectionsTool.js +4 -3
- package/dist/commonjs/tools/directions-tool/DirectionsTool.js.map +1 -1
- package/dist/commonjs/tools/ground-location-tool/GroundLocationTool.d.ts.map +1 -1
- package/dist/commonjs/tools/ground-location-tool/GroundLocationTool.js +7 -4
- package/dist/commonjs/tools/ground-location-tool/GroundLocationTool.js.map +1 -1
- package/dist/commonjs/tools/ground-location-tool/GroundLocationTool.output.schema.d.ts +4 -0
- package/dist/commonjs/tools/ground-location-tool/GroundLocationTool.output.schema.d.ts.map +1 -1
- package/dist/commonjs/tools/ground-location-tool/GroundLocationTool.output.schema.js +9 -1
- package/dist/commonjs/tools/ground-location-tool/GroundLocationTool.output.schema.js.map +1 -1
- package/dist/commonjs/tools/isochrone-tool/IsochroneTool.js +1 -1
- package/dist/commonjs/tools/place-details-tool/PlaceDetailsTool.d.ts +11 -1
- package/dist/commonjs/tools/place-details-tool/PlaceDetailsTool.d.ts.map +1 -1
- package/dist/commonjs/tools/place-details-tool/PlaceDetailsTool.input.schema.js +3 -3
- package/dist/commonjs/tools/place-details-tool/PlaceDetailsTool.input.schema.js.map +1 -1
- package/dist/commonjs/tools/place-details-tool/PlaceDetailsTool.js +132 -141
- package/dist/commonjs/tools/place-details-tool/PlaceDetailsTool.js.map +1 -1
- package/dist/commonjs/tools/place-details-tool/PlaceDetailsTool.output.schema.d.ts +71 -10
- package/dist/commonjs/tools/place-details-tool/PlaceDetailsTool.output.schema.d.ts.map +1 -1
- package/dist/commonjs/tools/place-details-tool/PlaceDetailsTool.output.schema.js +86 -10
- package/dist/commonjs/tools/place-details-tool/PlaceDetailsTool.output.schema.js.map +1 -1
- package/dist/commonjs/tools/render-map-tool/RenderMapTool.d.ts +2 -4
- package/dist/commonjs/tools/render-map-tool/RenderMapTool.d.ts.map +1 -1
- package/dist/commonjs/tools/render-map-tool/RenderMapTool.input.schema.d.ts +50 -0
- package/dist/commonjs/tools/render-map-tool/RenderMapTool.input.schema.d.ts.map +1 -1
- package/dist/commonjs/tools/render-map-tool/RenderMapTool.input.schema.js +51 -2
- package/dist/commonjs/tools/render-map-tool/RenderMapTool.input.schema.js.map +1 -1
- package/dist/commonjs/tools/render-map-tool/RenderMapTool.js +50 -18
- package/dist/commonjs/tools/render-map-tool/RenderMapTool.js.map +1 -1
- package/dist/commonjs/tools/render-map-tool/RenderMapTool.output.schema.d.ts +50 -0
- package/dist/commonjs/tools/render-map-tool/RenderMapTool.output.schema.d.ts.map +1 -1
- package/dist/commonjs/tools/search-and-geocode-tool/SearchAndGeocodeTool.d.ts.map +1 -1
- package/dist/commonjs/tools/search-and-geocode-tool/SearchAndGeocodeTool.input.schema.d.ts.map +1 -1
- package/dist/commonjs/tools/search-and-geocode-tool/SearchAndGeocodeTool.input.schema.js +2 -2
- package/dist/commonjs/tools/search-and-geocode-tool/SearchAndGeocodeTool.input.schema.js.map +1 -1
- package/dist/commonjs/tools/search-and-geocode-tool/SearchAndGeocodeTool.js +4 -3
- package/dist/commonjs/tools/search-and-geocode-tool/SearchAndGeocodeTool.js.map +1 -1
- package/dist/commonjs/tools/static-map-image-tool/StaticMapImageTool.d.ts.map +1 -1
- package/dist/commonjs/tools/static-map-image-tool/StaticMapImageTool.js +2 -2
- package/dist/commonjs/tools/static-map-image-tool/StaticMapImageTool.js.map +1 -1
- package/dist/commonjs/utils/index.d.ts +2 -0
- package/dist/commonjs/utils/index.d.ts.map +1 -1
- package/dist/commonjs/utils/index.js +10 -1
- package/dist/commonjs/utils/index.js.map +1 -1
- package/dist/commonjs/utils/jsonSchema2020.d.ts +26 -0
- package/dist/commonjs/utils/jsonSchema2020.d.ts.map +1 -0
- package/dist/commonjs/utils/jsonSchema2020.js +143 -0
- package/dist/commonjs/utils/jsonSchema2020.js.map +1 -0
- package/dist/commonjs/utils/jwtUtils.d.ts +48 -0
- package/dist/commonjs/utils/jwtUtils.d.ts.map +1 -1
- package/dist/commonjs/utils/jwtUtils.js +63 -0
- package/dist/commonjs/utils/jwtUtils.js.map +1 -1
- package/dist/commonjs/utils/mapAppPayload.d.ts +109 -0
- package/dist/commonjs/utils/mapAppPayload.d.ts.map +1 -1
- package/dist/commonjs/utils/mapAppPayload.js +38 -2
- package/dist/commonjs/utils/mapAppPayload.js.map +1 -1
- package/dist/commonjs/utils/selfFetchRef.d.ts.map +1 -1
- package/dist/commonjs/utils/selfFetchRef.js +31 -0
- package/dist/commonjs/utils/selfFetchRef.js.map +1 -1
- package/dist/commonjs/utils/serverInstructions.d.ts +12 -0
- package/dist/commonjs/utils/serverInstructions.d.ts.map +1 -0
- package/dist/commonjs/utils/serverInstructions.js +28 -0
- package/dist/commonjs/utils/serverInstructions.js.map +1 -0
- package/dist/commonjs/utils/storeMapPayload.d.ts +11 -11
- package/dist/commonjs/utils/storeMapPayload.d.ts.map +1 -1
- package/dist/commonjs/utils/storeMapPayload.js +14 -13
- package/dist/commonjs/utils/storeMapPayload.js.map +1 -1
- package/dist/commonjs/utils/temporaryResourceManager.d.ts +10 -4
- package/dist/commonjs/utils/temporaryResourceManager.d.ts.map +1 -1
- package/dist/commonjs/utils/temporaryResourceManager.js.map +1 -1
- package/dist/commonjs/utils/tracing.d.ts +4 -0
- package/dist/commonjs/utils/tracing.d.ts.map +1 -1
- package/dist/commonjs/utils/tracing.js +20 -0
- package/dist/commonjs/utils/tracing.js.map +1 -1
- package/dist/commonjs/version.json +3 -3
- package/dist/esm/index.js +39 -2
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/resources/BaseResource.d.ts +18 -0
- package/dist/esm/resources/BaseResource.d.ts.map +1 -1
- package/dist/esm/resources/BaseResource.js +26 -4
- package/dist/esm/resources/BaseResource.js.map +1 -1
- package/dist/esm/resources/temporary/TemporaryDataResource.d.ts.map +1 -1
- package/dist/esm/resources/temporary/TemporaryDataResource.js +21 -11
- package/dist/esm/resources/temporary/TemporaryDataResource.js.map +1 -1
- package/dist/esm/resources/ui-apps/MapAppUIResource.d.ts.map +1 -1
- package/dist/esm/resources/ui-apps/MapAppUIResource.js +2 -8
- package/dist/esm/resources/ui-apps/MapAppUIResource.js.map +1 -1
- package/dist/esm/resources/ui-apps/mapAppCsp.d.ts +22 -0
- package/dist/esm/resources/ui-apps/mapAppCsp.d.ts.map +1 -0
- package/dist/esm/resources/ui-apps/mapAppCsp.js +36 -0
- package/dist/esm/resources/ui-apps/mapAppCsp.js.map +1 -0
- package/dist/esm/resources/ui-apps/mapAppHtml.d.ts.map +1 -1
- package/dist/esm/resources/ui-apps/mapAppHtml.js +71 -9
- package/dist/esm/resources/ui-apps/mapAppHtml.js.map +1 -1
- package/dist/esm/tools/BaseTool.d.ts +19 -0
- package/dist/esm/tools/BaseTool.d.ts.map +1 -1
- package/dist/esm/tools/BaseTool.js +25 -3
- package/dist/esm/tools/BaseTool.js.map +1 -1
- package/dist/esm/tools/directions-tool/DirectionsTool.d.ts.map +1 -1
- package/dist/esm/tools/directions-tool/DirectionsTool.js +5 -4
- package/dist/esm/tools/directions-tool/DirectionsTool.js.map +1 -1
- package/dist/esm/tools/ground-location-tool/GroundLocationTool.d.ts.map +1 -1
- package/dist/esm/tools/ground-location-tool/GroundLocationTool.js +7 -4
- package/dist/esm/tools/ground-location-tool/GroundLocationTool.js.map +1 -1
- package/dist/esm/tools/ground-location-tool/GroundLocationTool.output.schema.d.ts +4 -0
- package/dist/esm/tools/ground-location-tool/GroundLocationTool.output.schema.d.ts.map +1 -1
- package/dist/esm/tools/ground-location-tool/GroundLocationTool.output.schema.js +9 -1
- package/dist/esm/tools/ground-location-tool/GroundLocationTool.output.schema.js.map +1 -1
- package/dist/esm/tools/isochrone-tool/IsochroneTool.js +2 -2
- package/dist/esm/tools/place-details-tool/PlaceDetailsTool.d.ts +11 -1
- package/dist/esm/tools/place-details-tool/PlaceDetailsTool.d.ts.map +1 -1
- package/dist/esm/tools/place-details-tool/PlaceDetailsTool.input.schema.js +3 -3
- package/dist/esm/tools/place-details-tool/PlaceDetailsTool.input.schema.js.map +1 -1
- package/dist/esm/tools/place-details-tool/PlaceDetailsTool.js +133 -142
- package/dist/esm/tools/place-details-tool/PlaceDetailsTool.js.map +1 -1
- package/dist/esm/tools/place-details-tool/PlaceDetailsTool.output.schema.d.ts +71 -10
- package/dist/esm/tools/place-details-tool/PlaceDetailsTool.output.schema.d.ts.map +1 -1
- package/dist/esm/tools/place-details-tool/PlaceDetailsTool.output.schema.js +85 -9
- package/dist/esm/tools/place-details-tool/PlaceDetailsTool.output.schema.js.map +1 -1
- package/dist/esm/tools/render-map-tool/RenderMapTool.d.ts +2 -4
- package/dist/esm/tools/render-map-tool/RenderMapTool.d.ts.map +1 -1
- package/dist/esm/tools/render-map-tool/RenderMapTool.input.schema.d.ts +50 -0
- package/dist/esm/tools/render-map-tool/RenderMapTool.input.schema.d.ts.map +1 -1
- package/dist/esm/tools/render-map-tool/RenderMapTool.input.schema.js +51 -2
- package/dist/esm/tools/render-map-tool/RenderMapTool.input.schema.js.map +1 -1
- package/dist/esm/tools/render-map-tool/RenderMapTool.js +51 -19
- package/dist/esm/tools/render-map-tool/RenderMapTool.js.map +1 -1
- package/dist/esm/tools/render-map-tool/RenderMapTool.output.schema.d.ts +50 -0
- package/dist/esm/tools/render-map-tool/RenderMapTool.output.schema.d.ts.map +1 -1
- package/dist/esm/tools/search-and-geocode-tool/SearchAndGeocodeTool.d.ts.map +1 -1
- package/dist/esm/tools/search-and-geocode-tool/SearchAndGeocodeTool.input.schema.d.ts.map +1 -1
- package/dist/esm/tools/search-and-geocode-tool/SearchAndGeocodeTool.input.schema.js +2 -2
- package/dist/esm/tools/search-and-geocode-tool/SearchAndGeocodeTool.input.schema.js.map +1 -1
- package/dist/esm/tools/search-and-geocode-tool/SearchAndGeocodeTool.js +4 -3
- package/dist/esm/tools/search-and-geocode-tool/SearchAndGeocodeTool.js.map +1 -1
- package/dist/esm/tools/static-map-image-tool/StaticMapImageTool.d.ts.map +1 -1
- package/dist/esm/tools/static-map-image-tool/StaticMapImageTool.js +3 -3
- package/dist/esm/tools/static-map-image-tool/StaticMapImageTool.js.map +1 -1
- package/dist/esm/utils/index.d.ts +2 -0
- package/dist/esm/utils/index.d.ts.map +1 -1
- package/dist/esm/utils/index.js +6 -0
- package/dist/esm/utils/index.js.map +1 -1
- package/dist/esm/utils/jsonSchema2020.d.ts +26 -0
- package/dist/esm/utils/jsonSchema2020.d.ts.map +1 -0
- package/dist/esm/utils/jsonSchema2020.js +138 -0
- package/dist/esm/utils/jsonSchema2020.js.map +1 -0
- package/dist/esm/utils/jwtUtils.d.ts +48 -0
- package/dist/esm/utils/jwtUtils.d.ts.map +1 -1
- package/dist/esm/utils/jwtUtils.js +61 -0
- package/dist/esm/utils/jwtUtils.js.map +1 -1
- package/dist/esm/utils/mapAppPayload.d.ts +109 -0
- package/dist/esm/utils/mapAppPayload.d.ts.map +1 -1
- package/dist/esm/utils/mapAppPayload.js +38 -2
- package/dist/esm/utils/mapAppPayload.js.map +1 -1
- package/dist/esm/utils/selfFetchRef.d.ts.map +1 -1
- package/dist/esm/utils/selfFetchRef.js +31 -0
- package/dist/esm/utils/selfFetchRef.js.map +1 -1
- package/dist/esm/utils/serverInstructions.d.ts +12 -0
- package/dist/esm/utils/serverInstructions.d.ts.map +1 -0
- package/dist/esm/utils/serverInstructions.js +25 -0
- package/dist/esm/utils/serverInstructions.js.map +1 -0
- package/dist/esm/utils/storeMapPayload.d.ts +11 -11
- package/dist/esm/utils/storeMapPayload.d.ts.map +1 -1
- package/dist/esm/utils/storeMapPayload.js +14 -13
- package/dist/esm/utils/storeMapPayload.js.map +1 -1
- package/dist/esm/utils/temporaryResourceManager.d.ts +10 -4
- package/dist/esm/utils/temporaryResourceManager.d.ts.map +1 -1
- package/dist/esm/utils/temporaryResourceManager.js.map +1 -1
- package/dist/esm/utils/tracing.d.ts +4 -0
- package/dist/esm/utils/tracing.d.ts.map +1 -1
- package/dist/esm/utils/tracing.js +19 -0
- package/dist/esm/utils/tracing.js.map +1 -1
- package/dist/esm/version.json +3 -3
- package/package.json +2 -2
- package/patches/{@modelcontextprotocol+sdk+1.29.0.patch → @modelcontextprotocol+sdk+1.30.0.patch} +6 -2
|
@@ -6,10 +6,24 @@ exports.PlaceDetailsTool = void 0;
|
|
|
6
6
|
const MapboxApiBasedTool_js_1 = require("../MapboxApiBasedTool.js");
|
|
7
7
|
const PlaceDetailsTool_input_schema_js_1 = require("./PlaceDetailsTool.input.schema.js");
|
|
8
8
|
const PlaceDetailsTool_output_schema_js_1 = require("./PlaceDetailsTool.output.schema.js");
|
|
9
|
-
// API Documentation: https://docs.mapbox.com/api/search/
|
|
9
|
+
// API Documentation: https://docs.mapbox.com/api/search/places/
|
|
10
|
+
//
|
|
11
|
+
// This calls the Places API's Details/Retrieve endpoint, not the older,
|
|
12
|
+
// separate Details API (docs.mapbox.com/api/search/details/) this tool used
|
|
13
|
+
// previously. The Places API is Public Preview: its default quota is 1,000
|
|
14
|
+
// records/month per account and 100 records/sec, and its response contract
|
|
15
|
+
// may change without notice.
|
|
16
|
+
//
|
|
17
|
+
// The Places API only covers POIs. It rejects boundary/administrative
|
|
18
|
+
// mapbox_ids (neighborhoods, cities, regions) with a 422
|
|
19
|
+
// "Invalid mapbox_id format" error — confirmed live against the API with a
|
|
20
|
+
// city's mapbox_id from search_and_geocode_tool. Those IDs, and the
|
|
21
|
+
// enhanced Japan data the legacy API alone provides, still need the legacy
|
|
22
|
+
// Details API, so this tool falls back to it on that specific error rather
|
|
23
|
+
// than losing that capability outright.
|
|
10
24
|
class PlaceDetailsTool extends MapboxApiBasedTool_js_1.MapboxApiBasedTool {
|
|
11
25
|
name = 'place_details_tool';
|
|
12
|
-
description = 'Retrieve detailed information about a specific place using its Mapbox ID. Use after search_and_geocode_tool, category_search_tool, or reverse_geocode_tool to get additional details such as photos, opening hours,
|
|
26
|
+
description = 'Retrieve detailed information about a specific place using its Mapbox ID. Use after search_and_geocode_tool, category_search_tool, or reverse_geocode_tool to get additional details such as photos, opening hours, phone numbers, and website URLs. Requires the mapbox_id field from a previous search result. Primarily covers points of interest (businesses, addresses, buildings); mapbox_ids for neighborhoods, cities, or other administrative boundaries are also supported but return more limited data (name, address, coordinates — no photos, hours, or contact info). The primary POI lookup is Public Preview with a default quota of 1,000 requests/month; contact Mapbox if you need a higher volume.';
|
|
13
27
|
annotations = {
|
|
14
28
|
title: 'Place Details Tool',
|
|
15
29
|
readOnlyHint: true,
|
|
@@ -24,145 +38,114 @@ class PlaceDetailsTool extends MapboxApiBasedTool_js_1.MapboxApiBasedTool {
|
|
|
24
38
|
httpRequest: params.httpRequest
|
|
25
39
|
});
|
|
26
40
|
}
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
'
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
'Friday',
|
|
35
|
-
'Saturday'
|
|
36
|
-
];
|
|
37
|
-
// Use weekday_text if the API provides it — already formatted per day
|
|
38
|
-
if (Array.isArray(openHours['weekday_text'])) {
|
|
39
|
-
const lines = openHours['weekday_text']
|
|
40
|
-
.map((line) => ` ${line}`)
|
|
41
|
-
.join('\n');
|
|
42
|
-
return `Hours:\n${lines}`;
|
|
43
|
-
}
|
|
44
|
-
// Fall back to parsing periods array
|
|
45
|
-
if (!Array.isArray(openHours['periods']))
|
|
41
|
+
/** `opening_hours` is an OSM opening_hours string, e.g. "Mo 09:00-23:45; Tu 09:00-23:45; ...". */
|
|
42
|
+
formatOpeningHours(openingHours) {
|
|
43
|
+
const parts = openingHours
|
|
44
|
+
.split(';')
|
|
45
|
+
.map((part) => part.trim())
|
|
46
|
+
.filter(Boolean);
|
|
47
|
+
if (parts.length === 0)
|
|
46
48
|
return '';
|
|
47
|
-
const
|
|
48
|
-
|
|
49
|
-
const m = hhmm.slice(2);
|
|
50
|
-
const period = h < 12 ? 'AM' : 'PM';
|
|
51
|
-
const hour = h % 12 || 12;
|
|
52
|
-
return m === '00' ? `${hour} ${period}` : `${hour}:${m} ${period}`;
|
|
53
|
-
};
|
|
54
|
-
// Group periods by open day
|
|
55
|
-
const byDay = new Map();
|
|
56
|
-
for (const period of openHours['periods']) {
|
|
57
|
-
const day = period.open.day;
|
|
58
|
-
const open = formatTime(period.open.time);
|
|
59
|
-
const close = period.close ? formatTime(period.close.time) : 'midnight';
|
|
60
|
-
const range = `${open} – ${close}`;
|
|
61
|
-
const existing = byDay.get(day);
|
|
62
|
-
if (existing) {
|
|
63
|
-
existing.push(range);
|
|
64
|
-
}
|
|
65
|
-
else {
|
|
66
|
-
byDay.set(day, [range]);
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
const dayLines = DAY_NAMES.map((name, i) => {
|
|
70
|
-
const ranges = byDay.get(i);
|
|
71
|
-
return ` ${name}: ${ranges ? ranges.join(', ') : 'Closed'}`;
|
|
72
|
-
});
|
|
73
|
-
return `Hours:\n${dayLines.join('\n')}`;
|
|
49
|
+
const lines = parts.map((part) => ` ${part}`).join('\n');
|
|
50
|
+
return `Hours:\n${lines}`;
|
|
74
51
|
}
|
|
75
52
|
formatDetailsToText(data) {
|
|
76
|
-
const props = data.properties;
|
|
77
53
|
const lines = [];
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
if (props.full_address) {
|
|
82
|
-
lines.push(`Address: ${props.full_address}`);
|
|
54
|
+
lines.push(`Name: ${data.name}`);
|
|
55
|
+
if (data.full_address) {
|
|
56
|
+
lines.push(`Address: ${data.full_address}`);
|
|
83
57
|
}
|
|
84
|
-
|
|
85
|
-
lines.push(`
|
|
58
|
+
if (data.coordinates) {
|
|
59
|
+
lines.push(`Coordinates: ${data.coordinates.latitude}, ${data.coordinates.longitude}`);
|
|
86
60
|
}
|
|
87
|
-
|
|
88
|
-
lines.push(`
|
|
61
|
+
if (data.primary_category) {
|
|
62
|
+
lines.push(`Type: ${data.primary_category}`);
|
|
89
63
|
}
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
const [lng, lat] = data.geometry.coordinates;
|
|
93
|
-
lines.push(`Coordinates: ${lat}, ${lng}`);
|
|
64
|
+
else if (data.feature_type) {
|
|
65
|
+
lines.push(`Type: ${data.feature_type}`);
|
|
94
66
|
}
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
lines.push(`Type: ${props.feature_type}`);
|
|
67
|
+
if (data.categories && data.categories.length > 0) {
|
|
68
|
+
lines.push(`Category: ${data.categories.join(', ')}`);
|
|
98
69
|
}
|
|
99
|
-
if (
|
|
100
|
-
lines.push(`
|
|
70
|
+
if (data.brand) {
|
|
71
|
+
lines.push(`Brand: ${data.brand}`);
|
|
101
72
|
}
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
lines.push(`Brand: ${props.brand.join(', ')}`);
|
|
73
|
+
if (data.phone) {
|
|
74
|
+
lines.push(`Phone: ${data.phone}`);
|
|
105
75
|
}
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
if (metadata['price']) {
|
|
126
|
-
lines.push(`Price: ${metadata['price']}`);
|
|
127
|
-
}
|
|
128
|
-
if (metadata['rating'] !== undefined) {
|
|
129
|
-
lines.push(`Rating: ${metadata['rating']}`);
|
|
130
|
-
}
|
|
131
|
-
if (metadata['review_count'] !== undefined) {
|
|
132
|
-
lines.push(`Reviews: ${metadata['review_count']}`);
|
|
133
|
-
}
|
|
134
|
-
if (metadata['popularity'] !== undefined) {
|
|
135
|
-
lines.push(`Popularity: ${Math.round(metadata['popularity'] * 100)}%`);
|
|
136
|
-
}
|
|
137
|
-
if (metadata['open_hours'] &&
|
|
138
|
-
typeof metadata['open_hours'] === 'object') {
|
|
139
|
-
const formatted = this.formatOpenHours(metadata['open_hours']);
|
|
140
|
-
if (formatted)
|
|
141
|
-
lines.push(formatted);
|
|
142
|
-
}
|
|
143
|
-
// Photos
|
|
144
|
-
if (Array.isArray(metadata['primary_photo'])) {
|
|
145
|
-
const photos = metadata['primary_photo'];
|
|
146
|
-
const photoUrls = photos
|
|
147
|
-
.map((p) => p['url'] || p['thumb_url'])
|
|
148
|
-
.filter(Boolean);
|
|
149
|
-
if (photoUrls.length > 0) {
|
|
150
|
-
lines.push(`Photos: ${photoUrls.join(', ')}`);
|
|
151
|
-
}
|
|
76
|
+
if (data.website) {
|
|
77
|
+
lines.push(`Website: ${data.website}`);
|
|
78
|
+
}
|
|
79
|
+
if (data.score?.popularity !== undefined &&
|
|
80
|
+
data.score?.popularity !== null) {
|
|
81
|
+
lines.push(`Popularity: ${Math.round(data.score.popularity * 100)}%`);
|
|
82
|
+
}
|
|
83
|
+
if (data.permanently_closed) {
|
|
84
|
+
lines.push('Status: Permanently closed');
|
|
85
|
+
}
|
|
86
|
+
if (data.opening_hours) {
|
|
87
|
+
const formatted = this.formatOpeningHours(data.opening_hours);
|
|
88
|
+
if (formatted)
|
|
89
|
+
lines.push(formatted);
|
|
90
|
+
}
|
|
91
|
+
if (data.photos && data.photos.length > 0) {
|
|
92
|
+
const urls = data.photos.map((photo) => photo.url).filter(Boolean);
|
|
93
|
+
if (urls.length > 0) {
|
|
94
|
+
lines.push(`Photos: ${urls.join(', ')}`);
|
|
152
95
|
}
|
|
153
96
|
}
|
|
154
97
|
return lines.join('\n');
|
|
155
98
|
}
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
99
|
+
errorResult(message) {
|
|
100
|
+
return {
|
|
101
|
+
content: [{ type: 'text', text: `Place Details API error: ${message}` }],
|
|
102
|
+
isError: true
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
successResult(data) {
|
|
106
|
+
return {
|
|
107
|
+
content: [{ type: 'text', text: this.formatDetailsToText(data) }],
|
|
108
|
+
structuredContent: data,
|
|
109
|
+
isError: false
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
/** Maps a legacy Details API `Feature` onto the flat Places API output shape. */
|
|
113
|
+
normalizeLegacyFeature(feature) {
|
|
114
|
+
const props = feature.properties;
|
|
115
|
+
const metadata = props.metadata;
|
|
116
|
+
return this.validateOutput({
|
|
117
|
+
mapbox_id: props.mapbox_id,
|
|
118
|
+
name: props.name,
|
|
119
|
+
full_address: props.full_address ?? props.place_formatted ?? props.address,
|
|
120
|
+
feature_type: props.feature_type,
|
|
121
|
+
coordinates: props.coordinates ??
|
|
122
|
+
(feature.geometry?.coordinates
|
|
123
|
+
? {
|
|
124
|
+
longitude: feature.geometry.coordinates[0],
|
|
125
|
+
latitude: feature.geometry.coordinates[1]
|
|
126
|
+
}
|
|
127
|
+
: undefined),
|
|
128
|
+
bbox: props.bbox,
|
|
129
|
+
context: props.context,
|
|
130
|
+
categories: props.poi_category,
|
|
131
|
+
brand: props.brand && props.brand.length > 0
|
|
132
|
+
? props.brand.join(', ')
|
|
133
|
+
: undefined,
|
|
134
|
+
phone: metadata?.['phone'],
|
|
135
|
+
website: metadata?.['website'],
|
|
136
|
+
metadata
|
|
137
|
+
});
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Calls the legacy Details API, the only way to resolve boundary/
|
|
141
|
+
* administrative mapbox_ids (and the source of enhanced Japan data).
|
|
142
|
+
*/
|
|
143
|
+
async fetchLegacyDetails(input, accessToken) {
|
|
159
144
|
const url = new URL(`${MapboxApiBasedTool_js_1.MapboxApiBasedTool.mapboxApiEndpoint}search/details/v1/retrieve/${encodeURIComponent(input.mapbox_id)}`);
|
|
160
145
|
url.searchParams.append('access_token', accessToken);
|
|
161
|
-
// "basic" (name, feature_type, address, coordinates)
|
|
162
|
-
//
|
|
163
|
-
//
|
|
164
|
-
// must always be requested, even if the caller's attribute_sets omits
|
|
165
|
-
// it, or the API response fails output validation.
|
|
146
|
+
// "basic" (name, feature_type, address, coordinates) must always be
|
|
147
|
+
// requested — normalizeLegacyFeature() depends on those fields, even if
|
|
148
|
+
// the caller's attribute_sets omits it.
|
|
166
149
|
const attributeSets = new Set(['basic', ...(input.attribute_sets ?? [])]);
|
|
167
150
|
url.searchParams.append('attribute_sets', Array.from(attributeSets).join(','));
|
|
168
151
|
if (input.language) {
|
|
@@ -173,24 +156,32 @@ class PlaceDetailsTool extends MapboxApiBasedTool_js_1.MapboxApiBasedTool {
|
|
|
173
156
|
}
|
|
174
157
|
const response = await this.httpRequest(url.toString());
|
|
175
158
|
if (!response.ok) {
|
|
176
|
-
|
|
177
|
-
return {
|
|
178
|
-
content: [
|
|
179
|
-
{
|
|
180
|
-
type: 'text',
|
|
181
|
-
text: `Place Details API error: ${errorMessage}`
|
|
182
|
-
}
|
|
183
|
-
],
|
|
184
|
-
isError: true
|
|
185
|
-
};
|
|
159
|
+
return { ok: false, errorMessage: await this.getErrorMessage(response) };
|
|
186
160
|
}
|
|
187
|
-
const
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
};
|
|
161
|
+
const rawFeature = PlaceDetailsTool_output_schema_js_1.LegacyPlaceDetailsFeatureSchema.parse(await response.json());
|
|
162
|
+
return { ok: true, data: this.normalizeLegacyFeature(rawFeature) };
|
|
163
|
+
}
|
|
164
|
+
async execute(input, accessToken,
|
|
165
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
166
|
+
_context) {
|
|
167
|
+
const url = new URL(`${MapboxApiBasedTool_js_1.MapboxApiBasedTool.mapboxApiEndpoint}places/v1/details/retrieve/${encodeURIComponent(input.mapbox_id)}`);
|
|
168
|
+
url.searchParams.append('access_token', accessToken);
|
|
169
|
+
const response = await this.httpRequest(url.toString());
|
|
170
|
+
if (response.ok) {
|
|
171
|
+
const data = this.validateOutput(await response.json());
|
|
172
|
+
return this.successResult(data);
|
|
173
|
+
}
|
|
174
|
+
// The Places API rejects non-POI mapbox_ids (boundaries/neighborhoods/
|
|
175
|
+
// cities/regions) with 422 "Invalid mapbox_id format" — fall back to the
|
|
176
|
+
// legacy Details API, which still resolves those, instead of erroring.
|
|
177
|
+
if (response.status === 422) {
|
|
178
|
+
const legacyResult = await this.fetchLegacyDetails(input, accessToken);
|
|
179
|
+
if (legacyResult.ok) {
|
|
180
|
+
return this.successResult(legacyResult.data);
|
|
181
|
+
}
|
|
182
|
+
return this.errorResult(legacyResult.errorMessage);
|
|
183
|
+
}
|
|
184
|
+
return this.errorResult(await this.getErrorMessage(response));
|
|
194
185
|
}
|
|
195
186
|
}
|
|
196
187
|
exports.PlaceDetailsTool = PlaceDetailsTool;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PlaceDetailsTool.js","sourceRoot":"","sources":["../../../../src/tools/place-details-tool/PlaceDetailsTool.ts"],"names":[],"mappings":";AAAA,6BAA6B;AAC7B,kCAAkC;;;AAGlC,oEAA8D;AAI9D,yFAA6E;AAC7E,
|
|
1
|
+
{"version":3,"file":"PlaceDetailsTool.js","sourceRoot":"","sources":["../../../../src/tools/place-details-tool/PlaceDetailsTool.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,11 +2,77 @@ import { z } from 'zod';
|
|
|
2
2
|
/**
|
|
3
3
|
* Output schema for PlaceDetailsTool
|
|
4
4
|
*
|
|
5
|
-
* Models the
|
|
6
|
-
*
|
|
7
|
-
*
|
|
5
|
+
* Models the flat Place record returned by the Mapbox Places API's Details
|
|
6
|
+
* endpoint (`places/v1/details/retrieve`), currently in Public Preview.
|
|
7
|
+
* Nearly every field beyond `mapbox_id`/`name` is optional and every nested
|
|
8
|
+
* object uses .passthrough() — live responses observed during development
|
|
9
|
+
* varied in which fields were present (e.g. `building` and `opening_hours`
|
|
10
|
+
* only appear on some places), and a Public Preview API's contract can add
|
|
11
|
+
* fields without notice, so this schema is deliberately permissive rather
|
|
12
|
+
* than risk an output-validation failure like the one fixed for the
|
|
13
|
+
* previous Details API (see CHANGELOG).
|
|
14
|
+
*
|
|
15
|
+
* `feature_type`, `bbox`, `context`, and `metadata` are never populated by
|
|
16
|
+
* the Places API itself — they're only present when `mapbox_id` resolved via
|
|
17
|
+
* the legacy Details API fallback (boundaries/neighborhoods/cities/regions,
|
|
18
|
+
* which the Places API rejects). See `PlaceDetailsTool.ts`'s
|
|
19
|
+
* `normalizeLegacyFeature`.
|
|
8
20
|
*/
|
|
9
21
|
export declare const PlaceDetailsOutputSchema: z.ZodObject<{
|
|
22
|
+
mapbox_id: z.ZodString;
|
|
23
|
+
name: z.ZodString;
|
|
24
|
+
full_address: z.ZodOptional<z.ZodString>;
|
|
25
|
+
brand: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
26
|
+
primary_category: z.ZodOptional<z.ZodString>;
|
|
27
|
+
categories: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
28
|
+
feature_type: z.ZodOptional<z.ZodString>;
|
|
29
|
+
bbox: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
30
|
+
context: z.ZodOptional<z.ZodObject<{}, z.core.$loose>>;
|
|
31
|
+
metadata: z.ZodOptional<z.ZodObject<{}, z.core.$loose>>;
|
|
32
|
+
opening_hours: z.ZodOptional<z.ZodString>;
|
|
33
|
+
permanently_closed: z.ZodOptional<z.ZodNullable<z.ZodBoolean>>;
|
|
34
|
+
phone: z.ZodOptional<z.ZodString>;
|
|
35
|
+
website: z.ZodOptional<z.ZodString>;
|
|
36
|
+
status: z.ZodOptional<z.ZodString>;
|
|
37
|
+
created_at: z.ZodOptional<z.ZodString>;
|
|
38
|
+
updated_at: z.ZodOptional<z.ZodString>;
|
|
39
|
+
score: z.ZodOptional<z.ZodObject<{
|
|
40
|
+
closed: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
41
|
+
reality: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
42
|
+
popularity: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
43
|
+
}, z.core.$loose>>;
|
|
44
|
+
coordinates: z.ZodOptional<z.ZodObject<{
|
|
45
|
+
latitude: z.ZodNumber;
|
|
46
|
+
longitude: z.ZodNumber;
|
|
47
|
+
source: z.ZodOptional<z.ZodString>;
|
|
48
|
+
routable_points: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
49
|
+
name: z.ZodOptional<z.ZodString>;
|
|
50
|
+
latitude: z.ZodNumber;
|
|
51
|
+
longitude: z.ZodNumber;
|
|
52
|
+
}, z.core.$loose>>>;
|
|
53
|
+
}, z.core.$loose>>;
|
|
54
|
+
address: z.ZodOptional<z.ZodObject<{}, z.core.$loose>>;
|
|
55
|
+
attributes: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodString, z.ZodBoolean, z.ZodNumber]>>>;
|
|
56
|
+
building: z.ZodOptional<z.ZodObject<{}, z.core.$loose>>;
|
|
57
|
+
photos: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
58
|
+
url: z.ZodString;
|
|
59
|
+
width: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
60
|
+
height: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
61
|
+
source: z.ZodOptional<z.ZodString>;
|
|
62
|
+
}, z.core.$loose>>>;
|
|
63
|
+
telemetry: z.ZodOptional<z.ZodObject<{}, z.core.$loose>>;
|
|
64
|
+
}, z.core.$loose>;
|
|
65
|
+
/**
|
|
66
|
+
* Type inference for PlaceDetailsOutput
|
|
67
|
+
*/
|
|
68
|
+
export type PlaceDetailsOutput = z.infer<typeof PlaceDetailsOutputSchema>;
|
|
69
|
+
/**
|
|
70
|
+
* Raw GeoJSON `Feature` returned by the legacy Details API
|
|
71
|
+
* (`search/details/v1/retrieve`). Only used for the fallback path — see
|
|
72
|
+
* `PlaceDetailsTool.ts`'s `normalizeLegacyFeature`, which maps this into
|
|
73
|
+
* `PlaceDetailsOutput`.
|
|
74
|
+
*/
|
|
75
|
+
export declare const LegacyPlaceDetailsFeatureSchema: z.ZodObject<{
|
|
10
76
|
type: z.ZodLiteral<"Feature">;
|
|
11
77
|
geometry: z.ZodObject<{
|
|
12
78
|
type: z.ZodLiteral<"Point">;
|
|
@@ -25,18 +91,13 @@ export declare const PlaceDetailsOutputSchema: z.ZodObject<{
|
|
|
25
91
|
latitude: z.ZodNumber;
|
|
26
92
|
}, z.core.$loose>>;
|
|
27
93
|
bbox: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
28
|
-
language: z.ZodOptional<z.ZodString>;
|
|
29
|
-
maki: z.ZodOptional<z.ZodString>;
|
|
30
94
|
poi_category: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
31
|
-
poi_category_ids: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
32
95
|
brand: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
33
|
-
brand_id: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
34
|
-
external_ids: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
35
96
|
metadata: z.ZodOptional<z.ZodObject<{}, z.core.$loose>>;
|
|
36
97
|
}, z.core.$loose>;
|
|
37
98
|
}, z.core.$loose>;
|
|
38
99
|
/**
|
|
39
|
-
* Type inference for
|
|
100
|
+
* Type inference for LegacyPlaceDetailsFeature
|
|
40
101
|
*/
|
|
41
|
-
export type
|
|
102
|
+
export type LegacyPlaceDetailsFeature = z.infer<typeof LegacyPlaceDetailsFeatureSchema>;
|
|
42
103
|
//# sourceMappingURL=PlaceDetailsTool.output.schema.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PlaceDetailsTool.output.schema.d.ts","sourceRoot":"","sources":["../../../../src/tools/place-details-tool/PlaceDetailsTool.output.schema.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB
|
|
1
|
+
{"version":3,"file":"PlaceDetailsTool.output.schema.d.ts","sourceRoot":"","sources":["../../../../src/tools/place-details-tool/PlaceDetailsTool.output.schema.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAmErB,CAAC;AAEjB;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAE1E;;;;;GAKG;AACH,eAAO,MAAM,+BAA+B;;;;;;;;;;;;;;;;;;;;;;;iBAkC5B,CAAC;AAEjB;;GAEG;AACH,MAAM,MAAM,yBAAyB,GAAG,CAAC,CAAC,KAAK,CAC7C,OAAO,+BAA+B,CACvC,CAAC"}
|
|
@@ -2,16 +2,98 @@
|
|
|
2
2
|
// Copyright (c) Mapbox, Inc.
|
|
3
3
|
// Licensed under the MIT License.
|
|
4
4
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
|
-
exports.PlaceDetailsOutputSchema = void 0;
|
|
5
|
+
exports.LegacyPlaceDetailsFeatureSchema = exports.PlaceDetailsOutputSchema = void 0;
|
|
6
6
|
const zod_1 = require("zod");
|
|
7
7
|
/**
|
|
8
8
|
* Output schema for PlaceDetailsTool
|
|
9
9
|
*
|
|
10
|
-
* Models the
|
|
11
|
-
*
|
|
12
|
-
*
|
|
10
|
+
* Models the flat Place record returned by the Mapbox Places API's Details
|
|
11
|
+
* endpoint (`places/v1/details/retrieve`), currently in Public Preview.
|
|
12
|
+
* Nearly every field beyond `mapbox_id`/`name` is optional and every nested
|
|
13
|
+
* object uses .passthrough() — live responses observed during development
|
|
14
|
+
* varied in which fields were present (e.g. `building` and `opening_hours`
|
|
15
|
+
* only appear on some places), and a Public Preview API's contract can add
|
|
16
|
+
* fields without notice, so this schema is deliberately permissive rather
|
|
17
|
+
* than risk an output-validation failure like the one fixed for the
|
|
18
|
+
* previous Details API (see CHANGELOG).
|
|
19
|
+
*
|
|
20
|
+
* `feature_type`, `bbox`, `context`, and `metadata` are never populated by
|
|
21
|
+
* the Places API itself — they're only present when `mapbox_id` resolved via
|
|
22
|
+
* the legacy Details API fallback (boundaries/neighborhoods/cities/regions,
|
|
23
|
+
* which the Places API rejects). See `PlaceDetailsTool.ts`'s
|
|
24
|
+
* `normalizeLegacyFeature`.
|
|
13
25
|
*/
|
|
14
26
|
exports.PlaceDetailsOutputSchema = zod_1.z
|
|
27
|
+
.object({
|
|
28
|
+
mapbox_id: zod_1.z.string(),
|
|
29
|
+
name: zod_1.z.string(),
|
|
30
|
+
full_address: zod_1.z.string().optional(),
|
|
31
|
+
brand: zod_1.z.string().nullable().optional(),
|
|
32
|
+
primary_category: zod_1.z.string().optional(),
|
|
33
|
+
categories: zod_1.z.array(zod_1.z.string()).optional(),
|
|
34
|
+
// Legacy Details API fallback only (see doc comment above).
|
|
35
|
+
feature_type: zod_1.z.string().optional(),
|
|
36
|
+
bbox: zod_1.z.tuple([zod_1.z.number(), zod_1.z.number(), zod_1.z.number(), zod_1.z.number()]).optional(),
|
|
37
|
+
context: zod_1.z.object({}).passthrough().optional(),
|
|
38
|
+
metadata: zod_1.z.object({}).passthrough().optional(),
|
|
39
|
+
// OSM opening_hours syntax, e.g. "Mo 09:00-23:45; Tu 09:00-23:45; ...".
|
|
40
|
+
opening_hours: zod_1.z.string().optional(),
|
|
41
|
+
permanently_closed: zod_1.z.boolean().nullable().optional(),
|
|
42
|
+
phone: zod_1.z.string().optional(),
|
|
43
|
+
website: zod_1.z.string().optional(),
|
|
44
|
+
status: zod_1.z.string().optional(),
|
|
45
|
+
created_at: zod_1.z.string().optional(),
|
|
46
|
+
updated_at: zod_1.z.string().optional(),
|
|
47
|
+
score: zod_1.z
|
|
48
|
+
.object({
|
|
49
|
+
closed: zod_1.z.number().nullable().optional(),
|
|
50
|
+
reality: zod_1.z.number().nullable().optional(),
|
|
51
|
+
popularity: zod_1.z.number().nullable().optional()
|
|
52
|
+
})
|
|
53
|
+
.passthrough()
|
|
54
|
+
.optional(),
|
|
55
|
+
coordinates: zod_1.z
|
|
56
|
+
.object({
|
|
57
|
+
latitude: zod_1.z.number(),
|
|
58
|
+
longitude: zod_1.z.number(),
|
|
59
|
+
source: zod_1.z.string().optional(),
|
|
60
|
+
routable_points: zod_1.z
|
|
61
|
+
.array(zod_1.z
|
|
62
|
+
.object({
|
|
63
|
+
name: zod_1.z.string().optional(),
|
|
64
|
+
latitude: zod_1.z.number(),
|
|
65
|
+
longitude: zod_1.z.number()
|
|
66
|
+
})
|
|
67
|
+
.passthrough())
|
|
68
|
+
.optional()
|
|
69
|
+
})
|
|
70
|
+
.passthrough()
|
|
71
|
+
.optional(),
|
|
72
|
+
address: zod_1.z.object({}).passthrough().optional(),
|
|
73
|
+
attributes: zod_1.z
|
|
74
|
+
.record(zod_1.z.string(), zod_1.z.union([zod_1.z.string(), zod_1.z.boolean(), zod_1.z.number()]))
|
|
75
|
+
.optional(),
|
|
76
|
+
building: zod_1.z.object({}).passthrough().optional(),
|
|
77
|
+
photos: zod_1.z
|
|
78
|
+
.array(zod_1.z
|
|
79
|
+
.object({
|
|
80
|
+
url: zod_1.z.string(),
|
|
81
|
+
width: zod_1.z.number().nullable().optional(),
|
|
82
|
+
height: zod_1.z.number().nullable().optional(),
|
|
83
|
+
source: zod_1.z.string().optional()
|
|
84
|
+
})
|
|
85
|
+
.passthrough())
|
|
86
|
+
.optional(),
|
|
87
|
+
telemetry: zod_1.z.object({}).passthrough().optional()
|
|
88
|
+
})
|
|
89
|
+
.passthrough();
|
|
90
|
+
/**
|
|
91
|
+
* Raw GeoJSON `Feature` returned by the legacy Details API
|
|
92
|
+
* (`search/details/v1/retrieve`). Only used for the fallback path — see
|
|
93
|
+
* `PlaceDetailsTool.ts`'s `normalizeLegacyFeature`, which maps this into
|
|
94
|
+
* `PlaceDetailsOutput`.
|
|
95
|
+
*/
|
|
96
|
+
exports.LegacyPlaceDetailsFeatureSchema = zod_1.z
|
|
15
97
|
.object({
|
|
16
98
|
type: zod_1.z.literal('Feature'),
|
|
17
99
|
geometry: zod_1.z
|
|
@@ -39,14 +121,8 @@ exports.PlaceDetailsOutputSchema = zod_1.z
|
|
|
39
121
|
bbox: zod_1.z
|
|
40
122
|
.tuple([zod_1.z.number(), zod_1.z.number(), zod_1.z.number(), zod_1.z.number()])
|
|
41
123
|
.optional(),
|
|
42
|
-
language: zod_1.z.string().optional(),
|
|
43
|
-
maki: zod_1.z.string().optional(),
|
|
44
124
|
poi_category: zod_1.z.array(zod_1.z.string()).optional(),
|
|
45
|
-
poi_category_ids: zod_1.z.array(zod_1.z.string()).optional(),
|
|
46
125
|
brand: zod_1.z.array(zod_1.z.string()).optional(),
|
|
47
|
-
brand_id: zod_1.z.array(zod_1.z.string()).optional(),
|
|
48
|
-
external_ids: zod_1.z.record(zod_1.z.string(), zod_1.z.string()).optional(),
|
|
49
|
-
// metadata contains attribute_set fields (photos, visit, venue)
|
|
50
126
|
metadata: zod_1.z.object({}).passthrough().optional()
|
|
51
127
|
})
|
|
52
128
|
.passthrough()
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PlaceDetailsTool.output.schema.js","sourceRoot":"","sources":["../../../../src/tools/place-details-tool/PlaceDetailsTool.output.schema.ts"],"names":[],"mappings":";AAAA,6BAA6B;AAC7B,kCAAkC;;;AAElC,6BAAwB;AAExB
|
|
1
|
+
{"version":3,"file":"PlaceDetailsTool.output.schema.js","sourceRoot":"","sources":["../../../../src/tools/place-details-tool/PlaceDetailsTool.output.schema.ts"],"names":[],"mappings":";AAAA,6BAA6B;AAC7B,kCAAkC;;;AAElC,6BAAwB;AAExB;;;;;;;;;;;;;;;;;;GAkBG;AACU,QAAA,wBAAwB,GAAG,OAAC;KACtC,MAAM,CAAC;IACN,SAAS,EAAE,OAAC,CAAC,MAAM,EAAE;IACrB,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE;IAChB,YAAY,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACnC,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IACvC,gBAAgB,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACvC,UAAU,EAAE,OAAC,CAAC,KAAK,CAAC,OAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IAC1C,4DAA4D;IAC5D,YAAY,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACnC,IAAI,EAAE,OAAC,CAAC,KAAK,CAAC,CAAC,OAAC,CAAC,MAAM,EAAE,EAAE,OAAC,CAAC,MAAM,EAAE,EAAE,OAAC,CAAC,MAAM,EAAE,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE;IAC1E,OAAO,EAAE,OAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE;IAC9C,QAAQ,EAAE,OAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE;IAC/C,wEAAwE;IACxE,aAAa,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACpC,kBAAkB,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IACrD,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5B,OAAO,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC9B,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC7B,UAAU,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACjC,UAAU,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACjC,KAAK,EAAE,OAAC;SACL,MAAM,CAAC;QACN,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;QACxC,OAAO,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;QACzC,UAAU,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;KAC7C,CAAC;SACD,WAAW,EAAE;SACb,QAAQ,EAAE;IACb,WAAW,EAAE,OAAC;SACX,MAAM,CAAC;QACN,QAAQ,EAAE,OAAC,CAAC,MAAM,EAAE;QACpB,SAAS,EAAE,OAAC,CAAC,MAAM,EAAE;QACrB,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC7B,eAAe,EAAE,OAAC;aACf,KAAK,CACJ,OAAC;aACE,MAAM,CAAC;YACN,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;YAC3B,QAAQ,EAAE,OAAC,CAAC,MAAM,EAAE;YACpB,SAAS,EAAE,OAAC,CAAC,MAAM,EAAE;SACtB,CAAC;aACD,WAAW,EAAE,CACjB;aACA,QAAQ,EAAE;KACd,CAAC;SACD,WAAW,EAAE;SACb,QAAQ,EAAE;IACb,OAAO,EAAE,OAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE;IAC9C,UAAU,EAAE,OAAC;SACV,MAAM,CAAC,OAAC,CAAC,MAAM,EAAE,EAAE,OAAC,CAAC,KAAK,CAAC,CAAC,OAAC,CAAC,MAAM,EAAE,EAAE,OAAC,CAAC,OAAO,EAAE,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;SAClE,QAAQ,EAAE;IACb,QAAQ,EAAE,OAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE;IAC/C,MAAM,EAAE,OAAC;SACN,KAAK,CACJ,OAAC;SACE,MAAM,CAAC;QACN,GAAG,EAAE,OAAC,CAAC,MAAM,EAAE;QACf,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;QACvC,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;QACxC,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;KAC9B,CAAC;SACD,WAAW,EAAE,CACjB;SACA,QAAQ,EAAE;IACb,SAAS,EAAE,OAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE;CACjD,CAAC;KACD,WAAW,EAAE,CAAC;AAOjB;;;;;GAKG;AACU,QAAA,+BAA+B,GAAG,OAAC;KAC7C,MAAM,CAAC;IACN,IAAI,EAAE,OAAC,CAAC,OAAO,CAAC,SAAS,CAAC;IAC1B,QAAQ,EAAE,OAAC;SACR,MAAM,CAAC;QACN,IAAI,EAAE,OAAC,CAAC,OAAO,CAAC,OAAO,CAAC;QACxB,WAAW,EAAE,OAAC,CAAC,KAAK,CAAC,CAAC,OAAC,CAAC,MAAM,EAAE,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,CAAC;KAC/C,CAAC;SACD,WAAW,EAAE;IAChB,UAAU,EAAE,OAAC;SACV,MAAM,CAAC;QACN,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE;QAChB,SAAS,EAAE,OAAC,CAAC,MAAM,EAAE;QACrB,YAAY,EAAE,OAAC,CAAC,MAAM,EAAE;QACxB,OAAO,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC9B,YAAY,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QACnC,eAAe,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QACtC,OAAO,EAAE,OAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE;QAC9C,WAAW,EAAE,OAAC;aACX,MAAM,CAAC;YACN,SAAS,EAAE,OAAC,CAAC,MAAM,EAAE;YACrB,QAAQ,EAAE,OAAC,CAAC,MAAM,EAAE;SACrB,CAAC;aACD,WAAW,EAAE;aACb,QAAQ,EAAE;QACb,IAAI,EAAE,OAAC;aACJ,KAAK,CAAC,CAAC,OAAC,CAAC,MAAM,EAAE,EAAE,OAAC,CAAC,MAAM,EAAE,EAAE,OAAC,CAAC,MAAM,EAAE,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,CAAC;aACvD,QAAQ,EAAE;QACb,YAAY,EAAE,OAAC,CAAC,KAAK,CAAC,OAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;QAC5C,KAAK,EAAE,OAAC,CAAC,KAAK,CAAC,OAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;QACrC,QAAQ,EAAE,OAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE;KAChD,CAAC;SACD,WAAW,EAAE;CACjB,CAAC;KACD,WAAW,EAAE,CAAC"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { RequestHandlerExtra } from '@modelcontextprotocol/sdk/shared/protocol.js';
|
|
2
2
|
import { BaseTool } from '../BaseTool.js';
|
|
3
|
+
import { type MapAppCsp } from '../../resources/ui-apps/mapAppCsp.js';
|
|
3
4
|
import type { CallToolResult } from '@modelcontextprotocol/sdk/types.js';
|
|
4
5
|
import { RenderMapInputSchema, type RenderMapInput } from './RenderMapTool.input.schema.js';
|
|
5
6
|
import { RenderMapOutputSchema } from './RenderMapTool.output.schema.js';
|
|
@@ -33,10 +34,7 @@ export declare class RenderMapTool extends BaseTool<typeof RenderMapInputSchema,
|
|
|
33
34
|
readonly meta: {
|
|
34
35
|
ui: {
|
|
35
36
|
resourceUri: string;
|
|
36
|
-
csp:
|
|
37
|
-
connectDomains: string[];
|
|
38
|
-
resourceDomains: string[];
|
|
39
|
-
};
|
|
37
|
+
csp: MapAppCsp;
|
|
40
38
|
};
|
|
41
39
|
};
|
|
42
40
|
private readonly httpRequest;
|