@tachu/extensions 1.0.0-beta.1 → 1.0.0-rc.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 (243) hide show
  1. package/CHANGELOG.md +48 -65
  2. package/README.md +83 -708
  3. package/README_ZH.md +82 -696
  4. package/dist/backends/file.d.ts +6 -6
  5. package/dist/backends/file.d.ts.map +1 -1
  6. package/dist/backends/file.js +27 -11
  7. package/dist/backends/file.js.map +1 -1
  8. package/dist/backends/terminal.d.ts +6 -6
  9. package/dist/backends/terminal.d.ts.map +1 -1
  10. package/dist/backends/terminal.js +31 -7
  11. package/dist/backends/terminal.js.map +1 -1
  12. package/dist/backends/web.d.ts +6 -6
  13. package/dist/backends/web.d.ts.map +1 -1
  14. package/dist/backends/web.js +10 -8
  15. package/dist/backends/web.js.map +1 -1
  16. package/dist/common/net.d.ts +8 -0
  17. package/dist/common/net.d.ts.map +1 -1
  18. package/dist/common/net.js +39 -24
  19. package/dist/common/net.js.map +1 -1
  20. package/dist/common/path.d.ts +38 -5
  21. package/dist/common/path.d.ts.map +1 -1
  22. package/dist/common/path.js +55 -13
  23. package/dist/common/path.js.map +1 -1
  24. package/dist/common/process.js.map +1 -1
  25. package/dist/index.d.ts +7 -3
  26. package/dist/index.d.ts.map +1 -1
  27. package/dist/index.js +7 -3
  28. package/dist/index.js.map +1 -1
  29. package/dist/mcp/sse-adapter.d.ts +45 -33
  30. package/dist/mcp/sse-adapter.d.ts.map +1 -1
  31. package/dist/mcp/sse-adapter.js +59 -34
  32. package/dist/mcp/sse-adapter.js.map +1 -1
  33. package/dist/mcp/stdio-adapter.d.ts +45 -33
  34. package/dist/mcp/stdio-adapter.d.ts.map +1 -1
  35. package/dist/mcp/stdio-adapter.js +59 -34
  36. package/dist/mcp/stdio-adapter.js.map +1 -1
  37. package/dist/memory/fs-memory-system.d.ts +288 -0
  38. package/dist/memory/fs-memory-system.d.ts.map +1 -0
  39. package/dist/memory/fs-memory-system.js +482 -0
  40. package/dist/memory/fs-memory-system.js.map +1 -0
  41. package/dist/memory/index.d.ts +5 -0
  42. package/dist/memory/index.d.ts.map +1 -0
  43. package/dist/memory/index.js +5 -0
  44. package/dist/memory/index.js.map +1 -0
  45. package/dist/memory/projection-outbox.d.ts +69 -0
  46. package/dist/memory/projection-outbox.d.ts.map +1 -0
  47. package/dist/memory/projection-outbox.js +187 -0
  48. package/dist/memory/projection-outbox.js.map +1 -0
  49. package/dist/memory/projection-projector.d.ts +16 -0
  50. package/dist/memory/projection-projector.d.ts.map +1 -0
  51. package/dist/memory/projection-projector.js +56 -0
  52. package/dist/memory/projection-projector.js.map +1 -0
  53. package/dist/memory/projection-worker.d.ts +28 -0
  54. package/dist/memory/projection-worker.d.ts.map +1 -0
  55. package/dist/memory/projection-worker.js +84 -0
  56. package/dist/memory/projection-worker.js.map +1 -0
  57. package/dist/observability/jsonl-emitter.d.ts +25 -25
  58. package/dist/observability/jsonl-emitter.d.ts.map +1 -1
  59. package/dist/observability/jsonl-emitter.js +25 -25
  60. package/dist/observability/jsonl-emitter.js.map +1 -1
  61. package/dist/observability/otel-emitter.d.ts +23 -23
  62. package/dist/observability/otel-emitter.d.ts.map +1 -1
  63. package/dist/observability/otel-emitter.js +39 -30
  64. package/dist/observability/otel-emitter.js.map +1 -1
  65. package/dist/providers/anthropic.d.ts +51 -32
  66. package/dist/providers/anthropic.d.ts.map +1 -1
  67. package/dist/providers/anthropic.js +293 -58
  68. package/dist/providers/anthropic.js.map +1 -1
  69. package/dist/providers/gemini.d.ts +115 -0
  70. package/dist/providers/gemini.d.ts.map +1 -0
  71. package/dist/providers/gemini.js +901 -0
  72. package/dist/providers/gemini.js.map +1 -0
  73. package/dist/providers/index.d.ts +2 -0
  74. package/dist/providers/index.d.ts.map +1 -1
  75. package/dist/providers/index.js +2 -0
  76. package/dist/providers/index.js.map +1 -1
  77. package/dist/providers/mock.d.ts +67 -24
  78. package/dist/providers/mock.d.ts.map +1 -1
  79. package/dist/providers/mock.js +122 -41
  80. package/dist/providers/mock.js.map +1 -1
  81. package/dist/providers/openai.d.ts +70 -35
  82. package/dist/providers/openai.d.ts.map +1 -1
  83. package/dist/providers/openai.js +330 -50
  84. package/dist/providers/openai.js.map +1 -1
  85. package/dist/providers/qwen.d.ts +146 -0
  86. package/dist/providers/qwen.d.ts.map +1 -0
  87. package/dist/providers/qwen.js +672 -0
  88. package/dist/providers/qwen.js.map +1 -0
  89. package/dist/safety/default-gate.d.ts +112 -0
  90. package/dist/safety/default-gate.d.ts.map +1 -0
  91. package/dist/safety/default-gate.js +188 -0
  92. package/dist/safety/default-gate.js.map +1 -0
  93. package/dist/safety/index.d.ts +2 -0
  94. package/dist/safety/index.d.ts.map +1 -0
  95. package/dist/safety/index.js +2 -0
  96. package/dist/safety/index.js.map +1 -0
  97. package/dist/tools/_shared/web-client.d.ts +18 -0
  98. package/dist/tools/_shared/web-client.d.ts.map +1 -0
  99. package/dist/tools/_shared/web-client.js +46 -0
  100. package/dist/tools/_shared/web-client.js.map +1 -0
  101. package/dist/tools/apply-patch/executor.d.ts.map +1 -1
  102. package/dist/tools/apply-patch/executor.js +54 -4
  103. package/dist/tools/apply-patch/executor.js.map +1 -1
  104. package/dist/tools/edit-file/executor.d.ts +32 -0
  105. package/dist/tools/edit-file/executor.d.ts.map +1 -0
  106. package/dist/tools/edit-file/executor.js +84 -0
  107. package/dist/tools/edit-file/executor.js.map +1 -0
  108. package/dist/tools/fetch-url/descriptor.md +6 -0
  109. package/dist/tools/fetch-url/executor.d.ts +8 -0
  110. package/dist/tools/fetch-url/executor.d.ts.map +1 -1
  111. package/dist/tools/fetch-url/executor.js +83 -2
  112. package/dist/tools/fetch-url/executor.js.map +1 -1
  113. package/dist/tools/git-blame/executor.d.ts +24 -0
  114. package/dist/tools/git-blame/executor.d.ts.map +1 -0
  115. package/dist/tools/git-blame/executor.js +76 -0
  116. package/dist/tools/git-blame/executor.js.map +1 -0
  117. package/dist/tools/git-branch/executor.d.ts +22 -0
  118. package/dist/tools/git-branch/executor.d.ts.map +1 -0
  119. package/dist/tools/git-branch/executor.js +81 -0
  120. package/dist/tools/git-branch/executor.js.map +1 -0
  121. package/dist/tools/git-diff/executor.d.ts +37 -0
  122. package/dist/tools/git-diff/executor.d.ts.map +1 -0
  123. package/dist/tools/git-diff/executor.js +156 -0
  124. package/dist/tools/git-diff/executor.js.map +1 -0
  125. package/dist/tools/git-log/executor.d.ts +31 -0
  126. package/dist/tools/git-log/executor.d.ts.map +1 -0
  127. package/dist/tools/git-log/executor.js +65 -0
  128. package/dist/tools/git-log/executor.js.map +1 -0
  129. package/dist/tools/git-show/executor.d.ts +22 -0
  130. package/dist/tools/git-show/executor.d.ts.map +1 -0
  131. package/dist/tools/git-show/executor.js +74 -0
  132. package/dist/tools/git-show/executor.js.map +1 -0
  133. package/dist/tools/git-status/executor.d.ts +25 -0
  134. package/dist/tools/git-status/executor.d.ts.map +1 -0
  135. package/dist/tools/git-status/executor.js +120 -0
  136. package/dist/tools/git-status/executor.js.map +1 -0
  137. package/dist/tools/glob/executor.d.ts +18 -0
  138. package/dist/tools/glob/executor.d.ts.map +1 -0
  139. package/dist/tools/glob/executor.js +47 -0
  140. package/dist/tools/glob/executor.js.map +1 -0
  141. package/dist/tools/index.d.ts +1 -1
  142. package/dist/tools/index.d.ts.map +1 -1
  143. package/dist/tools/index.js +459 -4
  144. package/dist/tools/index.js.map +1 -1
  145. package/dist/tools/list-dir/executor.d.ts.map +1 -1
  146. package/dist/tools/list-dir/executor.js +5 -3
  147. package/dist/tools/list-dir/executor.js.map +1 -1
  148. package/dist/tools/multi-edit/executor.d.ts +29 -0
  149. package/dist/tools/multi-edit/executor.d.ts.map +1 -0
  150. package/dist/tools/multi-edit/executor.js +37 -0
  151. package/dist/tools/multi-edit/executor.js.map +1 -0
  152. package/dist/tools/read-file/executor.d.ts +5 -0
  153. package/dist/tools/read-file/executor.d.ts.map +1 -1
  154. package/dist/tools/read-file/executor.js +49 -5
  155. package/dist/tools/read-file/executor.js.map +1 -1
  156. package/dist/tools/run-shell/executor.d.ts +12 -1
  157. package/dist/tools/run-shell/executor.d.ts.map +1 -1
  158. package/dist/tools/run-shell/executor.js +105 -9
  159. package/dist/tools/run-shell/executor.js.map +1 -1
  160. package/dist/tools/run-tests/executor.d.ts +28 -0
  161. package/dist/tools/run-tests/executor.d.ts.map +1 -0
  162. package/dist/tools/run-tests/executor.js +161 -0
  163. package/dist/tools/run-tests/executor.js.map +1 -0
  164. package/dist/tools/run-typecheck/executor.d.ts +25 -0
  165. package/dist/tools/run-typecheck/executor.d.ts.map +1 -0
  166. package/dist/tools/run-typecheck/executor.js +83 -0
  167. package/dist/tools/run-typecheck/executor.js.map +1 -0
  168. package/dist/tools/search-code/executor.d.ts.map +1 -1
  169. package/dist/tools/search-code/executor.js +60 -30
  170. package/dist/tools/search-code/executor.js.map +1 -1
  171. package/dist/tools/shared.d.ts +26 -0
  172. package/dist/tools/shared.d.ts.map +1 -1
  173. package/dist/tools/shared.js +15 -0
  174. package/dist/tools/shared.js.map +1 -1
  175. package/dist/tools/todo-read/executor.d.ts +20 -0
  176. package/dist/tools/todo-read/executor.d.ts.map +1 -0
  177. package/dist/tools/todo-read/executor.js +26 -0
  178. package/dist/tools/todo-read/executor.js.map +1 -0
  179. package/dist/tools/todo-write/executor.d.ts +21 -0
  180. package/dist/tools/todo-write/executor.d.ts.map +1 -0
  181. package/dist/tools/todo-write/executor.js +38 -0
  182. package/dist/tools/todo-write/executor.js.map +1 -0
  183. package/dist/tools/web-fetch/descriptor.md +198 -0
  184. package/dist/tools/web-fetch/errors.d.ts +32 -0
  185. package/dist/tools/web-fetch/errors.d.ts.map +1 -0
  186. package/dist/tools/web-fetch/errors.js +91 -0
  187. package/dist/tools/web-fetch/errors.js.map +1 -0
  188. package/dist/tools/web-fetch/executor.d.ts +10 -0
  189. package/dist/tools/web-fetch/executor.d.ts.map +1 -0
  190. package/dist/tools/web-fetch/executor.js +191 -0
  191. package/dist/tools/web-fetch/executor.js.map +1 -0
  192. package/dist/tools/web-fetch/index.d.ts +4 -0
  193. package/dist/tools/web-fetch/index.d.ts.map +1 -0
  194. package/dist/tools/web-fetch/index.js +3 -0
  195. package/dist/tools/web-fetch/index.js.map +1 -0
  196. package/dist/tools/web-fetch/types.d.ts +157 -0
  197. package/dist/tools/web-fetch/types.d.ts.map +1 -0
  198. package/dist/tools/web-fetch/types.js +7 -0
  199. package/dist/tools/web-fetch/types.js.map +1 -0
  200. package/dist/tools/web-search/descriptor.md +89 -0
  201. package/dist/tools/web-search/errors.d.ts +33 -0
  202. package/dist/tools/web-search/errors.d.ts.map +1 -0
  203. package/dist/tools/web-search/errors.js +45 -0
  204. package/dist/tools/web-search/errors.js.map +1 -0
  205. package/dist/tools/web-search/executor.d.ts +10 -0
  206. package/dist/tools/web-search/executor.d.ts.map +1 -0
  207. package/dist/tools/web-search/executor.js +185 -0
  208. package/dist/tools/web-search/executor.js.map +1 -0
  209. package/dist/tools/web-search/index.d.ts +4 -0
  210. package/dist/tools/web-search/index.d.ts.map +1 -0
  211. package/dist/tools/web-search/index.js +3 -0
  212. package/dist/tools/web-search/index.js.map +1 -0
  213. package/dist/tools/web-search/types.d.ts +86 -0
  214. package/dist/tools/web-search/types.d.ts.map +1 -0
  215. package/dist/tools/web-search/types.js +7 -0
  216. package/dist/tools/web-search/types.js.map +1 -0
  217. package/dist/tools/write-file/executor.js +3 -3
  218. package/dist/tools/write-file/executor.js.map +1 -1
  219. package/dist/transformers/document-to-text.d.ts +11 -11
  220. package/dist/transformers/document-to-text.d.ts.map +1 -1
  221. package/dist/transformers/document-to-text.js +11 -11
  222. package/dist/transformers/document-to-text.js.map +1 -1
  223. package/dist/transformers/image-to-text.d.ts +15 -15
  224. package/dist/transformers/image-to-text.d.ts.map +1 -1
  225. package/dist/transformers/image-to-text.js +22 -21
  226. package/dist/transformers/image-to-text.js.map +1 -1
  227. package/dist/vector/index.d.ts +4 -2
  228. package/dist/vector/index.d.ts.map +1 -1
  229. package/dist/vector/index.js +2 -2
  230. package/dist/vector/index.js.map +1 -1
  231. package/dist/vector/local-fs-index.d.ts +59 -0
  232. package/dist/vector/local-fs-index.d.ts.map +1 -0
  233. package/dist/vector/local-fs-index.js +216 -0
  234. package/dist/vector/local-fs-index.js.map +1 -0
  235. package/dist/vector/qdrant.d.ts +11 -52
  236. package/dist/vector/qdrant.d.ts.map +1 -1
  237. package/dist/vector/qdrant.js +39 -105
  238. package/dist/vector/qdrant.js.map +1 -1
  239. package/package.json +27 -6
  240. package/dist/vector/local-fs.d.ts +0 -76
  241. package/dist/vector/local-fs.d.ts.map +0 -1
  242. package/dist/vector/local-fs.js +0 -153
  243. package/dist/vector/local-fs.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EACrB,wBAAwB,EACxB,mBAAmB,GACpB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,KAAK,YAAY,EAAE,MAAM,SAAS,CAAC;AAC5E,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACtE,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AACjE,OAAO,EAAE,sBAAsB,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AACnF,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC5D,OAAO,EAAE,6BAA6B,EAAE,MAAM,SAAS,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EACrB,wBAAwB,EACxB,qBAAqB,EACrB,mBAAmB,EACnB,mBAAmB,EACnB,KAAK,iBAAiB,EACtB,KAAK,qBAAqB,EAC1B,KAAK,eAAe,EACpB,KAAK,mBAAmB,GACzB,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,eAAe,EACf,aAAa,EACb,KAAK,YAAY,EACjB,KAAK,oBAAoB,GAC1B,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACtE,OAAO,EACL,yBAAyB,EACzB,KAAK,gCAAgC,EACrC,wBAAwB,EACxB,iBAAiB,EACjB,KAAK,+BAA+B,GACrC,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,sBAAsB,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AACnF,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC5D,OAAO,EAAE,6BAA6B,EAAE,MAAM,SAAS,CAAC;AACxD,OAAO,EACL,cAAc,EACd,iBAAiB,EACjB,KAAK,qBAAqB,EAC1B,gBAAgB,EAChB,KAAK,uBAAuB,EAC5B,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,gBAAgB,EAChB,KAAK,2BAA2B,EAChC,KAAK,uBAAuB,EAC5B,KAAK,6BAA6B,EAClC,iBAAiB,EACjB,KAAK,uBAAuB,GAC7B,MAAM,UAAU,CAAC;AAClB,OAAO,EACL,8BAA8B,EAC9B,oBAAoB,EACpB,eAAe,EACf,KAAK,gBAAgB,EACrB,KAAK,mBAAmB,EACxB,KAAK,aAAa,EAClB,KAAK,mBAAmB,EACxB,KAAK,sBAAsB,GAC5B,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EACL,kBAAkB,EAClB,oBAAoB,EACpB,uBAAuB,EACvB,KAAK,yBAAyB,GAC/B,MAAM,eAAe,CAAC"}
package/dist/index.js CHANGED
@@ -1,9 +1,13 @@
1
- export { OpenAIProviderAdapter, AnthropicProviderAdapter, MockProviderAdapter, } from "./providers";
2
- export { toolDescriptors, toolExecutors } from "./tools";
1
+ export { OpenAIProviderAdapter, AnthropicProviderAdapter, GeminiProviderAdapter, MockProviderAdapter, QwenProviderAdapter, } from "./providers";
2
+ export { toolDescriptors, toolExecutors, } from "./tools";
3
3
  export { TerminalBackend, FileBackend, WebBackend } from "./backends";
4
- export { LocalFsVectorStore, QdrantVectorStore } from "./vector";
4
+ export { LocalFsVectorIndexAdapter, QdrantVectorIndexAdapter, QdrantVectorStore, } from "./vector";
5
5
  export { ImageToTextTransformer, DocumentToTextTransformer } from "./transformers";
6
6
  export { McpStdioAdapter, McpSseAdapter } from "./mcp";
7
7
  export { OtelEmitter, JsonlEmitter } from "./observability";
8
8
  export { BUILTIN_RULE_DESCRIPTOR_PATHS } from "./rules";
9
+ export { FsMemorySystem, sanitizeSessionId, ProjectionOutbox, ProjectionWorker, projectMemoryRefs, } from "./memory";
10
+ export { DEFAULT_SHELL_COMMAND_DENYLIST, matchesShellDenylist, withDefaultGate, } from "./safety";
11
+ export { configureNetSafety } from "./common/net";
12
+ export { resolveAllowedPath, resolveWorkspacePath, toWorkspaceRelativePath, } from "./common/path";
9
13
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EACrB,wBAAwB,EACxB,mBAAmB,GACpB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,eAAe,EAAE,aAAa,EAAqB,MAAM,SAAS,CAAC;AAC5E,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACtE,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AACjE,OAAO,EAAE,sBAAsB,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AACnF,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC5D,OAAO,EAAE,6BAA6B,EAAE,MAAM,SAAS,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EACrB,wBAAwB,EACxB,qBAAqB,EACrB,mBAAmB,EACnB,mBAAmB,GAKpB,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,eAAe,EACf,aAAa,GAGd,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACtE,OAAO,EACL,yBAAyB,EAEzB,wBAAwB,EACxB,iBAAiB,GAElB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,sBAAsB,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AACnF,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC5D,OAAO,EAAE,6BAA6B,EAAE,MAAM,SAAS,CAAC;AACxD,OAAO,EACL,cAAc,EACd,iBAAiB,EAEjB,gBAAgB,EAIhB,gBAAgB,EAIhB,iBAAiB,GAElB,MAAM,UAAU,CAAC;AAClB,OAAO,EACL,8BAA8B,EAC9B,oBAAoB,EACpB,eAAe,GAMhB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EACL,kBAAkB,EAClB,oBAAoB,EACpB,uBAAuB,GAExB,MAAM,eAAe,CAAC"}
@@ -3,6 +3,14 @@ interface McpSseAdapterOptions {
3
3
  url: string;
4
4
  headers?: Record<string, string>;
5
5
  serverId?: string;
6
+ /**
7
+ * 单次 `callTool` 的默认超时(毫秒)。到期后会在 adapter 层 abort 下游请求
8
+ * 并抛出 "MCP sse request timed out" 错误。宿主显式传入 `0` 可关闭默认超时,
9
+ * 此时仅依赖调用方传入的 `AbortSignal`。详见 。
10
+ *
11
+ * @default 30_000
12
+ */
13
+ defaultTimeoutMs?: number;
6
14
  }
7
15
  /**
8
16
  * MCP SSE 传输适配器。
@@ -11,6 +19,7 @@ export declare class McpSseAdapter implements McpToolAdapter {
11
19
  readonly transport: "sse";
12
20
  private readonly options;
13
21
  private readonly maxReconnectAttempts;
22
+ private readonly defaultTimeoutMs;
14
23
  private client;
15
24
  private transportImpl;
16
25
  private reconnecting;
@@ -18,50 +27,53 @@ export declare class McpSseAdapter implements McpToolAdapter {
18
27
  private serverUri;
19
28
  private readonly pendingRequests;
20
29
  /**
21
- * 创建 SSE MCP 适配器。
22
- *
23
- * @param options 连接配置
24
- */
30
+ * 创建 SSE MCP 适配器。
31
+ *
32
+ * @param options 连接配置
33
+ */
25
34
  constructor(options: McpSseAdapterOptions);
26
35
  /**
27
- * 建立 SSE MCP 连接。
28
- *
29
- * @param serverUri 服务端地址(可覆盖构造参数)
30
- */
36
+ * 建立 SSE MCP 连接。
37
+ *
38
+ * @param serverUri 服务端地址(可覆盖构造参数)
39
+ */
31
40
  connect(serverUri: string): Promise<void>;
32
41
  /**
33
- * 断开连接。
34
- */
42
+ * 断开连接。
43
+ */
35
44
  disconnect(): Promise<void>;
36
45
  /**
37
- * 列出远端工具并转换为 ToolDescriptor。
38
- *
39
- * @returns 工具描述符列表
40
- */
46
+ * 列出远端工具并转换为 ToolDescriptor。
47
+ *
48
+ * @returns 工具描述符列表
49
+ */
41
50
  listTools(): Promise<ToolDescriptor[]>;
42
51
  /**
43
- * 调用远端工具(core 协议方法)。
44
- *
45
- * @param name 工具名
46
- * @param input 入参
47
- * @returns 工具执行结果
48
- */
49
- executeTool(name: string, input: unknown): Promise<unknown>;
52
+ * 调用远端工具(core 协议方法)。
53
+ *
54
+ * @param name 工具名
55
+ * @param input 入参
56
+ * @returns 工具执行结果
57
+ */
58
+ executeTool(name: string, input: unknown, options?: {
59
+ signal?: AbortSignal;
60
+ requestId?: string;
61
+ }): Promise<unknown>;
50
62
  /**
51
- * 调用远端工具(支持 AbortSignal)。
52
- *
53
- * @param name 工具名
54
- * @param input 入参
55
- * @param signal 取消信号
56
- * @param requestId 请求 ID(可选;用于后续 cancel 显式取消)
57
- * @returns 执行结果
58
- */
63
+ * 调用远端工具(支持 AbortSignal)。
64
+ *
65
+ * @param name 工具名
66
+ * @param input 入参
67
+ * @param signal 取消信号
68
+ * @param requestId 请求 ID(可选;用于后续 cancel 显式取消)
69
+ * @returns 执行结果
70
+ */
59
71
  callTool(name: string, input: unknown, signal?: AbortSignal, requestId?: string): Promise<unknown>;
60
72
  /**
61
- * 取消请求(由调用方通过 signal 传播)。
62
- *
63
- * @param _requestId 请求 ID
64
- */
73
+ * 取消请求(由调用方通过 signal 传播)。
74
+ *
75
+ * @param _requestId 请求 ID
76
+ */
65
77
  cancel(requestId: string): Promise<void>;
66
78
  private connectInternal;
67
79
  private reconnectWithBackoff;
@@ -1 +1 @@
1
- {"version":3,"file":"sse-adapter.d.ts","sourceRoot":"","sources":["../../src/mcp/sse-adapter.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAElE,UAAU,oBAAoB;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAKD;;GAEG;AACH,qBAAa,aAAc,YAAW,cAAc;IAClD,QAAQ,CAAC,SAAS,EAAG,KAAK,CAAU;IAEpC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAuB;IAC/C,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAK;IAC1C,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,aAAa,CAAmC;IACxD,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,SAAS,CAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAsC;IAEtE;;;;OAIG;gBACS,OAAO,EAAE,oBAAoB;IAIzC;;;;OAIG;IACG,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAM/C;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAWjC;;;;OAIG;IACG,SAAS,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;IAuB5C;;;;;;OAMG;IACG,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAIjE;;;;;;;;OAQG;IACG,QAAQ,CACZ,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,OAAO,EACd,MAAM,CAAC,EAAE,WAAW,EACpB,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,OAAO,CAAC;IAkCnB;;;;OAIG;IACG,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;YAQhC,eAAe;YAoBf,oBAAoB;CAoBnC"}
1
+ {"version":3,"file":"sse-adapter.d.ts","sourceRoot":"","sources":["../../src/mcp/sse-adapter.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAElE,UAAU,oBAAoB;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,QAAQ,CAAC,EAAE,MAAM,CAAC;IACnB;;;;;;MAME;IACD,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAQD;;GAEG;AACH,qBAAa,aAAc,YAAW,cAAc;IAClD,QAAQ,CAAC,SAAS,EAAG,KAAK,CAAU;IAEpC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAuB;IAC/C,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAK;IAC1C,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAS;IAC1C,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,aAAa,CAAmC;IACxD,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,SAAS,CAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAsC;IAEvE;;;;MAIE;gBACW,OAAO,EAAE,oBAAoB;IAQ1C;;;;MAIE;IACK,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAMhD;;MAEE;IACK,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAWlC;;;;MAIE;IACK,SAAS,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;IAuB7C;;;;;;MAME;IACK,WAAW,CACf,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,OAAO,EACd,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,WAAW,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,GACrD,OAAO,CAAC,OAAO,CAAC;IAIpB;;;;;;;;MAQE;IACK,QAAQ,CACZ,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,OAAO,EACd,MAAM,CAAC,EAAE,WAAW,EACpB,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,OAAO,CAAC;IA0DpB;;;;MAIE;IACK,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;YAQhC,eAAe;YAoBf,oBAAoB;CAoBnC"}
@@ -1,5 +1,7 @@
1
1
  import { Client } from "@modelcontextprotocol/sdk/client/index.js";
2
2
  import { SSEClientTransport } from "@modelcontextprotocol/sdk/client/sse.js";
3
+ /** :默认 30s 的工具调用超时窗口。 */
4
+ const DEFAULT_CALL_TIMEOUT_MS = 30_000;
3
5
  const createRequestId = () => `mcp-sse-${Date.now()}-${Math.random().toString(36).slice(2, 10)}`;
4
6
  /**
5
7
  * MCP SSE 传输适配器。
@@ -8,6 +10,7 @@ export class McpSseAdapter {
8
10
  transport = "sse";
9
11
  options;
10
12
  maxReconnectAttempts = 3;
13
+ defaultTimeoutMs;
11
14
  client = null;
12
15
  transportImpl = null;
13
16
  reconnecting = false;
@@ -15,26 +18,30 @@ export class McpSseAdapter {
15
18
  serverUri = "";
16
19
  pendingRequests = new Map();
17
20
  /**
18
- * 创建 SSE MCP 适配器。
19
- *
20
- * @param options 连接配置
21
- */
21
+ * 创建 SSE MCP 适配器。
22
+ *
23
+ * @param options 连接配置
24
+ */
22
25
  constructor(options) {
23
26
  this.options = options;
27
+ this.defaultTimeoutMs =
28
+ options.defaultTimeoutMs === undefined
29
+ ? DEFAULT_CALL_TIMEOUT_MS
30
+ : Math.max(0, options.defaultTimeoutMs);
24
31
  }
25
32
  /**
26
- * 建立 SSE MCP 连接。
27
- *
28
- * @param serverUri 服务端地址(可覆盖构造参数)
29
- */
33
+ * 建立 SSE MCP 连接。
34
+ *
35
+ * @param serverUri 服务端地址(可覆盖构造参数)
36
+ */
30
37
  async connect(serverUri) {
31
38
  this.serverUri = serverUri || this.options.url;
32
39
  this.closedManually = false;
33
40
  await this.connectInternal();
34
41
  }
35
42
  /**
36
- * 断开连接。
37
- */
43
+ * 断开连接。
44
+ */
38
45
  async disconnect() {
39
46
  this.closedManually = true;
40
47
  for (const controller of this.pendingRequests.values()) {
@@ -46,10 +53,10 @@ export class McpSseAdapter {
46
53
  this.client = null;
47
54
  }
48
55
  /**
49
- * 列出远端工具并转换为 ToolDescriptor。
50
- *
51
- * @returns 工具描述符列表
52
- */
56
+ * 列出远端工具并转换为 ToolDescriptor。
57
+ *
58
+ * @returns 工具描述符列表
59
+ */
53
60
  async listTools() {
54
61
  if (!this.client) {
55
62
  throw new Error("MCP sse adapter not connected");
@@ -73,24 +80,24 @@ export class McpSseAdapter {
73
80
  }));
74
81
  }
75
82
  /**
76
- * 调用远端工具(core 协议方法)。
77
- *
78
- * @param name 工具名
79
- * @param input 入参
80
- * @returns 工具执行结果
81
- */
82
- async executeTool(name, input) {
83
- return this.callTool(name, input);
83
+ * 调用远端工具(core 协议方法)。
84
+ *
85
+ * @param name 工具名
86
+ * @param input 入参
87
+ * @returns 工具执行结果
88
+ */
89
+ async executeTool(name, input, options) {
90
+ return this.callTool(name, input, options?.signal, options?.requestId);
84
91
  }
85
92
  /**
86
- * 调用远端工具(支持 AbortSignal)。
87
- *
88
- * @param name 工具名
89
- * @param input 入参
90
- * @param signal 取消信号
91
- * @param requestId 请求 ID(可选;用于后续 cancel 显式取消)
92
- * @returns 执行结果
93
- */
93
+ * 调用远端工具(支持 AbortSignal)。
94
+ *
95
+ * @param name 工具名
96
+ * @param input 入参
97
+ * @param signal 取消信号
98
+ * @param requestId 请求 ID(可选;用于后续 cancel 显式取消)
99
+ * @returns 执行结果
100
+ */
94
101
  async callTool(name, input, signal, requestId) {
95
102
  if (!this.client) {
96
103
  throw new Error("MCP sse adapter not connected");
@@ -109,21 +116,39 @@ export class McpSseAdapter {
109
116
  else {
110
117
  signal?.addEventListener("abort", onAbort, { once: true });
111
118
  }
119
+ // :为 callTool 套上 adapter 层默认超时,避免远端挂起拖垮引擎。
120
+ let timeoutHandle = null;
121
+ let timedOut = false;
122
+ if (this.defaultTimeoutMs > 0) {
123
+ timeoutHandle = setTimeout(() => {
124
+ timedOut = true;
125
+ controller.abort(new Error(`MCP sse request timed out after ${this.defaultTimeoutMs}ms: ${mappedRequestId}`));
126
+ }, this.defaultTimeoutMs);
127
+ }
112
128
  this.pendingRequests.set(mappedRequestId, controller);
113
129
  try {
114
130
  const result = await this.client.callTool({ name, arguments: (input ?? {}) }, undefined, { signal: controller.signal });
115
131
  return result;
116
132
  }
133
+ catch (error) {
134
+ if (timedOut) {
135
+ throw new Error(`MCP sse request timed out after ${this.defaultTimeoutMs}ms: ${mappedRequestId}`);
136
+ }
137
+ throw error;
138
+ }
117
139
  finally {
140
+ if (timeoutHandle !== null) {
141
+ clearTimeout(timeoutHandle);
142
+ }
118
143
  signal?.removeEventListener("abort", onAbort);
119
144
  this.pendingRequests.delete(mappedRequestId);
120
145
  }
121
146
  }
122
147
  /**
123
- * 取消请求(由调用方通过 signal 传播)。
124
- *
125
- * @param _requestId 请求 ID
126
- */
148
+ * 取消请求(由调用方通过 signal 传播)。
149
+ *
150
+ * @param _requestId 请求 ID
151
+ */
127
152
  async cancel(requestId) {
128
153
  const controller = this.pendingRequests.get(requestId);
129
154
  if (!controller) {
@@ -1 +1 @@
1
- {"version":3,"file":"sse-adapter.js","sourceRoot":"","sources":["../../src/mcp/sse-adapter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sse-adapter.js","sourceRoot":"","sources":["../../src/mcp/sse-adapter.ts"],"names":[],"mappings":"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"}
@@ -5,6 +5,14 @@ interface McpStdioAdapterOptions {
5
5
  env?: Record<string, string>;
6
6
  cwd?: string;
7
7
  serverId?: string;
8
+ /**
9
+ * 单次 `callTool` 的默认超时(毫秒)。到期后会在 adapter 层 abort 下游请求
10
+ * 并抛出 "MCP stdio request timed out" 错误。宿主显式传入 `0` 可关闭默认超时,
11
+ * 此时仅依赖调用方传入的 `AbortSignal`。详见 。
12
+ *
13
+ * @default 30_000
14
+ */
15
+ defaultTimeoutMs?: number;
8
16
  }
9
17
  /**
10
18
  * MCP stdio 传输适配器。
@@ -13,6 +21,7 @@ export declare class McpStdioAdapter implements McpToolAdapter {
13
21
  readonly transport: "stdio";
14
22
  private readonly options;
15
23
  private readonly maxReconnectAttempts;
24
+ private readonly defaultTimeoutMs;
16
25
  private client;
17
26
  private transportImpl;
18
27
  private reconnecting;
@@ -21,50 +30,53 @@ export declare class McpStdioAdapter implements McpToolAdapter {
21
30
  private serverUri;
22
31
  private readonly pendingRequests;
23
32
  /**
24
- * 创建 stdio MCP 适配器。
25
- *
26
- * @param options stdio 启动参数
27
- */
33
+ * 创建 stdio MCP 适配器。
34
+ *
35
+ * @param options stdio 启动参数
36
+ */
28
37
  constructor(options: McpStdioAdapterOptions);
29
38
  /**
30
- * 建立 MCP 连接。
31
- *
32
- * @param serverUri 服务端 URI(可留空)
33
- */
39
+ * 建立 MCP 连接。
40
+ *
41
+ * @param serverUri 服务端 URI(可留空)
42
+ */
34
43
  connect(serverUri: string): Promise<void>;
35
44
  /**
36
- * 断开连接。
37
- */
45
+ * 断开连接。
46
+ */
38
47
  disconnect(): Promise<void>;
39
48
  /**
40
- * 列出远端工具并映射为引擎 ToolDescriptor。
41
- *
42
- * @returns 工具描述符数组
43
- */
49
+ * 列出远端工具并映射为引擎 ToolDescriptor。
50
+ *
51
+ * @returns 工具描述符数组
52
+ */
44
53
  listTools(): Promise<ToolDescriptor[]>;
45
54
  /**
46
- * 调用远端工具(core 协议方法)。
47
- *
48
- * @param name 工具名
49
- * @param input 入参
50
- * @returns 工具执行结果
51
- */
52
- executeTool(name: string, input: unknown): Promise<unknown>;
55
+ * 调用远端工具(core 协议方法)。
56
+ *
57
+ * @param name 工具名
58
+ * @param input 入参
59
+ * @returns 工具执行结果
60
+ */
61
+ executeTool(name: string, input: unknown, options?: {
62
+ signal?: AbortSignal;
63
+ requestId?: string;
64
+ }): Promise<unknown>;
53
65
  /**
54
- * 调用远端工具(支持 AbortSignal)。
55
- *
56
- * @param name 工具名
57
- * @param input 入参
58
- * @param signal 取消信号
59
- * @param requestId 请求 ID(可选;用于后续 cancel 显式取消)
60
- * @returns 工具执行结果
61
- */
66
+ * 调用远端工具(支持 AbortSignal)。
67
+ *
68
+ * @param name 工具名
69
+ * @param input 入参
70
+ * @param signal 取消信号
71
+ * @param requestId 请求 ID(可选;用于后续 cancel 显式取消)
72
+ * @returns 工具执行结果
73
+ */
62
74
  callTool(name: string, input: unknown, signal?: AbortSignal, requestId?: string): Promise<unknown>;
63
75
  /**
64
- * 按 requestId 取消请求(通过信号机制由调用方透传)。
65
- *
66
- * @param _requestId 请求 ID
67
- */
76
+ * 按 requestId 取消请求(通过信号机制由调用方透传)。
77
+ *
78
+ * @param _requestId 请求 ID
79
+ */
68
80
  cancel(requestId: string): Promise<void>;
69
81
  private connectInternal;
70
82
  private reconnectWithBackoff;
@@ -1 +1 @@
1
- {"version":3,"file":"stdio-adapter.d.ts","sourceRoot":"","sources":["../../src/mcp/stdio-adapter.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAElE,UAAU,sBAAsB;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAKD;;GAEG;AACH,qBAAa,eAAgB,YAAW,cAAc;IACpD,QAAQ,CAAC,SAAS,EAAG,OAAO,CAAU;IAEtC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAyB;IACjD,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAK;IAC1C,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,aAAa,CAAqC;IAC1D,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,SAAS,CAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAsC;IAEtE;;;;OAIG;gBACS,OAAO,EAAE,sBAAsB;IAI3C;;;;OAIG;IACG,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAM/C;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAYjC;;;;OAIG;IACG,SAAS,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;IAuB5C;;;;;;OAMG;IACG,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAIjE;;;;;;;;OAQG;IACG,QAAQ,CACZ,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,OAAO,EACd,MAAM,CAAC,EAAE,WAAW,EACpB,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,OAAO,CAAC;IAkCnB;;;;OAIG;IACG,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;YAQhC,eAAe;YAqBf,oBAAoB;CAoBnC"}
1
+ {"version":3,"file":"stdio-adapter.d.ts","sourceRoot":"","sources":["../../src/mcp/stdio-adapter.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAElE,UAAU,sBAAsB;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IACnB;;;;;;MAME;IACD,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAQD;;GAEG;AACH,qBAAa,eAAgB,YAAW,cAAc;IACpD,QAAQ,CAAC,SAAS,EAAG,OAAO,CAAU;IAEtC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAyB;IACjD,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAK;IAC1C,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAS;IAC1C,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,aAAa,CAAqC;IAC1D,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,SAAS,CAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAsC;IAEvE;;;;MAIE;gBACW,OAAO,EAAE,sBAAsB;IAQ5C;;;;MAIE;IACK,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAMhD;;MAEE;IACK,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAYlC;;;;MAIE;IACK,SAAS,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;IAuB7C;;;;;;MAME;IACK,WAAW,CACf,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,OAAO,EACd,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,WAAW,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,GACrD,OAAO,CAAC,OAAO,CAAC;IAIpB;;;;;;;;MAQE;IACK,QAAQ,CACZ,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,OAAO,EACd,MAAM,CAAC,EAAE,WAAW,EACpB,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,OAAO,CAAC;IA0DpB;;;;MAIE;IACK,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;YAQhC,eAAe;YAqBf,oBAAoB;CAoBnC"}
@@ -1,5 +1,7 @@
1
1
  import { Client } from "@modelcontextprotocol/sdk/client/index.js";
2
2
  import { StdioClientTransport, } from "@modelcontextprotocol/sdk/client/stdio.js";
3
+ /** :默认 30s 的工具调用超时窗口。 */
4
+ const DEFAULT_CALL_TIMEOUT_MS = 30_000;
3
5
  const createRequestId = () => `mcp-stdio-${Date.now()}-${Math.random().toString(36).slice(2, 10)}`;
4
6
  /**
5
7
  * MCP stdio 传输适配器。
@@ -8,6 +10,7 @@ export class McpStdioAdapter {
8
10
  transport = "stdio";
9
11
  options;
10
12
  maxReconnectAttempts = 3;
13
+ defaultTimeoutMs;
11
14
  client = null;
12
15
  transportImpl = null;
13
16
  reconnecting = false;
@@ -16,26 +19,30 @@ export class McpStdioAdapter {
16
19
  serverUri = "";
17
20
  pendingRequests = new Map();
18
21
  /**
19
- * 创建 stdio MCP 适配器。
20
- *
21
- * @param options stdio 启动参数
22
- */
22
+ * 创建 stdio MCP 适配器。
23
+ *
24
+ * @param options stdio 启动参数
25
+ */
23
26
  constructor(options) {
24
27
  this.options = options;
28
+ this.defaultTimeoutMs =
29
+ options.defaultTimeoutMs === undefined
30
+ ? DEFAULT_CALL_TIMEOUT_MS
31
+ : Math.max(0, options.defaultTimeoutMs);
25
32
  }
26
33
  /**
27
- * 建立 MCP 连接。
28
- *
29
- * @param serverUri 服务端 URI(可留空)
30
- */
34
+ * 建立 MCP 连接。
35
+ *
36
+ * @param serverUri 服务端 URI(可留空)
37
+ */
31
38
  async connect(serverUri) {
32
39
  this.serverUri = serverUri;
33
40
  this.closedManually = false;
34
41
  await this.connectInternal();
35
42
  }
36
43
  /**
37
- * 断开连接。
38
- */
44
+ * 断开连接。
45
+ */
39
46
  async disconnect() {
40
47
  this.closedManually = true;
41
48
  this.connected = false;
@@ -48,10 +55,10 @@ export class McpStdioAdapter {
48
55
  this.client = null;
49
56
  }
50
57
  /**
51
- * 列出远端工具并映射为引擎 ToolDescriptor。
52
- *
53
- * @returns 工具描述符数组
54
- */
58
+ * 列出远端工具并映射为引擎 ToolDescriptor。
59
+ *
60
+ * @returns 工具描述符数组
61
+ */
55
62
  async listTools() {
56
63
  if (!this.client) {
57
64
  throw new Error("MCP stdio adapter not connected");
@@ -75,24 +82,24 @@ export class McpStdioAdapter {
75
82
  }));
76
83
  }
77
84
  /**
78
- * 调用远端工具(core 协议方法)。
79
- *
80
- * @param name 工具名
81
- * @param input 入参
82
- * @returns 工具执行结果
83
- */
84
- async executeTool(name, input) {
85
- return this.callTool(name, input);
85
+ * 调用远端工具(core 协议方法)。
86
+ *
87
+ * @param name 工具名
88
+ * @param input 入参
89
+ * @returns 工具执行结果
90
+ */
91
+ async executeTool(name, input, options) {
92
+ return this.callTool(name, input, options?.signal, options?.requestId);
86
93
  }
87
94
  /**
88
- * 调用远端工具(支持 AbortSignal)。
89
- *
90
- * @param name 工具名
91
- * @param input 入参
92
- * @param signal 取消信号
93
- * @param requestId 请求 ID(可选;用于后续 cancel 显式取消)
94
- * @returns 工具执行结果
95
- */
95
+ * 调用远端工具(支持 AbortSignal)。
96
+ *
97
+ * @param name 工具名
98
+ * @param input 入参
99
+ * @param signal 取消信号
100
+ * @param requestId 请求 ID(可选;用于后续 cancel 显式取消)
101
+ * @returns 工具执行结果
102
+ */
96
103
  async callTool(name, input, signal, requestId) {
97
104
  if (!this.client) {
98
105
  throw new Error("MCP stdio adapter not connected");
@@ -111,21 +118,39 @@ export class McpStdioAdapter {
111
118
  else {
112
119
  signal?.addEventListener("abort", onAbort, { once: true });
113
120
  }
121
+ // :为 callTool 套上 adapter 层默认超时,避免远端挂起拖垮引擎。
122
+ let timeoutHandle = null;
123
+ let timedOut = false;
124
+ if (this.defaultTimeoutMs > 0) {
125
+ timeoutHandle = setTimeout(() => {
126
+ timedOut = true;
127
+ controller.abort(new Error(`MCP stdio request timed out after ${this.defaultTimeoutMs}ms: ${mappedRequestId}`));
128
+ }, this.defaultTimeoutMs);
129
+ }
114
130
  this.pendingRequests.set(mappedRequestId, controller);
115
131
  try {
116
132
  const result = await this.client.callTool({ name, arguments: (input ?? {}) }, undefined, { signal: controller.signal });
117
133
  return result;
118
134
  }
135
+ catch (error) {
136
+ if (timedOut) {
137
+ throw new Error(`MCP stdio request timed out after ${this.defaultTimeoutMs}ms: ${mappedRequestId}`);
138
+ }
139
+ throw error;
140
+ }
119
141
  finally {
142
+ if (timeoutHandle !== null) {
143
+ clearTimeout(timeoutHandle);
144
+ }
120
145
  signal?.removeEventListener("abort", onAbort);
121
146
  this.pendingRequests.delete(mappedRequestId);
122
147
  }
123
148
  }
124
149
  /**
125
- * 按 requestId 取消请求(通过信号机制由调用方透传)。
126
- *
127
- * @param _requestId 请求 ID
128
- */
150
+ * 按 requestId 取消请求(通过信号机制由调用方透传)。
151
+ *
152
+ * @param _requestId 请求 ID
153
+ */
129
154
  async cancel(requestId) {
130
155
  const controller = this.pendingRequests.get(requestId);
131
156
  if (!controller) {
@@ -1 +1 @@
1
- {"version":3,"file":"stdio-adapter.js","sourceRoot":"","sources":["../../src/mcp/stdio-adapter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"stdio-adapter.js","sourceRoot":"","sources":["../../src/mcp/stdio-adapter.ts"],"names":[],"mappings":"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"}