mcp4openapi 0.2.8 → 0.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (358) hide show
  1. package/README.md +143 -63
  2. package/dist/scripts/validate-profile.js +3 -3
  3. package/dist/scripts/validate-profile.js.map +1 -1
  4. package/dist/src/argument-normalizer.d.ts +5 -0
  5. package/dist/src/argument-normalizer.d.ts.map +1 -0
  6. package/dist/src/argument-normalizer.js +61 -0
  7. package/dist/src/argument-normalizer.js.map +1 -0
  8. package/dist/src/auth/oauth-provider.d.ts +131 -0
  9. package/dist/src/auth/oauth-provider.d.ts.map +1 -0
  10. package/dist/src/auth/oauth-provider.js +839 -0
  11. package/dist/src/auth/oauth-provider.js.map +1 -0
  12. package/dist/src/cli-config.d.ts +9 -0
  13. package/dist/src/cli-config.d.ts.map +1 -0
  14. package/dist/src/cli-config.js +111 -0
  15. package/dist/src/cli-config.js.map +1 -0
  16. package/dist/src/core/cli-config.d.ts +9 -0
  17. package/dist/src/core/cli-config.d.ts.map +1 -0
  18. package/dist/src/core/cli-config.js +125 -0
  19. package/dist/src/core/cli-config.js.map +1 -0
  20. package/dist/src/core/constants.d.ts +86 -0
  21. package/dist/src/core/constants.d.ts.map +1 -0
  22. package/dist/src/core/constants.js +86 -0
  23. package/dist/src/core/constants.js.map +1 -0
  24. package/dist/src/core/errors.d.ts +59 -0
  25. package/dist/src/core/errors.d.ts.map +1 -0
  26. package/dist/src/core/errors.js +119 -0
  27. package/dist/src/core/errors.js.map +1 -0
  28. package/dist/src/core/filtering.d.ts +19 -0
  29. package/dist/src/core/filtering.d.ts.map +1 -0
  30. package/dist/src/core/filtering.js +292 -0
  31. package/dist/src/core/filtering.js.map +1 -0
  32. package/dist/src/core/index.d.ts +26 -0
  33. package/dist/src/core/index.d.ts.map +1 -0
  34. package/dist/src/core/index.js +276 -0
  35. package/dist/src/core/index.js.map +1 -0
  36. package/dist/src/core/lib.d.ts +8 -0
  37. package/dist/src/core/lib.d.ts.map +1 -0
  38. package/dist/src/core/lib.js +7 -0
  39. package/dist/src/core/lib.js.map +1 -0
  40. package/dist/src/core/logger.d.ts +59 -0
  41. package/dist/src/core/logger.d.ts.map +1 -0
  42. package/dist/src/core/logger.js +197 -0
  43. package/dist/src/core/logger.js.map +1 -0
  44. package/dist/src/core/metrics.d.ts +97 -0
  45. package/dist/src/core/metrics.d.ts.map +1 -0
  46. package/dist/src/core/metrics.js +273 -0
  47. package/dist/src/core/metrics.js.map +1 -0
  48. package/dist/src/core/naming-warnings.d.ts +23 -0
  49. package/dist/src/core/naming-warnings.d.ts.map +1 -0
  50. package/dist/src/core/naming-warnings.js +83 -0
  51. package/dist/src/core/naming-warnings.js.map +1 -0
  52. package/dist/src/core/naming.d.ts +58 -0
  53. package/dist/src/core/naming.d.ts.map +1 -0
  54. package/dist/src/core/naming.js +510 -0
  55. package/dist/src/core/naming.js.map +1 -0
  56. package/dist/src/errors.d.ts +6 -0
  57. package/dist/src/errors.d.ts.map +1 -1
  58. package/dist/src/errors.js +15 -6
  59. package/dist/src/errors.js.map +1 -1
  60. package/dist/src/filtering.d.ts +19 -0
  61. package/dist/src/filtering.d.ts.map +1 -0
  62. package/dist/src/filtering.js +292 -0
  63. package/dist/src/filtering.js.map +1 -0
  64. package/dist/src/generated-schemas.d.ts +290 -79
  65. package/dist/src/generated-schemas.d.ts.map +1 -1
  66. package/dist/src/generated-schemas.js +17 -2
  67. package/dist/src/generated-schemas.js.map +1 -1
  68. package/dist/src/http-transport-config.d.ts +6 -0
  69. package/dist/src/http-transport-config.d.ts.map +1 -0
  70. package/dist/src/http-transport-config.js +47 -0
  71. package/dist/src/http-transport-config.js.map +1 -0
  72. package/dist/src/http-transport.d.ts +63 -13
  73. package/dist/src/http-transport.d.ts.map +1 -1
  74. package/dist/src/http-transport.js +1045 -482
  75. package/dist/src/http-transport.js.map +1 -1
  76. package/dist/src/index.d.ts +1 -6
  77. package/dist/src/index.d.ts.map +1 -1
  78. package/dist/src/index.js +1 -170
  79. package/dist/src/index.js.map +1 -1
  80. package/dist/src/interceptors.d.ts +1 -0
  81. package/dist/src/interceptors.d.ts.map +1 -1
  82. package/dist/src/interceptors.js +73 -63
  83. package/dist/src/interceptors.js.map +1 -1
  84. package/dist/src/lib.d.ts +1 -7
  85. package/dist/src/lib.d.ts.map +1 -1
  86. package/dist/src/lib.js +1 -6
  87. package/dist/src/lib.js.map +1 -1
  88. package/dist/src/logger.d.ts +5 -0
  89. package/dist/src/logger.d.ts.map +1 -1
  90. package/dist/src/logger.js +9 -1
  91. package/dist/src/logger.js.map +1 -1
  92. package/dist/src/mcp/mcp-server-manager.d.ts +20 -0
  93. package/dist/src/mcp/mcp-server-manager.d.ts.map +1 -0
  94. package/dist/src/mcp/mcp-server-manager.js +38 -0
  95. package/dist/src/mcp/mcp-server-manager.js.map +1 -0
  96. package/dist/src/mcp/mcp-server.d.ts +205 -0
  97. package/dist/src/mcp/mcp-server.d.ts.map +1 -0
  98. package/dist/src/mcp/mcp-server.js +1473 -0
  99. package/dist/src/mcp/mcp-server.js.map +1 -0
  100. package/dist/src/mcp-server-manager.d.ts +20 -0
  101. package/dist/src/mcp-server-manager.d.ts.map +1 -0
  102. package/dist/src/mcp-server-manager.js +38 -0
  103. package/dist/src/mcp-server-manager.js.map +1 -0
  104. package/dist/src/mcp-server.d.ts +28 -0
  105. package/dist/src/mcp-server.d.ts.map +1 -1
  106. package/dist/src/mcp-server.js +406 -109
  107. package/dist/src/mcp-server.js.map +1 -1
  108. package/dist/src/metrics.d.ts +11 -0
  109. package/dist/src/metrics.d.ts.map +1 -1
  110. package/dist/src/metrics.js +61 -0
  111. package/dist/src/metrics.js.map +1 -1
  112. package/dist/src/oauth-provider.d.ts +5 -0
  113. package/dist/src/oauth-provider.d.ts.map +1 -1
  114. package/dist/src/oauth-provider.js +29 -1
  115. package/dist/src/oauth-provider.js.map +1 -1
  116. package/dist/src/openapi/openapi-parser.d.ts +70 -0
  117. package/dist/src/openapi/openapi-parser.d.ts.map +1 -0
  118. package/dist/src/openapi/openapi-parser.js +458 -0
  119. package/dist/src/openapi/openapi-parser.js.map +1 -0
  120. package/dist/src/profile/profile-loader.d.ts +78 -0
  121. package/dist/src/profile/profile-loader.d.ts.map +1 -0
  122. package/dist/src/profile/profile-loader.js +490 -0
  123. package/dist/src/profile/profile-loader.js.map +1 -0
  124. package/dist/src/profile/profile-registry.d.ts +19 -0
  125. package/dist/src/profile/profile-registry.d.ts.map +1 -0
  126. package/dist/src/profile/profile-registry.js +43 -0
  127. package/dist/src/profile/profile-registry.js.map +1 -0
  128. package/dist/src/profile/profile-resolver.d.ts +41 -0
  129. package/dist/src/profile/profile-resolver.d.ts.map +1 -0
  130. package/dist/src/profile/profile-resolver.js +324 -0
  131. package/dist/src/profile/profile-resolver.js.map +1 -0
  132. package/dist/src/profile/startup-profile.d.ts +17 -0
  133. package/dist/src/profile/startup-profile.d.ts.map +1 -0
  134. package/dist/src/profile/startup-profile.js +30 -0
  135. package/dist/src/profile/startup-profile.js.map +1 -0
  136. package/dist/src/profile/startup-validation.d.ts +11 -0
  137. package/dist/src/profile/startup-validation.d.ts.map +1 -0
  138. package/dist/src/profile/startup-validation.js +21 -0
  139. package/dist/src/profile/startup-validation.js.map +1 -0
  140. package/dist/src/profile-loader.d.ts +1 -0
  141. package/dist/src/profile-loader.d.ts.map +1 -1
  142. package/dist/src/profile-loader.js +14 -3
  143. package/dist/src/profile-loader.js.map +1 -1
  144. package/dist/src/profile-registry.d.ts +18 -0
  145. package/dist/src/profile-registry.d.ts.map +1 -0
  146. package/dist/src/profile-registry.js +26 -0
  147. package/dist/src/profile-registry.js.map +1 -0
  148. package/dist/src/profile-resolver.d.ts +19 -0
  149. package/dist/src/profile-resolver.d.ts.map +1 -0
  150. package/dist/src/profile-resolver.js +167 -0
  151. package/dist/src/profile-resolver.js.map +1 -0
  152. package/dist/src/proxy-executor.d.ts.map +1 -1
  153. package/dist/src/proxy-executor.js +7 -0
  154. package/dist/src/proxy-executor.js.map +1 -1
  155. package/dist/src/startup-profile.d.ts +17 -0
  156. package/dist/src/startup-profile.d.ts.map +1 -0
  157. package/dist/src/startup-profile.js +30 -0
  158. package/dist/src/startup-profile.js.map +1 -0
  159. package/dist/src/startup-validation.d.ts +11 -0
  160. package/dist/src/startup-validation.d.ts.map +1 -0
  161. package/dist/src/startup-validation.js +21 -0
  162. package/dist/src/startup-validation.js.map +1 -0
  163. package/dist/src/testing/dynamic-mock-server.d.ts +24 -0
  164. package/dist/src/testing/dynamic-mock-server.d.ts.map +1 -0
  165. package/dist/src/testing/dynamic-mock-server.js +138 -0
  166. package/dist/src/testing/dynamic-mock-server.js.map +1 -0
  167. package/dist/src/testing/request-assertions.d.ts +5 -0
  168. package/dist/src/testing/request-assertions.d.ts.map +1 -0
  169. package/dist/src/testing/request-assertions.js +165 -0
  170. package/dist/src/testing/request-assertions.js.map +1 -0
  171. package/dist/src/testing/template-utils.d.ts +10 -0
  172. package/dist/src/testing/template-utils.d.ts.map +1 -0
  173. package/dist/src/testing/template-utils.js +72 -0
  174. package/dist/src/testing/template-utils.js.map +1 -0
  175. package/dist/src/testing/test-http-utils.d.ts +1 -1
  176. package/dist/src/testing/test-http-utils.d.ts.map +1 -1
  177. package/dist/src/testing/test-http-utils.js +1 -1
  178. package/dist/src/testing/test-http-utils.js.map +1 -1
  179. package/dist/src/testing/test-loader.d.ts +6 -0
  180. package/dist/src/testing/test-loader.d.ts.map +1 -0
  181. package/dist/src/testing/test-loader.js +212 -0
  182. package/dist/src/testing/test-loader.js.map +1 -0
  183. package/dist/src/testing/test-schema.d.ts +1270 -0
  184. package/dist/src/testing/test-schema.d.ts.map +1 -0
  185. package/dist/src/testing/test-schema.js +76 -0
  186. package/dist/src/testing/test-schema.js.map +1 -0
  187. package/dist/src/tool-filter/compat.d.ts +49 -0
  188. package/dist/src/tool-filter/compat.d.ts.map +1 -0
  189. package/dist/src/tool-filter/compat.js +72 -0
  190. package/dist/src/tool-filter/compat.js.map +1 -0
  191. package/dist/src/tool-filter/config/env-config-parser.d.ts +38 -0
  192. package/dist/src/tool-filter/config/env-config-parser.d.ts.map +1 -0
  193. package/dist/src/tool-filter/config/env-config-parser.js +103 -0
  194. package/dist/src/tool-filter/config/env-config-parser.js.map +1 -0
  195. package/dist/src/tool-filter/config/header-config-parser.d.ts +37 -0
  196. package/dist/src/tool-filter/config/header-config-parser.d.ts.map +1 -0
  197. package/dist/src/tool-filter/config/header-config-parser.js +118 -0
  198. package/dist/src/tool-filter/config/header-config-parser.js.map +1 -0
  199. package/dist/src/tool-filter/errors.d.ts +18 -0
  200. package/dist/src/tool-filter/errors.d.ts.map +1 -0
  201. package/dist/src/tool-filter/errors.js +21 -0
  202. package/dist/src/tool-filter/errors.js.map +1 -0
  203. package/dist/src/tool-filter/filter/filter-engine.d.ts +45 -0
  204. package/dist/src/tool-filter/filter/filter-engine.d.ts.map +1 -0
  205. package/dist/src/tool-filter/filter/filter-engine.js +94 -0
  206. package/dist/src/tool-filter/filter/filter-engine.js.map +1 -0
  207. package/dist/src/tool-filter/filter/filter-rules.d.ts +44 -0
  208. package/dist/src/tool-filter/filter/filter-rules.d.ts.map +1 -0
  209. package/dist/src/tool-filter/filter/filter-rules.js +72 -0
  210. package/dist/src/tool-filter/filter/filter-rules.js.map +1 -0
  211. package/dist/src/tool-filter/filter/global-tool-filter.d.ts +40 -0
  212. package/dist/src/tool-filter/filter/global-tool-filter.d.ts.map +1 -0
  213. package/dist/src/tool-filter/filter/global-tool-filter.js +92 -0
  214. package/dist/src/tool-filter/filter/global-tool-filter.js.map +1 -0
  215. package/dist/src/tool-filter/filter/session-tool-filter.d.ts +29 -0
  216. package/dist/src/tool-filter/filter/session-tool-filter.d.ts.map +1 -0
  217. package/dist/src/tool-filter/filter/session-tool-filter.js +69 -0
  218. package/dist/src/tool-filter/filter/session-tool-filter.js.map +1 -0
  219. package/dist/src/tool-filter/index.d.ts +25 -0
  220. package/dist/src/tool-filter/index.d.ts.map +1 -0
  221. package/dist/src/tool-filter/index.js +30 -0
  222. package/dist/src/tool-filter/index.js.map +1 -0
  223. package/dist/src/tool-filter/integration/tool-filter-service.d.ts +44 -0
  224. package/dist/src/tool-filter/integration/tool-filter-service.d.ts.map +1 -0
  225. package/dist/src/tool-filter/integration/tool-filter-service.js +68 -0
  226. package/dist/src/tool-filter/integration/tool-filter-service.js.map +1 -0
  227. package/dist/src/tool-filter/operation/operation-classifier.d.ts +20 -0
  228. package/dist/src/tool-filter/operation/operation-classifier.d.ts.map +1 -0
  229. package/dist/src/tool-filter/operation/operation-classifier.js +26 -0
  230. package/dist/src/tool-filter/operation/operation-classifier.js.map +1 -0
  231. package/dist/src/tool-filter/operation/operation-detector.d.ts +30 -0
  232. package/dist/src/tool-filter/operation/operation-detector.d.ts.map +1 -0
  233. package/dist/src/tool-filter/operation/operation-detector.js +96 -0
  234. package/dist/src/tool-filter/operation/operation-detector.js.map +1 -0
  235. package/dist/src/tool-filter/operation/operation-resolver.d.ts +22 -0
  236. package/dist/src/tool-filter/operation/operation-resolver.d.ts.map +1 -0
  237. package/dist/src/tool-filter/operation/operation-resolver.js +32 -0
  238. package/dist/src/tool-filter/operation/operation-resolver.js.map +1 -0
  239. package/dist/src/tool-filter/regex/regex-compiler.d.ts +22 -0
  240. package/dist/src/tool-filter/regex/regex-compiler.d.ts.map +1 -0
  241. package/dist/src/tool-filter/regex/regex-compiler.js +56 -0
  242. package/dist/src/tool-filter/regex/regex-compiler.js.map +1 -0
  243. package/dist/src/tool-filter/regex/regex-validator.d.ts +24 -0
  244. package/dist/src/tool-filter/regex/regex-validator.d.ts.map +1 -0
  245. package/dist/src/tool-filter/regex/regex-validator.js +58 -0
  246. package/dist/src/tool-filter/regex/regex-validator.js.map +1 -0
  247. package/dist/src/tool-filter/types.d.ts +92 -0
  248. package/dist/src/tool-filter/types.d.ts.map +1 -0
  249. package/dist/src/tool-filter/types.js +5 -0
  250. package/dist/src/tool-filter/types.js.map +1 -0
  251. package/dist/src/tool-filter/utils.d.ts +11 -0
  252. package/dist/src/tool-filter/utils.d.ts.map +1 -0
  253. package/dist/src/tool-filter/utils.js +13 -0
  254. package/dist/src/tool-filter/utils.js.map +1 -0
  255. package/dist/src/tool-filter.d.ts +65 -0
  256. package/dist/src/tool-filter.d.ts.map +1 -0
  257. package/dist/src/tool-filter.js +471 -0
  258. package/dist/src/tool-filter.js.map +1 -0
  259. package/dist/src/tool-generator.d.ts +1 -0
  260. package/dist/src/tool-generator.d.ts.map +1 -1
  261. package/dist/src/tool-generator.js +15 -6
  262. package/dist/src/tool-generator.js.map +1 -1
  263. package/dist/src/tooling/composite-executor.d.ts +77 -0
  264. package/dist/src/tooling/composite-executor.d.ts.map +1 -0
  265. package/dist/src/tooling/composite-executor.js +198 -0
  266. package/dist/src/tooling/composite-executor.js.map +1 -0
  267. package/dist/src/tooling/dag-executor.d.ts +49 -0
  268. package/dist/src/tooling/dag-executor.d.ts.map +1 -0
  269. package/dist/src/tooling/dag-executor.js +138 -0
  270. package/dist/src/tooling/dag-executor.js.map +1 -0
  271. package/dist/src/tooling/proxy-executor.d.ts +86 -0
  272. package/dist/src/tooling/proxy-executor.d.ts.map +1 -0
  273. package/dist/src/tooling/proxy-executor.js +501 -0
  274. package/dist/src/tooling/proxy-executor.js.map +1 -0
  275. package/dist/src/tooling/tool-generator.d.ts +67 -0
  276. package/dist/src/tooling/tool-generator.d.ts.map +1 -0
  277. package/dist/src/tooling/tool-generator.js +222 -0
  278. package/dist/src/tooling/tool-generator.js.map +1 -0
  279. package/dist/src/transport/http-client-factory.d.ts +65 -0
  280. package/dist/src/transport/http-client-factory.d.ts.map +1 -0
  281. package/dist/src/transport/http-client-factory.js +143 -0
  282. package/dist/src/transport/http-client-factory.js.map +1 -0
  283. package/dist/src/transport/http-transport-config.d.ts +6 -0
  284. package/dist/src/transport/http-transport-config.d.ts.map +1 -0
  285. package/dist/src/transport/http-transport-config.js +63 -0
  286. package/dist/src/transport/http-transport-config.js.map +1 -0
  287. package/dist/src/transport/http-transport.d.ts +329 -0
  288. package/dist/src/transport/http-transport.d.ts.map +1 -0
  289. package/dist/src/transport/http-transport.js +2584 -0
  290. package/dist/src/transport/http-transport.js.map +1 -0
  291. package/dist/src/transport/interceptors.d.ts +119 -0
  292. package/dist/src/transport/interceptors.d.ts.map +1 -0
  293. package/dist/src/transport/interceptors.js +413 -0
  294. package/dist/src/transport/interceptors.js.map +1 -0
  295. package/dist/src/transport/profile-index.d.ts +84 -0
  296. package/dist/src/transport/profile-index.d.ts.map +1 -0
  297. package/dist/src/transport/profile-index.js +405 -0
  298. package/dist/src/transport/profile-index.js.map +1 -0
  299. package/dist/src/types/http-transport.d.ts +26 -0
  300. package/dist/src/types/http-transport.d.ts.map +1 -1
  301. package/dist/src/types/openapi.d.ts +3 -0
  302. package/dist/src/types/openapi.d.ts.map +1 -1
  303. package/dist/src/types/profile.d.ts +16 -1
  304. package/dist/src/types/profile.d.ts.map +1 -1
  305. package/dist/src/validation/argument-normalizer.d.ts +6 -0
  306. package/dist/src/validation/argument-normalizer.d.ts.map +1 -0
  307. package/dist/src/validation/argument-normalizer.js +70 -0
  308. package/dist/src/validation/argument-normalizer.js.map +1 -0
  309. package/dist/src/validation/jsonrpc-validator.d.ts +27 -0
  310. package/dist/src/validation/jsonrpc-validator.d.ts.map +1 -0
  311. package/dist/src/validation/jsonrpc-validator.js +58 -0
  312. package/dist/src/validation/jsonrpc-validator.js.map +1 -0
  313. package/dist/src/validation/schema-validator.d.ts +30 -0
  314. package/dist/src/validation/schema-validator.d.ts.map +1 -0
  315. package/dist/src/validation/schema-validator.js +128 -0
  316. package/dist/src/validation/schema-validator.js.map +1 -0
  317. package/dist/src/validation/validation-utils.d.ts +49 -0
  318. package/dist/src/validation/validation-utils.d.ts.map +1 -0
  319. package/dist/src/validation/validation-utils.js +139 -0
  320. package/dist/src/validation/validation-utils.js.map +1 -0
  321. package/html/profile-index.html +386 -0
  322. package/package.json +10 -3
  323. package/profile-schema.json +77 -3
  324. package/profiles/gitlab/developer-profile-oauth.json +1520 -0
  325. package/profiles/gitlab/developer-profile-oauth.test.json +3432 -0
  326. package/profiles/gitlab/developer-profile.json +1508 -0
  327. package/profiles/gitlab/developer-profile.test.json +3432 -0
  328. package/profiles/gitlab/openapi.yaml +6891 -0
  329. package/profiles/n8n/openapi.yaml +2441 -0
  330. package/profiles/n8n/profile-optimized.json +965 -0
  331. package/profiles/n8n/profile-optimized.test.json +1078 -0
  332. package/profiles/n8n/profile.json +1033 -0
  333. package/profiles/n8n/profile.test.json +983 -0
  334. package/profiles/n8n-nodes/openapi.yaml +24 -0
  335. package/profiles/n8n-nodes/profile-nodes.json +44 -0
  336. package/profiles/n8n-nodes/profile-nodes.test.json +91 -0
  337. package/profiles/semgrep/openapi.yaml +4706 -0
  338. package/profiles/semgrep/profile.json +692 -0
  339. package/profiles/semgrep/profile.test.json +471 -0
  340. package/profiles/youtrack/openapi.json +16976 -0
  341. package/profiles/youtrack/profile.json +608 -0
  342. package/profiles/youtrack/profile.test.json +1926 -0
  343. package/dist/src/testing/fixtures.d.ts +0 -684
  344. package/dist/src/testing/fixtures.d.ts.map +0 -1
  345. package/dist/src/testing/fixtures.js +0 -528
  346. package/dist/src/testing/fixtures.js.map +0 -1
  347. package/dist/src/testing/mock-gitlab-server.d.ts +0 -43
  348. package/dist/src/testing/mock-gitlab-server.d.ts.map +0 -1
  349. package/dist/src/testing/mock-gitlab-server.js +0 -1026
  350. package/dist/src/testing/mock-gitlab-server.js.map +0 -1
  351. package/dist/src/testing/mock-semgrep-server.d.ts +0 -32
  352. package/dist/src/testing/mock-semgrep-server.d.ts.map +0 -1
  353. package/dist/src/testing/mock-semgrep-server.js +0 -213
  354. package/dist/src/testing/mock-semgrep-server.js.map +0 -1
  355. package/dist/src/testing/mock-youtrack-server.d.ts +0 -11
  356. package/dist/src/testing/mock-youtrack-server.d.ts.map +0 -1
  357. package/dist/src/testing/mock-youtrack-server.js +0 -152
  358. package/dist/src/testing/mock-youtrack-server.js.map +0 -1
@@ -0,0 +1,413 @@
1
+ /**
2
+ * HTTP interceptors for auth, rate limiting, retry, etc.
3
+ *
4
+ * Why interceptor pattern: Separates cross-cutting concerns (auth, retry)
5
+ * from business logic (API calls). Each interceptor is independently testable.
6
+ */
7
+ import { TIME, HTTP_STATUS } from '../core/constants.js';
8
+ import { AuthenticationError, AuthorizationError, ConfigurationError, NetworkError, RateLimitError, } from '../core/errors.js';
9
+ import { isSafePropertyName } from '../validation/validation-utils.js';
10
+ export class InterceptorChain {
11
+ constructor(config, authToken) {
12
+ this.config = config;
13
+ this.authToken = authToken;
14
+ this.interceptors = [];
15
+ this.buildChain();
16
+ }
17
+ buildChain() {
18
+ if (this.config.auth) {
19
+ this.interceptors.push(this.createAuthInterceptor());
20
+ }
21
+ if (this.config.rate_limit) {
22
+ this.interceptors.push(this.createRateLimitInterceptor());
23
+ }
24
+ if (this.config.retry) {
25
+ this.interceptors.push(this.createRetryInterceptor());
26
+ }
27
+ }
28
+ /**
29
+ * Auth interceptor: adds auth header/query from env or session token
30
+ *
31
+ * Why env-based: Keeps secrets out of config files. Config defines WHERE
32
+ * to get the token, runtime provides the value.
33
+ *
34
+ * Supports:
35
+ * - bearer: Standard HTTP Authorization: Bearer <token>
36
+ * - query: API key in URL (?api_key=<token>)
37
+ * - custom-header: Custom header (e.g., X-API-Key: <token>)
38
+ *
39
+ * Note: For multi-auth, uses the primary (first/lowest priority) non-OAuth config.
40
+ * OAuth is handled separately in HTTP transport, not in InterceptorChain.
41
+ */
42
+ createAuthInterceptor() {
43
+ const authConfigRaw = this.config.auth;
44
+ // Handle multi-auth: get primary non-OAuth config
45
+ const authConfigs = Array.isArray(authConfigRaw) ? authConfigRaw : [authConfigRaw];
46
+ const sortedConfigs = authConfigs.sort((a, b) => (a.priority || 0) - (b.priority || 0));
47
+ // Find first non-OAuth config (OAuth handled by HTTP transport)
48
+ const authConfig = sortedConfigs.find(c => c.type !== 'oauth');
49
+ if (!authConfig) {
50
+ throw new ConfigurationError('Only OAuth authentication configured. OAuth requires HTTP transport for the authorization flow (redirects, callbacks). Add a token-based auth config or use HTTP transport.');
51
+ }
52
+ if (authConfig.type === 'oauth') {
53
+ throw new ConfigurationError('OAuth authentication not supported in InterceptorChain (use HTTP transport OAuth flow)');
54
+ }
55
+ const envVarName = authConfig.value_from_env;
56
+ if (!envVarName) {
57
+ throw new ConfigurationError('Auth configuration missing value_from_env');
58
+ }
59
+ const token = this.authToken || process.env[envVarName];
60
+ if (!token) {
61
+ throw new AuthenticationError(`Auth token not found. Expected in environment variable: ${envVarName} or passed to constructor`);
62
+ }
63
+ return async (ctx, next) => {
64
+ if (authConfig.type === 'bearer') {
65
+ ctx.headers['Authorization'] = `Bearer ${token}`;
66
+ }
67
+ else if (authConfig.type === 'query' && authConfig.query_param) {
68
+ const url = new URL(ctx.url);
69
+ url.searchParams.set(authConfig.query_param, token);
70
+ ctx.url = url.toString();
71
+ }
72
+ else if (authConfig.type === 'custom-header' && authConfig.header_name) {
73
+ if (!isSafePropertyName(authConfig.header_name)) {
74
+ throw new ConfigurationError(`Invalid header name: ${authConfig.header_name}`);
75
+ }
76
+ // nosemgrep: javascript.express.security.audit.remote-property-injection.remote-property-injection
77
+ ctx.headers[authConfig.header_name] = token;
78
+ }
79
+ return next();
80
+ };
81
+ }
82
+ /**
83
+ * Rate limiter: token bucket algorithm with per-endpoint overrides
84
+ *
85
+ * Why token bucket: Allows bursts while enforcing average rate. Better UX
86
+ * than strict per-request delays.
87
+ *
88
+ * Supports per-endpoint overrides via operationId matching.
89
+ */
90
+ createRateLimitInterceptor() {
91
+ const config = this.config.rate_limit;
92
+ // Global token bucket state
93
+ const globalTokensPerMs = config.max_requests_per_minute / TIME.MS_PER_MINUTE;
94
+ let globalTokens = config.max_requests_per_minute;
95
+ let globalLastRefill = Date.now();
96
+ // Per-endpoint token buckets (operationId -> bucket state)
97
+ const endpointBuckets = new Map();
98
+ // Initialize per-endpoint buckets
99
+ if (config.overrides) {
100
+ for (const [operationId, override] of Object.entries(config.overrides)) {
101
+ endpointBuckets.set(operationId, {
102
+ tokensPerMs: override.max_requests_per_minute / TIME.MS_PER_MINUTE,
103
+ tokens: override.max_requests_per_minute,
104
+ lastRefill: Date.now(),
105
+ });
106
+ }
107
+ }
108
+ return async (ctx, next) => {
109
+ const now = Date.now();
110
+ // Choose appropriate bucket: per-endpoint override or global
111
+ let bucket = {
112
+ tokensPerMs: globalTokensPerMs,
113
+ tokens: globalTokens,
114
+ lastRefill: globalLastRefill,
115
+ };
116
+ if (ctx.operationId && endpointBuckets.has(ctx.operationId)) {
117
+ bucket = endpointBuckets.get(ctx.operationId);
118
+ }
119
+ // Refill tokens for the chosen bucket
120
+ const elapsed = now - bucket.lastRefill;
121
+ const maxTokens = bucket.tokensPerMs * TIME.MS_PER_MINUTE; // Convert back to max tokens
122
+ bucket.tokens = Math.min(maxTokens, bucket.tokens + elapsed * bucket.tokensPerMs);
123
+ bucket.lastRefill = now;
124
+ // Check if we need to wait
125
+ if (bucket.tokens < 1) {
126
+ const waitMs = (1 - bucket.tokens) / bucket.tokensPerMs;
127
+ await new Promise(resolve => setTimeout(resolve, waitMs));
128
+ bucket.tokens = 0;
129
+ }
130
+ else {
131
+ bucket.tokens -= 1;
132
+ }
133
+ // Update global state if using global bucket
134
+ if (!ctx.operationId || !endpointBuckets.has(ctx.operationId)) {
135
+ globalTokens = bucket.tokens;
136
+ globalLastRefill = bucket.lastRefill;
137
+ }
138
+ return next();
139
+ };
140
+ }
141
+ /**
142
+ * Retry interceptor: exponential backoff
143
+ *
144
+ * Why exponential: Reduces server load during outages. Linear backoff
145
+ * can cause thundering herd on recovery.
146
+ */
147
+ createRetryInterceptor() {
148
+ const config = this.config.retry;
149
+ return async (ctx, next) => {
150
+ let lastError;
151
+ for (let attempt = 0; attempt < config.max_attempts; attempt++) {
152
+ try {
153
+ const response = await next();
154
+ // Check if we should retry based on status
155
+ if (config.retry_on_status.includes(response.status) && attempt < config.max_attempts - 1) {
156
+ const backoffMs = config.backoff_ms[attempt] || config.backoff_ms[config.backoff_ms.length - 1];
157
+ await new Promise(resolve => setTimeout(resolve, backoffMs));
158
+ continue;
159
+ }
160
+ return response;
161
+ }
162
+ catch (error) {
163
+ lastError = error instanceof Error ? error : new Error(String(error));
164
+ if (attempt < config.max_attempts - 1) {
165
+ const backoffMs = config.backoff_ms[attempt] || config.backoff_ms[config.backoff_ms.length - 1];
166
+ await new Promise(resolve => setTimeout(resolve, backoffMs));
167
+ }
168
+ }
169
+ }
170
+ throw lastError || new Error('All retry attempts failed');
171
+ };
172
+ }
173
+ async execute(ctx, finalHandler) {
174
+ let index = 0;
175
+ const next = async () => {
176
+ if (index >= this.interceptors.length) {
177
+ return finalHandler();
178
+ }
179
+ const interceptor = this.interceptors[index++];
180
+ return interceptor(ctx, next);
181
+ };
182
+ return next();
183
+ }
184
+ /**
185
+ * Extract auth credentials (headers + query params) without making a request
186
+ *
187
+ * Why separate: ProxyDownloadExecutor needs auth for direct fetch calls,
188
+ * but can't use InterceptorChain (fetch doesn't go through chain).
189
+ * This extracts the same credentials the chain would apply.
190
+ *
191
+ * Returns:
192
+ * - Bearer auth: { headers: { Authorization: 'Bearer token' }, queryParams: undefined }
193
+ * - Custom-header auth: { headers: { 'X-API-Key': 'token' }, queryParams: undefined }
194
+ * - Query auth: { headers: {}, queryParams: { key: 'api_key', value: 'token' } }
195
+ * - No auth: { headers: {}, queryParams: undefined }
196
+ */
197
+ getAuthCredentials() {
198
+ if (!this.config.auth) {
199
+ return { headers: {} };
200
+ }
201
+ const authConfigRaw = this.config.auth;
202
+ // Handle multi-auth: get primary non-OAuth config
203
+ const authConfigs = Array.isArray(authConfigRaw) ? authConfigRaw : [authConfigRaw];
204
+ const sortedConfigs = authConfigs.sort((a, b) => (a.priority || 0) - (b.priority || 0));
205
+ // Find first non-OAuth config (OAuth handled separately in HTTP transport)
206
+ const authConfig = sortedConfigs.find(c => c.type !== 'oauth');
207
+ if (!authConfig || authConfig.type === 'oauth') {
208
+ return { headers: {} };
209
+ }
210
+ const envVarName = authConfig.value_from_env;
211
+ if (!envVarName) {
212
+ return { headers: {} };
213
+ }
214
+ // Use session token first, then environment variable
215
+ const token = this.authToken || process.env[envVarName];
216
+ if (!token) {
217
+ return { headers: {} };
218
+ }
219
+ const credentials = { headers: {} };
220
+ if (authConfig.type === 'bearer') {
221
+ credentials.headers['Authorization'] = `Bearer ${token}`;
222
+ }
223
+ else if (authConfig.type === 'custom-header' && authConfig.header_name) {
224
+ if (!isSafePropertyName(authConfig.header_name)) {
225
+ return { headers: {} }; // Skip unsafe header name
226
+ }
227
+ credentials.headers[authConfig.header_name] = token;
228
+ }
229
+ else if (authConfig.type === 'query' && authConfig.query_param) {
230
+ credentials.queryParams = {
231
+ key: authConfig.query_param,
232
+ value: token
233
+ };
234
+ }
235
+ return credentials;
236
+ }
237
+ }
238
+ /**
239
+ * HTTP client with interceptor support
240
+ */
241
+ export class HttpClient {
242
+ constructor(baseUrl, interceptors, metrics) {
243
+ this.baseUrl = baseUrl;
244
+ this.interceptors = interceptors;
245
+ this.metrics = metrics || null;
246
+ }
247
+ setMetricsCollector(metrics) {
248
+ this.metrics = metrics;
249
+ }
250
+ /**
251
+ * Get base URL (for testing)
252
+ */
253
+ getBaseUrl() {
254
+ return this.baseUrl;
255
+ }
256
+ /**
257
+ * Get interceptors config (for testing)
258
+ */
259
+ getInterceptorsConfig() {
260
+ return this.interceptors.config;
261
+ }
262
+ /**
263
+ * Get auth credentials (headers and query params) for direct HTTP calls
264
+ * Used by ProxyDownloadExecutor for authenticated file downloads
265
+ */
266
+ getAuthCredentials() {
267
+ return this.interceptors.getAuthCredentials();
268
+ }
269
+ /**
270
+ * Serialize parameters including arrays
271
+ *
272
+ * Why different formats: APIs use different conventions for array parameters.
273
+ * Rails/GitLab: scope[]=value, PHP: scope[0]=value, Express: scope=value (repeat)
274
+ */
275
+ serializeParams(params, format) {
276
+ const searchParams = new URLSearchParams();
277
+ for (const [key, value] of Object.entries(params)) {
278
+ if (Array.isArray(value)) {
279
+ switch (format) {
280
+ case 'brackets':
281
+ value.forEach(item => searchParams.append(`${key}[]`, String(item)));
282
+ break;
283
+ case 'indices':
284
+ value.forEach((item, i) => searchParams.append(`${key}[${i}]`, String(item)));
285
+ break;
286
+ case 'repeat':
287
+ value.forEach(item => searchParams.append(key, String(item)));
288
+ break;
289
+ case 'comma':
290
+ searchParams.append(key, value.map(String).join(','));
291
+ break;
292
+ }
293
+ }
294
+ else {
295
+ searchParams.append(key, String(value));
296
+ }
297
+ }
298
+ return searchParams;
299
+ }
300
+ async request(method, path, options = {}) {
301
+ let url = this.baseUrl + path;
302
+ // Add query parameters with proper array handling
303
+ if (options.params && Object.keys(options.params).length > 0) {
304
+ const arrayFormat = this.interceptors.config.array_format || 'repeat';
305
+ const searchParams = this.serializeParams(options.params, arrayFormat);
306
+ url += '?' + searchParams.toString();
307
+ }
308
+ const ctx = {
309
+ method,
310
+ url,
311
+ headers: {
312
+ 'Content-Type': 'application/json',
313
+ ...options.headers,
314
+ },
315
+ body: options.body,
316
+ operationId: options.operationId,
317
+ };
318
+ const metrics = this.metrics;
319
+ const operation = options.operationId || 'unknown';
320
+ return this.interceptors.execute(ctx, async () => {
321
+ const start = Date.now();
322
+ let recorded = false;
323
+ // Why no body for GET/HEAD: HTTP spec forbids request body for these methods
324
+ const fetchOptions = {
325
+ method: ctx.method,
326
+ headers: ctx.headers,
327
+ };
328
+ if (ctx.method !== 'GET' && ctx.method !== 'HEAD' && ctx.body) {
329
+ if (ctx.body instanceof FormData) {
330
+ // FormData: let fetch set Content-Type with boundary automatically
331
+ delete ctx.headers['Content-Type'];
332
+ fetchOptions.body = ctx.body;
333
+ }
334
+ else if (ctx.body instanceof Blob || ctx.body instanceof ArrayBuffer) {
335
+ // Binary data: keep existing Content-Type or use octet-stream
336
+ if (!ctx.headers['Content-Type']) {
337
+ ctx.headers['Content-Type'] = 'application/octet-stream';
338
+ }
339
+ fetchOptions.body = ctx.body;
340
+ }
341
+ else {
342
+ // JSON (default)
343
+ fetchOptions.body = JSON.stringify(ctx.body);
344
+ }
345
+ }
346
+ try {
347
+ const response = await fetch(ctx.url, fetchOptions);
348
+ const body = response.headers.get('content-type')?.includes('application/json')
349
+ ? await response.json()
350
+ : await response.text();
351
+ const durationSeconds = (Date.now() - start) / 1000;
352
+ if (metrics) {
353
+ metrics.recordApiCall(operation, response.status, durationSeconds);
354
+ recorded = true;
355
+ }
356
+ const responseContext = {
357
+ status: response.status,
358
+ headers: Object.fromEntries(response.headers.entries()),
359
+ body,
360
+ };
361
+ // Why throw on non-2xx: Allows caller to handle errors with try/catch
362
+ // Use structured errors for better client handling
363
+ if (response.status < HTTP_STATUS.OK || response.status >= HTTP_STATUS.MULTIPLE_CHOICES) {
364
+ // Extract error message from response body (common formats)
365
+ let errorMessage = `HTTP ${response.status}`;
366
+ if (typeof body === 'object' && body !== null) {
367
+ const errorObj = body;
368
+ errorMessage = (errorObj.error_description || errorObj.error || errorObj.message || errorMessage);
369
+ }
370
+ else if (typeof body === 'string' && body.length > 0) {
371
+ errorMessage = body;
372
+ }
373
+ // Throw specific error types based on HTTP status
374
+ if (response.status === HTTP_STATUS.UNAUTHORIZED) {
375
+ throw new AuthenticationError(errorMessage, { statusCode: response.status });
376
+ }
377
+ else if (response.status === HTTP_STATUS.FORBIDDEN) {
378
+ throw new AuthorizationError(errorMessage);
379
+ }
380
+ else if (response.status === HTTP_STATUS.TOO_MANY_REQUESTS) {
381
+ const retryAfter = response.headers.get('retry-after');
382
+ throw new RateLimitError(errorMessage, retryAfter ? parseInt(retryAfter, 10) : undefined);
383
+ }
384
+ else if (response.status === HTTP_STATUS.NOT_FOUND) {
385
+ throw new NetworkError(`Resource not found: ${errorMessage}`, response.status);
386
+ }
387
+ else {
388
+ // Generic network error for other status codes (includes 5xx)
389
+ throw new NetworkError(errorMessage, response.status, { body });
390
+ }
391
+ }
392
+ return responseContext;
393
+ }
394
+ catch (error) {
395
+ if (metrics) {
396
+ const durationSeconds = (Date.now() - start) / 1000;
397
+ if (!recorded) {
398
+ metrics.recordApiCall(operation, 0, durationSeconds);
399
+ }
400
+ metrics.recordApiCallError(operation, this.getErrorType(error));
401
+ }
402
+ throw error;
403
+ }
404
+ });
405
+ }
406
+ getErrorType(error) {
407
+ if (error instanceof Error) {
408
+ return error.name;
409
+ }
410
+ return 'UnknownError';
411
+ }
412
+ }
413
+ //# sourceMappingURL=interceptors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interceptors.js","sourceRoot":"","sources":["../../../src/transport/interceptors.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,84 @@
1
+ import type { ListedProfileDetails } from '../profile/profile-resolver.js';
2
+ export type ProfileIndexLocale = 'cs' | 'en';
3
+ interface ProfileIndexI18n {
4
+ title: string;
5
+ subtitle: string;
6
+ noscript: string;
7
+ profileLabel: string;
8
+ endpointLabel: string;
9
+ envVarsLabel: string;
10
+ envNote: string;
11
+ noEnvVars: string;
12
+ noDescription: string;
13
+ noProfiles: string;
14
+ copy: string;
15
+ copied: string;
16
+ copyFailed: string;
17
+ snippetLabels: {
18
+ minimal: string;
19
+ vscode: string;
20
+ cursor: string;
21
+ claude: string;
22
+ jetbrains: string;
23
+ };
24
+ authLabels: {
25
+ oauth: string;
26
+ bearer: string;
27
+ query: string;
28
+ customHeader: string;
29
+ none: string;
30
+ };
31
+ authHeaderPrefix: string;
32
+ authQueryPrefix: string;
33
+ }
34
+ interface ProfileIndexSnippet {
35
+ key: string;
36
+ label: string;
37
+ content: string;
38
+ authKey: string;
39
+ format: 'json' | 'cli';
40
+ }
41
+ interface ProfileIndexTab {
42
+ key: string;
43
+ label: string;
44
+ }
45
+ interface ProfileIndexProfile extends ListedProfileDetails {
46
+ mcpUrl: string;
47
+ sseUrl: string;
48
+ snippets: ProfileIndexSnippet[];
49
+ authTabs: ProfileIndexTab[];
50
+ }
51
+ export interface ProfileIndexPayload {
52
+ profiles: ProfileIndexProfile[];
53
+ origin: string;
54
+ }
55
+ export declare function parseAcceptLanguage(headerValue?: string): ProfileIndexLocale;
56
+ export declare function loadProfileIndexTemplate(): Promise<string>;
57
+ export declare function resolveTemplateRoot(startDir: string, existsSyncFn?: (path: string) => boolean): string;
58
+ export declare function safeJsonForHtml(value: unknown): string;
59
+ export declare function renderTemplate(template: string, replacements: Record<string, string>): string;
60
+ export declare function buildProfileIndexI18n(locale: ProfileIndexLocale): ProfileIndexI18n;
61
+ export declare function buildProfileIndexPayload(profiles: ListedProfileDetails[], origin: string, locale: ProfileIndexLocale): {
62
+ payload: ProfileIndexPayload;
63
+ templateData: Record<string, string>;
64
+ };
65
+ export declare function renderProfileIndexHtml(template: string, templateData: Record<string, string>, nonce: string): string;
66
+ declare function buildInputs(envVars: string[]): Array<{
67
+ id: string;
68
+ description: string;
69
+ }>;
70
+ declare function buildEnvValue(name: string, inputMap: Map<string, string>, useInput: boolean, mode: 'vscode' | 'cursor' | 'jetbrains' | 'cli'): string;
71
+ declare function buildInputsBlock(inputs: Array<{
72
+ id: string;
73
+ description: string;
74
+ }>, indent: string): string[];
75
+ export declare const __test__: {
76
+ buildInputs: typeof buildInputs;
77
+ buildInputsBlock: typeof buildInputsBlock;
78
+ buildEnvValue: typeof buildEnvValue;
79
+ buildProfileIndexI18n: typeof buildProfileIndexI18n;
80
+ renderTemplate: typeof renderTemplate;
81
+ safeJsonForHtml: typeof safeJsonForHtml;
82
+ };
83
+ export {};
84
+ //# sourceMappingURL=profile-index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"profile-index.d.ts","sourceRoot":"","sources":["../../../src/transport/profile-index.ts"],"names":[],"mappings":"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"}