@ignfab/geocontext 0.9.0 → 0.9.2

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 (62) hide show
  1. package/README.md +51 -22
  2. package/dist/gpf/adminexpress.d.ts +2 -1
  3. package/dist/gpf/adminexpress.js +7 -3
  4. package/dist/gpf/adminexpress.js.map +1 -1
  5. package/dist/gpf/altitude.d.ts +2 -1
  6. package/dist/gpf/altitude.js +13 -19
  7. package/dist/gpf/altitude.js.map +1 -1
  8. package/dist/gpf/geocode.d.ts +3 -1
  9. package/dist/gpf/geocode.js +19 -8
  10. package/dist/gpf/geocode.js.map +1 -1
  11. package/dist/gpf/parcellaire-express.d.ts +2 -1
  12. package/dist/gpf/parcellaire-express.js +8 -4
  13. package/dist/gpf/parcellaire-express.js.map +1 -1
  14. package/dist/gpf/urbanisme.d.ts +4 -2
  15. package/dist/gpf/urbanisme.js +32 -5
  16. package/dist/gpf/urbanisme.js.map +1 -1
  17. package/dist/gpf/wfs.d.ts +5 -3
  18. package/dist/gpf/wfs.js +59 -19
  19. package/dist/gpf/wfs.js.map +1 -1
  20. package/dist/index.js +1 -0
  21. package/dist/index.js.map +1 -1
  22. package/dist/logger.js.map +1 -1
  23. package/dist/resources/WfsCqlFilterResource.d.ts +10 -0
  24. package/dist/resources/WfsCqlFilterResource.js +21 -0
  25. package/dist/resources/WfsCqlFilterResource.js.map +1 -0
  26. package/dist/resources/readMarkdownResource.d.ts +1 -0
  27. package/dist/resources/readMarkdownResource.js +21 -0
  28. package/dist/resources/readMarkdownResource.js.map +1 -0
  29. package/dist/tools/AdminexpressTool.d.ts +58 -15
  30. package/dist/tools/AdminexpressTool.js +33 -13
  31. package/dist/tools/AdminexpressTool.js.map +1 -1
  32. package/dist/tools/AltitudeTool.d.ts +64 -16
  33. package/dist/tools/AltitudeTool.js +30 -12
  34. package/dist/tools/AltitudeTool.js.map +1 -1
  35. package/dist/tools/AssietteSupTool.d.ts +64 -16
  36. package/dist/tools/AssietteSupTool.js +34 -13
  37. package/dist/tools/AssietteSupTool.js.map +1 -1
  38. package/dist/tools/CadastreTool.d.ts +68 -15
  39. package/dist/tools/CadastreTool.js +35 -13
  40. package/dist/tools/CadastreTool.js.map +1 -1
  41. package/dist/tools/GeocodeTool.d.ts +73 -10
  42. package/dist/tools/GeocodeTool.js +35 -9
  43. package/dist/tools/GeocodeTool.js.map +1 -1
  44. package/dist/tools/GpfWfsDescribeTypeTool.d.ts +115 -12
  45. package/dist/tools/GpfWfsDescribeTypeTool.js +39 -13
  46. package/dist/tools/GpfWfsDescribeTypeTool.js.map +1 -1
  47. package/dist/tools/GpfWfsGetFeaturesTool.d.ts +65 -28
  48. package/dist/tools/GpfWfsGetFeaturesTool.js +117 -47
  49. package/dist/tools/GpfWfsGetFeaturesTool.js.map +1 -1
  50. package/dist/tools/GpfWfsListTypesTool.d.ts +18 -6
  51. package/dist/tools/GpfWfsListTypesTool.js +16 -8
  52. package/dist/tools/GpfWfsListTypesTool.js.map +1 -1
  53. package/dist/tools/GpfWfsSearchTypesTool.d.ts +61 -14
  54. package/dist/tools/GpfWfsSearchTypesTool.js +38 -17
  55. package/dist/tools/GpfWfsSearchTypesTool.js.map +1 -1
  56. package/dist/tools/UrbanismeTool.d.ts +63 -15
  57. package/dist/tools/UrbanismeTool.js +42 -13
  58. package/dist/tools/UrbanismeTool.js.map +1 -1
  59. package/dist/tools/toolAnnotations.d.ts +6 -0
  60. package/dist/tools/toolAnnotations.js +7 -0
  61. package/dist/tools/toolAnnotations.js.map +1 -0
  62. package/package.json +5 -5
package/dist/gpf/wfs.js CHANGED
@@ -2,22 +2,28 @@
2
2
  import { getCollectionCatalog, MiniSearchCollectionSearchEngine, } from '@ignfab/gpf-schema-store';
3
3
  // --- Constants ---
4
4
  export const GPF_WFS_URL = "https://data.geopf.fr/wfs";
5
- // Environment variable used to inject search engine options at runtime (JSON string).
6
- const GPF_WFS_SEARCH_OPTIONS_ENV = "GPF_WFS_SEARCH_OPTIONS";
5
+ // Environment variable used to inject MiniSearch options at runtime (JSON string).
6
+ const GPF_WFS_MINISEARCH_OPTIONS_ENV = "GPF_WFS_MINISEARCH_OPTIONS";
7
7
  // Keys accepted at the top level of the search options object.
8
- const TOP_LEVEL_SEARCH_OPTION_KEYS = ["fuzzy", "boost"];
9
- // Keys accepted inside the nested `boost` object.
10
- const BOOST_SEARCH_OPTION_KEYS = [
8
+ const TOP_LEVEL_MINISEARCH_OPTION_KEYS = ["fields", "combineWith", "fuzzy", "boost"];
9
+ // Shared keys used by both `fields` and `boost` in MiniSearchCollectionSearchOptions.
10
+ const MINISEARCH_INDEXED_OPTION_KEYS = [
11
11
  "namespace",
12
12
  "name",
13
13
  "title",
14
14
  "description",
15
15
  "properties",
16
+ "enums",
17
+ "identifierTokens",
16
18
  ];
19
+ const MINISEARCH_FIELD_OPTION_KEYS = MINISEARCH_INDEXED_OPTION_KEYS;
20
+ const MINISEARCH_COMBINE_WITH_VALUES = ["AND", "OR"];
21
+ const MINISEARCH_BOOST_OPTION_KEYS = MINISEARCH_INDEXED_OPTION_KEYS;
17
22
  // --- Errors ---
18
23
  export class FeatureTypeNotFoundError extends Error {
19
24
  constructor(name) {
20
- super(`Type '${name}' not found`);
25
+ super(`Le type '${name}' est introuvable`);
26
+ this.name = "FeatureTypeNotFoundError";
21
27
  }
22
28
  }
23
29
  // --- Helpers ---
@@ -28,21 +34,47 @@ function isFiniteNumber(value) {
28
34
  return typeof value === "number" && Number.isFinite(value);
29
35
  }
30
36
  function invalidSearchOptionsError(reason) {
31
- return new Error(`Invalid ${GPF_WFS_SEARCH_OPTIONS_ENV}: ${reason}`);
37
+ return new Error(`Invalid ${GPF_WFS_MINISEARCH_OPTIONS_ENV}: ${reason}`);
32
38
  }
33
39
  // --- Search options parsing ---
34
- // Parses and validates a plain-object value into MiniSearchCollectionSearchEngineOptions.
40
+ // Parses and validates a plain-object value into MiniSearchCollectionSearchOptions.
35
41
  // Throws a descriptive error if the value has unexpected keys or wrong value types.
36
- function parseSearchOptions(value) {
42
+ function parseMiniSearchOptions(value) {
37
43
  if (!isPlainObject(value)) {
38
44
  throw invalidSearchOptionsError("expected a JSON object");
39
45
  }
40
46
  for (const key of Object.keys(value)) {
41
- if (!TOP_LEVEL_SEARCH_OPTION_KEYS.includes(key)) {
47
+ if (!TOP_LEVEL_MINISEARCH_OPTION_KEYS.includes(key)) {
42
48
  throw invalidSearchOptionsError(`unexpected key '${key}'`);
43
49
  }
44
50
  }
45
51
  const options = {};
52
+ if (value.fields !== undefined) {
53
+ if (!Array.isArray(value.fields)) {
54
+ throw invalidSearchOptionsError("expected 'fields' to be an array");
55
+ }
56
+ const fields = [];
57
+ for (const field of value.fields) {
58
+ if (typeof field !== "string") {
59
+ throw invalidSearchOptionsError("expected every 'fields' item to be a string");
60
+ }
61
+ if (!MINISEARCH_FIELD_OPTION_KEYS.includes(field)) {
62
+ throw invalidSearchOptionsError(`unexpected value 'fields.${field}'`);
63
+ }
64
+ fields.push(field);
65
+ }
66
+ options.fields = fields;
67
+ }
68
+ if (value.combineWith !== undefined) {
69
+ if (typeof value.combineWith !== "string") {
70
+ throw invalidSearchOptionsError("expected 'combineWith' to be a string");
71
+ }
72
+ const combineWith = value.combineWith;
73
+ if (!MINISEARCH_COMBINE_WITH_VALUES.includes(combineWith)) {
74
+ throw invalidSearchOptionsError("expected 'combineWith' to be 'AND' or 'OR'");
75
+ }
76
+ options.combineWith = combineWith;
77
+ }
46
78
  if (value.fuzzy !== undefined) {
47
79
  if (!isFiniteNumber(value.fuzzy)) {
48
80
  throw invalidSearchOptionsError("expected 'fuzzy' to be a finite number");
@@ -55,7 +87,7 @@ function parseSearchOptions(value) {
55
87
  }
56
88
  const boost = {};
57
89
  for (const key of Object.keys(value.boost)) {
58
- if (!BOOST_SEARCH_OPTION_KEYS.includes(key)) {
90
+ if (!MINISEARCH_BOOST_OPTION_KEYS.includes(key)) {
59
91
  throw invalidSearchOptionsError(`unexpected key 'boost.${key}'`);
60
92
  }
61
93
  const rawScore = value.boost[key];
@@ -68,10 +100,18 @@ function parseSearchOptions(value) {
68
100
  }
69
101
  return options;
70
102
  }
71
- // Reads search options from the GPF_WFS_SEARCH_OPTIONS environment variable.
103
+ function createMiniSearchEngineOptions(miniSearch) {
104
+ if (!miniSearch) {
105
+ return undefined;
106
+ }
107
+ return {
108
+ defaultSearchOptions: miniSearch,
109
+ };
110
+ }
111
+ // Reads MiniSearch options from the GPF_WFS_MINISEARCH_OPTIONS environment variable.
72
112
  // Returns undefined when the variable is absent or empty.
73
- export function loadSearchOptionsFromEnv() {
74
- const rawValue = process.env[GPF_WFS_SEARCH_OPTIONS_ENV];
113
+ export function loadMiniSearchOptionsFromEnv() {
114
+ const rawValue = process.env[GPF_WFS_MINISEARCH_OPTIONS_ENV];
75
115
  if (!rawValue || rawValue.trim() === "") {
76
116
  return undefined;
77
117
  }
@@ -83,7 +123,7 @@ export function loadSearchOptionsFromEnv() {
83
123
  const reason = error instanceof Error ? error.message : "unknown JSON parse error";
84
124
  throw invalidSearchOptionsError(`expected valid JSON (${reason})`);
85
125
  }
86
- return parseSearchOptions(parsedValue);
126
+ return parseMiniSearchOptions(parsedValue);
87
127
  }
88
128
  // --- WFS client ---
89
129
  export class WfsClient {
@@ -91,8 +131,9 @@ export class WfsClient {
91
131
  catalog;
92
132
  constructor(baseUrl = GPF_WFS_URL, options = {}) {
93
133
  this.baseUrl = baseUrl;
134
+ const searchEngineOptions = createMiniSearchEngineOptions(options.miniSearch);
94
135
  this.catalog = getCollectionCatalog({
95
- engineFactory: (items) => new MiniSearchCollectionSearchEngine(items, options.search),
136
+ engineFactory: (items) => new MiniSearchCollectionSearchEngine(items, searchEngineOptions),
96
137
  });
97
138
  }
98
139
  async getFeatureTypes() {
@@ -101,7 +142,6 @@ export class WfsClient {
101
142
  async searchFeatureTypes(query, maxResults = 20) {
102
143
  return this.catalog.search(query, {
103
144
  limit: maxResults,
104
- combineWith: 'AND',
105
145
  });
106
146
  }
107
147
  async getFeatureType(name) {
@@ -113,8 +153,8 @@ export class WfsClient {
113
153
  }
114
154
  }
115
155
  // --- Default singleton ---
116
- // Pre-configured client using the default GPF endpoint and optional env-based search options.
156
+ // Pre-configured client using the default GPF endpoint and optional env-based MiniSearch options.
117
157
  export const wfsClient = new WfsClient(undefined, {
118
- search: loadSearchOptionsFromEnv(),
158
+ miniSearch: loadMiniSearchOptionsFromEnv(),
119
159
  });
120
160
  //# sourceMappingURL=wfs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"wfs.js","sourceRoot":"","sources":["../../src/gpf/wfs.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"wfs.js","sourceRoot":"","sources":["../../src/gpf/wfs.ts"],"names":[],"mappings":"AAAA,kBAAkB;AAElB,OAAO,EAEH,oBAAoB,EACpB,gCAAgC,GAEnC,MAAM,0BAA0B,CAAC;AAElC,oBAAoB;AAEpB,MAAM,CAAC,MAAM,WAAW,GAAG,2BAA2B,CAAC;AAEvD,mFAAmF;AACnF,MAAM,8BAA8B,GAAG,4BAA4B,CAAC;AAEpE,+DAA+D;AAC/D,MAAM,gCAAgC,GAAG,CAAC,QAAQ,EAAE,aAAa,EAAE,OAAO,EAAE,OAAO,CAAU,CAAC;AAE9F,sFAAsF;AACtF,MAAM,8BAA8B,GAAG;IACnC,WAAW;IACX,MAAM;IACN,OAAO;IACP,aAAa;IACb,YAAY;IACZ,OAAO;IACP,kBAAkB;CACZ,CAAC;AAEX,MAAM,4BAA4B,GAAG,8BAA8B,CAAC;AACpE,MAAM,8BAA8B,GAAG,CAAC,KAAK,EAAE,IAAI,CAAU,CAAC;AAC9D,MAAM,4BAA4B,GAAG,8BAA8B,CAAC;AAQpE,iBAAiB;AAEjB,MAAM,OAAO,wBAAyB,SAAQ,KAAK;IAC/C,YAAY,IAAY;QACpB,KAAK,CAAC,YAAY,IAAI,mBAAmB,CAAC,CAAC;QAC3C,IAAI,CAAC,IAAI,GAAG,0BAA0B,CAAC;IAC3C,CAAC;CACJ;AAED,kBAAkB;AAElB,SAAS,aAAa,CAAC,KAAc;IACjC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAChF,CAAC;AAED,SAAS,cAAc,CAAC,KAAc;IAClC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAC/D,CAAC;AAED,SAAS,yBAAyB,CAAC,MAAc;IAC7C,OAAO,IAAI,KAAK,CAAC,WAAW,8BAA8B,KAAK,MAAM,EAAE,CAAC,CAAC;AAC7E,CAAC;AAED,iCAAiC;AAEjC,oFAAoF;AACpF,oFAAoF;AACpF,SAAS,sBAAsB,CAAC,KAAc;IAC1C,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;QACxB,MAAM,yBAAyB,CAAC,wBAAwB,CAAC,CAAC;IAC9D,CAAC;IAED,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACnC,IAAI,CAAC,gCAAgC,CAAC,QAAQ,CAAC,GAAsD,CAAC,EAAE,CAAC;YACrG,MAAM,yBAAyB,CAAC,mBAAmB,GAAG,GAAG,CAAC,CAAC;QAC/D,CAAC;IACL,CAAC;IAED,MAAM,OAAO,GAAsB,EAAE,CAAC;IAEtC,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAC7B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;YAC/B,MAAM,yBAAyB,CAAC,kCAAkC,CAAC,CAAC;QACxE,CAAC;QACD,MAAM,MAAM,GAA+B,EAAE,CAAC;QAC9C,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;YAC/B,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;gBAC5B,MAAM,yBAAyB,CAAC,6CAA6C,CAAC,CAAC;YACnF,CAAC;YACD,IAAI,CAAC,4BAA4B,CAAC,QAAQ,CAAC,KAAiC,CAAC,EAAE,CAAC;gBAC5E,MAAM,yBAAyB,CAAC,4BAA4B,KAAK,GAAG,CAAC,CAAC;YAC1E,CAAC;YACD,MAAM,CAAC,IAAI,CAAC,KAAiC,CAAC,CAAC;QACnD,CAAC;QACD,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC;IAC5B,CAAC;IAED,IAAI,KAAK,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;QAClC,IAAI,OAAO,KAAK,CAAC,WAAW,KAAK,QAAQ,EAAE,CAAC;YACxC,MAAM,yBAAyB,CAAC,uCAAuC,CAAC,CAAC;QAC7E,CAAC;QACD,MAAM,WAAW,GAAG,KAAK,CAAC,WAA4D,CAAC;QACvF,IAAI,CAAC,8BAA8B,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;YACxD,MAAM,yBAAyB,CAAC,4CAA4C,CAAC,CAAC;QAClF,CAAC;QACD,OAAO,CAAC,WAAW,GAAG,WAAW,CAAC;IACtC,CAAC;IAED,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;QAC5B,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;YAC/B,MAAM,yBAAyB,CAAC,wCAAwC,CAAC,CAAC;QAC9E,CAAC;QACD,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;IAChC,CAAC;IAED,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;QAC5B,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;YAC9B,MAAM,yBAAyB,CAAC,kCAAkC,CAAC,CAAC;QACxE,CAAC;QAED,MAAM,KAAK,GAAsD,EAAE,CAAC;QACpE,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;YACzC,IAAI,CAAC,4BAA4B,CAAC,QAAQ,CAAC,GAA+B,CAAC,EAAE,CAAC;gBAC1E,MAAM,yBAAyB,CAAC,yBAAyB,GAAG,GAAG,CAAC,CAAC;YACrE,CAAC;YACD,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAClC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC5B,MAAM,yBAAyB,CAAC,mBAAmB,GAAG,yBAAyB,CAAC,CAAC;YACrF,CAAC;YACD,KAAK,CAAC,GAA+B,CAAC,GAAG,QAAQ,CAAC;QACtD,CAAC;QACD,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC;IAC1B,CAAC;IAED,OAAO,OAAO,CAAC;AACnB,CAAC;AAED,SAAS,6BAA6B,CAAC,UAA8B;IACjE,IAAI,CAAC,UAAU,EAAE,CAAC;QACd,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,OAAO;QACH,oBAAoB,EAAE,UAAU;KACnC,CAAC;AACN,CAAC;AAED,qFAAqF;AACrF,0DAA0D;AAC1D,MAAM,UAAU,4BAA4B;IACxC,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;IAC7D,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QACtC,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,IAAI,WAAoB,CAAC;IACzB,IAAI,CAAC;QACD,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IACvC,CAAC;IAAC,OAAO,KAAc,EAAE,CAAC;QACtB,MAAM,MAAM,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,0BAA0B,CAAC;QACnF,MAAM,yBAAyB,CAAC,wBAAwB,MAAM,GAAG,CAAC,CAAC;IACvE,CAAC;IAED,OAAO,sBAAsB,CAAC,WAAW,CAAC,CAAC;AAC/C,CAAC;AAED,qBAAqB;AAErB,MAAM,OAAO,SAAS;IAKP;IAHM,OAAO,CAAC;IAEzB,YACW,UAAkB,WAAW,EACpC,UAA8C,EAAE;QADzC,YAAO,GAAP,OAAO,CAAsB;QAGpC,MAAM,mBAAmB,GAAG,6BAA6B,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAC9E,IAAI,CAAC,OAAO,GAAG,oBAAoB,CAAC;YAChC,aAAa,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,gCAAgC,CAAC,KAAK,EAAE,mBAAmB,CAAC;SAC7F,CAAC,CAAC;IACP,CAAC;IAED,KAAK,CAAC,eAAe;QACjB,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;IAC/B,CAAC;IAED,KAAK,CAAC,kBAAkB,CAAC,KAAa,EAAE,aAAqB,EAAE;QAC3D,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE;YAC9B,KAAK,EAAE,UAAU;SACpB,CAAC,CAAC;IACP,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,IAAY;QAC7B,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC/C,IAAI,WAAW,EAAE,CAAC;YACd,OAAO,WAAW,CAAC;QACvB,CAAC;QACD,MAAM,IAAI,wBAAwB,CAAC,IAAI,CAAC,CAAC;IAC7C,CAAC;CAEJ;AAED,4BAA4B;AAE5B,kGAAkG;AAClG,MAAM,CAAC,MAAM,SAAS,GAAG,IAAI,SAAS,CAAC,SAAS,EAAE;IAC9C,UAAU,EAAE,4BAA4B,EAAE;CAC7C,CAAC,CAAC"}
package/dist/index.js CHANGED
@@ -18,6 +18,7 @@ const TRANSPORTS = {
18
18
  'http': {
19
19
  type: "http-stream",
20
20
  options: {
21
+ host: process.env.HTTP_HOST,
21
22
  port: 3000,
22
23
  cors: {
23
24
  allowOrigin: "*"
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAE1C,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAElC,2DAA2D;AAC3D,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAE1D,gCAAgC;AAChC,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,iBAAiB,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;AAC1F,MAAM,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC;AAEpC;;GAEG;AACH,MAAM,UAAU,GAAwB;IACtC,OAAO,EAAE;QACP,IAAI,EAAE,OAAO;KACd;IACD,MAAM,EAAE;QACN,IAAI,EAAE,aAAa;QACnB,OAAO,EAAE;YACP,IAAI,EAAE,IAAI;YACV,IAAI,EAAE;gBACJ,WAAW,EAAE,GAAG;aACjB;SACF;KACF;CACF,CAAA;AAGD,KAAK,UAAU,IAAI;IACjB,+CAA+C;IAC/C,MAAM,cAAc,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,OAAO,CAAC;IAC7D,IAAI,cAAc,KAAK,OAAO,IAAI,cAAc,KAAK,MAAM,EAAE,CAAC;QAC5D,MAAM,IAAI,KAAK,CAAC,2BAA2B,cAAc,EAAE,CAAC,CAAC;IAC/D,CAAC;IAED,mBAAmB;IACnB,MAAM,SAAS,GAAG,IAAI,SAAS,CAAC;QAC9B,IAAI,EAAE,YAAY;QAClB,OAAO,EAAE,OAAO;QAChB,QAAQ,EAAE,SAAS;QACnB,SAAS,EAAE,UAAU,CAAC,cAAc,CAAC;KACtC,CAAC,CAAC;IACH,MAAM,SAAS,CAAC,KAAK,EAAE,CAAC;AAC1B,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IACrB,OAAO,CAAC,KAAK,CAAC,wBAAwB,EAAE,KAAK,CAAC,CAAC;IAC/C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAE1C,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAElC,2DAA2D;AAC3D,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAE1D,gCAAgC;AAChC,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,iBAAiB,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;AAC1F,MAAM,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC;AAEpC;;GAEG;AACH,MAAM,UAAU,GAAwB;IACtC,OAAO,EAAE;QACP,IAAI,EAAE,OAAO;KACd;IACD,MAAM,EAAE;QACN,IAAI,EAAE,aAAa;QACnB,OAAO,EAAE;YACP,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,SAAS;YAC3B,IAAI,EAAE,IAAI;YACV,IAAI,EAAE;gBACJ,WAAW,EAAE,GAAG;aACjB;SACF;KACF;CACF,CAAA;AAGD,KAAK,UAAU,IAAI;IACjB,+CAA+C;IAC/C,MAAM,cAAc,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,OAAO,CAAC;IAC7D,IAAI,cAAc,KAAK,OAAO,IAAI,cAAc,KAAK,MAAM,EAAE,CAAC;QAC5D,MAAM,IAAI,KAAK,CAAC,2BAA2B,cAAc,EAAE,CAAC,CAAC;IAC/D,CAAC;IAED,mBAAmB;IACnB,MAAM,SAAS,GAAG,IAAI,SAAS,CAAC;QAC9B,IAAI,EAAE,YAAY;QAClB,OAAO,EAAE,OAAO;QAChB,QAAQ,EAAE,SAAS;QACnB,SAAS,EAAE,UAAU,CAAC,cAAc,CAAC;KACtC,CAAC,CAAC;IACH,MAAM,SAAS,CAAC,KAAK,EAAE,CAAC;AAC1B,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IACrB,OAAO,CAAC,KAAK,CAAC,wBAAwB,EAAE,KAAK,CAAC,CAAC;IAC/C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"logger.js","sourceRoot":"","sources":["../src/logger.js"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAEnE,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC;AAE1E,MAAM,OAAO,GAAG;IACZ,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE;IACnB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE;CAC1B,CAAC;AACF,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC;AAC9E,IAAK,CAAE,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;IAC/C,MAAM,IAAI,KAAK,CAAC,cAAc,UAAU,aAAa,CAAC,CAAC;AAC3D,CAAC;AAED,MAAM,MAAM,GAAG,YAAY,CAAC;IACxB,KAAK,EAAE,SAAS;IAChB,MAAM,EAAE,OAAO,CAAC,UAAU,CAAC;IAC3B,UAAU,EAAE,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,MAAM,CAAC,CAAC,CAAC;QACzC;;;WAGG;QACH,IAAI,UAAU,CAAC,OAAO,CAAC;YACnB,YAAY,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC;SAC/C,CAAC;KACL,CAAC,CAAC,CAAC;QACA,IAAI,UAAU,CAAC,IAAI,CAAC;YAChB,QAAQ,EAAE,gBAAgB;YAC1B,KAAK,EAAE,OAAO;SACjB,CAAC;KACL;CACJ,CAAC,CAAC;AAEH,eAAe,MAAM,CAAC"}
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../src/logger.js"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAEnE,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC;AAE1E,MAAM,OAAO,GAAG;IACZ,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE;IACnB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE;CAC1B,CAAC;AAEF,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC;AAC9E,IAAK,CAAE,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;IAC/C,MAAM,IAAI,KAAK,CAAC,cAAc,UAAU,aAAa,CAAC,CAAC;AAC3D,CAAC;AAED,MAAM,MAAM,GAAG,YAAY,CAAC;IACxB,KAAK,EAAE,SAAS;IAChB,MAAM,EAAE,OAAO,CAAC,UAAU,CAAC;IAC3B,UAAU,EAAE,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,MAAM,CAAC,CAAC,CAAC;QACzC;;;WAGG;QACH,IAAI,UAAU,CAAC,OAAO,CAAC;YACnB,YAAY,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC;SAC/C,CAAC;KACL,CAAC,CAAC,CAAC;QACA,IAAI,UAAU,CAAC,IAAI,CAAC;YAChB,QAAQ,EAAE,gBAAgB;YAC1B,KAAK,EAAE,OAAO;SACjB,CAAC;KACL;CACJ,CAAC,CAAC;AAEH,eAAe,MAAM,CAAC"}
@@ -0,0 +1,10 @@
1
+ import { MCPResource, ResourceContent } from "mcp-framework";
2
+ declare class WfsCqlFilterResource extends MCPResource {
3
+ uri: string;
4
+ name: string;
5
+ description: string;
6
+ mimeType: string;
7
+ protected title: string;
8
+ read(): Promise<ResourceContent[]>;
9
+ }
10
+ export default WfsCqlFilterResource;
@@ -0,0 +1,21 @@
1
+ import { MCPResource } from "mcp-framework";
2
+ import { readMarkdownResource } from "./readMarkdownResource.js";
3
+ class WfsCqlFilterResource extends MCPResource {
4
+ uri = "geocontext://wfs-cql-filter";
5
+ name = "geocontext-wfs-cql-filter";
6
+ description = "Aide-mémoire pour construire des cql_filter GeoServer utilisables avec les tools WFS.";
7
+ mimeType = "text/markdown";
8
+ title = "Cheatsheet cql_filter";
9
+ async read() {
10
+ const text = await readMarkdownResource(import.meta.url, "wfs-cql-filter.md");
11
+ return [
12
+ {
13
+ uri: this.uri,
14
+ mimeType: this.mimeType,
15
+ text,
16
+ },
17
+ ];
18
+ }
19
+ }
20
+ export default WfsCqlFilterResource;
21
+ //# sourceMappingURL=WfsCqlFilterResource.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WfsCqlFilterResource.js","sourceRoot":"","sources":["../../src/resources/WfsCqlFilterResource.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAmB,MAAM,eAAe,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAEjE,MAAM,oBAAqB,SAAQ,WAAW;IAC5C,GAAG,GAAG,6BAA6B,CAAC;IACpC,IAAI,GAAG,2BAA2B,CAAC;IACnC,WAAW,GAAG,uFAAuF,CAAC;IACtG,QAAQ,GAAG,eAAe,CAAC;IACjB,KAAK,GAAG,uBAAuB,CAAC;IAE1C,KAAK,CAAC,IAAI;QACR,MAAM,IAAI,GAAG,MAAM,oBAAoB,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,mBAAmB,CAAC,CAAC;QAE9E,OAAO;YACL;gBACE,GAAG,EAAE,IAAI,CAAC,GAAG;gBACb,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,IAAI;aACL;SACF,CAAC;IACJ,CAAC;CACF;AAED,eAAe,oBAAoB,CAAC"}
@@ -0,0 +1 @@
1
+ export declare function readMarkdownResource(importMetaUrl: string, filename: string): Promise<string>;
@@ -0,0 +1,21 @@
1
+ import { readFile } from "fs/promises";
2
+ import { dirname, join } from "path";
3
+ import { fileURLToPath } from "url";
4
+ export async function readMarkdownResource(importMetaUrl, filename) {
5
+ const currentDir = dirname(fileURLToPath(importMetaUrl));
6
+ const candidates = [
7
+ join(currentDir, "content", filename),
8
+ join(currentDir, "../../src/resources/content", filename),
9
+ ];
10
+ let lastError;
11
+ for (const candidate of candidates) {
12
+ try {
13
+ return await readFile(candidate, "utf-8");
14
+ }
15
+ catch (error) {
16
+ lastError = error;
17
+ }
18
+ }
19
+ throw lastError;
20
+ }
21
+ //# sourceMappingURL=readMarkdownResource.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"readMarkdownResource.js","sourceRoot":"","sources":["../../src/resources/readMarkdownResource.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AAEpC,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,aAAqB,EAAE,QAAgB;IAChF,MAAM,UAAU,GAAG,OAAO,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC,CAAC;IACzD,MAAM,UAAU,GAAG;QACjB,IAAI,CAAC,UAAU,EAAE,SAAS,EAAE,QAAQ,CAAC;QACrC,IAAI,CAAC,UAAU,EAAE,6BAA6B,EAAE,QAAQ,CAAC;KAC1D,CAAC;IAEF,IAAI,SAAkB,CAAC;IACvB,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,IAAI,CAAC;YACH,OAAO,MAAM,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAC5C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,SAAS,GAAG,KAAK,CAAC;QACpB,CAAC;IACH,CAAC;IAED,MAAM,SAAS,CAAC;AAClB,CAAC"}
@@ -1,22 +1,65 @@
1
1
  import { MCPTool } from "mcp-framework";
2
2
  import { z } from "zod";
3
- interface AdminexpressInput {
4
- lon: number;
5
- lat: number;
6
- }
3
+ declare const adminexpressInputSchema: z.ZodObject<{
4
+ lon: z.ZodNumber;
5
+ lat: z.ZodNumber;
6
+ }, "strip", z.ZodTypeAny, {
7
+ lon?: number;
8
+ lat?: number;
9
+ }, {
10
+ lon?: number;
11
+ lat?: number;
12
+ }>;
13
+ type AdminexpressInput = z.infer<typeof adminexpressInputSchema>;
7
14
  declare class AdminexpressTool extends MCPTool<AdminexpressInput> {
8
15
  name: string;
9
- description: string;
10
- schema: {
11
- lon: {
12
- type: z.ZodNumber;
13
- description: string;
14
- };
15
- lat: {
16
- type: z.ZodNumber;
17
- description: string;
18
- };
16
+ title: string;
17
+ annotations: {
18
+ readonly readOnlyHint: true;
19
+ readonly destructiveHint: false;
20
+ readonly idempotentHint: true;
21
+ readonly openWorldHint: true;
19
22
  };
20
- execute(input: AdminexpressInput): Promise<object[]>;
23
+ description: string;
24
+ protected outputSchemaShape: z.ZodObject<{
25
+ results: z.ZodArray<z.ZodObject<{
26
+ type: z.ZodString;
27
+ id: z.ZodString;
28
+ bbox: z.ZodOptional<z.ZodArray<z.ZodNumber, "many">>;
29
+ }, "strip", z.ZodUnknown, z.objectOutputType<{
30
+ type: z.ZodString;
31
+ id: z.ZodString;
32
+ bbox: z.ZodOptional<z.ZodArray<z.ZodNumber, "many">>;
33
+ }, z.ZodUnknown, "strip">, z.objectInputType<{
34
+ type: z.ZodString;
35
+ id: z.ZodString;
36
+ bbox: z.ZodOptional<z.ZodArray<z.ZodNumber, "many">>;
37
+ }, z.ZodUnknown, "strip">>, "many">;
38
+ }, "strip", z.ZodTypeAny, {
39
+ results?: z.objectOutputType<{
40
+ type: z.ZodString;
41
+ id: z.ZodString;
42
+ bbox: z.ZodOptional<z.ZodArray<z.ZodNumber, "many">>;
43
+ }, z.ZodUnknown, "strip">[];
44
+ }, {
45
+ results?: z.objectInputType<{
46
+ type: z.ZodString;
47
+ id: z.ZodString;
48
+ bbox: z.ZodOptional<z.ZodArray<z.ZodNumber, "many">>;
49
+ }, z.ZodUnknown, "strip">[];
50
+ }>;
51
+ schema: z.ZodObject<{
52
+ lon: z.ZodNumber;
53
+ lat: z.ZodNumber;
54
+ }, "strip", z.ZodTypeAny, {
55
+ lon?: number;
56
+ lat?: number;
57
+ }, {
58
+ lon?: number;
59
+ lat?: number;
60
+ }>;
61
+ execute(input: AdminexpressInput): Promise<{
62
+ results: object[];
63
+ }>;
21
64
  }
22
65
  export default AdminexpressTool;
@@ -1,22 +1,42 @@
1
- import { logger, MCPTool } from "mcp-framework";
1
+ import { MCPTool } from "mcp-framework";
2
2
  import { z } from "zod";
3
3
  import { getAdminUnits, ADMINEXPRESS_TYPES, ADMINEXPRESS_SOURCE } from "../gpf/adminexpress.js";
4
+ import logger from "../logger.js";
5
+ import { READ_ONLY_OPEN_WORLD_TOOL_ANNOTATIONS } from "./toolAnnotations.js";
6
+ const adminexpressInputSchema = z.object({
7
+ lon: z
8
+ .number()
9
+ .min(-180)
10
+ .max(180)
11
+ .describe("La longitude du point."),
12
+ lat: z
13
+ .number()
14
+ .min(-90)
15
+ .max(90)
16
+ .describe("La latitude du point."),
17
+ });
18
+ const adminexpressResultSchema = z
19
+ .object({
20
+ type: z.string().describe(`Le type d'unité administrative (${ADMINEXPRESS_TYPES.join(", ")}).`),
21
+ id: z.string().describe("L'identifiant de l'unité administrative."),
22
+ bbox: z.array(z.number()).describe("La boîte englobante de l'unité administrative.").optional(),
23
+ })
24
+ .catchall(z.unknown());
25
+ const adminexpressOutputSchema = z.object({
26
+ results: z.array(adminexpressResultSchema).describe("La liste des unités administratives couvrant le point demandé."),
27
+ });
4
28
  class AdminexpressTool extends MCPTool {
5
29
  name = "adminexpress";
6
- description = `Renvoie les unités administratives (${ADMINEXPRESS_TYPES.join(', ')}) pour une position donnée par sa longitude et sa latitude (source : ${ADMINEXPRESS_SOURCE}).`;
7
- schema = {
8
- lon: {
9
- type: z.number(),
10
- description: "La longitude du point",
11
- },
12
- lat: {
13
- type: z.number(),
14
- description: "La latitude du point",
15
- },
16
- };
30
+ title = "Unités administratives";
31
+ annotations = READ_ONLY_OPEN_WORLD_TOOL_ANNOTATIONS;
32
+ description = `Renvoie, pour un point donné par sa longitude et sa latitude, la liste des unités administratives (${ADMINEXPRESS_TYPES.join(', ')}) qui le couvrent, sous forme d'objets typés contenant leurs propriétés administratives. (source : ${ADMINEXPRESS_SOURCE}).`;
33
+ outputSchemaShape = adminexpressOutputSchema;
34
+ schema = adminexpressInputSchema;
17
35
  async execute(input) {
18
36
  logger.info(`adminexpress(${input.lon},${input.lat})...`);
19
- return getAdminUnits(input.lon, input.lat);
37
+ return {
38
+ results: await getAdminUnits(input.lon, input.lat),
39
+ };
20
40
  }
21
41
  }
22
42
  export default AdminexpressTool;
@@ -1 +1 @@
1
- {"version":3,"file":"AdminexpressTool.js","sourceRoot":"","sources":["../../src/tools/AdminexpressTool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAOhG,MAAM,gBAAiB,SAAQ,OAA0B;IACvD,IAAI,GAAG,cAAc,CAAC;IACtB,WAAW,GAAG,uCAAuC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,wEAAwE,mBAAmB,IAAI,CAAC;IAElL,MAAM,GAAG;QACP,GAAG,EAAE;YACH,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;YAChB,WAAW,EAAE,uBAAuB;SACrC;QACD,GAAG,EAAE;YACH,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;YAChB,WAAW,EAAE,sBAAsB;SACpC;KACF,CAAC;IAEF,KAAK,CAAC,OAAO,CAAC,KAAwB;QACpC,MAAM,CAAC,IAAI,CAAC,gBAAgB,KAAK,CAAC,GAAG,IAAI,KAAK,CAAC,GAAG,MAAM,CAAC,CAAC;QAC1D,OAAO,aAAa,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;IAC7C,CAAC;CACF;AAED,eAAe,gBAAgB,CAAC"}
1
+ {"version":3,"file":"AdminexpressTool.js","sourceRoot":"","sources":["../../src/tools/AdminexpressTool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAChG,OAAO,MAAM,MAAM,cAAc,CAAC;AAClC,OAAO,EAAE,qCAAqC,EAAE,MAAM,sBAAsB,CAAC;AAE7E,MAAM,uBAAuB,GAAG,CAAC,CAAC,MAAM,CAAC;IACvC,GAAG,EAAE,CAAC;SACH,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,GAAG,CAAC;SACT,GAAG,CAAC,GAAG,CAAC;SACR,QAAQ,CAAC,wBAAwB,CAAC;IACrC,GAAG,EAAE,CAAC;SACH,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,EAAE,CAAC;SACR,GAAG,CAAC,EAAE,CAAC;SACP,QAAQ,CAAC,uBAAuB,CAAC;CACrC,CAAC,CAAC;AAIH,MAAM,wBAAwB,GAAG,CAAC;KAC/B,MAAM,CAAC;IACN,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,mCAAmC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;IAC/F,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,0CAA0C,CAAC;IACnE,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,gDAAgD,CAAC,CAAC,QAAQ,EAAE;CAChG,CAAC;KACD,QAAQ,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;AAEzB,MAAM,wBAAwB,GAAG,CAAC,CAAC,MAAM,CAAC;IACxC,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC,QAAQ,CAAC,gEAAgE,CAAC;CACtH,CAAC,CAAC;AAEH,MAAM,gBAAiB,SAAQ,OAA0B;IACvD,IAAI,GAAG,cAAc,CAAC;IACtB,KAAK,GAAG,wBAAwB,CAAC;IACjC,WAAW,GAAG,qCAAqC,CAAC;IACpD,WAAW,GAAG,sGAAsG,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,sGAAsG,mBAAmB,IAAI,CAAC;IACrQ,iBAAiB,GAAG,wBAAwB,CAAC;IAEvD,MAAM,GAAG,uBAAuB,CAAC;IAEjC,KAAK,CAAC,OAAO,CAAC,KAAwB;QACpC,MAAM,CAAC,IAAI,CAAC,gBAAgB,KAAK,CAAC,GAAG,IAAI,KAAK,CAAC,GAAG,MAAM,CAAC,CAAC;QAC1D,OAAO;YACL,OAAO,EAAE,MAAM,aAAa,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC;SACnD,CAAC;IACJ,CAAC;CACF;AAED,eAAe,gBAAgB,CAAC"}
@@ -1,27 +1,75 @@
1
1
  import { MCPTool } from "mcp-framework";
2
2
  import { z } from "zod";
3
- interface AltitudeInput {
4
- lon: number;
5
- lat: number;
6
- }
3
+ declare const altitudeInputSchema: z.ZodObject<{
4
+ lon: z.ZodNumber;
5
+ lat: z.ZodNumber;
6
+ }, "strip", z.ZodTypeAny, {
7
+ lon?: number;
8
+ lat?: number;
9
+ }, {
10
+ lon?: number;
11
+ lat?: number;
12
+ }>;
13
+ type AltitudeInput = z.infer<typeof altitudeInputSchema>;
7
14
  declare class AltitudeTool extends MCPTool<AltitudeInput> {
8
15
  name: string;
16
+ title: string;
17
+ annotations: {
18
+ readonly readOnlyHint: true;
19
+ readonly destructiveHint: false;
20
+ readonly idempotentHint: true;
21
+ readonly openWorldHint: true;
22
+ };
9
23
  description: string;
10
- schema: {
11
- lon: {
12
- type: z.ZodNumber;
13
- description: string;
24
+ protected outputSchemaShape: z.ZodObject<{
25
+ result: z.ZodObject<{
26
+ lon: z.ZodNumber;
27
+ lat: z.ZodNumber;
28
+ altitude: z.ZodNumber;
29
+ accuracy: z.ZodString;
30
+ }, "strip", z.ZodTypeAny, {
31
+ lon?: number;
32
+ lat?: number;
33
+ altitude?: number;
34
+ accuracy?: string;
35
+ }, {
36
+ lon?: number;
37
+ lat?: number;
38
+ altitude?: number;
39
+ accuracy?: string;
40
+ }>;
41
+ }, "strip", z.ZodTypeAny, {
42
+ result?: {
43
+ lon?: number;
44
+ lat?: number;
45
+ altitude?: number;
46
+ accuracy?: string;
14
47
  };
15
- lat: {
16
- type: z.ZodNumber;
17
- description: string;
48
+ }, {
49
+ result?: {
50
+ lon?: number;
51
+ lat?: number;
52
+ altitude?: number;
53
+ accuracy?: string;
18
54
  };
19
- };
55
+ }>;
56
+ schema: z.ZodObject<{
57
+ lon: z.ZodNumber;
58
+ lat: z.ZodNumber;
59
+ }, "strip", z.ZodTypeAny, {
60
+ lon?: number;
61
+ lat?: number;
62
+ }, {
63
+ lon?: number;
64
+ lat?: number;
65
+ }>;
20
66
  execute(input: AltitudeInput): Promise<{
21
- lon: number;
22
- lat: number;
23
- altitude: any;
24
- accuracy: any;
67
+ result: {
68
+ lon: number;
69
+ lat: number;
70
+ altitude: any;
71
+ accuracy: any;
72
+ };
25
73
  }>;
26
74
  }
27
75
  export default AltitudeTool;
@@ -2,22 +2,40 @@ import { MCPTool } from "mcp-framework";
2
2
  import { z } from "zod";
3
3
  import { ALTITUDE_SOURCE, getAltitudeByLocation } from "../gpf/altitude.js";
4
4
  import logger from "../logger.js";
5
+ import { READ_ONLY_OPEN_WORLD_TOOL_ANNOTATIONS } from "./toolAnnotations.js";
6
+ const altitudeInputSchema = z.object({
7
+ lon: z
8
+ .number()
9
+ .min(-180)
10
+ .max(180)
11
+ .describe("La longitude du point."),
12
+ lat: z
13
+ .number()
14
+ .min(-90)
15
+ .max(90)
16
+ .describe("La latitude du point."),
17
+ });
18
+ const altitudeResultSchema = z.object({
19
+ lon: z.number().describe("La longitude du point."),
20
+ lat: z.number().describe("La latitude du point."),
21
+ altitude: z.number().describe("L'altitude du point."),
22
+ accuracy: z.string().describe("L'information de précision associée à l'altitude."),
23
+ });
24
+ const altitudeOutputSchema = z.object({
25
+ result: altitudeResultSchema.describe("Le résultat altimétrique pour la position demandée."),
26
+ });
5
27
  class AltitudeTool extends MCPTool {
6
28
  name = "altitude";
7
- description = `Renvoie l'altitude pour une position donnée par sa longitude et sa latitude (source : ${ALTITUDE_SOURCE}).`;
8
- schema = {
9
- lon: {
10
- type: z.number(),
11
- description: "La longitude du point",
12
- },
13
- lat: {
14
- type: z.number(),
15
- description: "La latitude du point",
16
- },
17
- };
29
+ title = "Altitude d’une position";
30
+ annotations = READ_ONLY_OPEN_WORLD_TOOL_ANNOTATIONS;
31
+ description = `Renvoie l'altitude (en mètres) et la précision de la mesure (accuracy) d'un point géographique à partir de sa longitude et de sa latitude. (source : ${ALTITUDE_SOURCE}).`;
32
+ outputSchemaShape = altitudeOutputSchema;
33
+ schema = altitudeInputSchema;
18
34
  async execute(input) {
19
35
  logger.info(`altitude(${input.lon},${input.lat})...`);
20
- return getAltitudeByLocation(input.lon, input.lat);
36
+ return {
37
+ result: await getAltitudeByLocation(input.lon, input.lat),
38
+ };
21
39
  }
22
40
  }
23
41
  export default AltitudeTool;
@@ -1 +1 @@
1
- {"version":3,"file":"AltitudeTool.js","sourceRoot":"","sources":["../../src/tools/AltitudeTool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAC5E,OAAO,MAAM,MAAM,cAAc,CAAC;AAOlC,MAAM,YAAa,SAAQ,OAAsB;IAC/C,IAAI,GAAG,UAAU,CAAC;IAClB,WAAW,GAAG,yFAAyF,eAAe,IAAI,CAAC;IAE3H,MAAM,GAAG;QACP,GAAG,EAAE;YACH,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;YAChB,WAAW,EAAE,uBAAuB;SACrC;QACD,GAAG,EAAE;YACH,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;YAChB,WAAW,EAAE,sBAAsB;SACpC;KACF,CAAC;IAEF,KAAK,CAAC,OAAO,CAAC,KAAoB;QAChC,MAAM,CAAC,IAAI,CAAC,YAAY,KAAK,CAAC,GAAG,IAAI,KAAK,CAAC,GAAG,MAAM,CAAC,CAAC;QACtD,OAAO,qBAAqB,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;IACrD,CAAC;CACF;AAED,eAAe,YAAY,CAAC"}
1
+ {"version":3,"file":"AltitudeTool.js","sourceRoot":"","sources":["../../src/tools/AltitudeTool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAC5E,OAAO,MAAM,MAAM,cAAc,CAAC;AAClC,OAAO,EAAE,qCAAqC,EAAE,MAAM,sBAAsB,CAAC;AAE7E,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IACnC,GAAG,EAAE,CAAC;SACH,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,GAAG,CAAC;SACT,GAAG,CAAC,GAAG,CAAC;SACR,QAAQ,CAAC,wBAAwB,CAAC;IACrC,GAAG,EAAE,CAAC;SACH,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,EAAE,CAAC;SACR,GAAG,CAAC,EAAE,CAAC;SACP,QAAQ,CAAC,uBAAuB,CAAC;CACrC,CAAC,CAAC;AAIH,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IACpC,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,wBAAwB,CAAC;IAClD,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,uBAAuB,CAAC;IACjD,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,sBAAsB,CAAC;IACrD,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,mDAAmD,CAAC;CACnF,CAAC,CAAC;AAEH,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IACpC,MAAM,EAAE,oBAAoB,CAAC,QAAQ,CAAC,qDAAqD,CAAC;CAC7F,CAAC,CAAC;AAEH,MAAM,YAAa,SAAQ,OAAsB;IAC/C,IAAI,GAAG,UAAU,CAAC;IAClB,KAAK,GAAG,yBAAyB,CAAC;IAClC,WAAW,GAAG,qCAAqC,CAAC;IACpD,WAAW,GAAG,wJAAwJ,eAAe,IAAI,CAAC;IAChL,iBAAiB,GAAG,oBAAoB,CAAC;IAEnD,MAAM,GAAG,mBAAmB,CAAC;IAE7B,KAAK,CAAC,OAAO,CAAC,KAAoB;QAChC,MAAM,CAAC,IAAI,CAAC,YAAY,KAAK,CAAC,GAAG,IAAI,KAAK,CAAC,GAAG,MAAM,CAAC,CAAC;QACtD,OAAO;YACL,MAAM,EAAE,MAAM,qBAAqB,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC;SAC1D,CAAC;IACJ,CAAC;CACF;AAED,eAAe,YAAY,CAAC"}