@mapbox/mcp-server 0.15.1 → 0.16.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/dist/commonjs/resources/place-photo/PlacePhotoResource.d.ts +57 -0
- package/dist/commonjs/resources/place-photo/PlacePhotoResource.d.ts.map +1 -0
- package/dist/commonjs/resources/place-photo/PlacePhotoResource.js +202 -0
- package/dist/commonjs/resources/place-photo/PlacePhotoResource.js.map +1 -0
- package/dist/commonjs/resources/resourceRegistry.d.ts +3 -1
- package/dist/commonjs/resources/resourceRegistry.d.ts.map +1 -1
- package/dist/commonjs/resources/resourceRegistry.js +5 -0
- package/dist/commonjs/resources/resourceRegistry.js.map +1 -1
- package/dist/commonjs/resources/tool-response/ToolResponseResource.d.ts +20 -0
- package/dist/commonjs/resources/tool-response/ToolResponseResource.d.ts.map +1 -0
- package/dist/commonjs/resources/tool-response/ToolResponseResource.js +83 -0
- package/dist/commonjs/resources/tool-response/ToolResponseResource.js.map +1 -0
- package/dist/commonjs/resources/ui-apps/mapAppHtml.d.ts.map +1 -1
- package/dist/commonjs/resources/ui-apps/mapAppHtml.js +484 -11
- package/dist/commonjs/resources/ui-apps/mapAppHtml.js.map +1 -1
- package/dist/commonjs/tools/category-list-tool/CategoryListTool.d.ts.map +1 -1
- package/dist/commonjs/tools/category-list-tool/CategoryListTool.input.schema.js +1 -1
- package/dist/commonjs/tools/category-list-tool/CategoryListTool.input.schema.js.map +1 -1
- package/dist/commonjs/tools/category-list-tool/CategoryListTool.js +1 -1
- package/dist/commonjs/tools/category-list-tool/CategoryListTool.js.map +1 -1
- package/dist/commonjs/tools/directions-tool/DirectionsTool.d.ts.map +1 -1
- package/dist/commonjs/tools/directions-tool/DirectionsTool.input.schema.js +3 -3
- package/dist/commonjs/tools/directions-tool/DirectionsTool.input.schema.js.map +1 -1
- package/dist/commonjs/tools/directions-tool/DirectionsTool.js +17 -17
- 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 +1 -1
- package/dist/commonjs/tools/ground-location-tool/GroundLocationTool.js.map +1 -1
- package/dist/commonjs/tools/isochrone-tool/IsochroneTool.d.ts.map +1 -1
- package/dist/commonjs/tools/isochrone-tool/IsochroneTool.js +6 -13
- package/dist/commonjs/tools/isochrone-tool/IsochroneTool.js.map +1 -1
- 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 +4 -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 +18 -2
- package/dist/commonjs/tools/render-map-tool/RenderMapTool.input.schema.js.map +1 -1
- package/dist/commonjs/tools/render-map-tool/RenderMapTool.js +9 -5
- package/dist/commonjs/tools/render-map-tool/RenderMapTool.js.map +1 -1
- package/dist/commonjs/tools/render-map-tool/RenderMapTool.output.schema.d.ts +4 -0
- package/dist/commonjs/tools/render-map-tool/RenderMapTool.output.schema.d.ts.map +1 -1
- package/dist/commonjs/utils/directionsRef.d.ts +27 -0
- package/dist/commonjs/utils/directionsRef.d.ts.map +1 -0
- package/dist/commonjs/utils/directionsRef.js +52 -0
- package/dist/commonjs/utils/directionsRef.js.map +1 -0
- package/dist/commonjs/utils/index.d.ts +6 -0
- package/dist/commonjs/utils/index.d.ts.map +1 -1
- package/dist/commonjs/utils/index.js +14 -1
- package/dist/commonjs/utils/index.js.map +1 -1
- package/dist/commonjs/utils/mapAppPayload.d.ts +21 -0
- package/dist/commonjs/utils/mapAppPayload.d.ts.map +1 -1
- package/dist/commonjs/utils/mapAppPayload.js +5 -1
- package/dist/commonjs/utils/mapAppPayload.js.map +1 -1
- package/dist/commonjs/utils/responseRef.d.ts +33 -0
- package/dist/commonjs/utils/responseRef.d.ts.map +1 -0
- package/dist/commonjs/utils/responseRef.js +73 -0
- package/dist/commonjs/utils/responseRef.js.map +1 -0
- package/dist/commonjs/utils/serverInstructions.d.ts +2 -2
- package/dist/commonjs/utils/serverInstructions.js +2 -2
- package/dist/commonjs/utils/storeMapPayload.js +1 -1
- package/dist/commonjs/utils/storeMapPayload.js.map +1 -1
- package/dist/commonjs/utils/urlSafety.d.ts +6 -0
- package/dist/commonjs/utils/urlSafety.d.ts.map +1 -1
- package/dist/commonjs/utils/urlSafety.js +15 -4
- package/dist/commonjs/utils/urlSafety.js.map +1 -1
- package/dist/commonjs/version.json +3 -3
- package/dist/esm/resources/place-photo/PlacePhotoResource.d.ts +57 -0
- package/dist/esm/resources/place-photo/PlacePhotoResource.d.ts.map +1 -0
- package/dist/esm/resources/place-photo/PlacePhotoResource.js +198 -0
- package/dist/esm/resources/place-photo/PlacePhotoResource.js.map +1 -0
- package/dist/esm/resources/resourceRegistry.d.ts +3 -1
- package/dist/esm/resources/resourceRegistry.d.ts.map +1 -1
- package/dist/esm/resources/resourceRegistry.js +5 -0
- package/dist/esm/resources/resourceRegistry.js.map +1 -1
- package/dist/esm/resources/tool-response/ToolResponseResource.d.ts +20 -0
- package/dist/esm/resources/tool-response/ToolResponseResource.d.ts.map +1 -0
- package/dist/esm/resources/tool-response/ToolResponseResource.js +79 -0
- package/dist/esm/resources/tool-response/ToolResponseResource.js.map +1 -0
- package/dist/esm/resources/ui-apps/mapAppHtml.d.ts.map +1 -1
- package/dist/esm/resources/ui-apps/mapAppHtml.js +484 -11
- package/dist/esm/resources/ui-apps/mapAppHtml.js.map +1 -1
- package/dist/esm/tools/category-list-tool/CategoryListTool.d.ts.map +1 -1
- package/dist/esm/tools/category-list-tool/CategoryListTool.input.schema.js +1 -1
- package/dist/esm/tools/category-list-tool/CategoryListTool.input.schema.js.map +1 -1
- package/dist/esm/tools/category-list-tool/CategoryListTool.js +1 -1
- package/dist/esm/tools/category-list-tool/CategoryListTool.js.map +1 -1
- package/dist/esm/tools/directions-tool/DirectionsTool.d.ts.map +1 -1
- package/dist/esm/tools/directions-tool/DirectionsTool.input.schema.js +3 -3
- package/dist/esm/tools/directions-tool/DirectionsTool.input.schema.js.map +1 -1
- package/dist/esm/tools/directions-tool/DirectionsTool.js +17 -17
- 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 +1 -1
- package/dist/esm/tools/ground-location-tool/GroundLocationTool.js.map +1 -1
- package/dist/esm/tools/isochrone-tool/IsochroneTool.d.ts.map +1 -1
- package/dist/esm/tools/isochrone-tool/IsochroneTool.js +6 -13
- package/dist/esm/tools/isochrone-tool/IsochroneTool.js.map +1 -1
- 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 +4 -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 +18 -2
- package/dist/esm/tools/render-map-tool/RenderMapTool.input.schema.js.map +1 -1
- package/dist/esm/tools/render-map-tool/RenderMapTool.js +9 -5
- package/dist/esm/tools/render-map-tool/RenderMapTool.js.map +1 -1
- package/dist/esm/tools/render-map-tool/RenderMapTool.output.schema.d.ts +4 -0
- package/dist/esm/tools/render-map-tool/RenderMapTool.output.schema.d.ts.map +1 -1
- package/dist/esm/utils/directionsRef.d.ts +27 -0
- package/dist/esm/utils/directionsRef.d.ts.map +1 -0
- package/dist/esm/utils/directionsRef.js +49 -0
- package/dist/esm/utils/directionsRef.js.map +1 -0
- package/dist/esm/utils/index.d.ts +6 -0
- package/dist/esm/utils/index.d.ts.map +1 -1
- package/dist/esm/utils/index.js +9 -0
- package/dist/esm/utils/index.js.map +1 -1
- package/dist/esm/utils/mapAppPayload.d.ts +21 -0
- package/dist/esm/utils/mapAppPayload.d.ts.map +1 -1
- package/dist/esm/utils/mapAppPayload.js +5 -1
- package/dist/esm/utils/mapAppPayload.js.map +1 -1
- package/dist/esm/utils/responseRef.d.ts +33 -0
- package/dist/esm/utils/responseRef.d.ts.map +1 -0
- package/dist/esm/utils/responseRef.js +68 -0
- package/dist/esm/utils/responseRef.js.map +1 -0
- package/dist/esm/utils/serverInstructions.d.ts +2 -2
- package/dist/esm/utils/serverInstructions.js +2 -2
- package/dist/esm/utils/storeMapPayload.js +1 -1
- package/dist/esm/utils/storeMapPayload.js.map +1 -1
- package/dist/esm/utils/urlSafety.d.ts +6 -0
- package/dist/esm/utils/urlSafety.d.ts.map +1 -1
- package/dist/esm/utils/urlSafety.js +14 -4
- package/dist/esm/utils/urlSafety.js.map +1 -1
- package/dist/esm/version.json +3 -3
- package/package.json +9 -2
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Copyright (c) Mapbox, Inc.
|
|
3
|
+
// Licensed under the MIT License.
|
|
4
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
|
+
exports.directionsRequestFromRef = directionsRequestFromRef;
|
|
6
|
+
const buildDirectionsRequestUrl_js_1 = require("../tools/directions-tool/buildDirectionsRequestUrl.js");
|
|
7
|
+
const selfFetchRef_js_1 = require("./selfFetchRef.js");
|
|
8
|
+
/**
|
|
9
|
+
* Turns the `structuredContent.mapboxRender.ref` from a `directions_tool`
|
|
10
|
+
* result back into a Directions API request for the full route.
|
|
11
|
+
*
|
|
12
|
+
* The ref is a few hundred bytes and carries only the call's own inputs, so
|
|
13
|
+
* an app can hand it to the model instead of the route and fetch the
|
|
14
|
+
* geometry itself when it needs it (e.g. to draw its own map), the same way
|
|
15
|
+
* `render_map_tool` does. It needs no server-side state, so it resolves in
|
|
16
|
+
* any process. The route is fetched again, so with live traffic it can
|
|
17
|
+
* differ slightly from the original call.
|
|
18
|
+
*
|
|
19
|
+
* Returns null for anything that isn't a valid directions ref.
|
|
20
|
+
*/
|
|
21
|
+
function directionsRequestFromRef(ref, options) {
|
|
22
|
+
const selfFetch = (0, selfFetchRef_js_1.resolveSelfFetchRef)(ref)?.selfFetch?.[0];
|
|
23
|
+
if (!selfFetch || selfFetch.tool !== 'directions')
|
|
24
|
+
return null;
|
|
25
|
+
const params = selfFetch.params;
|
|
26
|
+
const coords = params.coordinates;
|
|
27
|
+
if (!Array.isArray(coords) ||
|
|
28
|
+
coords.length < 2 ||
|
|
29
|
+
!coords.every((c) => typeof c?.longitude === 'number' && typeof c?.latitude === 'number')) {
|
|
30
|
+
return null;
|
|
31
|
+
}
|
|
32
|
+
const url = (0, buildDirectionsRequestUrl_js_1.buildDirectionsRequestUrl)({
|
|
33
|
+
input: {
|
|
34
|
+
coordinates: coords,
|
|
35
|
+
routing_profile: params.routing_profile ?? 'mapbox/driving-traffic',
|
|
36
|
+
geometries: 'geojson',
|
|
37
|
+
alternatives: params.alternatives === true,
|
|
38
|
+
exclude: params.exclude,
|
|
39
|
+
depart_at: params.depart_at,
|
|
40
|
+
arrive_by: params.arrive_by,
|
|
41
|
+
max_height: params.max_height,
|
|
42
|
+
max_width: params.max_width,
|
|
43
|
+
max_weight: params.max_weight
|
|
44
|
+
},
|
|
45
|
+
accessToken: options.accessToken,
|
|
46
|
+
apiEndpoint: options.apiEndpoint ??
|
|
47
|
+
process.env.MAPBOX_API_ENDPOINT ??
|
|
48
|
+
'https://api.mapbox.com/'
|
|
49
|
+
});
|
|
50
|
+
return { url, selectedRouteIndex: params.selectedRouteIndex };
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=directionsRef.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"directionsRef.js","sourceRoot":"","sources":["../../../src/utils/directionsRef.ts"],"names":[],"mappings":";AAAA,6BAA6B;AAC7B,kCAAkC;;AA+BlC,4DAwCC;AArED,wGAG+D;AAC/D,uDAAwD;AAYxD;;;;;;;;;;;;GAYG;AACH,SAAgB,wBAAwB,CACtC,GAAW,EACX,OAAsD;IAEtD,MAAM,SAAS,GAAG,IAAA,qCAAmB,EAAC,GAAG,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC;IAC3D,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,IAAI,KAAK,YAAY;QAAE,OAAO,IAAI,CAAC;IAC/D,MAAM,MAAM,GAAG,SAAS,CAAC,MAExB,CAAC;IACF,MAAM,MAAM,GAAG,MAAM,CAAC,WAAW,CAAC;IAClC,IACE,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;QACtB,MAAM,CAAC,MAAM,GAAG,CAAC;QACjB,CAAC,MAAM,CAAC,KAAK,CACX,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,SAAS,KAAK,QAAQ,IAAI,OAAO,CAAC,EAAE,QAAQ,KAAK,QAAQ,CAC3E,EACD,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,GAAG,GAAG,IAAA,wDAAyB,EAAC;QACpC,KAAK,EAAE;YACL,WAAW,EAAE,MAAM;YACnB,eAAe,EAAE,MAAM,CAAC,eAAe,IAAI,wBAAwB;YACnE,UAAU,EAAE,SAAS;YACrB,YAAY,EAAE,MAAM,CAAC,YAAY,KAAK,IAAI;YAC1C,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,UAAU,EAAE,MAAM,CAAC,UAAU;YAC7B,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,UAAU,EAAE,MAAM,CAAC,UAAU;SAC9B;QACD,WAAW,EAAE,OAAO,CAAC,WAAW;QAChC,WAAW,EACT,OAAO,CAAC,WAAW;YACnB,OAAO,CAAC,GAAG,CAAC,mBAAmB;YAC/B,yBAAyB;KAC5B,CAAC,CAAC;IACH,OAAO,EAAE,GAAG,EAAE,kBAAkB,EAAE,MAAM,CAAC,kBAAkB,EAAE,CAAC;AAChE,CAAC"}
|
|
@@ -36,4 +36,10 @@ export { getVersionInfo } from './versionUtils.js';
|
|
|
36
36
|
export type { VersionInfo } from './versionUtils.js';
|
|
37
37
|
export { publishJsonSchema2020, toJsonSchema2020 } from './jsonSchema2020.js';
|
|
38
38
|
export { buildServerInstructions } from './serverInstructions.js';
|
|
39
|
+
export { directionsRequestFromRef } from './directionsRef.js';
|
|
40
|
+
export type { DirectionsRefRequest } from './directionsRef.js';
|
|
41
|
+
export { resolveSelfFetchRef, isSelfFetchRef } from './selfFetchRef.js';
|
|
42
|
+
export { buildDirectionsRequestUrl } from '../tools/directions-tool/buildDirectionsRequestUrl.js';
|
|
43
|
+
export type { DirectionsRequestInput } from '../tools/directions-tool/buildDirectionsRequestUrl.js';
|
|
44
|
+
export type { MapAppPayload, MapAppSelfFetch } from './mapAppPayload.js';
|
|
39
45
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAGH,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAGpE,OAAO,EACL,YAAY,EACZ,eAAe,EACf,WAAW,EACX,aAAa,EACb,KAAK,UAAU,EAChB,MAAM,mBAAmB,CAAC;AAG3B,YAAY,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAKjE,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAG/C,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,YAAY,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAMrD,OAAO,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAC9E,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAGH,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAGpE,OAAO,EACL,YAAY,EACZ,eAAe,EACf,WAAW,EACX,aAAa,EACb,KAAK,UAAU,EAChB,MAAM,mBAAmB,CAAC;AAG3B,YAAY,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAKjE,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAG/C,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,YAAY,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAMrD,OAAO,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAC9E,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAMlE,OAAO,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AAC9D,YAAY,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAGxE,OAAO,EAAE,yBAAyB,EAAE,MAAM,uDAAuD,CAAC;AAClG,YAAY,EAAE,sBAAsB,EAAE,MAAM,uDAAuD,CAAC;AACpG,YAAY,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC"}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
// Copyright (c) Mapbox, Inc.
|
|
3
3
|
// Licensed under the MIT License.
|
|
4
4
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
|
-
exports.buildServerInstructions = exports.toJsonSchema2020 = exports.publishJsonSchema2020 = exports.getVersionInfo = exports.redactToken = exports.RedactingSpanExporter = exports.TracingPolicy = exports.RetryPolicy = exports.UserAgentPolicy = exports.HttpPipeline = exports.systemHttpPipeline = exports.httpRequest = void 0;
|
|
5
|
+
exports.buildDirectionsRequestUrl = exports.isSelfFetchRef = exports.resolveSelfFetchRef = exports.directionsRequestFromRef = exports.buildServerInstructions = exports.toJsonSchema2020 = exports.publishJsonSchema2020 = exports.getVersionInfo = exports.redactToken = exports.RedactingSpanExporter = exports.TracingPolicy = exports.RetryPolicy = exports.UserAgentPolicy = exports.HttpPipeline = exports.systemHttpPipeline = exports.httpRequest = void 0;
|
|
6
6
|
/**
|
|
7
7
|
* @module utils
|
|
8
8
|
*
|
|
@@ -61,4 +61,17 @@ Object.defineProperty(exports, "publishJsonSchema2020", { enumerable: true, get:
|
|
|
61
61
|
Object.defineProperty(exports, "toJsonSchema2020", { enumerable: true, get: function () { return jsonSchema2020_js_1.toJsonSchema2020; } });
|
|
62
62
|
var serverInstructions_js_1 = require("./serverInstructions.js");
|
|
63
63
|
Object.defineProperty(exports, "buildServerInstructions", { enumerable: true, get: function () { return serverInstructions_js_1.buildServerInstructions; } });
|
|
64
|
+
// Export ref helpers for apps that hand the model a short ref instead of a
|
|
65
|
+
// large result and resolve it themselves. directionsRequestFromRef turns a
|
|
66
|
+
// directions_tool result's structuredContent.mapboxRender.ref into a
|
|
67
|
+
// Directions API URL for the full route.
|
|
68
|
+
var directionsRef_js_1 = require("./directionsRef.js");
|
|
69
|
+
Object.defineProperty(exports, "directionsRequestFromRef", { enumerable: true, get: function () { return directionsRef_js_1.directionsRequestFromRef; } });
|
|
70
|
+
var selfFetchRef_js_1 = require("./selfFetchRef.js");
|
|
71
|
+
Object.defineProperty(exports, "resolveSelfFetchRef", { enumerable: true, get: function () { return selfFetchRef_js_1.resolveSelfFetchRef; } });
|
|
72
|
+
Object.defineProperty(exports, "isSelfFetchRef", { enumerable: true, get: function () { return selfFetchRef_js_1.isSelfFetchRef; } });
|
|
73
|
+
// The Directions URL builder directions_tool and the map preview use, for
|
|
74
|
+
// apps that build their own request from a ref's params.
|
|
75
|
+
var buildDirectionsRequestUrl_js_1 = require("../tools/directions-tool/buildDirectionsRequestUrl.js");
|
|
76
|
+
Object.defineProperty(exports, "buildDirectionsRequestUrl", { enumerable: true, get: function () { return buildDirectionsRequestUrl_js_1.buildDirectionsRequestUrl; } });
|
|
64
77
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":";AAAA,6BAA6B;AAC7B,kCAAkC;;;AAElC;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,kDAAkD;AAClD,qDAAoE;AAA3D,8GAAA,WAAW,OAAA;AAAE,qHAAA,kBAAkB,OAAA;AAExC,mEAAmE;AACnE,qDAM2B;AALzB,+GAAA,YAAY,OAAA;AACZ,kHAAA,eAAe,OAAA;AACf,8GAAA,WAAW,OAAA;AACX,gHAAA,aAAa,OAAA;AAOf,8EAA8E;AAC9E,iFAAiF;AACjF,0EAA0E;AAC1E,uEAAmE;AAA1D,iIAAA,qBAAqB,OAAA;AAC9B,mDAA+C;AAAtC,6GAAA,WAAW,OAAA;AAEpB,2BAA2B;AAC3B,qDAAmD;AAA1C,iHAAA,cAAc,OAAA;AAGvB,yEAAyE;AACzE,6EAA6E;AAC7E,0EAA0E;AAC1E,8EAA8E;AAC9E,yDAA8E;AAArE,0HAAA,qBAAqB,OAAA;AAAE,qHAAA,gBAAgB,OAAA;AAChD,iEAAkE;AAAzD,gIAAA,uBAAuB,OAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":";AAAA,6BAA6B;AAC7B,kCAAkC;;;AAElC;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,kDAAkD;AAClD,qDAAoE;AAA3D,8GAAA,WAAW,OAAA;AAAE,qHAAA,kBAAkB,OAAA;AAExC,mEAAmE;AACnE,qDAM2B;AALzB,+GAAA,YAAY,OAAA;AACZ,kHAAA,eAAe,OAAA;AACf,8GAAA,WAAW,OAAA;AACX,gHAAA,aAAa,OAAA;AAOf,8EAA8E;AAC9E,iFAAiF;AACjF,0EAA0E;AAC1E,uEAAmE;AAA1D,iIAAA,qBAAqB,OAAA;AAC9B,mDAA+C;AAAtC,6GAAA,WAAW,OAAA;AAEpB,2BAA2B;AAC3B,qDAAmD;AAA1C,iHAAA,cAAc,OAAA;AAGvB,yEAAyE;AACzE,6EAA6E;AAC7E,0EAA0E;AAC1E,8EAA8E;AAC9E,yDAA8E;AAArE,0HAAA,qBAAqB,OAAA;AAAE,qHAAA,gBAAgB,OAAA;AAChD,iEAAkE;AAAzD,gIAAA,uBAAuB,OAAA;AAEhC,2EAA2E;AAC3E,2EAA2E;AAC3E,qEAAqE;AACrE,yCAAyC;AACzC,uDAA8D;AAArD,4HAAA,wBAAwB,OAAA;AAEjC,qDAAwE;AAA/D,sHAAA,mBAAmB,OAAA;AAAE,iHAAA,cAAc,OAAA;AAC5C,0EAA0E;AAC1E,yDAAyD;AACzD,sGAAkG;AAAzF,yIAAA,yBAAyB,OAAA"}
|
|
@@ -114,6 +114,23 @@ export interface MapAppMarker {
|
|
|
114
114
|
color?: string;
|
|
115
115
|
/** Popup text (optional). */
|
|
116
116
|
popup?: string;
|
|
117
|
+
/**
|
|
118
|
+
* A Mapbox POI's `mapbox_id` (e.g. the "Mapbox ID" field printed by
|
|
119
|
+
* category_search_tool/search_and_geocode_tool's text output, or a
|
|
120
|
+
* self-fetched search result's own id). Setting this gets the marker a
|
|
121
|
+
* row in the map's results side panel, which the iframe then enriches
|
|
122
|
+
* with a popularity score and photo via a batched Place Details lookup
|
|
123
|
+
* (see mapAppHtml.ts's maybeShowSidePanel/fetchPlaceDetailsBatch) — the
|
|
124
|
+
* same panel search/category-search results already get automatically,
|
|
125
|
+
* now also available for hand-composed markers.
|
|
126
|
+
*/
|
|
127
|
+
id?: string;
|
|
128
|
+
/** Display name for the side panel row. Only used when `id` is also set; falls back to "Result N" if omitted. */
|
|
129
|
+
name?: string;
|
|
130
|
+
/** Category shown in the side panel row (e.g. "Coffee Shop"). Only used when `id` is also set. */
|
|
131
|
+
category?: string;
|
|
132
|
+
/** Distance in meters, shown in the side panel row. Only used when `id` is also set. */
|
|
133
|
+
distanceMeters?: number;
|
|
117
134
|
}
|
|
118
135
|
export interface MapAppLegendEntry {
|
|
119
136
|
label: string;
|
|
@@ -226,6 +243,10 @@ export declare const MapAppPayloadSchema: z.ZodObject<{
|
|
|
226
243
|
label: z.ZodOptional<z.ZodString>;
|
|
227
244
|
color: z.ZodOptional<z.ZodString>;
|
|
228
245
|
popup: z.ZodOptional<z.ZodString>;
|
|
246
|
+
id: z.ZodOptional<z.ZodString>;
|
|
247
|
+
name: z.ZodOptional<z.ZodString>;
|
|
248
|
+
category: z.ZodOptional<z.ZodString>;
|
|
249
|
+
distanceMeters: z.ZodOptional<z.ZodNumber>;
|
|
229
250
|
}, z.core.$strip>>>;
|
|
230
251
|
legend: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
231
252
|
label: z.ZodString;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mapAppPayload.d.ts","sourceRoot":"","sources":["../../../src/utils/mapAppPayload.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"mapAppPayload.d.ts","sourceRoot":"","sources":["../../../src/utils/mapAppPayload.ts"],"names":[],"mappings":"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"}
|
|
@@ -70,7 +70,11 @@ const MapAppMarkerSchema = zod_1.z.object({
|
|
|
70
70
|
style: zod_1.z.enum(['pin', 'numbered', 'start', 'end']).optional(),
|
|
71
71
|
label: zod_1.z.string().optional(),
|
|
72
72
|
color: zod_1.z.string().optional(),
|
|
73
|
-
popup: zod_1.z.string().optional()
|
|
73
|
+
popup: zod_1.z.string().optional(),
|
|
74
|
+
id: zod_1.z.string().optional(),
|
|
75
|
+
name: zod_1.z.string().optional(),
|
|
76
|
+
category: zod_1.z.string().optional(),
|
|
77
|
+
distanceMeters: zod_1.z.number().optional()
|
|
74
78
|
});
|
|
75
79
|
const MapAppLegendEntrySchema = zod_1.z.object({
|
|
76
80
|
label: zod_1.z.string(),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mapAppPayload.js","sourceRoot":"","sources":["../../../src/utils/mapAppPayload.ts"],"names":[],"mappings":";AAAA,6BAA6B;AAC7B,kCAAkC;;;
|
|
1
|
+
{"version":3,"file":"mapAppPayload.js","sourceRoot":"","sources":["../../../src/utils/mapAppPayload.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/** Tools whose full response can be read back through a response ref. */
|
|
2
|
+
declare const RESPONSE_TOOLS: readonly ["directions", "isochrone"];
|
|
3
|
+
export type ResponseTool = (typeof RESPONSE_TOOLS)[number];
|
|
4
|
+
export interface ResponseRefSpec {
|
|
5
|
+
tool: ResponseTool;
|
|
6
|
+
/** The tool's own validated input. */
|
|
7
|
+
input: Record<string, unknown>;
|
|
8
|
+
/** Directions only: the route the user picked among alternatives. */
|
|
9
|
+
selectedRouteIndex?: number;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Builds a short ref for a tool's full response, for when the response is
|
|
13
|
+
* too large to return inline.
|
|
14
|
+
*
|
|
15
|
+
* The ref carries the call's inputs, not its response (base64 in the URI),
|
|
16
|
+
* and reading it (ToolResponseResource) runs the request again. That keeps
|
|
17
|
+
* it a few hundred bytes, so the summary the model sees stays small, and it
|
|
18
|
+
* needs no server-side storage: the hosted deployment runs several
|
|
19
|
+
* stateless tasks with no session stickiness, so a `mapbox://temp/` ref
|
|
20
|
+
* stored in one task's memory was "not found" whenever the follow-up read
|
|
21
|
+
* landed on another. The tradeoff is a second API request on read, which
|
|
22
|
+
* with live traffic can differ slightly from the original response.
|
|
23
|
+
*/
|
|
24
|
+
export declare function buildResponseRef(spec: ResponseRefSpec): string;
|
|
25
|
+
export declare function isResponseRef(uri: string): boolean;
|
|
26
|
+
/**
|
|
27
|
+
* Unwraps a `mapbox://response/...` ref. Returns null if it isn't one,
|
|
28
|
+
* names an unknown tool, or doesn't decode. The input still needs
|
|
29
|
+
* validating against the tool's schema before use.
|
|
30
|
+
*/
|
|
31
|
+
export declare function resolveResponseRef(uri: string): ResponseRefSpec | null;
|
|
32
|
+
export {};
|
|
33
|
+
//# sourceMappingURL=responseRef.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"responseRef.d.ts","sourceRoot":"","sources":["../../../src/utils/responseRef.ts"],"names":[],"mappings":"AAKA,yEAAyE;AACzE,QAAA,MAAM,cAAc,sCAAuC,CAAC;AAC5D,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC;AAE3D,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,YAAY,CAAC;IACnB,sCAAsC;IACtC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,qEAAqE;IACrE,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,eAAe,GAAG,MAAM,CAS9D;AAED,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAElD;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI,CAgCtE"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Copyright (c) Mapbox, Inc.
|
|
3
|
+
// Licensed under the MIT License.
|
|
4
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
|
+
exports.buildResponseRef = buildResponseRef;
|
|
6
|
+
exports.isResponseRef = isResponseRef;
|
|
7
|
+
exports.resolveResponseRef = resolveResponseRef;
|
|
8
|
+
const RESPONSE_URI_PREFIX = 'mapbox://response/';
|
|
9
|
+
/** Tools whose full response can be read back through a response ref. */
|
|
10
|
+
const RESPONSE_TOOLS = ['directions', 'isochrone'];
|
|
11
|
+
/**
|
|
12
|
+
* Builds a short ref for a tool's full response, for when the response is
|
|
13
|
+
* too large to return inline.
|
|
14
|
+
*
|
|
15
|
+
* The ref carries the call's inputs, not its response (base64 in the URI),
|
|
16
|
+
* and reading it (ToolResponseResource) runs the request again. That keeps
|
|
17
|
+
* it a few hundred bytes, so the summary the model sees stays small, and it
|
|
18
|
+
* needs no server-side storage: the hosted deployment runs several
|
|
19
|
+
* stateless tasks with no session stickiness, so a `mapbox://temp/` ref
|
|
20
|
+
* stored in one task's memory was "not found" whenever the follow-up read
|
|
21
|
+
* landed on another. The tradeoff is a second API request on read, which
|
|
22
|
+
* with live traffic can differ slightly from the original response.
|
|
23
|
+
*/
|
|
24
|
+
function buildResponseRef(spec) {
|
|
25
|
+
const data = Buffer.from(JSON.stringify({
|
|
26
|
+
input: spec.input,
|
|
27
|
+
selectedRouteIndex: spec.selectedRouteIndex
|
|
28
|
+
}), 'utf8').toString('base64url');
|
|
29
|
+
return `${RESPONSE_URI_PREFIX}${spec.tool}?data=${data}`;
|
|
30
|
+
}
|
|
31
|
+
function isResponseRef(uri) {
|
|
32
|
+
return uri.startsWith(RESPONSE_URI_PREFIX);
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Unwraps a `mapbox://response/...` ref. Returns null if it isn't one,
|
|
36
|
+
* names an unknown tool, or doesn't decode. The input still needs
|
|
37
|
+
* validating against the tool's schema before use.
|
|
38
|
+
*/
|
|
39
|
+
function resolveResponseRef(uri) {
|
|
40
|
+
if (!isResponseRef(uri))
|
|
41
|
+
return null;
|
|
42
|
+
let tool;
|
|
43
|
+
let encoded;
|
|
44
|
+
try {
|
|
45
|
+
const parsed = new URL(uri);
|
|
46
|
+
tool = parsed.pathname.replace(/^\//, '');
|
|
47
|
+
encoded = parsed.searchParams.get('data');
|
|
48
|
+
}
|
|
49
|
+
catch {
|
|
50
|
+
return null;
|
|
51
|
+
}
|
|
52
|
+
if (!encoded || !RESPONSE_TOOLS.includes(tool))
|
|
53
|
+
return null;
|
|
54
|
+
let decoded;
|
|
55
|
+
try {
|
|
56
|
+
decoded = JSON.parse(Buffer.from(encoded, 'base64url').toString('utf8'));
|
|
57
|
+
}
|
|
58
|
+
catch {
|
|
59
|
+
return null;
|
|
60
|
+
}
|
|
61
|
+
if (!decoded || typeof decoded.input !== 'object' || !decoded.input) {
|
|
62
|
+
return null;
|
|
63
|
+
}
|
|
64
|
+
const index = decoded.selectedRouteIndex;
|
|
65
|
+
return {
|
|
66
|
+
tool: tool,
|
|
67
|
+
input: decoded.input,
|
|
68
|
+
selectedRouteIndex: Number.isInteger(index) && index >= 0
|
|
69
|
+
? index
|
|
70
|
+
: undefined
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=responseRef.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"responseRef.js","sourceRoot":"","sources":["../../../src/utils/responseRef.ts"],"names":[],"mappings":";AAAA,6BAA6B;AAC7B,kCAAkC;;AA6BlC,4CASC;AAED,sCAEC;AAOD,gDAgCC;AA/ED,MAAM,mBAAmB,GAAG,oBAAoB,CAAC;AAEjD,yEAAyE;AACzE,MAAM,cAAc,GAAG,CAAC,YAAY,EAAE,WAAW,CAAU,CAAC;AAW5D;;;;;;;;;;;;GAYG;AACH,SAAgB,gBAAgB,CAAC,IAAqB;IACpD,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CACtB,IAAI,CAAC,SAAS,CAAC;QACb,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,kBAAkB,EAAE,IAAI,CAAC,kBAAkB;KAC5C,CAAC,EACF,MAAM,CACP,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;IACxB,OAAO,GAAG,mBAAmB,GAAG,IAAI,CAAC,IAAI,SAAS,IAAI,EAAE,CAAC;AAC3D,CAAC;AAED,SAAgB,aAAa,CAAC,GAAW;IACvC,OAAO,GAAG,CAAC,UAAU,CAAC,mBAAmB,CAAC,CAAC;AAC7C,CAAC;AAED;;;;GAIG;AACH,SAAgB,kBAAkB,CAAC,GAAW;IAC5C,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IAErC,IAAI,IAAY,CAAC;IACjB,IAAI,OAAsB,CAAC;IAC3B,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;QAC5B,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAC1C,OAAO,GAAG,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC5C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,CAAC,OAAO,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,IAAoB,CAAC;QAAE,OAAO,IAAI,CAAC;IAE5E,IAAI,OAA0D,CAAC;IAC/D,IAAI,CAAC;QACH,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;IAC3E,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,CAAC,KAAK,KAAK,QAAQ,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QACpE,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,KAAK,GAAG,OAAO,CAAC,kBAAkB,CAAC;IACzC,OAAO;QACL,IAAI,EAAE,IAAoB;QAC1B,KAAK,EAAE,OAAO,CAAC,KAAgC;QAC/C,kBAAkB,EAChB,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAK,KAAgB,IAAI,CAAC;YAC/C,CAAC,CAAE,KAAgB;YACnB,CAAC,CAAC,SAAS;KAChB,CAAC;AACJ,CAAC"}
|
|
@@ -5,8 +5,8 @@
|
|
|
5
5
|
* names until the model loads a tool, so tool descriptions can't steer
|
|
6
6
|
* which tool gets picked — e.g. a model asked to "show a map" loaded
|
|
7
7
|
* static_map_image_tool because of its name and never saw
|
|
8
|
-
* render_map_tool's
|
|
9
|
-
*
|
|
8
|
+
* render_map_tool's description. Server instructions are shown up front,
|
|
9
|
+
* so the routing rule lives here.
|
|
10
10
|
*/
|
|
11
11
|
export declare function buildServerInstructions(enabledToolNames: readonly string[]): string | undefined;
|
|
12
12
|
//# sourceMappingURL=serverInstructions.d.ts.map
|
|
@@ -10,8 +10,8 @@ exports.buildServerInstructions = buildServerInstructions;
|
|
|
10
10
|
* names until the model loads a tool, so tool descriptions can't steer
|
|
11
11
|
* which tool gets picked — e.g. a model asked to "show a map" loaded
|
|
12
12
|
* static_map_image_tool because of its name and never saw
|
|
13
|
-
* render_map_tool's
|
|
14
|
-
*
|
|
13
|
+
* render_map_tool's description. Server instructions are shown up front,
|
|
14
|
+
* so the routing rule lives here.
|
|
15
15
|
*/
|
|
16
16
|
function buildServerInstructions(enabledToolNames) {
|
|
17
17
|
if (!enabledToolNames.includes('render_map_tool'))
|
|
@@ -90,7 +90,7 @@ function buildMapboxRenderField(ref, payload) {
|
|
|
90
90
|
* URI — including the literal string in the visible text fixes that.)
|
|
91
91
|
*/
|
|
92
92
|
function renderHint(ref) {
|
|
93
|
-
return (`\n\
|
|
93
|
+
return (`\n\nIf the user wants to see this on a map, pass this ref unchanged to render_map_tool (not static_map_image_tool):\n` +
|
|
94
94
|
` render_map_tool({ "payload_refs": ["${ref}"] })`);
|
|
95
95
|
}
|
|
96
96
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"storeMapPayload.js","sourceRoot":"","sources":["../../../src/utils/storeMapPayload.ts"],"names":[],"mappings":";AAAA,6BAA6B;AAC7B,kCAAkC;;;AAoDlC,0CAiBC;AAeD,wDASC;AASD,gCAKC;AAWD,oDASC;AAOD,4CA8BC;AAlKD,6CAAyC;AACzC,6BAAwB;AACxB,+EAAyE;AACzE,+CAAgD;AAGhD,2EAA2E;AAC3E,2EAA2E;AAC3E,uEAAuE;AACvE,4DAA4D;AAC/C,QAAA,wBAAwB,GAAG,EAAE,GAAG,IAAI,CAAC;AAElD;;;;;GAKG;AACU,QAAA,eAAe,GAAG,OAAC;KAC7B,MAAM,CAAC;IACN,GAAG,EAAE,OAAC;SACH,MAAM,EAAE;SACR,QAAQ,CACP,6IAA6I,CAC9I;CACJ,CAAC;KACD,QAAQ,CACP,wHAAwH,CACzH,CAAC;AAIJ,MAAM,eAAe,GAAG,4BAA4B,CAAC;AAErD;;;;;;;;;;;;;;;GAeG;AACH,SAAgB,eAAe,CAC7B,OAAsB,EACtB,KAAc;IAEd,MAAM,EAAE,GAAG,IAAA,wBAAU,GAAE,CAAC;IACxB,MAAM,GAAG,GAAG,GAAG,eAAe,GAAG,EAAE,EAAE,CAAC;IACtC,sEAAsE;IACtE,sEAAsE;IACtE,0BAA0B;IAC1B,sDAAwB,CAAC,MAAM,CAAC;QAC9B,EAAE;QACF,GAAG;QACH,IAAI,EAAE,OAAO;QACb,KAAK;QACL,QAAQ,EAAE,EAAE,QAAQ,EAAE,aAAa,EAAE;KACtC,CAAC,CAAC;IACH,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,SAAgB,sBAAsB,CACpC,GAAW,EACX,OAAsB;IAEtB,MAAM,QAAQ,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,CAAC;IACpE,IAAI,QAAQ,GAAG,gCAAwB,EAAE,CAAC;QACxC,OAAO,EAAE,GAAG,EAAE,CAAC;IACjB,CAAC;IACD,OAAO,EAAE,GAAG,EAAE,GAAG,OAAO,EAAE,CAAC;AAC7B,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,UAAU,CAAC,GAAW;IACpC,OAAO,CACL,
|
|
1
|
+
{"version":3,"file":"storeMapPayload.js","sourceRoot":"","sources":["../../../src/utils/storeMapPayload.ts"],"names":[],"mappings":"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"}
|
|
@@ -32,4 +32,10 @@ export declare function isSafeExternalUrl(rawUrl: string): boolean;
|
|
|
32
32
|
* of the validated URL don't have to re-parse the raw string.
|
|
33
33
|
*/
|
|
34
34
|
export declare function parseSafeExternalUrl(rawUrl: string): URL | null;
|
|
35
|
+
/**
|
|
36
|
+
* True for a plain global unicast IPv4 or IPv6 address, the only kind
|
|
37
|
+
* parseSafeExternalUrl allows as a literal host. Also used to check what a
|
|
38
|
+
* hostname resolves to before fetching it.
|
|
39
|
+
*/
|
|
40
|
+
export declare function isPublicIpAddress(address: string): boolean;
|
|
35
41
|
//# sourceMappingURL=urlSafety.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"urlSafety.d.ts","sourceRoot":"","sources":["../../../src/utils/urlSafety.ts"],"names":[],"mappings":"AAKA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAEzD;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,GAAG,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"urlSafety.d.ts","sourceRoot":"","sources":["../../../src/utils/urlSafety.ts"],"names":[],"mappings":"AAKA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAEzD;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,GAAG,GAAG,IAAI,CA2D/D;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CA4B1D"}
|
|
@@ -7,6 +7,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
7
7
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
8
|
exports.isSafeExternalUrl = isSafeExternalUrl;
|
|
9
9
|
exports.parseSafeExternalUrl = parseSafeExternalUrl;
|
|
10
|
+
exports.isPublicIpAddress = isPublicIpAddress;
|
|
10
11
|
const ipaddr_js_1 = __importDefault(require("ipaddr.js"));
|
|
11
12
|
/**
|
|
12
13
|
* Validates that a URL is safe for server-side fetching by an upstream service
|
|
@@ -95,14 +96,24 @@ function parseSafeExternalUrl(rawUrl) {
|
|
|
95
96
|
if (!ipaddr_js_1.default.isValid(host)) {
|
|
96
97
|
return host.includes('.') ? parsed : null;
|
|
97
98
|
}
|
|
98
|
-
|
|
99
|
+
return isPublicIpAddress(host) ? parsed : null;
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* True for a plain global unicast IPv4 or IPv6 address, the only kind
|
|
103
|
+
* parseSafeExternalUrl allows as a literal host. Also used to check what a
|
|
104
|
+
* hostname resolves to before fetching it.
|
|
105
|
+
*/
|
|
106
|
+
function isPublicIpAddress(address) {
|
|
107
|
+
if (!ipaddr_js_1.default.isValid(address))
|
|
108
|
+
return false;
|
|
109
|
+
const addr = ipaddr_js_1.default.parse(address);
|
|
99
110
|
// Deny by default for both IPv4 and IPv6: only plain global unicast
|
|
100
111
|
// addresses are allowed. Every other named range (private, loopback,
|
|
101
112
|
// link-local, multicast, broadcast, CGNAT, reserved, unique-local, and
|
|
102
113
|
// every IPv4-in-IPv6 transition/translation mechanism) is rejected,
|
|
103
114
|
// regardless of what it does or doesn't embed.
|
|
104
115
|
if (addr.range() !== 'unicast') {
|
|
105
|
-
return
|
|
116
|
+
return false;
|
|
106
117
|
}
|
|
107
118
|
if (addr.kind() === 'ipv6') {
|
|
108
119
|
// ipaddr.js does not classify the deprecated IPv4-compatible form
|
|
@@ -114,9 +125,9 @@ function parseSafeExternalUrl(rawUrl) {
|
|
|
114
125
|
// ranges, so this only affects addresses with a genuine embedded IPv4.)
|
|
115
126
|
const bytes = addr.toByteArray();
|
|
116
127
|
if (bytes.slice(0, 12).every((b) => b === 0)) {
|
|
117
|
-
return
|
|
128
|
+
return false;
|
|
118
129
|
}
|
|
119
130
|
}
|
|
120
|
-
return
|
|
131
|
+
return true;
|
|
121
132
|
}
|
|
122
133
|
//# sourceMappingURL=urlSafety.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"urlSafety.js","sourceRoot":"","sources":["../../../src/utils/urlSafety.ts"],"names":[],"mappings":";AAAA,6BAA6B;AAC7B,kCAAkC;;;;;AAgClC,8CAEC;AAOD,
|
|
1
|
+
{"version":3,"file":"urlSafety.js","sourceRoot":"","sources":["../../../src/utils/urlSafety.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import type { ReadResourceResult } from '@modelcontextprotocol/sdk/types.js';
|
|
2
|
+
import { MapboxApiBasedResource } from '../MapboxApiBasedResource.js';
|
|
3
|
+
import type { HttpRequest } from '../../utils/types.js';
|
|
4
|
+
/**
|
|
5
|
+
* Largest photo the resource returns; bigger ones are treated as missing.
|
|
6
|
+
* Place Details photos are full-size originals: Union Square's ran 100 to
|
|
7
|
+
* 600 KB, so a smaller cap would drop most of them.
|
|
8
|
+
*/
|
|
9
|
+
export declare const MAX_PLACE_PHOTO_BYTES: number;
|
|
10
|
+
/**
|
|
11
|
+
* The cache is shared by everyone using the server process, so it's capped
|
|
12
|
+
* by size (base64, as stored) as well as by entries.
|
|
13
|
+
*/
|
|
14
|
+
export declare const MAX_PLACE_PHOTO_CACHE_BYTES: number;
|
|
15
|
+
/** Resolves a hostname to every address it points at. */
|
|
16
|
+
export type LookupHost = (hostname: string) => Promise<string[]>;
|
|
17
|
+
/**
|
|
18
|
+
* A POI's first Place Details photo, proxied through the server for the map
|
|
19
|
+
* app's results panel.
|
|
20
|
+
*
|
|
21
|
+
* Place Details photos are hosted wherever the business's own site hosts
|
|
22
|
+
* them (Yext, Webflow and so on), so the map app's CSP can't list their
|
|
23
|
+
* hosts, and allowing any https: host would also allow scripts from
|
|
24
|
+
* anywhere. Instead the page reads this resource through the host
|
|
25
|
+
* (`resources/read`) and shows the image as a `data:` URL.
|
|
26
|
+
*
|
|
27
|
+
* The URI carries only a mapbox_id, never a URL: the server looks the place
|
|
28
|
+
* up itself and fetches the photo URL Place Details returns, so the page
|
|
29
|
+
* can't point the server at arbitrary hosts.
|
|
30
|
+
*/
|
|
31
|
+
export declare class PlacePhotoResource extends MapboxApiBasedResource {
|
|
32
|
+
readonly uri = "mapbox://place-photo/{id}";
|
|
33
|
+
readonly name = "Mapbox Place Photo";
|
|
34
|
+
readonly description: string;
|
|
35
|
+
readonly mimeType = "image/jpeg";
|
|
36
|
+
private readonly cache;
|
|
37
|
+
private cacheBytes;
|
|
38
|
+
private readonly lookupHost;
|
|
39
|
+
constructor(params: {
|
|
40
|
+
httpRequest: HttpRequest;
|
|
41
|
+
lookupHost?: LookupHost;
|
|
42
|
+
});
|
|
43
|
+
protected execute(uri: string, accessToken: string): Promise<ReadResourceResult>;
|
|
44
|
+
private getPhoto;
|
|
45
|
+
private evict;
|
|
46
|
+
private fetchPhoto;
|
|
47
|
+
/**
|
|
48
|
+
* https on the default port, a public DNS name (not an IP literal or a
|
|
49
|
+
* local name), and every address it resolves to public, so a bad photo
|
|
50
|
+
* URL in the data can't make the server request something on its own
|
|
51
|
+
* network. The fetch resolves the name again, so a host that changes its
|
|
52
|
+
* answer in between can still get through; the request can't be read
|
|
53
|
+
* back either way (no redirects, image types only).
|
|
54
|
+
*/
|
|
55
|
+
private isPublicPhotoUrl;
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=PlacePhotoResource.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PlacePhotoResource.d.ts","sourceRoot":"","sources":["../../../../src/resources/place-photo/PlacePhotoResource.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AAC7E,OAAO,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AACtE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAQxD;;;;GAIG;AACH,eAAO,MAAM,qBAAqB,QAAc,CAAC;AAEjD;;;GAGG;AACH,eAAO,MAAM,2BAA2B,QAAmB,CAAC;AAoB5D,yDAAyD;AACzD,MAAM,MAAM,UAAU,GAAG,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;AAKjE;;;;;;;;;;;;;GAaG;AACH,qBAAa,kBAAmB,SAAQ,sBAAsB;IAC5D,QAAQ,CAAC,GAAG,+BAAuB;IACnC,QAAQ,CAAC,IAAI,wBAAwB;IACrC,QAAQ,CAAC,WAAW,SAE4B;IAChD,QAAQ,CAAC,QAAQ,gBAAgB;IAEjC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAkC;IACxD,OAAO,CAAC,UAAU,CAAK;IACvB,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAa;gBAE5B,MAAM,EAAE;QAAE,WAAW,EAAE,WAAW,CAAC;QAAC,UAAU,CAAC,EAAE,UAAU,CAAA;KAAE;cAKzD,OAAO,CACrB,GAAG,EAAE,MAAM,EACX,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,kBAAkB,CAAC;YAiBhB,QAAQ;IAyBtB,OAAO,CAAC,KAAK;YAOC,UAAU;IA2CxB;;;;;;;OAOG;YACW,gBAAgB;CAa/B"}
|