@get-technology-inc/jamf-docs-mcp-server 3.0.6 → 3.0.8

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 (190) hide show
  1. package/README.md +37 -2
  2. package/dist/core/constants/doc-types.d.ts +48 -0
  3. package/dist/core/constants/doc-types.d.ts.map +1 -0
  4. package/dist/core/constants/doc-types.js +58 -0
  5. package/dist/core/constants/doc-types.js.map +1 -0
  6. package/dist/core/constants/index.d.ts +16 -0
  7. package/dist/core/constants/index.d.ts.map +1 -0
  8. package/dist/core/constants/index.js +12 -0
  9. package/dist/core/constants/index.js.map +1 -0
  10. package/dist/core/constants/limits.d.ts +39 -0
  11. package/dist/core/constants/limits.d.ts.map +1 -0
  12. package/dist/core/constants/limits.js +51 -0
  13. package/dist/core/constants/limits.js.map +1 -0
  14. package/dist/core/constants/locales.d.ts +34 -0
  15. package/dist/core/constants/locales.d.ts.map +1 -0
  16. package/dist/core/constants/locales.js +20 -0
  17. package/dist/core/constants/locales.js.map +1 -0
  18. package/dist/core/constants/products.d.ts +127 -0
  19. package/dist/core/constants/products.d.ts.map +1 -0
  20. package/dist/core/constants/products.js +135 -0
  21. package/dist/core/constants/products.js.map +1 -0
  22. package/dist/core/constants/topics.d.ts +168 -0
  23. package/dist/core/constants/topics.d.ts.map +1 -0
  24. package/dist/core/constants/topics.js +186 -0
  25. package/dist/core/constants/topics.js.map +1 -0
  26. package/dist/core/constants.d.ts +7 -404
  27. package/dist/core/constants.d.ts.map +1 -1
  28. package/dist/core/constants.js +16 -427
  29. package/dist/core/constants.js.map +1 -1
  30. package/dist/core/http-client.d.ts +14 -2
  31. package/dist/core/http-client.d.ts.map +1 -1
  32. package/dist/core/http-client.js +148 -17
  33. package/dist/core/http-client.js.map +1 -1
  34. package/dist/core/index.d.ts +12 -12
  35. package/dist/core/index.d.ts.map +1 -1
  36. package/dist/core/index.js +12 -13
  37. package/dist/core/index.js.map +1 -1
  38. package/dist/core/resources/index.js +1 -1
  39. package/dist/core/resources/index.js.map +1 -1
  40. package/dist/core/schemas/index.d.ts +3 -1
  41. package/dist/core/schemas/index.d.ts.map +1 -1
  42. package/dist/core/schemas/index.js +13 -3
  43. package/dist/core/schemas/index.js.map +1 -1
  44. package/dist/core/schemas/output.d.ts +7 -0
  45. package/dist/core/schemas/output.d.ts.map +1 -1
  46. package/dist/core/schemas/output.js +7 -0
  47. package/dist/core/schemas/output.js.map +1 -1
  48. package/dist/core/services/article-service.d.ts +24 -0
  49. package/dist/core/services/article-service.d.ts.map +1 -0
  50. package/dist/core/services/article-service.js +140 -0
  51. package/dist/core/services/article-service.js.map +1 -0
  52. package/dist/core/services/content-parser.d.ts +38 -0
  53. package/dist/core/services/content-parser.d.ts.map +1 -0
  54. package/dist/core/services/content-parser.js +148 -0
  55. package/dist/core/services/content-parser.js.map +1 -0
  56. package/dist/core/services/ft-client.d.ts +52 -0
  57. package/dist/core/services/ft-client.d.ts.map +1 -0
  58. package/dist/core/services/ft-client.js +87 -0
  59. package/dist/core/services/ft-client.js.map +1 -0
  60. package/dist/core/services/glossary.d.ts +9 -5
  61. package/dist/core/services/glossary.d.ts.map +1 -1
  62. package/dist/core/services/glossary.js +175 -108
  63. package/dist/core/services/glossary.js.map +1 -1
  64. package/dist/core/services/interfaces/cache.d.ts +6 -6
  65. package/dist/core/services/interfaces/cache.d.ts.map +1 -1
  66. package/dist/core/services/interfaces/index.d.ts +3 -3
  67. package/dist/core/services/interfaces/index.d.ts.map +1 -1
  68. package/dist/core/services/interfaces/logger.d.ts +17 -10
  69. package/dist/core/services/interfaces/logger.d.ts.map +1 -1
  70. package/dist/core/services/interfaces/metadata.d.ts +0 -10
  71. package/dist/core/services/interfaces/metadata.d.ts.map +1 -1
  72. package/dist/core/services/interfaces/providers.d.ts +23 -10
  73. package/dist/core/services/interfaces/providers.d.ts.map +1 -1
  74. package/dist/core/services/logging.d.ts +38 -18
  75. package/dist/core/services/logging.d.ts.map +1 -1
  76. package/dist/core/services/logging.js +78 -29
  77. package/dist/core/services/logging.js.map +1 -1
  78. package/dist/core/services/maps-registry.d.ts +82 -0
  79. package/dist/core/services/maps-registry.d.ts.map +1 -0
  80. package/dist/core/services/maps-registry.js +232 -0
  81. package/dist/core/services/maps-registry.js.map +1 -0
  82. package/dist/core/services/metadata.d.ts +18 -9
  83. package/dist/core/services/metadata.d.ts.map +1 -1
  84. package/dist/core/services/metadata.js +113 -254
  85. package/dist/core/services/metadata.js.map +1 -1
  86. package/dist/core/services/search-service.d.ts +31 -0
  87. package/dist/core/services/search-service.d.ts.map +1 -0
  88. package/dist/core/services/search-service.js +462 -0
  89. package/dist/core/services/search-service.js.map +1 -0
  90. package/dist/core/services/toc-service.d.ts +30 -0
  91. package/dist/core/services/toc-service.d.ts.map +1 -0
  92. package/dist/core/services/toc-service.js +107 -0
  93. package/dist/core/services/toc-service.js.map +1 -0
  94. package/dist/core/services/tokenizer.d.ts +20 -1
  95. package/dist/core/services/tokenizer.d.ts.map +1 -1
  96. package/dist/core/services/tokenizer.js +32 -4
  97. package/dist/core/services/tokenizer.js.map +1 -1
  98. package/dist/core/services/topic-resolver.d.ts +74 -0
  99. package/dist/core/services/topic-resolver.d.ts.map +1 -0
  100. package/dist/core/services/topic-resolver.js +191 -0
  101. package/dist/core/services/topic-resolver.js.map +1 -0
  102. package/dist/core/tools/batch-get-articles.d.ts +0 -2
  103. package/dist/core/tools/batch-get-articles.d.ts.map +1 -1
  104. package/dist/core/tools/batch-get-articles.js +18 -46
  105. package/dist/core/tools/batch-get-articles.js.map +1 -1
  106. package/dist/core/tools/get-article.d.ts.map +1 -1
  107. package/dist/core/tools/get-article.js +29 -112
  108. package/dist/core/tools/get-article.js.map +1 -1
  109. package/dist/core/tools/get-toc.js +1 -1
  110. package/dist/core/tools/get-toc.js.map +1 -1
  111. package/dist/core/tools/glossary-lookup.d.ts.map +1 -1
  112. package/dist/core/tools/glossary-lookup.js +26 -7
  113. package/dist/core/tools/glossary-lookup.js.map +1 -1
  114. package/dist/core/tools/list-products.d.ts.map +1 -1
  115. package/dist/core/tools/list-products.js +5 -3
  116. package/dist/core/tools/list-products.js.map +1 -1
  117. package/dist/core/tools/search.js +5 -5
  118. package/dist/core/tools/search.js.map +1 -1
  119. package/dist/core/types/context.d.ts +5 -2
  120. package/dist/core/types/context.d.ts.map +1 -1
  121. package/dist/core/types.d.ts +141 -31
  122. package/dist/core/types.d.ts.map +1 -1
  123. package/dist/core/types.js.map +1 -1
  124. package/dist/core/utils/bundle.d.ts +14 -1
  125. package/dist/core/utils/bundle.d.ts.map +1 -1
  126. package/dist/core/utils/bundle.js +19 -2
  127. package/dist/core/utils/bundle.js.map +1 -1
  128. package/dist/core/utils/format-article.d.ts +49 -0
  129. package/dist/core/utils/format-article.d.ts.map +1 -0
  130. package/dist/core/utils/format-article.js +188 -0
  131. package/dist/core/utils/format-article.js.map +1 -0
  132. package/dist/core/utils/ft-metadata.d.ts +22 -0
  133. package/dist/core/utils/ft-metadata.d.ts.map +1 -0
  134. package/dist/core/utils/ft-metadata.js +30 -0
  135. package/dist/core/utils/ft-metadata.js.map +1 -0
  136. package/dist/core/utils/sanitize.d.ts.map +1 -1
  137. package/dist/core/utils/sanitize.js +0 -2
  138. package/dist/core/utils/sanitize.js.map +1 -1
  139. package/dist/core/utils/url.d.ts.map +1 -1
  140. package/dist/core/utils/url.js +0 -1
  141. package/dist/core/utils/url.js.map +1 -1
  142. package/dist/index.js +10 -6
  143. package/dist/index.js.map +1 -1
  144. package/dist/platforms/node/http-server.d.ts +13 -0
  145. package/dist/platforms/node/http-server.d.ts.map +1 -0
  146. package/dist/platforms/node/http-server.js +231 -0
  147. package/dist/platforms/node/http-server.js.map +1 -0
  148. package/dist/platforms/node/index.d.ts +1 -1
  149. package/dist/platforms/node/index.d.ts.map +1 -1
  150. package/dist/platforms/node/index.js +1 -1
  151. package/dist/platforms/node/index.js.map +1 -1
  152. package/dist/platforms/node/logger.d.ts +13 -2
  153. package/dist/platforms/node/logger.d.ts.map +1 -1
  154. package/dist/platforms/node/logger.js +17 -4
  155. package/dist/platforms/node/logger.js.map +1 -1
  156. package/dist/transport/http-handler.d.ts +25 -0
  157. package/dist/transport/http-handler.d.ts.map +1 -0
  158. package/dist/transport/http-handler.js +193 -0
  159. package/dist/transport/http-handler.js.map +1 -0
  160. package/dist/transport/http-types.d.ts +22 -0
  161. package/dist/transport/http-types.d.ts.map +1 -0
  162. package/dist/transport/http-types.js +65 -0
  163. package/dist/transport/http-types.js.map +1 -0
  164. package/dist/transport/http.d.ts +4 -8
  165. package/dist/transport/http.d.ts.map +1 -1
  166. package/dist/transport/http.js +4 -376
  167. package/dist/transport/http.js.map +1 -1
  168. package/dist/transport/index.js +2 -2
  169. package/dist/transport/index.js.map +1 -1
  170. package/dist/transport/rate-limiter.d.ts +16 -0
  171. package/dist/transport/rate-limiter.d.ts.map +1 -0
  172. package/dist/transport/rate-limiter.js +55 -0
  173. package/dist/transport/rate-limiter.js.map +1 -0
  174. package/package.json +3 -3
  175. package/dist/core/services/interfaces.d.ts +0 -94
  176. package/dist/core/services/interfaces.d.ts.map +0 -1
  177. package/dist/core/services/interfaces.js +0 -8
  178. package/dist/core/services/interfaces.js.map +0 -1
  179. package/dist/core/services/scraper.d.ts +0 -90
  180. package/dist/core/services/scraper.d.ts.map +0 -1
  181. package/dist/core/services/scraper.js +0 -990
  182. package/dist/core/services/scraper.js.map +0 -1
  183. package/dist/core/utils/doc-type.d.ts +0 -12
  184. package/dist/core/utils/doc-type.d.ts.map +0 -1
  185. package/dist/core/utils/doc-type.js +0 -24
  186. package/dist/core/utils/doc-type.js.map +0 -1
  187. package/dist/platforms/node/metadata.d.ts +0 -18
  188. package/dist/platforms/node/metadata.d.ts.map +0 -1
  189. package/dist/platforms/node/metadata.js +0 -35
  190. package/dist/platforms/node/metadata.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ft-metadata.js","sourceRoot":"","sources":["../../../src/core/utils/ft-metadata.ts"],"names":[],"mappings":"AAKA,uDAAuD;AACvD,MAAM,CAAC,MAAM,OAAO,GAAG;IACrB,mBAAmB,EAAE,qBAAqB;IAC1C,OAAO,EAAE,SAAS;IAClB,cAAc,EAAE,eAAe;IAC/B,MAAM,EAAE,WAAW;IACnB,UAAU,EAAE,cAAc;IAC1B,MAAM,EAAE,QAAQ;IAChB,gBAAgB,EAAE,kBAAkB;IACpC,UAAU,EAAE,YAAY;IACxB,eAAe,EAAE,gBAAgB;IACjC,YAAY,EAAE,kBAAkB;IAChC,UAAU,EAAE,cAAc;IAC1B,cAAc,EAAE,kBAAkB;CAC1B,CAAC;AAEX,MAAM,UAAU,YAAY,CAAC,QAA2B,EAAE,GAAW;IACnE,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC;IAChD,OAAO,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;AAChC,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,QAA2B,EAAE,GAAW;IACpE,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC;IAChD,OAAO,KAAK,EAAE,MAAM,IAAI,EAAE,CAAC;AAC7B,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,IAAY;IAClD,OAAO,IAAI;SACR,OAAO,CAAC,iBAAiB,EAAE,EAAE,CAAC;SAC9B,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC;SAClB,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;AAC5C,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"sanitize.d.ts","sourceRoot":"","sources":["../../../src/core/utils/sanitize.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEzD;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAWvD;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAG1D;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAc5D"}
1
+ {"version":3,"file":"sanitize.d.ts","sourceRoot":"","sources":["../../../src/core/utils/sanitize.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEzD;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAWvD;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAG1D;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAW5D"}
@@ -45,8 +45,6 @@ export function getSafeErrorMessage(error) {
45
45
  */
46
46
  export function sanitizeErrorMessage(message) {
47
47
  let sanitized = message;
48
- // Replace backend hostname with frontend (hostnames extracted from DOCS_API_URL / DOCS_BASE_URL)
49
- sanitized = sanitized.replaceAll('learn-be.jamf.com', 'learn.jamf.com');
50
48
  // Remove absolute file paths (Unix and Windows)
51
49
  sanitized = sanitized.replace(/(?<![:/\w.])\/[\w./-]+\.\w{1,4}/g, '<path>');
52
50
  sanitized = sanitized.replace(/[A-Z]:\\[\w.\\-]+\.\w{1,4}/g, '<path>');
@@ -1 +1 @@
1
- {"version":3,"file":"sanitize.js","sourceRoot":"","sources":["../../../src/core/utils/sanitize.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;GAGG;AACH,MAAM,UAAU,oBAAoB,CAAC,IAAY;IAC/C,OAAO,IAAI,CAAC,OAAO,CAAC,oBAAoB,EAAE,MAAM,CAAC,CAAC;AACpD,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB,CAAC,GAAW;IAC7C,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;QAC5B,IAAI,MAAM,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;YACjC,OAAO,GAAG,CAAC;QACb,CAAC;QACD,iFAAiF;QACjF,OAAO,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IACzD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,GAAG,CAAC;IACb,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,KAAc;IAChD,MAAM,GAAG,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,wBAAwB,CAAC;IAC9E,OAAO,oBAAoB,CAAC,GAAG,CAAC,CAAC;AACnC,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB,CAAC,OAAe;IAClD,IAAI,SAAS,GAAG,OAAO,CAAC;IAExB,iGAAiG;IACjG,SAAS,GAAG,SAAS,CAAC,UAAU,CAAC,mBAAmB,EAAE,gBAAgB,CAAC,CAAC;IAExE,gDAAgD;IAChD,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC,kCAAkC,EAAE,QAAQ,CAAC,CAAC;IAC5E,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC,6BAA6B,EAAE,QAAQ,CAAC,CAAC;IAEvE,kDAAkD;IAClD,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC;IAEnD,OAAO,SAAS,CAAC;AACnB,CAAC"}
1
+ {"version":3,"file":"sanitize.js","sourceRoot":"","sources":["../../../src/core/utils/sanitize.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;GAGG;AACH,MAAM,UAAU,oBAAoB,CAAC,IAAY;IAC/C,OAAO,IAAI,CAAC,OAAO,CAAC,oBAAoB,EAAE,MAAM,CAAC,CAAC;AACpD,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB,CAAC,GAAW;IAC7C,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;QAC5B,IAAI,MAAM,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;YACjC,OAAO,GAAG,CAAC;QACb,CAAC;QACD,iFAAiF;QACjF,OAAO,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IACzD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,GAAG,CAAC;IACb,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,KAAc;IAChD,MAAM,GAAG,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,wBAAwB,CAAC;IAC9E,OAAO,oBAAoB,CAAC,GAAG,CAAC,CAAC;AACnC,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB,CAAC,OAAe;IAClD,IAAI,SAAS,GAAG,OAAO,CAAC;IAExB,gDAAgD;IAChD,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC,kCAAkC,EAAE,QAAQ,CAAC,CAAC;IAC5E,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC,6BAA6B,EAAE,QAAQ,CAAC,CAAC;IAEvE,kDAAkD;IAClD,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC;IAEnD,OAAO,SAAS,CAAC;AACnB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"url.d.ts","sourceRoot":"","sources":["../../../src/core/utils/url.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAqC,KAAK,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAEnF,4CAA4C;AAC5C,eAAO,MAAM,iBAAiB,aAI5B,CAAC;AAEH,8FAA8F;AAC9F,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAOzD;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,QAAQ,CAa7D"}
1
+ {"version":3,"file":"url.d.ts","sourceRoot":"","sources":["../../../src/core/utils/url.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAqC,KAAK,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAEnF,4CAA4C;AAC5C,eAAO,MAAM,iBAAiB,aAG5B,CAAC;AAEH,8FAA8F;AAC9F,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAOzD;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,QAAQ,CAa7D"}
@@ -8,7 +8,6 @@ import { DEFAULT_LOCALE, SUPPORTED_LOCALES } from '../constants.js';
8
8
  /** Allowed hostnames for URL validation. */
9
9
  export const ALLOWED_HOSTNAMES = new Set([
10
10
  'learn.jamf.com',
11
- 'learn-be.jamf.com',
12
11
  'docs.jamf.com',
13
12
  ]);
14
13
  /** Check whether a URL string points to an allowed Jamf documentation hostname with HTTPS. */
@@ -1 +1 @@
1
- {"version":3,"file":"url.js","sourceRoot":"","sources":["../../../src/core/utils/url.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAiB,MAAM,iBAAiB,CAAC;AAEnF,4CAA4C;AAC5C,MAAM,CAAC,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAC;IACvC,gBAAgB;IAChB,mBAAmB;IACnB,eAAe;CAChB,CAAC,CAAC;AAEH,8FAA8F;AAC9F,MAAM,UAAU,iBAAiB,CAAC,MAAc;IAC9C,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC;QAC5B,OAAO,GAAG,CAAC,QAAQ,KAAK,QAAQ,IAAI,iBAAiB,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC1E,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB,CAAC,MAAc;IACjD,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC;QAC5B,MAAM,YAAY,GAAG,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAC7D,+DAA+D;QAC/D,MAAM,SAAS,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;QAClC,IAAI,SAAS,KAAK,SAAS,IAAI,SAAS,IAAI,iBAAiB,EAAE,CAAC;YAC9D,OAAO,SAAqB,CAAC;QAC/B,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,4BAA4B;IAC9B,CAAC;IACD,OAAO,cAAc,CAAC;AACxB,CAAC"}
1
+ {"version":3,"file":"url.js","sourceRoot":"","sources":["../../../src/core/utils/url.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAiB,MAAM,iBAAiB,CAAC;AAEnF,4CAA4C;AAC5C,MAAM,CAAC,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAC;IACvC,gBAAgB;IAChB,eAAe;CAChB,CAAC,CAAC;AAEH,8FAA8F;AAC9F,MAAM,UAAU,iBAAiB,CAAC,MAAc;IAC9C,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC;QAC5B,OAAO,GAAG,CAAC,QAAQ,KAAK,QAAQ,IAAI,iBAAiB,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC1E,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB,CAAC,MAAc;IACjD,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC;QAC5B,MAAM,YAAY,GAAG,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAC7D,+DAA+D;QAC/D,MAAM,SAAS,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;QAClC,IAAI,SAAS,KAAK,SAAS,IAAI,SAAS,IAAI,iBAAiB,EAAE,CAAC;YAC9D,OAAO,SAAqB,CAAC;QAC/B,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,4BAA4B;IAC9B,CAAC;IACD,OAAO,cAAc,CAAC;AACxB,CAAC"}
package/dist/index.js CHANGED
@@ -10,10 +10,11 @@ import { createMcpServer } from './core/create-server.js';
10
10
  import { createNodeConfig } from './platforms/node/config.js';
11
11
  import { FileCache } from './platforms/node/cache.js';
12
12
  import { NodeLoggerFactory } from './platforms/node/logger.js';
13
- import { NodeMetadataStore } from './platforms/node/metadata.js';
14
- import { createLogger } from './core/services/logging.js';
13
+ import { MapsRegistry } from './core/services/maps-registry.js';
14
+ import { TopicResolver } from './core/services/topic-resolver.js';
15
+ import { createStderrLogger } from './core/services/logging.js';
15
16
  import { parseCliArgs } from './transport/index.js';
16
- const log = createLogger('server');
17
+ const log = createStderrLogger('server');
17
18
  // Build Node.js platform context
18
19
  const config = createNodeConfig();
19
20
  const logger = new NodeLoggerFactory();
@@ -22,14 +23,17 @@ const cache = new FileCache({
22
23
  maxEntries: config.cache.maxEntries,
23
24
  log: logger.createLogger('cache'),
24
25
  });
25
- // Build the complete ServerContext (use partial first, then attach metadata)
26
+ // Build singleton services
27
+ const mapsRegistry = new MapsRegistry(cache, undefined, undefined, config.cacheTtl.products);
28
+ const topicResolver = new TopicResolver(mapsRegistry, cache, undefined, config.cacheTtl.article);
29
+ // Build the complete ServerContext
26
30
  const ctx = {
27
31
  config,
28
32
  logger,
29
33
  cache,
30
- metadata: undefined,
34
+ mapsRegistry,
35
+ topicResolver,
31
36
  };
32
- ctx.metadata = new NodeMetadataStore(ctx);
33
37
  // Create the MCP server with all tools, resources, and prompts registered
34
38
  const server = createMcpServer(ctx);
35
39
  // Start server
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA;;;;;GAKG;AAEH,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AAEjF,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAE1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEpD,MAAM,GAAG,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;AAEnC,iCAAiC;AACjC,MAAM,MAAM,GAAG,gBAAgB,EAAE,CAAC;AAClC,MAAM,MAAM,GAAG,IAAI,iBAAiB,EAAE,CAAC;AACvC,MAAM,KAAK,GAAG,IAAI,SAAS,CAAC;IAC1B,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IACzE,UAAU,EAAE,MAAM,CAAC,KAAK,CAAC,UAAU;IACnC,GAAG,EAAE,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC;CAClC,CAAC,CAAC;AAEH,6EAA6E;AAC7E,MAAM,GAAG,GAAkB;IACzB,MAAM;IACN,MAAM;IACN,KAAK;IACL,QAAQ,EAAE,SAAiD;CAC5D,CAAC;AACF,GAAG,CAAC,QAAQ,GAAG,IAAI,iBAAiB,CAAC,GAAG,CAAC,CAAC;AAE1C,0EAA0E;AAC1E,MAAM,MAAM,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;AAEpC,eAAe;AACf,KAAK,UAAU,IAAI;IACjB,MAAM,IAAI,GAAG,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAEjD,IAAI,IAAI,CAAC,SAAS,KAAK,MAAM,EAAE,CAAC;QAC9B,MAAM,EAAE,eAAe,EAAE,GAAG,MAAM,MAAM,CAAC,qBAAqB,CAAC,CAAC;QAChE,MAAM,eAAe,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IACtD,CAAC;SAAM,CAAC;QACN,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;QAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAEhC,GAAG,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAC;QAClD,GAAG,CAAC,IAAI,CAAC,+JAA+J,CAAC,CAAC;QAC1K,GAAG,CAAC,IAAI,CAAC,qDAAqD,CAAC,CAAC;QAChE,GAAG,CAAC,IAAI,CAAC,+EAA+E,CAAC,CAAC;IAC5F,CAAC;AACH,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;IAC9B,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACtF,GAAG,CAAC,SAAS,CAAC,gBAAgB,OAAO,EAAE,CAAC,CAAC;IACzC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Node.js HTTP server adapter
3
+ *
4
+ * Bridges the platform-agnostic HTTP handler with Node.js `node:http`.
5
+ * All Node.js-specific code (IncomingMessage, ServerResponse, process,
6
+ * Buffer, env vars) is isolated here.
7
+ */
8
+ import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
9
+ /**
10
+ * Create and start an HTTP server for the MCP server (Node.js platform).
11
+ */
12
+ export declare function startHttpServer(mcpServer: McpServer, port: number, host: string): Promise<void>;
13
+ //# sourceMappingURL=http-server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http-server.d.ts","sourceRoot":"","sources":["../../../src/platforms/node/http-server.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAwJzE;;GAEG;AACH,wBAAsB,eAAe,CACnC,SAAS,EAAE,SAAS,EACpB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,IAAI,CAAC,CAkEf"}
@@ -0,0 +1,231 @@
1
+ /**
2
+ * Node.js HTTP server adapter
3
+ *
4
+ * Bridges the platform-agnostic HTTP handler with Node.js `node:http`.
5
+ * All Node.js-specific code (IncomingMessage, ServerResponse, process,
6
+ * Buffer, env vars) is isolated here.
7
+ */
8
+ import { createServer } from 'node:http';
9
+ import { createHttpHandler } from '../../transport/http-handler.js';
10
+ import { createStderrLogger } from '../../core/services/logging.js';
11
+ import { createNodeConfig, getEnvNumber } from './config.js';
12
+ import { DEFAULT_HTTP_CONFIG } from '../../transport/http-types.js';
13
+ const log = createStderrLogger('http');
14
+ // ============================================================================
15
+ // Node.js request / response conversion
16
+ // ============================================================================
17
+ /**
18
+ * Convert Node.js IncomingMessage to a Web Standard Request.
19
+ *
20
+ * Injects the resolved client IP as an `X-Real-IP` header so the
21
+ * platform-agnostic handler can extract it without Node.js APIs.
22
+ */
23
+ function toWebRequest(req, body, url, clientIp) {
24
+ const headers = new Headers();
25
+ for (const [key, value] of Object.entries(req.headers)) {
26
+ if (value !== undefined) {
27
+ if (Array.isArray(value)) {
28
+ for (const v of value) {
29
+ headers.append(key, v);
30
+ }
31
+ }
32
+ else {
33
+ headers.set(key, value);
34
+ }
35
+ }
36
+ }
37
+ // Inject resolved client IP for the platform-agnostic handler
38
+ headers.set('x-real-ip', clientIp);
39
+ const method = req.method ?? 'GET';
40
+ const init = {
41
+ method,
42
+ headers,
43
+ };
44
+ // Only add body for methods that support it
45
+ if (method !== 'GET' && method !== 'HEAD' && method !== 'DELETE') {
46
+ init.body = body;
47
+ }
48
+ return new Request(url.toString(), init);
49
+ }
50
+ /**
51
+ * Write a Web Standard Response back to Node.js ServerResponse.
52
+ */
53
+ async function writeWebResponse(webRes, res) {
54
+ res.writeHead(webRes.status, Object.fromEntries(webRes.headers.entries()));
55
+ if (webRes.body === null) {
56
+ res.end();
57
+ return;
58
+ }
59
+ const reader = webRes.body.getReader();
60
+ try {
61
+ for (;;) {
62
+ const result = await reader.read();
63
+ if (result.done) {
64
+ break;
65
+ }
66
+ res.write(result.value);
67
+ }
68
+ }
69
+ finally {
70
+ reader.releaseLock();
71
+ res.end();
72
+ }
73
+ }
74
+ /**
75
+ * Collect request body from IncomingMessage into a Buffer.
76
+ * Enforces a maximum body size to prevent memory exhaustion.
77
+ */
78
+ async function collectBody(req, maxBodySize) {
79
+ const chunks = [];
80
+ let totalSize = 0;
81
+ for await (const chunk of req) {
82
+ const buf = typeof chunk === 'string' ? Buffer.from(chunk) : chunk;
83
+ totalSize += buf.length;
84
+ if (totalSize > maxBodySize) {
85
+ throw new Error('Payload too large');
86
+ }
87
+ chunks.push(buf);
88
+ }
89
+ return Buffer.concat(chunks);
90
+ }
91
+ // ============================================================================
92
+ // Client IP extraction (Node.js-specific)
93
+ // ============================================================================
94
+ /**
95
+ * Get client IP from Node.js IncomingMessage.
96
+ * Only trusts X-Forwarded-For when TRUST_PROXY is enabled.
97
+ */
98
+ function getNodeClientIp(req, trustProxy) {
99
+ if (trustProxy) {
100
+ const forwarded = req.headers['x-forwarded-for'];
101
+ if (typeof forwarded === 'string') {
102
+ const ips = forwarded.split(',').map(s => s.trim()).filter(Boolean);
103
+ return ips[ips.length - 1] ?? 'unknown';
104
+ }
105
+ }
106
+ // socket may be undefined in test environments
107
+ const socket = req.socket;
108
+ return socket?.remoteAddress ?? 'unknown';
109
+ }
110
+ // ============================================================================
111
+ // Configuration from environment
112
+ // ============================================================================
113
+ function buildConfig() {
114
+ const nodeConfig = createNodeConfig();
115
+ const corsAllowedOrigins = (process.env.CORS_ALLOWED_ORIGINS ?? '')
116
+ .split(',')
117
+ .map(s => s.trim())
118
+ .filter(Boolean);
119
+ const trustProxy = process.env.TRUST_PROXY === 'true' || process.env.TRUST_PROXY === '1';
120
+ const rateLimitRpm = getEnvNumber('RATE_LIMIT_RPM', 60, 1, 10000);
121
+ return {
122
+ ...DEFAULT_HTTP_CONFIG,
123
+ serverVersion: nodeConfig.version,
124
+ corsAllowedOrigins,
125
+ trustProxy,
126
+ rateLimitRpm,
127
+ };
128
+ }
129
+ // ============================================================================
130
+ // Public API
131
+ // ============================================================================
132
+ /**
133
+ * Create and start an HTTP server for the MCP server (Node.js platform).
134
+ */
135
+ export async function startHttpServer(mcpServer, port, host) {
136
+ const config = buildConfig();
137
+ // Platform-specific IP extractor: reads from X-Real-IP header
138
+ // that we inject in toWebRequest
139
+ const getClientIp = (request) => {
140
+ return request.headers.get('x-real-ip') ?? 'unknown';
141
+ };
142
+ const { handler, cleanup } = createHttpHandler(mcpServer, config, getClientIp, log);
143
+ const httpServer = createServer((req, res) => {
144
+ void handleNodeRequest(req, res, handler, config);
145
+ });
146
+ // Graceful shutdown
147
+ let shuttingDown = false;
148
+ function shutdown(signal) {
149
+ if (shuttingDown) {
150
+ return;
151
+ }
152
+ shuttingDown = true;
153
+ log.info(`${signal} received, shutting down...`);
154
+ cleanup();
155
+ httpServer.close(() => {
156
+ log.info('HTTP server closed');
157
+ process.exit(0);
158
+ });
159
+ // Force exit after timeout
160
+ setTimeout(() => {
161
+ log.warning('Shutdown timeout, forcing exit');
162
+ process.exit(1);
163
+ }, config.shutdownTimeoutMs);
164
+ }
165
+ process.on('SIGINT', () => { shutdown('SIGINT'); });
166
+ process.on('SIGTERM', () => { shutdown('SIGTERM'); });
167
+ // Start listening
168
+ await new Promise((resolve, reject) => {
169
+ httpServer.on('error', (error) => {
170
+ if (error.code === 'EADDRINUSE') {
171
+ log.error(`Port ${port} is already in use`);
172
+ process.exit(1);
173
+ }
174
+ reject(error);
175
+ });
176
+ httpServer.listen(port, host, () => {
177
+ if (host !== '127.0.0.1' && host !== '::1') {
178
+ log.warning(`Server is binding to ${host}, which exposes it to the network. `
179
+ + 'Use 127.0.0.1 for local-only access.');
180
+ }
181
+ log.info(`Jamf Docs MCP Server running on http://${host}:${port}`);
182
+ log.info(`MCP endpoint: http://${host}:${port}/mcp`);
183
+ log.info(`Health check: http://${host}:${port}/health`);
184
+ log.info(`LLMs info: http://${host}:${port}/llms.txt`);
185
+ resolve();
186
+ });
187
+ });
188
+ }
189
+ // ============================================================================
190
+ // Node.js request handler bridge
191
+ // ============================================================================
192
+ /**
193
+ * Bridge a single Node.js HTTP request into the platform-agnostic handler.
194
+ */
195
+ async function handleNodeRequest(req, res, handler, config) {
196
+ const url = new URL(req.url ?? '/', 'http://localhost');
197
+ // Resolve client IP at the Node.js layer
198
+ const clientIp = getNodeClientIp(req, config.trustProxy);
199
+ // For methods that carry a body, collect it; otherwise use empty Buffer
200
+ const method = req.method ?? 'GET';
201
+ let body;
202
+ if (method !== 'GET' && method !== 'HEAD' && method !== 'DELETE' && method !== 'OPTIONS') {
203
+ try {
204
+ body = await collectBody(req, config.maxBodySize);
205
+ }
206
+ catch {
207
+ // Body too large — send 413, then destroy to stop reading remaining data
208
+ res.writeHead(413, { 'Content-Type': 'application/json' });
209
+ res.end(JSON.stringify({ error: 'Payload too large' }), () => {
210
+ req.destroy();
211
+ });
212
+ return;
213
+ }
214
+ }
215
+ else {
216
+ body = Buffer.alloc(0);
217
+ }
218
+ // Convert to Web Standard Request
219
+ const webReq = toWebRequest(req, body, url, clientIp);
220
+ try {
221
+ const webRes = await handler(webReq);
222
+ await writeWebResponse(webRes, res);
223
+ }
224
+ catch {
225
+ if (!res.headersSent) {
226
+ res.writeHead(500, { 'Content-Type': 'application/json' });
227
+ res.end(JSON.stringify({ error: 'Internal server error' }));
228
+ }
229
+ }
230
+ }
231
+ //# sourceMappingURL=http-server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http-server.js","sourceRoot":"","sources":["../../../src/platforms/node/http-server.ts"],"names":[],"mappings":"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"}
@@ -3,6 +3,6 @@
3
3
  */
4
4
  export { FileCache } from './cache.js';
5
5
  export { NodeLoggerFactory } from './logger.js';
6
- export { NodeMetadataStore } from './metadata.js';
7
6
  export { createNodeConfig } from './config.js';
7
+ export { startHttpServer } from './http-server.js';
8
8
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/platforms/node/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/platforms/node/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC"}
@@ -3,6 +3,6 @@
3
3
  */
4
4
  export { FileCache } from './cache.js';
5
5
  export { NodeLoggerFactory } from './logger.js';
6
- export { NodeMetadataStore } from './metadata.js';
7
6
  export { createNodeConfig } from './config.js';
7
+ export { startHttpServer } from './http-server.js';
8
8
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/platforms/node/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/platforms/node/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC"}
@@ -1,11 +1,22 @@
1
1
  /**
2
2
  * Node.js logger factory
3
3
  *
4
- * Wraps the existing logging implementation from core to implement LoggerFactory.
4
+ * Wraps a LoggingService instance to implement the LoggerFactory interface.
5
+ * Each NodeLoggerFactory holds its own LoggingService, avoiding
6
+ * module-level mutable state.
7
+ *
8
+ * Uses `console.error` (stderr) by default — the standard Node.js behaviour.
9
+ * A future WorkersLoggerFactory could pass `console.log` or a no-op instead.
5
10
  */
6
11
  import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
7
- import type { Logger, LoggerFactory } from '../../core/services/interfaces/index.js';
12
+ import type { Logger, LoggerFactory, WriteStderrFn } from '../../core/services/interfaces/index.js';
8
13
  export declare class NodeLoggerFactory implements LoggerFactory {
14
+ private readonly service;
15
+ /**
16
+ * @param writeStderr - Optional writer function. Defaults to `console.error`
17
+ * (Node.js stderr). Override for testing or alternative output targets.
18
+ */
19
+ constructor(writeStderr?: WriteStderrFn);
9
20
  createLogger(name: string): Logger;
10
21
  setServer(server: McpServer): void;
11
22
  }
@@ -1 +1 @@
1
- {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../../src/platforms/node/logger.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,yCAAyC,CAAC;AAMrF,qBAAa,iBAAkB,YAAW,aAAa;IACrD,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAIlC,SAAS,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI;CAGnC"}
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../../src/platforms/node/logger.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,yCAAyC,CAAC;AAGpG,qBAAa,iBAAkB,YAAW,aAAa;IACrD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAiB;IAEzC;;;OAGG;gBACS,WAAW,CAAC,EAAE,aAAa;IAIvC,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAIlC,SAAS,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI;CAGnC"}
@@ -1,15 +1,28 @@
1
1
  /**
2
2
  * Node.js logger factory
3
3
  *
4
- * Wraps the existing logging implementation from core to implement LoggerFactory.
4
+ * Wraps a LoggingService instance to implement the LoggerFactory interface.
5
+ * Each NodeLoggerFactory holds its own LoggingService, avoiding
6
+ * module-level mutable state.
7
+ *
8
+ * Uses `console.error` (stderr) by default — the standard Node.js behaviour.
9
+ * A future WorkersLoggerFactory could pass `console.log` or a no-op instead.
5
10
  */
6
- import { createLogger as coreCreateLogger, setServer as coreSetServer, } from '../../core/services/logging.js';
11
+ import { LoggingService } from '../../core/services/logging.js';
7
12
  export class NodeLoggerFactory {
13
+ service;
14
+ /**
15
+ * @param writeStderr - Optional writer function. Defaults to `console.error`
16
+ * (Node.js stderr). Override for testing or alternative output targets.
17
+ */
18
+ constructor(writeStderr) {
19
+ this.service = new LoggingService(writeStderr);
20
+ }
8
21
  createLogger(name) {
9
- return coreCreateLogger(name);
22
+ return this.service.createLogger(name);
10
23
  }
11
24
  setServer(server) {
12
- coreSetServer(server);
25
+ this.service.setServer(server);
13
26
  }
14
27
  }
15
28
  //# sourceMappingURL=logger.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../../src/platforms/node/logger.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,EACL,YAAY,IAAI,gBAAgB,EAChC,SAAS,IAAI,aAAa,GAC3B,MAAM,gCAAgC,CAAC;AAExC,MAAM,OAAO,iBAAiB;IAC5B,YAAY,CAAC,IAAY;QACvB,OAAO,gBAAgB,CAAC,IAAI,CAAC,CAAC;IAChC,CAAC;IAED,SAAS,CAAC,MAAiB;QACzB,aAAa,CAAC,MAAM,CAAC,CAAC;IACxB,CAAC;CACF"}
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../../src/platforms/node/logger.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAEhE,MAAM,OAAO,iBAAiB;IACX,OAAO,CAAiB;IAEzC;;;OAGG;IACH,YAAY,WAA2B;QACrC,IAAI,CAAC,OAAO,GAAG,IAAI,cAAc,CAAC,WAAW,CAAC,CAAC;IACjD,CAAC;IAED,YAAY,CAAC,IAAY;QACvB,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;IACzC,CAAC;IAED,SAAS,CAAC,MAAiB;QACzB,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IACjC,CAAC;CACF"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Platform-agnostic HTTP handler for the MCP server.
3
+ *
4
+ * Platform adapters (Node.js, Cloudflare Workers) convert their
5
+ * native request/response types to/from Web Standard objects and
6
+ * call the `handler` function returned by `createHttpHandler`.
7
+ */
8
+ import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
9
+ import { type HttpHandlerConfig, type ClientIpExtractor, type Logger } from './http-types.js';
10
+ /**
11
+ * Create a platform-agnostic HTTP handler for the MCP server.
12
+ *
13
+ * @param mcpServer - The MCP server instance to connect per-request transports to
14
+ * @param config - HTTP handler configuration
15
+ * @param getClientIp - Platform-specific function to extract client IP from a Request
16
+ * @param logger - Optional logger instance
17
+ * @returns An object with:
18
+ * - `handler`: async function that takes a Web Standard Request and returns a Response
19
+ * - `cleanup`: function to stop the rate limiter cleanup interval
20
+ */
21
+ export declare function createHttpHandler(mcpServer: McpServer, config: HttpHandlerConfig, getClientIp: ClientIpExtractor, logger?: Logger): {
22
+ handler: (request: Request) => Promise<Response>;
23
+ cleanup: () => void;
24
+ };
25
+ //# sourceMappingURL=http-handler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http-handler.d.ts","sourceRoot":"","sources":["../../src/transport/http-handler.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAMzE,OAAO,EAGL,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,EACtB,KAAK,MAAM,EACZ,MAAM,iBAAiB,CAAC;AA6GzB;;;;;;;;;;GAUG;AACH,wBAAgB,iBAAiB,CAC/B,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,iBAAiB,EACzB,WAAW,EAAE,iBAAiB,EAC9B,MAAM,CAAC,EAAE,MAAM,GACd;IAAE,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;IAAC,OAAO,EAAE,MAAM,IAAI,CAAA;CAAE,CAuD3E"}