@j0hanz/fetch-url-mcp 1.3.1 → 1.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (250) hide show
  1. package/README.md +24 -21
  2. package/dist/cli.d.ts +1 -0
  3. package/dist/cli.d.ts.map +1 -1
  4. package/dist/cli.js +15 -7
  5. package/dist/cli.js.map +1 -1
  6. package/dist/http/auth.d.ts +1 -3
  7. package/dist/http/auth.d.ts.map +1 -1
  8. package/dist/http/auth.js +18 -12
  9. package/dist/http/auth.js.map +1 -1
  10. package/dist/http/health.d.ts +1 -1
  11. package/dist/http/health.d.ts.map +1 -1
  12. package/dist/http/health.js +2 -2
  13. package/dist/http/health.js.map +1 -1
  14. package/dist/http/helpers.d.ts +1 -8
  15. package/dist/http/helpers.d.ts.map +1 -1
  16. package/dist/http/helpers.js +12 -10
  17. package/dist/http/helpers.js.map +1 -1
  18. package/dist/http/native.d.ts.map +1 -1
  19. package/dist/http/native.js +41 -27
  20. package/dist/http/native.js.map +1 -1
  21. package/dist/http/rate-limit.d.ts +2 -1
  22. package/dist/http/rate-limit.d.ts.map +1 -1
  23. package/dist/http/rate-limit.js +11 -15
  24. package/dist/http/rate-limit.js.map +1 -1
  25. package/dist/index.js +4 -6
  26. package/dist/index.js.map +1 -1
  27. package/dist/lib/cache.d.ts.map +1 -0
  28. package/dist/{cache.js → lib/cache.js} +5 -2
  29. package/dist/lib/cache.js.map +1 -0
  30. package/dist/{config.d.ts → lib/config.d.ts} +2 -0
  31. package/dist/lib/config.d.ts.map +1 -0
  32. package/dist/{config.js → lib/config.js} +3 -0
  33. package/dist/lib/config.js.map +1 -0
  34. package/dist/lib/crypto.d.ts.map +1 -0
  35. package/dist/lib/crypto.js.map +1 -0
  36. package/dist/lib/dom-noise-removal.d.ts.map +1 -0
  37. package/dist/lib/dom-noise-removal.js.map +1 -0
  38. package/dist/lib/download.d.ts.map +1 -0
  39. package/dist/lib/download.js.map +1 -0
  40. package/dist/{errors.d.ts → lib/errors.d.ts} +3 -0
  41. package/dist/lib/errors.d.ts.map +1 -0
  42. package/dist/{errors.js → lib/errors.js} +7 -0
  43. package/dist/lib/errors.js.map +1 -0
  44. package/dist/lib/fetch-content.d.ts.map +1 -0
  45. package/dist/lib/fetch-content.js.map +1 -0
  46. package/dist/lib/fetch-stream.d.ts.map +1 -0
  47. package/dist/lib/fetch-stream.js.map +1 -0
  48. package/dist/lib/fetch.d.ts.map +1 -0
  49. package/dist/{fetch.js → lib/fetch.js} +97 -142
  50. package/dist/lib/fetch.js.map +1 -0
  51. package/dist/lib/host-normalization.d.ts.map +1 -0
  52. package/dist/lib/host-normalization.js.map +1 -0
  53. package/dist/lib/ip-blocklist.d.ts.map +1 -0
  54. package/dist/lib/ip-blocklist.js.map +1 -0
  55. package/dist/lib/json.d.ts.map +1 -0
  56. package/dist/lib/json.js.map +1 -0
  57. package/dist/lib/language-detection.d.ts.map +1 -0
  58. package/dist/lib/language-detection.js.map +1 -0
  59. package/dist/{markdown-cleanup.d.ts → lib/markdown-cleanup.d.ts} +1 -1
  60. package/dist/lib/markdown-cleanup.d.ts.map +1 -0
  61. package/dist/{markdown-cleanup.js → lib/markdown-cleanup.js} +1 -3
  62. package/dist/lib/markdown-cleanup.js.map +1 -0
  63. package/dist/lib/mcp-lifecycle.d.ts +5 -0
  64. package/dist/lib/mcp-lifecycle.d.ts.map +1 -0
  65. package/dist/lib/mcp-lifecycle.js +51 -0
  66. package/dist/lib/mcp-lifecycle.js.map +1 -0
  67. package/dist/lib/mcp-validator.d.ts.map +1 -0
  68. package/dist/{mcp-validator.js → lib/mcp-validator.js} +1 -1
  69. package/dist/lib/mcp-validator.js.map +1 -0
  70. package/dist/{mcp.d.ts → lib/mcp.d.ts} +1 -1
  71. package/dist/lib/mcp.d.ts.map +1 -0
  72. package/dist/{mcp.js → lib/mcp.js} +39 -19
  73. package/dist/lib/mcp.js.map +1 -0
  74. package/dist/lib/observability.d.ts.map +1 -0
  75. package/dist/lib/observability.js.map +1 -0
  76. package/dist/lib/server-tuning.d.ts.map +1 -0
  77. package/dist/lib/server-tuning.js.map +1 -0
  78. package/dist/{session.d.ts → lib/session.d.ts} +4 -1
  79. package/dist/lib/session.d.ts.map +1 -0
  80. package/dist/{session.js → lib/session.js} +43 -35
  81. package/dist/lib/session.js.map +1 -0
  82. package/dist/lib/timer-utils.d.ts +13 -0
  83. package/dist/lib/timer-utils.d.ts.map +1 -0
  84. package/dist/lib/timer-utils.js +44 -0
  85. package/dist/lib/timer-utils.js.map +1 -0
  86. package/dist/lib/tool-errors.d.ts.map +1 -0
  87. package/dist/{tool-errors.js → lib/tool-errors.js} +2 -2
  88. package/dist/lib/tool-errors.js.map +1 -0
  89. package/dist/{tool-pipeline.d.ts → lib/tool-pipeline.d.ts} +1 -2
  90. package/dist/lib/tool-pipeline.d.ts.map +1 -0
  91. package/dist/{tool-pipeline.js → lib/tool-pipeline.js} +8 -25
  92. package/dist/lib/tool-pipeline.js.map +1 -0
  93. package/dist/{tool-progress.d.ts → lib/tool-progress.d.ts} +0 -1
  94. package/dist/lib/tool-progress.d.ts.map +1 -0
  95. package/dist/{tool-progress.js → lib/tool-progress.js} +1 -1
  96. package/dist/lib/tool-progress.js.map +1 -0
  97. package/dist/lib/type-guards.d.ts.map +1 -0
  98. package/dist/lib/type-guards.js.map +1 -0
  99. package/dist/{prompts.d.ts → prompts/index.d.ts} +1 -1
  100. package/dist/prompts/index.d.ts.map +1 -0
  101. package/dist/{prompts.js → prompts/index.js} +2 -2
  102. package/dist/prompts/index.js.map +1 -0
  103. package/dist/{resources.d.ts → resources/index.d.ts} +1 -1
  104. package/dist/resources/index.d.ts.map +1 -0
  105. package/dist/{resources.js → resources/index.js} +19 -37
  106. package/dist/resources/index.js.map +1 -0
  107. package/dist/resources/instructions.d.ts.map +1 -0
  108. package/dist/{instructions.js → resources/instructions.js} +4 -2
  109. package/dist/resources/instructions.js.map +1 -0
  110. package/dist/schemas/inputs.d.ts +8 -0
  111. package/dist/schemas/inputs.d.ts.map +1 -0
  112. package/dist/schemas/inputs.js +25 -0
  113. package/dist/schemas/inputs.js.map +1 -0
  114. package/dist/schemas/outputs.d.ts +24 -0
  115. package/dist/schemas/outputs.d.ts.map +1 -0
  116. package/dist/schemas/outputs.js +78 -0
  117. package/dist/schemas/outputs.js.map +1 -0
  118. package/dist/server.d.ts.map +1 -1
  119. package/dist/server.js +25 -14
  120. package/dist/server.js.map +1 -1
  121. package/dist/tasks/execution.d.ts.map +1 -1
  122. package/dist/tasks/execution.js +88 -55
  123. package/dist/tasks/execution.js.map +1 -1
  124. package/dist/tasks/manager.d.ts +4 -0
  125. package/dist/tasks/manager.d.ts.map +1 -1
  126. package/dist/tasks/manager.js +51 -46
  127. package/dist/tasks/manager.js.map +1 -1
  128. package/dist/tasks/owner.d.ts +3 -2
  129. package/dist/tasks/owner.d.ts.map +1 -1
  130. package/dist/tasks/owner.js +2 -1
  131. package/dist/tasks/owner.js.map +1 -1
  132. package/dist/tasks/tool-registry.d.ts +12 -0
  133. package/dist/tasks/tool-registry.d.ts.map +1 -0
  134. package/dist/tasks/tool-registry.js +14 -0
  135. package/dist/tasks/tool-registry.js.map +1 -0
  136. package/dist/tools/fetch-url.d.ts +29 -0
  137. package/dist/tools/fetch-url.d.ts.map +1 -0
  138. package/dist/{tools.js → tools/fetch-url.js} +72 -132
  139. package/dist/tools/fetch-url.js.map +1 -0
  140. package/dist/tools/index.d.ts +3 -0
  141. package/dist/tools/index.d.ts.map +1 -0
  142. package/dist/tools/index.js +5 -0
  143. package/dist/tools/index.js.map +1 -0
  144. package/dist/transform/transform.d.ts.map +1 -1
  145. package/dist/transform/transform.js +156 -174
  146. package/dist/transform/transform.js.map +1 -1
  147. package/dist/transform/types.d.ts +0 -1
  148. package/dist/transform/types.d.ts.map +1 -1
  149. package/dist/transform/worker-pool.d.ts.map +1 -1
  150. package/dist/transform/worker-pool.js +5 -5
  151. package/dist/transform/worker-pool.js.map +1 -1
  152. package/dist/transform/workers/shared.d.ts +8 -0
  153. package/dist/transform/workers/shared.d.ts.map +1 -0
  154. package/dist/transform/workers/shared.js +131 -0
  155. package/dist/transform/workers/shared.js.map +1 -0
  156. package/dist/transform/workers/transform-child.js +5 -134
  157. package/dist/transform/workers/transform-child.js.map +1 -1
  158. package/dist/transform/workers/transform-worker.js +7 -127
  159. package/dist/transform/workers/transform-worker.js.map +1 -1
  160. package/package.json +8 -7
  161. package/dist/cache.d.ts.map +0 -1
  162. package/dist/cache.js.map +0 -1
  163. package/dist/config.d.ts.map +0 -1
  164. package/dist/config.js.map +0 -1
  165. package/dist/crypto.d.ts.map +0 -1
  166. package/dist/crypto.js.map +0 -1
  167. package/dist/dom-noise-removal.d.ts.map +0 -1
  168. package/dist/dom-noise-removal.js.map +0 -1
  169. package/dist/download.d.ts.map +0 -1
  170. package/dist/download.js.map +0 -1
  171. package/dist/errors.d.ts.map +0 -1
  172. package/dist/errors.js.map +0 -1
  173. package/dist/examples/mcp-fetch-url-client.js +0 -329
  174. package/dist/examples/mcp-fetch-url-client.js.map +0 -1
  175. package/dist/fetch-content.d.ts.map +0 -1
  176. package/dist/fetch-content.js.map +0 -1
  177. package/dist/fetch-stream.d.ts.map +0 -1
  178. package/dist/fetch-stream.js.map +0 -1
  179. package/dist/fetch.d.ts.map +0 -1
  180. package/dist/fetch.js.map +0 -1
  181. package/dist/host-normalization.d.ts.map +0 -1
  182. package/dist/host-normalization.js.map +0 -1
  183. package/dist/instructions.d.ts.map +0 -1
  184. package/dist/instructions.js.map +0 -1
  185. package/dist/ip-blocklist.d.ts.map +0 -1
  186. package/dist/ip-blocklist.js.map +0 -1
  187. package/dist/json.d.ts.map +0 -1
  188. package/dist/json.js.map +0 -1
  189. package/dist/language-detection.d.ts.map +0 -1
  190. package/dist/language-detection.js.map +0 -1
  191. package/dist/markdown-cleanup.d.ts.map +0 -1
  192. package/dist/markdown-cleanup.js.map +0 -1
  193. package/dist/mcp-validator.d.ts.map +0 -1
  194. package/dist/mcp-validator.js.map +0 -1
  195. package/dist/mcp.d.ts.map +0 -1
  196. package/dist/mcp.js.map +0 -1
  197. package/dist/observability.d.ts.map +0 -1
  198. package/dist/observability.js.map +0 -1
  199. package/dist/prompts.d.ts.map +0 -1
  200. package/dist/prompts.js.map +0 -1
  201. package/dist/resources.d.ts.map +0 -1
  202. package/dist/resources.js.map +0 -1
  203. package/dist/server-tuning.d.ts.map +0 -1
  204. package/dist/server-tuning.js.map +0 -1
  205. package/dist/session.d.ts.map +0 -1
  206. package/dist/session.js.map +0 -1
  207. package/dist/timer-utils.d.ts +0 -6
  208. package/dist/timer-utils.d.ts.map +0 -1
  209. package/dist/timer-utils.js +0 -27
  210. package/dist/timer-utils.js.map +0 -1
  211. package/dist/tool-errors.d.ts.map +0 -1
  212. package/dist/tool-errors.js.map +0 -1
  213. package/dist/tool-pipeline.d.ts.map +0 -1
  214. package/dist/tool-pipeline.js.map +0 -1
  215. package/dist/tool-progress.d.ts.map +0 -1
  216. package/dist/tool-progress.js.map +0 -1
  217. package/dist/tools.d.ts +0 -54
  218. package/dist/tools.d.ts.map +0 -1
  219. package/dist/tools.js.map +0 -1
  220. package/dist/type-guards.d.ts.map +0 -1
  221. package/dist/type-guards.js.map +0 -1
  222. /package/dist/{cache.d.ts → lib/cache.d.ts} +0 -0
  223. /package/dist/{crypto.d.ts → lib/crypto.d.ts} +0 -0
  224. /package/dist/{crypto.js → lib/crypto.js} +0 -0
  225. /package/dist/{dom-noise-removal.d.ts → lib/dom-noise-removal.d.ts} +0 -0
  226. /package/dist/{dom-noise-removal.js → lib/dom-noise-removal.js} +0 -0
  227. /package/dist/{download.d.ts → lib/download.d.ts} +0 -0
  228. /package/dist/{download.js → lib/download.js} +0 -0
  229. /package/dist/{fetch-content.d.ts → lib/fetch-content.d.ts} +0 -0
  230. /package/dist/{fetch-content.js → lib/fetch-content.js} +0 -0
  231. /package/dist/{fetch-stream.d.ts → lib/fetch-stream.d.ts} +0 -0
  232. /package/dist/{fetch-stream.js → lib/fetch-stream.js} +0 -0
  233. /package/dist/{fetch.d.ts → lib/fetch.d.ts} +0 -0
  234. /package/dist/{host-normalization.d.ts → lib/host-normalization.d.ts} +0 -0
  235. /package/dist/{host-normalization.js → lib/host-normalization.js} +0 -0
  236. /package/dist/{ip-blocklist.d.ts → lib/ip-blocklist.d.ts} +0 -0
  237. /package/dist/{ip-blocklist.js → lib/ip-blocklist.js} +0 -0
  238. /package/dist/{json.d.ts → lib/json.d.ts} +0 -0
  239. /package/dist/{json.js → lib/json.js} +0 -0
  240. /package/dist/{language-detection.d.ts → lib/language-detection.d.ts} +0 -0
  241. /package/dist/{language-detection.js → lib/language-detection.js} +0 -0
  242. /package/dist/{mcp-validator.d.ts → lib/mcp-validator.d.ts} +0 -0
  243. /package/dist/{observability.d.ts → lib/observability.d.ts} +0 -0
  244. /package/dist/{observability.js → lib/observability.js} +0 -0
  245. /package/dist/{server-tuning.d.ts → lib/server-tuning.d.ts} +0 -0
  246. /package/dist/{server-tuning.js → lib/server-tuning.js} +0 -0
  247. /package/dist/{tool-errors.d.ts → lib/tool-errors.d.ts} +0 -0
  248. /package/dist/{type-guards.d.ts → lib/type-guards.d.ts} +0 -0
  249. /package/dist/{type-guards.js → lib/type-guards.js} +0 -0
  250. /package/dist/{instructions.d.ts → resources/instructions.d.ts} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"execution.d.ts","sourceRoot":"","sources":["../../src/tasks/execution.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,EAGL,KAAK,YAAY,EAClB,MAAM,oCAAoC,CAAC;AAW5C,OAAO,EACL,KAAK,gBAAgB,EAErB,KAAK,SAAS,EACf,MAAM,cAAc,CAAC;AACtB,OAAO,EAEL,KAAK,eAAe,EAErB,MAAM,YAAY,CAAC;AAMpB,MAAM,WAAW,uBAAuB;IACtC,MAAM,EAAE,YAAY,CAAC;IACrB,MAAM,EAAE;QACN,IAAI,EAAE,MAAM,CAAC;QACb,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC;QAChD,IAAI,CAAC,EACD;YACE,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;SAC1B,GACD,SAAS,CAAC;QACd,KAAK,CAAC,EACF;YACE,aAAa,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;YAC5C,sCAAsC,CAAC,EACnC;gBAAE,MAAM,EAAE,MAAM,CAAA;aAAE,GAClB,SAAS,CAAC;YACd,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;SACxB,GACD,SAAS,CAAC;QACd,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;KACxB,CAAC;IACF,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAqBD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAKvD;AAMD,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,MAAM,EAChB,aAAa,SAA4D,GACxE,MAAM,CASR;AAED,wBAAgB,sBAAsB,IAAI,IAAI,CAE7C;AAgBD,KAAK,WAAW,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;AAM5C,wBAAgB,aAAa,CAAC,IAAI,EAAE;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAC;IAC5B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,GAAG,EAAE,MAAM,CAAC;IACZ,YAAY,EAAE,MAAM,CAAC;CACtB,GAAG,WAAW,CAed;AAED,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,YAAY,EACpB,MAAM,EAAE,MAAM,GACb,YAAY,CAYd;AAED,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,SAAS,EACjB,IAAI,EAAE,SAAS,GACd,IAAI,CAiBN;AAoBD,wBAAgB,iBAAiB,IAAI,KAAK,CAEzC;AA8KD,wBAAsB,qBAAqB,CACzC,MAAM,EAAE,SAAS,EACjB,OAAO,EAAE,uBAAuB,EAChC,OAAO,EAAE,eAAe,GACvB,OAAO,CAAC,YAAY,CAAC,CAYvB"}
1
+ {"version":3,"file":"execution.d.ts","sourceRoot":"","sources":["../../src/tasks/execution.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,EAGL,KAAK,YAAY,EAClB,MAAM,oCAAoC,CAAC;AAa5C,OAAO,EACL,KAAK,gBAAgB,EAErB,KAAK,SAAS,EACf,MAAM,cAAc,CAAC;AACtB,OAAO,EAEL,KAAK,eAAe,EAErB,MAAM,YAAY,CAAC;AAWpB,MAAM,WAAW,uBAAuB;IACtC,MAAM,EAAE,YAAY,CAAC;IACrB,MAAM,EAAE;QACN,IAAI,EAAE,MAAM,CAAC;QACb,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC;QAChD,IAAI,CAAC,EACD;YACE,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;SAC1B,GACD,SAAS,CAAC;QACd,KAAK,CAAC,EACF;YACE,aAAa,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;YAC5C,sCAAsC,CAAC,EACnC;gBAAE,MAAM,EAAE,MAAM,CAAA;aAAE,GAClB,SAAS,CAAC;YACd,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;SACxB,GACD,SAAS,CAAC;QACd,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;KACxB,CAAC;IACF,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAyBD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAKvD;AAMD,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,MAAM,EAChB,aAAa,SAA4D,GACxE,MAAM,CASR;AAED,wBAAgB,sBAAsB,IAAI,IAAI,CAE7C;AAgBD,KAAK,WAAW,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;AAM5C,wBAAgB,aAAa,CAAC,IAAI,EAAE;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAC;IAC5B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,GAAG,EAAE,MAAM,CAAC;IACZ,YAAY,EAAE,MAAM,CAAC;CACtB,GAAG,WAAW,CAed;AAED,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,YAAY,EACpB,MAAM,EAAE,MAAM,GACb,YAAY,CAYd;AAED,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,SAAS,EACjB,IAAI,EAAE,SAAS,GACd,IAAI,CAkBN;AAoBD,wBAAgB,iBAAiB,IAAI,KAAK,CAEzC;AAgND,wBAAsB,qBAAqB,CACzC,MAAM,EAAE,SAAS,EACjB,OAAO,EAAE,uBAAuB,EAChC,OAAO,EAAE,eAAe,GACvB,OAAO,CAAC,YAAY,CAAC,CAYvB"}
@@ -1,19 +1,25 @@
1
1
  import { ErrorCode, McpError, } from '@modelcontextprotocol/sdk/types.js';
2
- import { logWarn, runWithRequestContext } from '../observability.js';
3
- import { FETCH_URL_TOOL_NAME, fetchUrlInputSchema, fetchUrlToolHandler, } from '../tools.js';
4
- import { isObject } from '../type-guards.js';
2
+ import { config } from '../lib/config.js';
3
+ import { getErrorMessage, RESOURCE_NOT_FOUND_ERROR_CODE, } from '../lib/errors.js';
4
+ import { logWarn, runWithRequestContext } from '../lib/observability.js';
5
+ import { isObject } from '../lib/type-guards.js';
5
6
  import { taskManager, } from './manager.js';
6
7
  import { compact, tryReadToolStructuredError, } from './owner.js';
8
+ import { getTaskCapableTool, hasTaskCapableTool, } from './tool-registry.js';
7
9
  /* -------------------------------------------------------------------------------------------------
8
10
  * Abort-controller management for in-flight task executions
9
11
  * ------------------------------------------------------------------------------------------------- */
10
12
  // Intentionally process-global (not session-scoped): abortAllTaskExecutions() is called
11
13
  // during SIGTERM/SIGINT shutdown to cancel every in-flight task across all sessions.
12
- // TODO: consider per-session isolation if stricter task-ownership semantics are needed.
14
+ // Keep this process-global so shutdown can cancel all in-flight tasks across sessions.
15
+ // Per-session isolation would require a different cancellation fan-out strategy.
13
16
  const taskAbortControllers = new Map();
14
17
  function attachAbortController(taskId) {
15
18
  const existing = taskAbortControllers.get(taskId);
16
19
  if (existing) {
20
+ // Abort the previous controller before replacing it — avoids stranding
21
+ // a running fetch that can no longer be cancelled via abortTaskExecution().
22
+ existing.abort();
17
23
  taskAbortControllers.delete(taskId);
18
24
  }
19
25
  const controller = new AbortController();
@@ -72,6 +78,8 @@ export function withRelatedTaskMeta(result, taskId) {
72
78
  };
73
79
  }
74
80
  export function emitTaskStatusNotification(server, task) {
81
+ if (!config.tasks.emitStatusNotifications)
82
+ return;
75
83
  if (!server.isConnected())
76
84
  return;
77
85
  // NOTE: 'notifications/tasks/status' is not part of the MCP v2025-11-25 specification.
@@ -79,36 +87,46 @@ export function emitTaskStatusNotification(server, task) {
79
87
  void server.server
80
88
  .notification({
81
89
  method: 'notifications/tasks/status',
82
- params: toTaskSummary(task),
90
+ params: buildTaskStatusNotificationParams(task),
83
91
  })
84
92
  .catch((error) => {
85
93
  logWarn('Failed to send task status notification', {
86
94
  taskId: task.taskId,
87
95
  status: task.status,
88
- error,
96
+ error: getErrorMessage(error),
89
97
  });
90
98
  });
91
99
  }
100
+ function buildTaskStatusNotificationParams(task) {
101
+ return {
102
+ taskId: task.taskId,
103
+ status: task.status,
104
+ ...(task.statusMessage ? { statusMessage: task.statusMessage } : {}),
105
+ createdAt: task.createdAt,
106
+ lastUpdatedAt: task.lastUpdatedAt,
107
+ ttl: task.ttl,
108
+ pollInterval: task.pollInterval,
109
+ };
110
+ }
92
111
  /* -------------------------------------------------------------------------------------------------
93
112
  * Validation helpers
94
113
  * ------------------------------------------------------------------------------------------------- */
95
- function requireFetchUrlArgs(args) {
96
- const parsed = fetchUrlInputSchema.safeParse(args);
97
- if (!parsed.success) {
98
- throw new McpError(ErrorCode.InvalidParams, 'Invalid arguments for fetch-url');
99
- }
100
- return parsed.data;
101
- }
102
- // -32002 is the MCP extension code for resource-not-found; the SDK ErrorCode enum does not export it.
103
- const RESOURCE_NOT_FOUND_ERROR_CODE = -32002;
104
114
  export function throwTaskNotFound() {
105
115
  throw new McpError(RESOURCE_NOT_FOUND_ERROR_CODE, 'Task not found');
106
116
  }
107
- function requireFetchUrlToolName(name) {
108
- if (name === FETCH_URL_TOOL_NAME)
109
- return;
117
+ function resolveTaskCapableTool(name) {
118
+ const descriptor = getTaskCapableTool(name);
119
+ if (descriptor)
120
+ return descriptor;
110
121
  throw new McpError(ErrorCode.MethodNotFound, `Unknown tool: '${name}'`);
111
122
  }
123
+ // Validates that the tool name is recognized before we attempt to execute it.
124
+ // This ensures that an unknown tool produces a MethodNotFound error, rather than potentially executing and failing with an internal error if the tool handler does not properly validate its input.
125
+ function assertKnownTool(name) {
126
+ if (!hasTaskCapableTool(name)) {
127
+ throw new McpError(ErrorCode.MethodNotFound, `Unknown tool: '${name}'`);
128
+ }
129
+ }
112
130
  /* -------------------------------------------------------------------------------------------------
113
131
  * Task result builders
114
132
  * ------------------------------------------------------------------------------------------------- */
@@ -148,13 +166,43 @@ function updateWorkingTaskStatus(server, taskId, statusMessage) {
148
166
  if (updated)
149
167
  emitTaskStatusNotification(server, updated);
150
168
  }
151
- async function runFetchTaskExecution(params) {
152
- const { server, taskId, args, meta, sendNotification } = params;
153
- return runWithRequestContext({ requestId: taskId, operationId: taskId }, async () => {
169
+ function updateTaskAndEmitStatus(server, taskId, update) {
170
+ taskManager.updateTask(taskId, update);
171
+ const task = taskManager.getTask(taskId);
172
+ if (task)
173
+ emitTaskStatusNotification(server, task);
174
+ }
175
+ function buildTaskFailureState(error) {
176
+ const statusMessage = getErrorMessage(error);
177
+ if (error instanceof McpError) {
178
+ return {
179
+ statusMessage,
180
+ error: {
181
+ code: error.code,
182
+ message: statusMessage,
183
+ data: error.data,
184
+ },
185
+ };
186
+ }
187
+ return {
188
+ statusMessage,
189
+ error: {
190
+ code: ErrorCode.InternalError,
191
+ message: statusMessage,
192
+ },
193
+ };
194
+ }
195
+ async function runTaskToolExecution(params) {
196
+ const { server, taskId, args, tool, meta, sessionId, sendNotification } = params;
197
+ return runWithRequestContext({
198
+ requestId: taskId,
199
+ operationId: taskId,
200
+ ...(sessionId ? { sessionId } : {}),
201
+ }, async () => {
154
202
  const controller = attachAbortController(taskId);
155
203
  try {
156
204
  const relatedMeta = buildRelatedTaskMeta(taskId, meta);
157
- const result = await fetchUrlToolHandler(args, {
205
+ const result = await tool.execute(args, {
158
206
  signal: controller.signal,
159
207
  requestId: taskId,
160
208
  _meta: relatedMeta,
@@ -163,40 +211,22 @@ async function runFetchTaskExecution(params) {
163
211
  updateWorkingTaskStatus(server, taskId, message);
164
212
  },
165
213
  });
166
- const isToolError = isObject(result) &&
167
- typeof result['isError'] === 'boolean' &&
168
- result['isError'];
169
- taskManager.updateTask(taskId, {
214
+ const isToolError = isObject(result) && 'isError' in result && result.isError === true;
215
+ updateTaskAndEmitStatus(server, taskId, {
170
216
  status: isToolError ? 'failed' : 'completed',
171
217
  statusMessage: isToolError
172
218
  ? (tryReadToolStructuredError(result) ?? 'Tool execution failed')
173
219
  : 'Task completed successfully.',
174
220
  result,
175
221
  });
176
- const task = taskManager.getTask(taskId);
177
- if (task)
178
- emitTaskStatusNotification(server, task);
179
222
  }
180
223
  catch (error) {
181
- const errorMessage = error instanceof Error ? error.message : String(error);
182
- const errorPayload = error instanceof McpError
183
- ? {
184
- code: error.code,
185
- message: errorMessage,
186
- data: error.data,
187
- }
188
- : {
189
- code: ErrorCode.InternalError,
190
- message: errorMessage,
191
- };
192
- taskManager.updateTask(taskId, {
224
+ const failure = buildTaskFailureState(error);
225
+ updateTaskAndEmitStatus(server, taskId, {
193
226
  status: 'failed',
194
- statusMessage: errorMessage,
195
- error: errorPayload,
227
+ statusMessage: failure.statusMessage,
228
+ error: failure.error,
196
229
  });
197
- const task = taskManager.getTask(taskId);
198
- if (task)
199
- emitTaskStatusNotification(server, task);
200
230
  }
201
231
  finally {
202
232
  clearTaskExecution(taskId);
@@ -204,38 +234,41 @@ async function runFetchTaskExecution(params) {
204
234
  });
205
235
  }
206
236
  function handleTaskToolCall(server, params, context) {
207
- requireFetchUrlToolName(params.name);
208
- const validArgs = requireFetchUrlArgs(params.arguments);
237
+ const tool = resolveTaskCapableTool(params.name);
238
+ const validArgs = tool.parseArguments(params.arguments);
209
239
  const task = taskManager.createTask(params.task?.ttl !== undefined ? { ttl: params.task.ttl } : undefined, 'Task started', context.ownerKey);
210
- void runFetchTaskExecution({
240
+ void runTaskToolExecution({
211
241
  server,
212
242
  taskId: task.taskId,
213
243
  args: validArgs,
244
+ tool,
214
245
  ...compact({
215
246
  meta: params._meta,
247
+ sessionId: context.sessionId,
216
248
  sendNotification: context.sendNotification,
217
249
  }),
218
250
  });
219
251
  return buildCreateTaskResult(toTaskSummary(task));
220
252
  }
221
253
  async function handleDirectToolCall(params, context) {
222
- const args = requireFetchUrlArgs(params.arguments);
254
+ const tool = resolveTaskCapableTool(params.name);
255
+ const args = tool.parseArguments(params.arguments);
223
256
  const extra = compact({
224
257
  signal: context.signal,
225
258
  requestId: context.requestId,
226
259
  sendNotification: context.sendNotification,
227
260
  _meta: params._meta,
228
261
  });
229
- return fetchUrlToolHandler(args, extra);
262
+ return tool.execute(args, extra);
230
263
  }
231
264
  export async function handleToolCallRequest(server, request, context) {
232
265
  const { params } = request;
266
+ // Validate the tool name first so an unknown tool always produces MethodNotFound,
267
+ // regardless of whether a task:{} param was supplied (H-4).
268
+ assertKnownTool(params.name);
233
269
  if (params.task) {
234
270
  return handleTaskToolCall(server, params, context);
235
271
  }
236
- if (params.name === FETCH_URL_TOOL_NAME) {
237
- return handleDirectToolCall(params, context);
238
- }
239
- throw new McpError(ErrorCode.MethodNotFound, `Unknown tool: ${params.name}`);
272
+ return handleDirectToolCall(params, context);
240
273
  }
241
274
  //# sourceMappingURL=execution.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"execution.js","sourceRoot":"","sources":["../../src/tasks/execution.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"execution.js","sourceRoot":"","sources":["../../src/tasks/execution.ts"],"names":[],"mappings":"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"}
@@ -44,11 +44,13 @@ declare class TaskManager {
44
44
  private startCleanupLoop;
45
45
  private removeExpiredTasks;
46
46
  private removeTask;
47
+ private releaseOwnerCount;
47
48
  private countTasksForOwner;
48
49
  private incrementOwnerCount;
49
50
  private decrementOwnerCount;
50
51
  private assertTaskCapacity;
51
52
  createTask(options?: CreateTaskOptions, statusMessage?: string, ownerKey?: string): TaskState;
53
+ private lookupActiveTask;
52
54
  getTask(taskId: string, ownerKey?: string): TaskState | undefined;
53
55
  updateTask(taskId: string, updates: Partial<Omit<TaskState, 'taskId' | 'createdAt'>>): void;
54
56
  cancelTask(taskId: string, ownerKey?: string): TaskState | undefined;
@@ -62,6 +64,8 @@ declare class TaskManager {
62
64
  tasks: TaskState[];
63
65
  nextCursor?: string;
64
66
  };
67
+ private addWaiter;
68
+ private removeWaiter;
65
69
  waitForTerminalTask(taskId: string, ownerKey: string, signal?: AbortSignal): Promise<TaskState | undefined>;
66
70
  private notifyWaiters;
67
71
  private isExpired;
@@ -1 +1 @@
1
- {"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../src/tasks/manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../src/tasks/manager.ts"],"names":[],"mappings":"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"}
@@ -3,8 +3,9 @@ import { AsyncLocalStorage } from 'node:async_hooks';
3
3
  import { Buffer } from 'node:buffer';
4
4
  import { randomUUID } from 'node:crypto';
5
5
  import { setInterval } from 'node:timers';
6
- import { config } from '../config.js';
7
- import { createUnrefTimeout } from '../timer-utils.js';
6
+ import { config } from '../lib/config.js';
7
+ import { toError } from '../lib/errors.js';
8
+ import { createUnrefTimeout, } from '../lib/timer-utils.js';
8
9
  const DEFAULT_TTL_MS = 60_000;
9
10
  const MIN_TTL_MS = 1_000;
10
11
  const MAX_TTL_MS = 86_400_000;
@@ -42,24 +43,29 @@ class TaskManager {
42
43
  }
43
44
  removeExpiredTasks() {
44
45
  const now = Date.now();
45
- const expired = [];
46
46
  for (const [id, task] of this.tasks) {
47
47
  if (this.isExpired(task, now)) {
48
- expired.push(id);
48
+ this.removeTask(id);
49
49
  }
50
50
  }
51
- for (const id of expired) {
52
- this.removeTask(id);
53
- }
54
51
  }
55
52
  removeTask(taskId) {
56
53
  const task = this.tasks.get(taskId);
57
54
  if (!task)
58
55
  return false;
59
56
  this.tasks.delete(taskId);
60
- this.decrementOwnerCount(task.ownerKey);
57
+ this.releaseOwnerCount(task);
61
58
  return true;
62
59
  }
60
+ releaseOwnerCount(task) {
61
+ const internal = task;
62
+ if (internal._ownerCounted === false)
63
+ return;
64
+ if ('_ownerCounted' in internal) {
65
+ internal._ownerCounted = false;
66
+ }
67
+ this.decrementOwnerCount(task.ownerKey);
68
+ }
63
69
  countTasksForOwner(ownerKey) {
64
70
  return this.ownerCounts.get(ownerKey) ?? 0;
65
71
  }
@@ -99,12 +105,13 @@ class TaskManager {
99
105
  ttl: normalizeTaskTtl(options?.ttl),
100
106
  pollInterval: DEFAULT_POLL_INTERVAL_MS,
101
107
  _createdAtMs: now.getTime(),
108
+ _ownerCounted: true,
102
109
  };
103
110
  this.tasks.set(task.taskId, task);
104
111
  this.incrementOwnerCount(ownerKey);
105
112
  return task;
106
113
  }
107
- getTask(taskId, ownerKey) {
114
+ lookupActiveTask(taskId, ownerKey) {
108
115
  const task = this.tasks.get(taskId);
109
116
  if (!task)
110
117
  return undefined;
@@ -116,16 +123,17 @@ class TaskManager {
116
123
  }
117
124
  return task;
118
125
  }
126
+ getTask(taskId, ownerKey) {
127
+ return this.lookupActiveTask(taskId, ownerKey);
128
+ }
119
129
  updateTask(taskId, updates) {
120
130
  const task = this.tasks.get(taskId);
121
131
  if (!task)
122
132
  return;
123
133
  if (isTerminalStatus(task.status))
124
134
  return;
125
- Object.assign(task, {
126
- ...updates,
127
- lastUpdatedAt: new Date().toISOString(),
128
- });
135
+ Object.assign(task, updates);
136
+ task.lastUpdatedAt = new Date().toISOString();
129
137
  this.notifyWaiters(task);
130
138
  }
131
139
  cancelTask(taskId, ownerKey) {
@@ -139,7 +147,7 @@ class TaskManager {
139
147
  status: 'cancelled',
140
148
  statusMessage: 'The task was cancelled by request.',
141
149
  });
142
- this.decrementOwnerCount(task.ownerKey);
150
+ this.releaseOwnerCount(task);
143
151
  return this.tasks.get(taskId);
144
152
  }
145
153
  cancelTasksByOwner(ownerKey, statusMessage = 'The task was cancelled because its owner is no longer active.') {
@@ -155,7 +163,7 @@ class TaskManager {
155
163
  status: 'cancelled',
156
164
  statusMessage,
157
165
  });
158
- this.decrementOwnerCount(task.ownerKey);
166
+ this.releaseOwnerCount(task);
159
167
  cancelled.push(task);
160
168
  }
161
169
  return cancelled;
@@ -165,12 +173,11 @@ class TaskManager {
165
173
  let collecting = anchorTaskId === null;
166
174
  let anchorFound = anchorTaskId === null;
167
175
  const now = Date.now();
168
- const expired = [];
169
176
  for (const task of this.tasks.values()) {
170
177
  if (task.ownerKey !== ownerKey)
171
178
  continue;
172
179
  if (this.isExpired(task, now)) {
173
- expired.push(task.taskId);
180
+ this.removeTask(task.taskId);
174
181
  continue;
175
182
  }
176
183
  if (!collecting) {
@@ -184,9 +191,6 @@ class TaskManager {
184
191
  if (page.length > pageSize)
185
192
  break;
186
193
  }
187
- for (const id of expired) {
188
- this.removeTask(id);
189
- }
190
194
  // Anchor task expired between pages; return empty list so callers stop
191
195
  // pagination cleanly. Silently falling back to page 0 risks infinite loops
192
196
  // for automated clients that always follow nextCursor.
@@ -214,27 +218,41 @@ class TaskManager {
214
218
  const nextCursor = this.resolveNextCursor(page, hasMore);
215
219
  return nextCursor ? { tasks: page, nextCursor } : { tasks: page };
216
220
  }
221
+ addWaiter(taskId, waiter) {
222
+ let set = this.waiters.get(taskId);
223
+ if (!set) {
224
+ set = new Set();
225
+ this.waiters.set(taskId, set);
226
+ }
227
+ set.add(waiter);
228
+ }
229
+ removeWaiter(taskId, waiter) {
230
+ if (!waiter)
231
+ return;
232
+ const set = this.waiters.get(taskId);
233
+ if (!set)
234
+ return;
235
+ set.delete(waiter);
236
+ if (set.size === 0) {
237
+ this.waiters.delete(taskId);
238
+ }
239
+ }
217
240
  async waitForTerminalTask(taskId, ownerKey, signal) {
218
- const task = this.tasks.get(taskId);
241
+ const task = this.lookupActiveTask(taskId, ownerKey);
219
242
  if (!task)
220
243
  return undefined;
221
- if (ownerKey && task.ownerKey !== ownerKey)
222
- return undefined;
223
- if (this.isExpired(task)) {
224
- this.removeTask(taskId);
225
- return undefined;
226
- }
227
244
  if (isTerminalStatus(task.status))
228
245
  return task;
229
246
  // isExpired() above guarantees task.ttl has not elapsed; compute deadlineMs
230
247
  // for the promise-based timeout below.
231
248
  const deadlineMs = task._createdAtMs + task.ttl;
232
249
  return new Promise((resolve, reject) => {
250
+ // Bind resolve/reject to the AsyncLocalStorage context of the caller, so that any context values (e.g. requestId) are preserved when we later call them from a different tick.
233
251
  const resolveInContext = AsyncLocalStorage.bind((value) => {
234
252
  resolve(value);
235
253
  });
236
254
  const rejectInContext = AsyncLocalStorage.bind((error) => {
237
- reject(error instanceof Error ? error : new Error(String(error)));
255
+ reject(toError(error));
238
256
  });
239
257
  let settled = false;
240
258
  let waiter = null;
@@ -248,16 +266,6 @@ class TaskManager {
248
266
  signal.removeEventListener('abort', onAbort);
249
267
  }
250
268
  };
251
- const removeWaiter = () => {
252
- if (waiter) {
253
- const set = this.waiters.get(taskId);
254
- if (set) {
255
- set.delete(waiter);
256
- if (set.size === 0)
257
- this.waiters.delete(taskId);
258
- }
259
- }
260
- };
261
269
  const settleOnce = (fn) => {
262
270
  if (settled)
263
271
  return;
@@ -267,7 +275,7 @@ class TaskManager {
267
275
  const onAbort = () => {
268
276
  settleOnce(() => {
269
277
  cleanup();
270
- removeWaiter();
278
+ this.removeWaiter(taskId, waiter);
271
279
  rejectInContext(new McpError(ErrorCode.ConnectionClosed, 'Request was cancelled'));
272
280
  });
273
281
  };
@@ -285,12 +293,7 @@ class TaskManager {
285
293
  onAbort();
286
294
  return;
287
295
  }
288
- let set = this.waiters.get(taskId);
289
- if (!set) {
290
- set = new Set();
291
- this.waiters.set(taskId, set);
292
- }
293
- set.add(waiter);
296
+ this.addWaiter(taskId, waiter);
294
297
  if (signal) {
295
298
  signal.addEventListener('abort', onAbort, { once: true });
296
299
  }
@@ -300,7 +303,7 @@ class TaskManager {
300
303
  .then(() => {
301
304
  settleOnce(() => {
302
305
  cleanup();
303
- removeWaiter();
306
+ this.removeWaiter(taskId, waiter);
304
307
  this.removeTask(taskId);
305
308
  resolveInContext(undefined);
306
309
  });
@@ -335,6 +338,8 @@ class TaskManager {
335
338
  }
336
339
  }
337
340
  encodeCursor(taskId) {
341
+ // Base64url-encode the taskId to produce a compact opaque cursor string.
342
+ // The taskId is a UUID, which is 36 ASCII chars, so the resulting cursor will be 48 chars (36 * 4/3) plus padding if any.
338
343
  return Buffer.from(taskId, 'utf8').toString('base64url');
339
344
  }
340
345
  decodeCursor(cursor) {