@mapbox/mcp-server 0.12.5 → 0.12.7-dev

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.
Files changed (47) hide show
  1. package/dist/commonjs/resources/ui-apps/DirectionsAppUIResource.d.ts +3 -2
  2. package/dist/commonjs/resources/ui-apps/DirectionsAppUIResource.d.ts.map +1 -1
  3. package/dist/commonjs/resources/ui-apps/DirectionsAppUIResource.js +5 -3
  4. package/dist/commonjs/resources/ui-apps/DirectionsAppUIResource.js.map +1 -1
  5. package/dist/commonjs/resources/ui-apps/directionsAppHtml.d.ts +20 -8
  6. package/dist/commonjs/resources/ui-apps/directionsAppHtml.d.ts.map +1 -1
  7. package/dist/commonjs/resources/ui-apps/directionsAppHtml.js +136 -17
  8. package/dist/commonjs/resources/ui-apps/directionsAppHtml.js.map +1 -1
  9. package/dist/commonjs/tools/directions-tool/DirectionsTool.d.ts.map +1 -1
  10. package/dist/commonjs/tools/directions-tool/DirectionsTool.input.schema.d.ts.map +1 -1
  11. package/dist/commonjs/tools/directions-tool/DirectionsTool.input.schema.js +6 -2
  12. package/dist/commonjs/tools/directions-tool/DirectionsTool.input.schema.js.map +1 -1
  13. package/dist/commonjs/tools/directions-tool/DirectionsTool.js +52 -109
  14. package/dist/commonjs/tools/directions-tool/DirectionsTool.js.map +1 -1
  15. package/dist/commonjs/tools/directions-tool/buildDirectionsRequestUrl.d.ts +29 -0
  16. package/dist/commonjs/tools/directions-tool/buildDirectionsRequestUrl.d.ts.map +1 -0
  17. package/dist/commonjs/tools/directions-tool/buildDirectionsRequestUrl.js +63 -0
  18. package/dist/commonjs/tools/directions-tool/buildDirectionsRequestUrl.js.map +1 -0
  19. package/dist/commonjs/utils/mapboxPublicToken.d.ts +6 -4
  20. package/dist/commonjs/utils/mapboxPublicToken.d.ts.map +1 -1
  21. package/dist/commonjs/utils/mapboxPublicToken.js +25 -13
  22. package/dist/commonjs/utils/mapboxPublicToken.js.map +1 -1
  23. package/dist/commonjs/version.json +3 -3
  24. package/dist/esm/resources/ui-apps/DirectionsAppUIResource.d.ts +3 -2
  25. package/dist/esm/resources/ui-apps/DirectionsAppUIResource.d.ts.map +1 -1
  26. package/dist/esm/resources/ui-apps/DirectionsAppUIResource.js +5 -3
  27. package/dist/esm/resources/ui-apps/DirectionsAppUIResource.js.map +1 -1
  28. package/dist/esm/resources/ui-apps/directionsAppHtml.d.ts +20 -8
  29. package/dist/esm/resources/ui-apps/directionsAppHtml.d.ts.map +1 -1
  30. package/dist/esm/resources/ui-apps/directionsAppHtml.js +136 -17
  31. package/dist/esm/resources/ui-apps/directionsAppHtml.js.map +1 -1
  32. package/dist/esm/tools/directions-tool/DirectionsTool.d.ts.map +1 -1
  33. package/dist/esm/tools/directions-tool/DirectionsTool.input.schema.d.ts.map +1 -1
  34. package/dist/esm/tools/directions-tool/DirectionsTool.input.schema.js +6 -2
  35. package/dist/esm/tools/directions-tool/DirectionsTool.input.schema.js.map +1 -1
  36. package/dist/esm/tools/directions-tool/DirectionsTool.js +52 -109
  37. package/dist/esm/tools/directions-tool/DirectionsTool.js.map +1 -1
  38. package/dist/esm/tools/directions-tool/buildDirectionsRequestUrl.d.ts +29 -0
  39. package/dist/esm/tools/directions-tool/buildDirectionsRequestUrl.d.ts.map +1 -0
  40. package/dist/esm/tools/directions-tool/buildDirectionsRequestUrl.js +60 -0
  41. package/dist/esm/tools/directions-tool/buildDirectionsRequestUrl.js.map +1 -0
  42. package/dist/esm/utils/mapboxPublicToken.d.ts +6 -4
  43. package/dist/esm/utils/mapboxPublicToken.d.ts.map +1 -1
  44. package/dist/esm/utils/mapboxPublicToken.js +25 -13
  45. package/dist/esm/utils/mapboxPublicToken.js.map +1 -1
  46. package/dist/esm/version.json +3 -3
  47. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"DirectionsTool.js","sourceRoot":"","sources":["../../../../src/tools/directions-tool/DirectionsTool.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"DirectionsTool.js","sourceRoot":"","sources":["../../../../src/tools/directions-tool/DirectionsTool.ts"],"names":[],"mappings":";AAAA,6BAA6B;AAC7B,kCAAkC;;;AAElC,6CAAsD;AAEtD,2CAAkD;AAClD,oEAA8D;AAE9D,iEAA2D;AAC3D,iFAA2E;AAC3E,qFAAyE;AACzE,uFAG2C;AAE3C,yFAAmF;AACnF,yDAA+D;AAC/D,8DAA4D;AAC5D,2EAA4E;AAC5E,uFAAuF;AAEvF,2DAA2D;AAE3D,MAAa,cAAe,SAAQ,0CAGnC;IACC,IAAI,GAAG,iBAAiB,CAAC;IACzB,WAAW,GACT,yFAAyF;QACzF,6FAA6F;QAC7F,2FAA2F;QAC3F,uFAAuF;QACvF,wFAAwF;QACxF,uCAAuC,CAAC;IAC1C,WAAW,GAAG;QACZ,KAAK,EAAE,iBAAiB;QACxB,YAAY,EAAE,IAAI;QAClB,eAAe,EAAE,KAAK;QACtB,cAAc,EAAE,IAAI;QACpB,aAAa,EAAE,IAAI;KACpB,CAAC;IACO,IAAI,GAAG;QACd,EAAE,EAAE;YACF,WAAW,EAAE,uCAAuC;YACpD,GAAG,EAAE;gBACH,cAAc,EAAE,CAAC,sBAAsB,EAAE,2BAA2B,CAAC;gBACrE,eAAe,EAAE,CAAC,wBAAwB,CAAC;aAC5C;SACF;KACF,CAAC;IAEF,YAAY,MAAoC;QAC9C,KAAK,CAAC;YACJ,WAAW,EAAE,sDAAqB;YAClC,YAAY,EAAE,0DAAwB;YACtC,WAAW,EAAE,MAAM,CAAC,WAAW;SAChC,CAAC,CAAC;IACL,CAAC;IACS,KAAK,CAAC,OAAO,CACrB,KAA4C,EAC5C,WAAmB;QAEnB,gEAAgE;QAChE,mEAAmE;QACnE,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;YAClB,MAAM,gBAAgB,GAAG,CAAC,OAAO,EAAE,iBAAiB,CAAC,CAAC;YACtD,MAAM,qBAAqB,GAAG;gBAC5B,MAAM;gBACN,UAAU;gBACV,SAAS;gBACT,QAAQ;gBACR,gBAAgB;gBAChB,cAAc;aACf,CAAC;YAEF,MAAM,gBAAgB,GACpB,KAAK,CAAC,eAAe,KAAK,wBAAwB;gBAClD,KAAK,CAAC,eAAe,KAAK,gBAAgB,CAAC;YAC7C,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;YAElE,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,6BAA6B;gBAC7B,IACE,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;oBACzB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;oBAClB,CAAC,gBAAgB,EACjB,CAAC;oBACD,OAAO;wBACL,OAAO,EAAE;4BACP;gCACE,IAAI,EAAE,MAAM;gCACZ,IAAI,EAAE,qBAAqB,IAAI,mEAAmE;6BACnG;yBACF;wBACD,OAAO,EAAE,IAAI;qBACd,CAAC;gBACJ,CAAC;gBACD,oCAAoC;qBAC/B,IAAI,qBAAqB,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC;oBACnE,OAAO;wBACL,OAAO,EAAE;4BACP;gCACE,IAAI,EAAE,MAAM;gCACZ,IAAI,EAAE,qBAAqB,IAAI,kEAAkE;6BAClG;yBACF;wBACD,OAAO,EAAE,IAAI;qBACd,CAAC;gBACJ,CAAC;gBACD,6CAA6C;qBACxC,IACH,CAAC,gBAAgB,CAAC,QAAQ,CAAC,IAAI,CAAC;oBAChC,CAAC,qBAAqB,CAAC,QAAQ,CAAC,IAAI,CAAC;oBACrC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAClD,CAAC;oBACD,OAAO;wBACL,OAAO,EAAE;4BACP;gCACE,IAAI,EAAE,MAAM;gCACZ,IAAI,EACF,4BAA4B,IAAI,yBAAyB;oCACzD,4CAA4C;oCAC5C,2MAA2M;6BAC9M;yBACF;wBACD,OAAO,EAAE,IAAI;qBACd,CAAC;gBACJ,CAAC;YACH,CAAC;QACH,CAAC;QAED,MAAM,gBAAgB,GACpB,KAAK,CAAC,eAAe,KAAK,wBAAwB;YAClD,KAAK,CAAC,eAAe,KAAK,gBAAgB,CAAC;QAE7C,wDAAwD;QACxD,IAAI,KAAK,CAAC,SAAS,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACzC,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,wFAAwF;qBAC/F;iBACF;gBACD,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;QAED,6EAA6E;QAC7E,IAAI,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,eAAe,KAAK,gBAAgB,EAAE,CAAC;YAClE,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,qEAAqE;qBAC5E;iBACF;gBACD,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;QAED,8DAA8D;QAC9D,IAAI,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;YACvC,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,oFAAoF;qBAC3F;iBACF;gBACD,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;QAED,4EAA4E;QAC5E,IACE,CAAC,KAAK,CAAC,UAAU,KAAK,SAAS;YAC7B,KAAK,CAAC,SAAS,KAAK,SAAS;YAC7B,KAAK,CAAC,UAAU,KAAK,SAAS,CAAC;YACjC,CAAC,gBAAgB,EACjB,CAAC;YACD,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,kIAAkI;qBACzI;iBACF;gBACD,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;QAED,MAAM,GAAG,GAAG,IAAA,wDAAyB,EAAC;YACpC,KAAK;YACL,WAAW;YACX,WAAW,EAAE,0CAAkB,CAAC,iBAAiB;SAClD,CAAC,CAAC;QAEH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QAE7C,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;YAC1D,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,yBAAyB,YAAY,EAAE;qBAC9C;iBACF;gBACD,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;QAED,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAuB,CAAC;QAC3D,MAAM,WAAW,GAAG,IAAA,wCAAiB,EAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAEnD,gDAAgD;QAChD,IAAI,aAAiC,CAAC;QACtC,IAAI,CAAC;YACH,aAAa,GAAG,0DAAwB,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QAC9D,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,sDAAsD;YACtD,IAAI,CAAC,GAAG,CACN,SAAS,EACT,+CAA+C,KAAK,EAAE,CACvD,CAAC;YACF,aAAa,GAAG,WAAiC,CAAC;QACpD,CAAC;QAED,IAAI,eAA8D,CAAC;QACnE,IAAI,IAAA,8BAAc,GAAE,EAAE,CAAC;YACrB,MAAM,UAAU,GAAG,MAAM,qBAAqB,CAC5C,KAAK,EACL,WAAW,EACX,IAAI,CAAC,WAAW,CACjB,CAAC;YACF,IAAI,UAAU,EAAE,CAAC;gBACf,eAAe,GAAG,IAAA,yBAAgB,EAAC;oBACjC,GAAG,EAAE,0BAA0B,IAAA,wBAAU,GAAE,EAAE;oBAC7C,OAAO,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE;oBACpD,QAAQ,EAAE,MAAM;oBAChB,UAAU,EAAE;wBACV,sBAAsB,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC;qBAC1C;iBACF,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,kEAAkE;QAClE,MAAM,uBAAuB,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,OAAO;QAClD,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QAC5D,MAAM,YAAY,GAAG,YAAY,CAAC,MAAM,CAAC;QAEzC,IAAI,YAAY,GAAG,uBAAuB,EAAE,CAAC;YAC3C,+CAA+C;YAC/C,MAAM,UAAU,GAAG,IAAA,yBAAW,EAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YACnD,MAAM,WAAW,GAAG,4BAA4B,UAAU,EAAE,CAAC;YAE7D,sDAAwB,CAAC,MAAM,CAAC;gBAC9B,EAAE,EAAE,UAAU;gBACd,GAAG,EAAE,WAAW;gBAChB,IAAI,EAAE,aAAa;gBACnB,QAAQ,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE;gBACrD,KAAK,EAAE,IAAA,kCAAoB,EAAC,WAAW,CAAC;aACzC,CAAC,CAAC;YAEH,8BAA8B;YAC9B,MAAM,KAAK,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;YACxC,MAAM,QAAQ,GAAG,KAAK,EAAE,QAAQ;gBAC9B,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,GAAG,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ;gBAClD,CAAC,CAAC,SAAS,CAAC;YACd,MAAM,QAAQ,GAAG,KAAK,EAAE,QAAQ;gBAC9B,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,GAAG,EAAE,CAAC,UAAU;gBAC9C,CAAC,CAAC,SAAS,CAAC;YACd,MAAM,aAAa,GAAG,aAAa,CAAC,SAAS,EAAE,MAAM,IAAI,CAAC,CAAC;YAE3D,MAAM,WAAW,GAAG,gBAAgB,QAAQ,KAAK,QAAQ;;aAElD,aAAa;EACxB,YAAY,GAAG,uBAAuB,CAAC,CAAC,CAAC,uBAAuB,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC,wGAAwG,WAAW,4HAA4H,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;YAElV,4EAA4E;YAC5E,MAAM,wBAAwB,GAAG;gBAC/B,GAAG,aAAa;gBAChB,MAAM,EAAE,aAAa,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;oBAC5C,QAAQ,EAAE,KAAK,CAAC,QAAQ;oBACxB,QAAQ,EAAE,KAAK,CAAC,QAAQ;oBACxB,gBAAgB,EAAE,KAAK,CAAC,gBAAgB;oBACxC,cAAc,EAAE,KAAK,CAAC,cAAc;oBACpC,aAAa,EAAE,KAAK,CAAC,aAAa;oBAClC,mBAAmB,EAAE,KAAK,CAAC,mBAAmB;oBAC9C,qBAAqB,EAAE,KAAK,CAAC,qBAAqB;oBAClD,iBAAiB,EAAE,KAAK,CAAC,iBAAiB;oBAC1C,QAAQ,EAAE,KAAK,CAAC,QAAQ;oBACxB,sBAAsB,EAAE,KAAK,CAAC,sBAAsB;oBACpD,iBAAiB,EAAE,KAAK,CAAC,iBAAiB;oBAC1C,gDAAgD;oBAChD,QAAQ,EAAE,SAAS;oBACnB,IAAI,EAAE,SAAS;iBAChB,CAAC,CAAC;aACJ,CAAC;YAEF,MAAM,OAAO,GAA8B;gBACzC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE;aACpC,CAAC;YACF,IAAI,eAAe;gBAAE,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;YAEnD,OAAO;gBACL,OAAO;gBACP,iBAAiB,EAAE,wBAAwB;gBAC3C,OAAO,EAAE,KAAK;aACf,CAAC;QACJ,CAAC;QAED,mCAAmC;QACnC,MAAM,OAAO,GAA8B;YACzC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE;SACrC,CAAC;QACF,IAAI,eAAe;YAAE,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAEnD,OAAO;YACL,OAAO;YACP,iBAAiB,EAAE,aAAa;YAChC,OAAO,EAAE,KAAK;SACf,CAAC;IACJ,CAAC;CACF;AAhTD,wCAgTC;AAED;;;;;;;GAOG;AACH,KAAK,UAAU,qBAAqB,CAClC,KAA4C,EAC5C,WAAmB,EACnB,WAAwB;IAExB,MAAM,WAAW,GAAG,MAAM,IAAA,+CAAwB,EAAC;QACjD,WAAW;QACX,WAAW,EAAE,0CAAkB,CAAC,iBAAiB;QACjD,WAAW;KACZ,CAAC,CAAC;IACH,IAAI,CAAC,WAAW;QAAE,OAAO,SAAS,CAAC;IAEnC,OAAO,IAAA,8CAAuB,EAAC;QAC7B,WAAW;QACX,WAAW,EAAE,0CAAkB,CAAC,iBAAiB;QACjD,WAAW,EAAE;YACX,MAAM,EAAE;gBACN,WAAW,EAAE,KAAK,CAAC,WAAW;gBAC9B,eAAe,EAAE,KAAK,CAAC,eAAe;gBACtC,YAAY,EAAE,KAAK,CAAC,YAAY;gBAChC,OAAO,EAAE,KAAK,CAAC,OAAO;gBACtB,SAAS,EAAE,KAAK,CAAC,SAAS;gBAC1B,SAAS,EAAE,KAAK,CAAC,SAAS;gBAC1B,UAAU,EAAE,KAAK,CAAC,UAAU;gBAC5B,SAAS,EAAE,KAAK,CAAC,SAAS;gBAC1B,UAAU,EAAE,KAAK,CAAC,UAAU;aAC7B;SACF;KACF,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,29 @@
1
+ export interface DirectionsRequestInput {
2
+ coordinates: {
3
+ longitude: number;
4
+ latitude: number;
5
+ }[];
6
+ routing_profile: string;
7
+ geometries: 'none' | 'geojson';
8
+ alternatives: boolean;
9
+ exclude?: string;
10
+ depart_at?: string;
11
+ arrive_by?: string;
12
+ max_height?: number;
13
+ max_width?: number;
14
+ max_weight?: number;
15
+ }
16
+ /**
17
+ * Build the Mapbox Directions v5 request URL for a given input. Shared by
18
+ * DirectionsTool.execute() (server-side) and hand-mirrored by the
19
+ * self-fetching map preview iframe (directionsAppHtml.ts) — the parity test
20
+ * in test/tools/directions-tool/directionsUrlParity.test.ts keeps the two
21
+ * implementations in sync.
22
+ */
23
+ export declare function buildDirectionsRequestUrl(params: {
24
+ input: DirectionsRequestInput;
25
+ accessToken: string;
26
+ apiEndpoint: string;
27
+ geometriesOverride?: 'none' | 'geojson';
28
+ }): string;
29
+ //# sourceMappingURL=buildDirectionsRequestUrl.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"buildDirectionsRequestUrl.d.ts","sourceRoot":"","sources":["../../../../src/tools/directions-tool/buildDirectionsRequestUrl.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,sBAAsB;IACrC,WAAW,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACvD,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,YAAY,EAAE,OAAO,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAUD;;;;;;GAMG;AACH,wBAAgB,yBAAyB,CAAC,MAAM,EAAE;IAChD,KAAK,EAAE,sBAAsB,CAAC;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,kBAAkB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACzC,GAAG,MAAM,CA+CT"}
@@ -0,0 +1,63 @@
1
+ "use strict";
2
+ // Copyright (c) Mapbox, Inc.
3
+ // Licensed under the MIT License.
4
+ Object.defineProperty(exports, "__esModule", { value: true });
5
+ exports.buildDirectionsRequestUrl = buildDirectionsRequestUrl;
6
+ const dateUtils_js_1 = require("../../utils/dateUtils.js");
7
+ function encodeExclude(value) {
8
+ return value
9
+ .replace(/,/g, '%2C')
10
+ .replace(/\(/g, '%28')
11
+ .replace(/\)/g, '%29')
12
+ .replace(/ /g, '%20');
13
+ }
14
+ /**
15
+ * Build the Mapbox Directions v5 request URL for a given input. Shared by
16
+ * DirectionsTool.execute() (server-side) and hand-mirrored by the
17
+ * self-fetching map preview iframe (directionsAppHtml.ts) — the parity test
18
+ * in test/tools/directions-tool/directionsUrlParity.test.ts keeps the two
19
+ * implementations in sync.
20
+ */
21
+ function buildDirectionsRequestUrl(params) {
22
+ const { input, accessToken, apiEndpoint, geometriesOverride } = params;
23
+ const geometries = geometriesOverride ?? input.geometries;
24
+ const joined = input.coordinates
25
+ .map(({ longitude, latitude }) => `${longitude},${latitude}`)
26
+ .join(';');
27
+ const encodedCoords = encodeURIComponent(joined);
28
+ const queryParams = new URLSearchParams();
29
+ queryParams.append('access_token', accessToken);
30
+ if (geometries !== 'none') {
31
+ queryParams.append('geometries', geometries);
32
+ }
33
+ queryParams.append('alternatives', input.alternatives.toString());
34
+ if (input.routing_profile === 'mapbox/driving-traffic') {
35
+ queryParams.append('annotations', 'distance,congestion,speed');
36
+ }
37
+ else {
38
+ queryParams.append('annotations', 'distance,speed');
39
+ }
40
+ queryParams.append('overview', 'full');
41
+ if (input.depart_at) {
42
+ queryParams.append('depart_at', (0, dateUtils_js_1.formatIsoDateTime)(input.depart_at));
43
+ }
44
+ else if (input.arrive_by) {
45
+ queryParams.append('arrive_by', (0, dateUtils_js_1.formatIsoDateTime)(input.arrive_by));
46
+ }
47
+ if (input.max_height !== undefined) {
48
+ queryParams.append('max_height', input.max_height.toString());
49
+ }
50
+ if (input.max_width !== undefined) {
51
+ queryParams.append('max_width', input.max_width.toString());
52
+ }
53
+ if (input.max_weight !== undefined) {
54
+ queryParams.append('max_weight', input.max_weight.toString());
55
+ }
56
+ queryParams.append('steps', 'true');
57
+ let queryString = queryParams.toString();
58
+ if (input.exclude) {
59
+ queryString += `&exclude=${encodeExclude(input.exclude)}`;
60
+ }
61
+ return `${apiEndpoint}directions/v5/${input.routing_profile}/${encodedCoords}?${queryString}`;
62
+ }
63
+ //# sourceMappingURL=buildDirectionsRequestUrl.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"buildDirectionsRequestUrl.js","sourceRoot":"","sources":["../../../../src/tools/directions-tool/buildDirectionsRequestUrl.ts"],"names":[],"mappings":"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"}
@@ -5,10 +5,12 @@ import type { HttpRequest } from './types.js';
5
5
  *
6
6
  * Resolution order:
7
7
  * 1. If the access token is already a pk.* token, use it directly.
8
- * 2. Reuse a cached pk.* token while it has >5 min TTL remaining.
9
- * 3. If the access token is an sk.* token, call
8
+ * 2. Reuse a cached pk.* token (per-user) while it has >5 min TTL remaining.
9
+ * 3. If the access token is an sk.* or tk.* token, call
10
10
  * GET /tokens/v2/{user}?default=true to fetch the user's default public
11
- * token (requires `tokens:read` scope on the bearer).
11
+ * token (requires `tokens:read` scope on the bearer). OAuth-issued bearers
12
+ * are tk.* temporary tokens, so this is the path exercised in hosted
13
+ * (OAuth) deployments — without it, granting `tokens:read` has no effect.
12
14
  * 4. Fall back to the MAPBOX_PUBLIC_TOKEN env var.
13
15
  *
14
16
  * Returns undefined if none of the above produces a pk.* token.
@@ -19,7 +21,7 @@ export declare function resolveMapboxPublicToken(params: {
19
21
  httpRequest: HttpRequest;
20
22
  }): Promise<string | undefined>;
21
23
  /**
22
- * Reset the cached public token. For tests only.
24
+ * Reset the cached public token(s). For tests only.
23
25
  */
24
26
  export declare function __resetMapboxPublicTokenCache(): void;
25
27
  //# sourceMappingURL=mapboxPublicToken.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"mapboxPublicToken.d.ts","sourceRoot":"","sources":["../../../src/utils/mapboxPublicToken.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAgB9C;;;;;;;;;;;;;GAaG;AACH,wBAAsB,wBAAwB,CAAC,MAAM,EAAE;IACrD,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,WAAW,CAAC;CAC1B,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAkD9B;AAED;;GAEG;AACH,wBAAgB,6BAA6B,IAAI,IAAI,CAEpD"}
1
+ {"version":3,"file":"mapboxPublicToken.d.ts","sourceRoot":"","sources":["../../../src/utils/mapboxPublicToken.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAmB9C;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,wBAAwB,CAAC,MAAM,EAAE;IACrD,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,WAAW,CAAC;CAC1B,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CA2D9B;AAED;;GAEG;AACH,wBAAgB,6BAA6B,IAAI,IAAI,CAEpD"}
@@ -6,17 +6,21 @@ exports.resolveMapboxPublicToken = resolveMapboxPublicToken;
6
6
  exports.__resetMapboxPublicTokenCache = __resetMapboxPublicTokenCache;
7
7
  const jwtUtils_js_1 = require("./jwtUtils.js");
8
8
  const PUBLIC_TOKEN_TTL_MS = 60 * 60 * 1000; // 1h
9
- let cachedPublicToken = null;
9
+ // Keyed by username so that concurrent requests from different accounts
10
+ // never share each other's cached pk.* token.
11
+ const publicTokenCache = new Map();
10
12
  /**
11
13
  * Resolve a public (pk.*) Mapbox token suitable for embedding in client-side
12
14
  * HTML (e.g. an MCP App iframe that initializes Mapbox GL JS).
13
15
  *
14
16
  * Resolution order:
15
17
  * 1. If the access token is already a pk.* token, use it directly.
16
- * 2. Reuse a cached pk.* token while it has >5 min TTL remaining.
17
- * 3. If the access token is an sk.* token, call
18
+ * 2. Reuse a cached pk.* token (per-user) while it has >5 min TTL remaining.
19
+ * 3. If the access token is an sk.* or tk.* token, call
18
20
  * GET /tokens/v2/{user}?default=true to fetch the user's default public
19
- * token (requires `tokens:read` scope on the bearer).
21
+ * token (requires `tokens:read` scope on the bearer). OAuth-issued bearers
22
+ * are tk.* temporary tokens, so this is the path exercised in hosted
23
+ * (OAuth) deployments — without it, granting `tokens:read` has no effect.
20
24
  * 4. Fall back to the MAPBOX_PUBLIC_TOKEN env var.
21
25
  *
22
26
  * Returns undefined if none of the above produces a pk.* token.
@@ -26,13 +30,14 @@ async function resolveMapboxPublicToken(params) {
26
30
  if (accessToken.startsWith('pk.')) {
27
31
  return accessToken;
28
32
  }
29
- const now = Date.now();
30
- if (cachedPublicToken && cachedPublicToken.expiresAt - now > 5 * 60 * 1000) {
31
- return cachedPublicToken.token;
32
- }
33
- if (accessToken.startsWith('sk.')) {
33
+ if (accessToken.startsWith('sk.') || accessToken.startsWith('tk.')) {
34
34
  const username = (0, jwtUtils_js_1.getUserNameFromToken)(accessToken);
35
35
  if (username) {
36
+ const now = Date.now();
37
+ const cached = publicTokenCache.get(username);
38
+ if (cached && cached.expiresAt - now > 5 * 60 * 1000) {
39
+ return cached.token;
40
+ }
36
41
  try {
37
42
  const tokensUrl = new URL(`${apiEndpoint}tokens/v2/${username}`);
38
43
  tokensUrl.searchParams.set('default', 'true');
@@ -45,13 +50,20 @@ async function resolveMapboxPublicToken(params) {
45
50
  : (body?.tokens ?? []);
46
51
  const defaultPk = entries.find((entry) => entry?.usage === 'pk' && typeof entry.token === 'string');
47
52
  if (defaultPk?.token) {
48
- cachedPublicToken = {
53
+ publicTokenCache.set(username, {
49
54
  token: defaultPk.token,
50
55
  expiresAt: now + PUBLIC_TOKEN_TTL_MS
51
- };
56
+ });
52
57
  return defaultPk.token;
53
58
  }
54
59
  }
60
+ else if (response.status === 401 || response.status === 403) {
61
+ // Expected when the bearer lacks the `tokens:read` scope — not an
62
+ // anomaly, so don't warn-log on every such request.
63
+ }
64
+ else {
65
+ console.warn(`resolveMapboxPublicToken: Tokens API returned unexpected HTTP ${response.status}; falling back to MAPBOX_PUBLIC_TOKEN env var`);
66
+ }
55
67
  }
56
68
  catch (err) {
57
69
  // Network failures and JSON parse errors land here. Surface a warning
@@ -65,9 +77,9 @@ async function resolveMapboxPublicToken(params) {
65
77
  return envFallback && envFallback.startsWith('pk.') ? envFallback : undefined;
66
78
  }
67
79
  /**
68
- * Reset the cached public token. For tests only.
80
+ * Reset the cached public token(s). For tests only.
69
81
  */
70
82
  function __resetMapboxPublicTokenCache() {
71
- cachedPublicToken = null;
83
+ publicTokenCache.clear();
72
84
  }
73
85
  //# sourceMappingURL=mapboxPublicToken.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"mapboxPublicToken.js","sourceRoot":"","sources":["../../../src/utils/mapboxPublicToken.ts"],"names":[],"mappings":";AAAA,6BAA6B;AAC7B,kCAAkC;;AAiClC,4DAsDC;AAKD,sEAEC;AA5FD,+CAAqD;AAcrD,MAAM,mBAAmB,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,KAAK;AACjD,IAAI,iBAAiB,GAAuB,IAAI,CAAC;AAEjD;;;;;;;;;;;;;GAaG;AACI,KAAK,UAAU,wBAAwB,CAAC,MAI9C;IACC,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,GAAG,MAAM,CAAC;IAEzD,IAAI,WAAW,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;QAClC,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACvB,IAAI,iBAAiB,IAAI,iBAAiB,CAAC,SAAS,GAAG,GAAG,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,EAAE,CAAC;QAC3E,OAAO,iBAAiB,CAAC,KAAK,CAAC;IACjC,CAAC;IAED,IAAI,WAAW,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;QAClC,MAAM,QAAQ,GAAG,IAAA,kCAAoB,EAAC,WAAW,CAAC,CAAC;QACnD,IAAI,QAAQ,EAAE,CAAC;YACb,IAAI,CAAC;gBACH,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,GAAG,WAAW,aAAa,QAAQ,EAAE,CAAC,CAAC;gBACjE,SAAS,CAAC,YAAY,CAAC,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;gBAC9C,SAAS,CAAC,YAAY,CAAC,GAAG,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC;gBAExD,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC;gBACzD,IAAI,QAAQ,CAAC,EAAE,EAAE,CAAC;oBAChB,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAY,CAAC;oBAChD,MAAM,OAAO,GAAqB,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;wBACnD,CAAC,CAAE,IAAyB;wBAC5B,CAAC,CAAC,CAAE,IAAsC,EAAE,MAAM,IAAI,EAAE,CAAC,CAAC;oBAC5D,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAC5B,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,CAAC,KAAK,KAAK,QAAQ,CACpE,CAAC;oBACF,IAAI,SAAS,EAAE,KAAK,EAAE,CAAC;wBACrB,iBAAiB,GAAG;4BAClB,KAAK,EAAE,SAAS,CAAC,KAAK;4BACtB,SAAS,EAAE,GAAG,GAAG,mBAAmB;yBACrC,CAAC;wBACF,OAAO,SAAS,CAAC,KAAK,CAAC;oBACzB,CAAC;gBACH,CAAC;YACH,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,sEAAsE;gBACtE,sEAAsE;gBACtE,iCAAiC;gBACjC,OAAO,CAAC,IAAI,CACV,kGAAkG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CACrJ,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC;IACpD,OAAO,WAAW,IAAI,WAAW,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC;AAChF,CAAC;AAED;;GAEG;AACH,SAAgB,6BAA6B;IAC3C,iBAAiB,GAAG,IAAI,CAAC;AAC3B,CAAC"}
1
+ {"version":3,"file":"mapboxPublicToken.js","sourceRoot":"","sources":["../../../src/utils/mapboxPublicToken.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  {
2
- "sha": "ceb53a6704aa12985d342ffecd416f6b2baefd07",
3
- "tag": "v0.12.4-1-gceb53a6",
2
+ "sha": "2ed270d66ec380f01160969621355fe9d33b0f5d",
3
+ "tag": "v0.12.6-4-g2ed270d",
4
4
  "branch": "HEAD",
5
- "version": "0.12.5"
5
+ "version": "0.12.7-dev"
6
6
  }
@@ -9,8 +9,9 @@ import type { HttpRequest } from '../../utils/types.js';
9
9
  * event and renders the route from `structuredContent.routes[0]`.
10
10
  *
11
11
  * The legacy MCP-UI pathway (inline `rawHtml` on the tool result) uses the
12
- * same HTML template via `renderDirectionsAppHtml` with geometry baked in at
13
- * tool-execute time.
12
+ * same HTML template via `renderDirectionsAppHtml` with the call's input
13
+ * params baked in at tool-execute time; the iframe self-fetches the route
14
+ * from the Directions API using those params.
14
15
  */
15
16
  export declare class DirectionsAppUIResource extends BaseResource {
16
17
  readonly name = "Directions App UI";
@@ -1 +1 @@
1
- {"version":3,"file":"DirectionsAppUIResource.d.ts","sourceRoot":"","sources":["../../../../src/resources/ui-apps/DirectionsAppUIResource.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,8CAA8C,CAAC;AACxF,OAAO,KAAK,EACV,kBAAkB,EAClB,kBAAkB,EAClB,aAAa,EACd,MAAM,oCAAoC,CAAC;AAE5C,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAIxD;;;;;;;;;GASG;AACH,qBAAa,uBAAwB,SAAQ,YAAY;IACvD,QAAQ,CAAC,IAAI,uBAAuB;IACpC,QAAQ,CAAC,GAAG,2CAA2C;IACvD,QAAQ,CAAC,WAAW,2FACsE;IAC1F,QAAQ,CAAC,QAAQ,+BAAsB;IAEvC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAc;IAC1C,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAe;gBAE/B,MAAM,EAAE;QAClB,WAAW,EAAE,WAAW,CAAC;QACzB,WAAW,CAAC,EAAE,MAAM,MAAM,CAAC;KAC5B;IAQK,IAAI,CACR,IAAI,EAAE,MAAM,EACZ,KAAK,CAAC,EAAE,mBAAmB,CAAC,aAAa,EAAE,kBAAkB,CAAC,GAC7D,OAAO,CAAC,kBAAkB,CAAC;CAuC/B"}
1
+ {"version":3,"file":"DirectionsAppUIResource.d.ts","sourceRoot":"","sources":["../../../../src/resources/ui-apps/DirectionsAppUIResource.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,8CAA8C,CAAC;AACxF,OAAO,KAAK,EACV,kBAAkB,EAClB,kBAAkB,EAClB,aAAa,EACd,MAAM,oCAAoC,CAAC;AAE5C,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAIxD;;;;;;;;;;GAUG;AACH,qBAAa,uBAAwB,SAAQ,YAAY;IACvD,QAAQ,CAAC,IAAI,uBAAuB;IACpC,QAAQ,CAAC,GAAG,2CAA2C;IACvD,QAAQ,CAAC,WAAW,2FACsE;IAC1F,QAAQ,CAAC,QAAQ,+BAAsB;IAEvC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAc;IAC1C,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAe;gBAE/B,MAAM,EAAE;QAClB,WAAW,EAAE,WAAW,CAAC;QACzB,WAAW,CAAC,EAAE,MAAM,MAAM,CAAC;KAC5B;IAQK,IAAI,CACR,IAAI,EAAE,MAAM,EACZ,KAAK,CAAC,EAAE,mBAAmB,CAAC,aAAa,EAAE,kBAAkB,CAAC,GAC7D,OAAO,CAAC,kBAAkB,CAAC;CAwC/B"}
@@ -11,8 +11,9 @@ import { renderDirectionsAppHtml } from './directionsAppHtml.js';
11
11
  * event and renders the route from `structuredContent.routes[0]`.
12
12
  *
13
13
  * The legacy MCP-UI pathway (inline `rawHtml` on the tool result) uses the
14
- * same HTML template via `renderDirectionsAppHtml` with geometry baked in at
15
- * tool-execute time.
14
+ * same HTML template via `renderDirectionsAppHtml` with the call's input
15
+ * params baked in at tool-execute time; the iframe self-fetches the route
16
+ * from the Directions API using those params.
16
17
  */
17
18
  export class DirectionsAppUIResource extends BaseResource {
18
19
  name = 'Directions App UI';
@@ -38,7 +39,8 @@ export class DirectionsAppUIResource extends BaseResource {
38
39
  httpRequest: this.httpRequest
39
40
  });
40
41
  const html = renderDirectionsAppHtml({
41
- publicToken: publicToken ?? ''
42
+ publicToken: publicToken ?? '',
43
+ apiEndpoint: this.apiEndpoint()
42
44
  });
43
45
  return {
44
46
  contents: [
@@ -1 +1 @@
1
- {"version":3,"file":"DirectionsAppUIResource.js","sourceRoot":"","sources":["../../../../src/resources/ui-apps/DirectionsAppUIResource.ts"],"names":[],"mappings":"AAAA,6BAA6B;AAC7B,kCAAkC;AAQlC,OAAO,EAAE,kBAAkB,EAAE,MAAM,uCAAuC,CAAC;AAC3E,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,OAAO,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAC5E,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AAEjE;;;;;;;;;GASG;AACH,MAAM,OAAO,uBAAwB,SAAQ,YAAY;IAC9C,IAAI,GAAG,mBAAmB,CAAC;IAC3B,GAAG,GAAG,uCAAuC,CAAC;IAC9C,WAAW,GAClB,uFAAuF,CAAC;IACjF,QAAQ,GAAG,kBAAkB,CAAC;IAEtB,WAAW,CAAc;IACzB,WAAW,CAAe;IAE3C,YAAY,MAGX;QACC,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;QACtC,IAAI,CAAC,WAAW;YACd,MAAM,CAAC,WAAW;gBAClB,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,mBAAmB,IAAI,yBAAyB,CAAC,CAAC;IACzE,CAAC;IAED,KAAK,CAAC,IAAI,CACR,IAAY,EACZ,KAA8D;QAE9D,MAAM,WAAW,GACd,KAAK,EAAE,QAAQ,EAAE,KAA4B;YAC9C,OAAO,CAAC,GAAG,CAAC,mBAAmB;YAC/B,EAAE,CAAC;QAEL,MAAM,WAAW,GAAG,MAAM,wBAAwB,CAAC;YACjD,WAAW;YACX,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE;YAC/B,WAAW,EAAE,IAAI,CAAC,WAAW;SAC9B,CAAC,CAAC;QAEH,MAAM,IAAI,GAAG,uBAAuB,CAAC;YACnC,WAAW,EAAE,WAAW,IAAI,EAAE;SAC/B,CAAC,CAAC;QAEH,OAAO;YACL,QAAQ,EAAE;gBACR;oBACE,GAAG,EAAE,IAAI,CAAC,GAAG;oBACb,QAAQ,EAAE,kBAAkB;oBAC5B,IAAI,EAAE,IAAI;oBACV,KAAK,EAAE;wBACL,EAAE,EAAE;4BACF,GAAG,EAAE;gCACH,cAAc,EAAE;oCACd,sBAAsB;oCACtB,2BAA2B;iCAC5B;gCACD,eAAe,EAAE,CAAC,wBAAwB,CAAC;gCAC3C,aAAa,EAAE,CAAC,OAAO,CAAC;6BACzB;4BACD,aAAa,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE;yBAC5C;qBACF;iBACF;aACF;SACF,CAAC;IACJ,CAAC;CACF"}
1
+ {"version":3,"file":"DirectionsAppUIResource.js","sourceRoot":"","sources":["../../../../src/resources/ui-apps/DirectionsAppUIResource.ts"],"names":[],"mappings":"AAAA,6BAA6B;AAC7B,kCAAkC;AAQlC,OAAO,EAAE,kBAAkB,EAAE,MAAM,uCAAuC,CAAC;AAC3E,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,OAAO,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAC5E,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AAEjE;;;;;;;;;;GAUG;AACH,MAAM,OAAO,uBAAwB,SAAQ,YAAY;IAC9C,IAAI,GAAG,mBAAmB,CAAC;IAC3B,GAAG,GAAG,uCAAuC,CAAC;IAC9C,WAAW,GAClB,uFAAuF,CAAC;IACjF,QAAQ,GAAG,kBAAkB,CAAC;IAEtB,WAAW,CAAc;IACzB,WAAW,CAAe;IAE3C,YAAY,MAGX;QACC,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;QACtC,IAAI,CAAC,WAAW;YACd,MAAM,CAAC,WAAW;gBAClB,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,mBAAmB,IAAI,yBAAyB,CAAC,CAAC;IACzE,CAAC;IAED,KAAK,CAAC,IAAI,CACR,IAAY,EACZ,KAA8D;QAE9D,MAAM,WAAW,GACd,KAAK,EAAE,QAAQ,EAAE,KAA4B;YAC9C,OAAO,CAAC,GAAG,CAAC,mBAAmB;YAC/B,EAAE,CAAC;QAEL,MAAM,WAAW,GAAG,MAAM,wBAAwB,CAAC;YACjD,WAAW;YACX,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE;YAC/B,WAAW,EAAE,IAAI,CAAC,WAAW;SAC9B,CAAC,CAAC;QAEH,MAAM,IAAI,GAAG,uBAAuB,CAAC;YACnC,WAAW,EAAE,WAAW,IAAI,EAAE;YAC9B,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE;SAChC,CAAC,CAAC;QAEH,OAAO;YACL,QAAQ,EAAE;gBACR;oBACE,GAAG,EAAE,IAAI,CAAC,GAAG;oBACb,QAAQ,EAAE,kBAAkB;oBAC5B,IAAI,EAAE,IAAI;oBACV,KAAK,EAAE;wBACL,EAAE,EAAE;4BACF,GAAG,EAAE;gCACH,cAAc,EAAE;oCACd,sBAAsB;oCACtB,2BAA2B;iCAC5B;gCACD,eAAe,EAAE,CAAC,wBAAwB,CAAC;gCAC3C,aAAa,EAAE,CAAC,OAAO,CAAC;6BACzB;4BACD,aAAa,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE;yBAC5C;qBACF;iBACF;aACF;SACF,CAAC;IACJ,CAAC;CACF"}
@@ -11,22 +11,34 @@
11
11
  *
12
12
  * 2. **Legacy MCP-UI spec** — `directions_tool` inlines a `rawHtml`
13
13
  * UIResource into its content array (gated by `isMcpUiEnabled()`). The
14
- * HTML is generated at tool-execute time with the route geometry already
15
- * baked in as an `initialData` script block, so the iframe renders
16
- * immediately without needing the host to deliver the tool result.
14
+ * HTML is generated at tool-execute time with the call's input params
15
+ * baked in as an `initialData` script block; the iframe uses those params
16
+ * to self-fetch the route from the Directions API, so it never depends on
17
+ * the host delivering the tool result.
17
18
  *
18
19
  * One source of truth for the rendering logic; two slim entry conditions.
19
20
  */
20
21
  export declare const MAPBOX_GL_VERSION = "3.12.0";
22
+ export interface DirectionsAppInitialParams {
23
+ coordinates: {
24
+ longitude: number;
25
+ latitude: number;
26
+ }[];
27
+ routing_profile?: string;
28
+ alternatives?: boolean;
29
+ exclude?: string;
30
+ depart_at?: string;
31
+ arrive_by?: string;
32
+ max_height?: number;
33
+ max_width?: number;
34
+ max_weight?: number;
35
+ }
21
36
  export interface DirectionsAppInitialData {
22
- geometry: {
23
- type: string;
24
- coordinates: [number, number][];
25
- };
26
- summary?: string;
37
+ params: DirectionsAppInitialParams;
27
38
  }
28
39
  export declare function renderDirectionsAppHtml(params: {
29
40
  publicToken: string;
41
+ apiEndpoint: string;
30
42
  glVersion?: string;
31
43
  initialData?: DirectionsAppInitialData;
32
44
  }): string;
@@ -1 +1 @@
1
- {"version":3,"file":"directionsAppHtml.d.ts","sourceRoot":"","sources":["../../../../src/resources/ui-apps/directionsAppHtml.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,eAAO,MAAM,iBAAiB,WAAW,CAAC;AAE1C,MAAM,WAAW,wBAAwB;IACvC,QAAQ,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAA;KAAE,CAAC;IAC5D,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,wBAAgB,uBAAuB,CAAC,MAAM,EAAE;IAC9C,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,wBAAwB,CAAC;CACxC,GAAG,MAAM,CAgbT"}
1
+ {"version":3,"file":"directionsAppHtml.d.ts","sourceRoot":"","sources":["../../../../src/resources/ui-apps/directionsAppHtml.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,eAAO,MAAM,iBAAiB,WAAW,CAAC;AAE1C,MAAM,WAAW,0BAA0B;IACzC,WAAW,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACvD,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,wBAAwB;IACvC,MAAM,EAAE,0BAA0B,CAAC;CACpC;AAED,wBAAgB,uBAAuB,CAAC,MAAM,EAAE;IAC9C,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,wBAAwB,CAAC;CACxC,GAAG,MAAM,CAsiBT"}
@@ -13,15 +13,16 @@
13
13
  *
14
14
  * 2. **Legacy MCP-UI spec** — `directions_tool` inlines a `rawHtml`
15
15
  * UIResource into its content array (gated by `isMcpUiEnabled()`). The
16
- * HTML is generated at tool-execute time with the route geometry already
17
- * baked in as an `initialData` script block, so the iframe renders
18
- * immediately without needing the host to deliver the tool result.
16
+ * HTML is generated at tool-execute time with the call's input params
17
+ * baked in as an `initialData` script block; the iframe uses those params
18
+ * to self-fetch the route from the Directions API, so it never depends on
19
+ * the host delivering the tool result.
19
20
  *
20
21
  * One source of truth for the rendering logic; two slim entry conditions.
21
22
  */
22
23
  export const MAPBOX_GL_VERSION = '3.12.0';
23
24
  export function renderDirectionsAppHtml(params) {
24
- const { publicToken, initialData } = params;
25
+ const { publicToken, apiEndpoint, initialData } = params;
25
26
  const glVersion = params.glVersion ?? MAPBOX_GL_VERSION;
26
27
  const initialDataScript = initialData
27
28
  ? `<script id="initial-data" type="application/json">${escapeForScript(JSON.stringify(initialData))}</script>`
@@ -68,6 +69,7 @@ ${initialDataScript}
68
69
  <script>
69
70
  (function() {
70
71
  var TOKEN = ${JSON.stringify(publicToken)};
72
+ var API_ENDPOINT = ${JSON.stringify(apiEndpoint)};
71
73
 
72
74
  var loadingEl = document.getElementById('loading');
73
75
  var errorEl = document.getElementById('error');
@@ -80,6 +82,117 @@ ${initialDataScript}
80
82
  // Track markers across re-renders so we can remove them before drawing the
81
83
  // next route — otherwise a second tool-result delivery stacks pins.
82
84
  var routeMarkers = [];
85
+ var routeRendered = false;
86
+ var selfFetchStarted = false;
87
+
88
+ // -------------------------------------------------------------------------
89
+ // Self-fetch: build a Directions API request directly from the tool call's
90
+ // input parameters and fetch the route ourselves, so this map never
91
+ // depends on the tool response carrying geometries="geojson".
92
+ //
93
+ // Mirrors src/tools/directions-tool/buildDirectionsRequestUrl.ts — kept in
94
+ // sync by the parity test in
95
+ // test/tools/directions-tool/directionsUrlParity.test.ts. Always forces
96
+ // geometries=geojson regardless of what the tool call itself requested.
97
+ // -------------------------------------------------------------------------
98
+ function formatIsoDateTimeClient(dateTime) {
99
+ var noTzWithSeconds = /^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}$/;
100
+ if (noTzWithSeconds.test(dateTime)) {
101
+ return dateTime.substring(0, dateTime.lastIndexOf(':'));
102
+ }
103
+ return dateTime;
104
+ }
105
+
106
+ function encodeExcludeClient(value) {
107
+ return value
108
+ .replace(/,/g, '%2C')
109
+ .replace(/\\(/g, '%28')
110
+ .replace(/\\)/g, '%29')
111
+ .replace(/ /g, '%20');
112
+ }
113
+
114
+ function buildDirectionsApiUrl(params, publicToken, apiEndpoint) {
115
+ var coords = params.coordinates
116
+ .map(function(c) { return c.longitude + ',' + c.latitude; })
117
+ .join(';');
118
+ var encodedCoords = encodeURIComponent(coords);
119
+ var profile = params.routing_profile || 'mapbox/driving-traffic';
120
+
121
+ var qp = new URLSearchParams();
122
+ qp.append('access_token', publicToken);
123
+ qp.append('geometries', 'geojson');
124
+ qp.append('alternatives', params.alternatives ? 'true' : 'false');
125
+ qp.append(
126
+ 'annotations',
127
+ profile === 'mapbox/driving-traffic'
128
+ ? 'distance,congestion,speed'
129
+ : 'distance,speed'
130
+ );
131
+ qp.append('overview', 'full');
132
+
133
+ if (params.depart_at) {
134
+ qp.append('depart_at', formatIsoDateTimeClient(params.depart_at));
135
+ } else if (params.arrive_by) {
136
+ qp.append('arrive_by', formatIsoDateTimeClient(params.arrive_by));
137
+ }
138
+ if (params.max_height !== undefined && params.max_height !== null) {
139
+ qp.append('max_height', String(params.max_height));
140
+ }
141
+ if (params.max_width !== undefined && params.max_width !== null) {
142
+ qp.append('max_width', String(params.max_width));
143
+ }
144
+ if (params.max_weight !== undefined && params.max_weight !== null) {
145
+ qp.append('max_weight', String(params.max_weight));
146
+ }
147
+ qp.append('steps', 'true');
148
+
149
+ var queryString = qp.toString();
150
+ if (params.exclude) {
151
+ queryString += '&exclude=' + encodeExcludeClient(params.exclude);
152
+ }
153
+
154
+ return apiEndpoint + 'directions/v5/' + profile + '/' + encodedCoords + '?' + queryString;
155
+ }
156
+ // Exposed so the parity test (Node vm sandbox) can call this in isolation.
157
+ window.__buildDirectionsApiUrl = buildDirectionsApiUrl;
158
+
159
+ function fetchRouteFromDirectionsApi(params) {
160
+ if (!TOKEN || !params || !params.coordinates) return;
161
+ selfFetchStarted = true;
162
+ var url = buildDirectionsApiUrl(params, TOKEN, API_ENDPOINT);
163
+ fetch(url)
164
+ .then(function(res) {
165
+ if (!res.ok) {
166
+ return res
167
+ .json()
168
+ .catch(function() { return null; })
169
+ .then(function(body) {
170
+ var msg =
171
+ body && body.message
172
+ ? body.message
173
+ : 'Directions API error (' + res.status + ')';
174
+ throw new Error(msg);
175
+ });
176
+ }
177
+ return res.json();
178
+ })
179
+ .then(function(data) {
180
+ if (routeRendered) return;
181
+ var route = data && data.routes && data.routes[0];
182
+ var picked = route ? pickRouteGeometry(route) : null;
183
+ if (picked) {
184
+ renderRoute(picked);
185
+ } else {
186
+ showError('Directions API returned no route.');
187
+ }
188
+ })
189
+ .catch(function(err) {
190
+ if (routeRendered) return;
191
+ showError(
192
+ 'Could not fetch route: ' + (err && err.message ? err.message : err)
193
+ );
194
+ });
195
+ }
83
196
 
84
197
  // -------------------------------------------------------------------------
85
198
  // MCP App postMessage protocol (skipped silently in MCP-UI rawHtml mode)
@@ -113,6 +226,9 @@ ${initialDataScript}
113
226
  else handlers.resolve(message.result);
114
227
  return;
115
228
  }
229
+ if (message.method === 'ui/notifications/tool-input' && message.params) {
230
+ fetchRouteFromDirectionsApi(message.params.arguments);
231
+ }
116
232
  if (message.method === 'ui/notifications/tool-result' && message.params) {
117
233
  handleToolResult(message.params);
118
234
  }
@@ -176,29 +292,22 @@ ${initialDataScript}
176
292
  initMap();
177
293
 
178
294
  // -------------------------------------------------------------------------
179
- // Initial data path (MCP-UI rawHtml): geometry was baked in server-side.
180
- // Accepts the same geometry shapes as extractRoute (GeoJSON or polyline).
295
+ // Initial data path (MCP-UI rawHtml): the tool call's input params were
296
+ // baked in server-side. Self-fetch the route from the Directions API
297
+ // rather than relying on baked-in geometry from the tool response.
181
298
  // -------------------------------------------------------------------------
182
299
  function consumeInitialData() {
183
300
  var el = document.getElementById('initial-data');
184
301
  if (!el || !el.textContent) return;
185
302
  try {
186
303
  var data = JSON.parse(el.textContent);
187
- if (!data || !data.geometry) return;
188
- // Reuse pickRouteGeometry by wrapping the baked-in payload as a route.
189
- var route = pickRouteGeometry({
190
- geometry: data.geometry,
191
- distance: data.distance,
192
- duration: data.duration
193
- });
194
- if (route) {
195
- if (data.summary) route.summary = data.summary;
196
- drawRoute(route);
197
- }
304
+ if (!data || !data.params) return;
305
+ fetchRouteFromDirectionsApi(data.params);
198
306
  } catch (_) { /* ignore */ }
199
307
  }
200
308
 
201
309
  function handleToolResult(result) {
310
+ if (routeRendered) return;
202
311
  var route = extractRoute(result);
203
312
  if (route) {
204
313
  renderRoute(route);
@@ -214,6 +323,7 @@ ${initialDataScript}
214
323
  loadingEl.textContent = 'Fetching full route…';
215
324
  sendRequest('resources/read', { uri: tempUri }).then(
216
325
  function(rr) {
326
+ if (routeRendered) return;
217
327
  var fetched = readResourceJson(rr);
218
328
  var fetchedRoute = fetched ? extractRoute({ structuredContent: fetched }) : null;
219
329
  if (fetchedRoute) {
@@ -223,16 +333,23 @@ ${initialDataScript}
223
333
  }
224
334
  },
225
335
  function(err) {
336
+ if (routeRendered) return;
226
337
  showError('Could not read temporary resource: ' + (err && err.message ? err.message : err));
227
338
  }
228
339
  );
229
340
  return;
230
341
  }
231
342
 
343
+ // Self-fetch (kicked off by the earlier tool-input notification) is
344
+ // either still in flight or already reported its own error via its
345
+ // .catch() handler — either way, this isn't the right error to show.
346
+ if (selfFetchStarted) return;
347
+
232
348
  showError('Could not find route data in tool result.');
233
349
  }
234
350
 
235
351
  function renderRoute(route) {
352
+ routeRendered = true;
236
353
  if (route.summary) {
237
354
  summaryEl.textContent = route.summary;
238
355
  summaryEl.style.display = 'block';
@@ -388,6 +505,8 @@ ${initialDataScript}
388
505
  return;
389
506
  }
390
507
 
508
+ errorEl.style.display = 'none';
509
+
391
510
  if (route.summary && summaryEl.style.display === 'none') {
392
511
  summaryEl.textContent = route.summary;
393
512
  summaryEl.style.display = 'block';