@migor/agentia 0.7.1 → 0.7.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +63 -1
- package/README.md +1 -1
- package/dist/AGENTS.md +1 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/integrations/anthropic.d.ts +5 -0
- package/dist/integrations/anthropic.js +29 -2
- package/dist/integrations/anthropic.js.map +1 -1
- package/dist/integrations/mcp-http.d.ts +43 -0
- package/dist/integrations/mcp-http.js +250 -0
- package/dist/integrations/mcp-http.js.map +1 -0
- package/dist/integrations/mcp-stdio.d.ts +46 -0
- package/dist/integrations/mcp-stdio.js +230 -0
- package/dist/integrations/mcp-stdio.js.map +1 -0
- package/dist/integrations/mcp.d.ts +37 -72
- package/dist/integrations/mcp.js +9 -468
- package/dist/integrations/mcp.js.map +1 -1
- package/dist/integrations/metrics-otlp.d.ts +42 -0
- package/dist/integrations/metrics-otlp.js +178 -0
- package/dist/integrations/metrics-otlp.js.map +1 -0
- package/dist/integrations/metrics-render.d.ts +2 -0
- package/dist/integrations/metrics-render.js +145 -0
- package/dist/integrations/metrics-render.js.map +1 -0
- package/dist/integrations/metrics-state.d.ts +191 -0
- package/dist/integrations/metrics-state.js +363 -0
- package/dist/integrations/metrics-state.js.map +1 -0
- package/dist/integrations/metrics.d.ts +3 -86
- package/dist/integrations/metrics.js +28 -648
- package/dist/integrations/metrics.js.map +1 -1
- package/dist/integrations/openai.js +4 -3
- package/dist/integrations/openai.js.map +1 -1
- package/dist/store/fsStore.d.ts +1 -1
- package/dist/store/fsStore.js +5 -2
- package/dist/store/fsStore.js.map +1 -1
- package/dist/transport/async.d.ts +13 -1
- package/dist/transport/async.js +109 -12
- package/dist/transport/async.js.map +1 -1
- package/package.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,67 @@
|
|
|
5
5
|
(0.x 阶段:minor 可含破坏性变更,每个破坏性变更都在对应版本的「迁移」小节里写明)。
|
|
6
6
|
决策的完整证据链在 `docs/spec.md` §10(带时间线的决策日志)。
|
|
7
7
|
|
|
8
|
+
## [0.7.2] - 2026-09-20
|
|
9
|
+
|
|
10
|
+
### 变更
|
|
11
|
+
|
|
12
|
+
> 本版主题(窗口 `0.7.1 → 0.7.2`,含 #77–#81):**第九轮评审收口** —— 一条高优先级的
|
|
13
|
+
> **HITL × `sessionStore` 组合破口**(挂起任务恢复后历史翻倍、成功后又把坏会话写回去),
|
|
14
|
+
> 外加六条中/低优先级的静默失效修复;其余是纯结构重构、回归测试补课与依赖升级。
|
|
15
|
+
> **无破坏性变更,不需要改代码**:所有修复都是「旧行为本来就不该那样」。
|
|
16
|
+
> **两处错误归类收紧(记账口径,不是行为变更)**:Anthropic 流内 4xx 不再落成可重试的
|
|
17
|
+
> `server`,异步宿主的 `runTimeoutMs` 超时不再落 `unknown`。宿主若按 `error.type` /
|
|
18
|
+
> `errorKind` / `retryable` 分支(重试、告警、看板),取值会更准 —— 见下方两条。
|
|
19
|
+
> 本条目的多数内容**是在本次发版时回填的**:窗口内 5 个 PR 都没写 CHANGELOG,
|
|
20
|
+
> 条目按各提交正文重建。
|
|
21
|
+
|
|
22
|
+
### 修复(第九轮评审收口)
|
|
23
|
+
|
|
24
|
+
- **HITL × `sessionStore`:挂起任务恢复后会话历史翻倍 + 成功后毒化会话**(本版最高优先级):
|
|
25
|
+
恢复段曾把 session 再注入 `app.run`,而挂起段落库的 `suspendedMessages` 已含完整历史 ⇒
|
|
26
|
+
run 层 `loadSession` 又 prepend 一遍(历史翻倍、token 复利);且成功后 `appendSession`
|
|
27
|
+
会把含未决 `tool_use` 的整段扩展历史写回会话 —— 该会话**下一轮直接撞 API 400**
|
|
28
|
+
(孤立 `tool_use` + 连续 assistant)。现在恢复段不再注入 session,会话回写改由
|
|
29
|
+
`AsyncRunner` 按「本轮用户输入 + 最终回复」补,口径与 `run.ts` 的三条不变量一致。
|
|
30
|
+
- **惰性审批超时 `#expireAndResume` 补重入闸 + 进闸后重读 store**:异步 store 下两个并发
|
|
31
|
+
`poll` 各拿到一份 `awaiting` 副本 ⇒ 双双填超时拒绝、**双双派发**(同一任务跑两遍)。
|
|
32
|
+
现在与 `approve` 共用同一把 per-taskId 在飞闸。
|
|
33
|
+
- **MCP StreamableHTTP 连接器不再丢弃 `abandoned`**:`tools/call` 把引擎的「放弃等待」
|
|
34
|
+
信号透传到在飞 `fetch`(含会话 404 自愈那次重试)—— 裁判放弃后真能掐掉请求,
|
|
35
|
+
而不是继续在后台烧。stdio 侧 #75 的 `pending` 出簿修复这次补上了回归用例。
|
|
36
|
+
- **Anthropic 流内 `error` 事件的 status 反推补 4xx 档**:`invalid_request_error` /
|
|
37
|
+
`authentication_error` / `permission_error` / `not_found_error` → 400(归 `api`、
|
|
38
|
+
**不可重试**),与 `openai.ts` 同口径。此前这些确定性病因落 500 + `retryable:true`,
|
|
39
|
+
引擎会白重试 3 次(3 次网络请求 + 3 倍等待)。
|
|
40
|
+
- **异步宿主 `runTimeoutMs` 的超时错误不再落 `unknown`**:改用 `core/timeout.ts` 的
|
|
41
|
+
`TimeoutError`(`code='timeout'`),与引擎工具超时 / MCP 桥兜底同口径。归类由
|
|
42
|
+
`unknown`(`retryable:false`)变为 `timeout`(`retryable:true`)—— 这只是**记账口径**:
|
|
43
|
+
超时按定义属可重试故障,框架**不会**因此自动重跑整个 run,要不要重试仍由宿主决定。
|
|
44
|
+
- **`FileTaskStore.save` 改为先落盘、成功后再更新内存**:落盘失败时内存不再推进,
|
|
45
|
+
避免内存与磁盘两本账、重启后静默回退(`get` / `byIdempotency` 查不到未落盘的记录)。
|
|
46
|
+
- **Anthropic SSE 组装拦畸形 `content_block_start.index`**:超大 index(如 `1e9`)会造出
|
|
47
|
+
稀疏数组、后续 `for...of` / `reduce` 按 `length` 空转;现在畸形 index(负数 / 非整数 /
|
|
48
|
+
超上限)响亮抛 `AnthropicApiError(500)`。
|
|
49
|
+
|
|
50
|
+
### 重构(纯结构,零行为变化)
|
|
51
|
+
|
|
52
|
+
- `integrations/metrics.ts`(1050 行)→ `metrics-state.ts` / `metrics-render.ts` /
|
|
53
|
+
`metrics-otlp.ts` / `metrics.ts`(只留选项校验、定时器与组装);
|
|
54
|
+
`integrations/mcp.ts`(897 行)→ `mcp-stdio.ts` / `mcp-http.ts` / `mcp.ts`
|
|
55
|
+
(桥 + 共享 helper + re-export 两个连接器工厂)。**公共面与运行时行为不变**。
|
|
56
|
+
|
|
57
|
+
### 测试
|
|
58
|
+
|
|
59
|
+
- 补上 #75 遗留的回归用例:stdio MCP 连接器「裁判放弃等待 ⇒ `pending` 记账出簿」的防泄漏
|
|
60
|
+
修复此前**没有任何用例守着**(夹具新增 `silentcall` 模式:握手 / `tools/list` 正常、
|
|
61
|
+
`tools/call` 永不回包)。
|
|
62
|
+
|
|
63
|
+
### 依赖
|
|
64
|
+
|
|
65
|
+
- 开发依赖:`@anthropic-ai/sdk` → 0.126.0、`@biomejs/biome` → 2.5.14、
|
|
66
|
+
`@types/node` → 26.6.1、`zod` → 4.6.5(均不影响运行时面)。
|
|
67
|
+
- 官网(不随包发布):`astro` → 7.3.3。
|
|
68
|
+
|
|
8
69
|
## [0.7.1] - 2026-09-19
|
|
9
70
|
|
|
10
71
|
### 变更
|
|
@@ -615,7 +676,8 @@
|
|
|
615
676
|
首个公开发布:`@migor/agentia` + `@migor/cli`(scope `@migor/*`),两包版本同步。
|
|
616
677
|
框架本体单包;CLI 独立成包(workspaces)。
|
|
617
678
|
|
|
618
|
-
[Unreleased]: https://github.com/retrychx/agentia/compare/v0.7.
|
|
679
|
+
[Unreleased]: https://github.com/retrychx/agentia/compare/v0.7.2...HEAD
|
|
680
|
+
[0.7.2]: https://github.com/retrychx/agentia/releases/tag/v0.7.2
|
|
619
681
|
[0.7.1]: https://github.com/retrychx/agentia/releases/tag/v0.7.1
|
|
620
682
|
[0.7.0]: https://github.com/retrychx/agentia/releases/tag/v0.7.0
|
|
621
683
|
[0.6.3]: https://github.com/retrychx/agentia/releases/tag/v0.6.3
|
package/README.md
CHANGED
|
@@ -30,7 +30,7 @@ $EDITOR my-app/.env # 填 ANTHROPIC_API_KEY(也可直接 expo
|
|
|
30
30
|
> 框架**不自动**读 `.env`:脚手架 `src/main.ts` 首行的 `loadEnvFile()` 负责把它读进 `process.env`。
|
|
31
31
|
> 真实环境变量优先(CI / docker / 命令行永远赢过文件),`loadEnvFile({ override: true })` 才反过来。
|
|
32
32
|
|
|
33
|
-
> **版本**:`0.7.
|
|
33
|
+
> **版本**:`0.7.2`(`@migor/agentia` 与 `@migor/cli` 均已发布到 npm)。`examples/` **刻意**用
|
|
34
34
|
> `file:../..` 指向本仓库而不是 npm 版本 —— 跑的是**工作区代码**,理由见
|
|
35
35
|
> [`examples/README.md`](examples/README.md) 的「依赖说明」。
|
|
36
36
|
|
package/dist/AGENTS.md
CHANGED
|
@@ -1237,6 +1237,7 @@ const callable = {
|
|
|
1237
1237
|
| 挂起段与恢复段是两棵 trace | 每段执行一棵独立的树(`traceId == runId`),恢复段经根 span 的 `links` 挂到上一段;指标按段计(挂起段算一次 ok 的 run —— 「等人」不算失败,区分看 `stop_reason` attribute) |
|
|
1238
1238
|
| 审批是 at-least-once | 崩溃发生在「批准后、恢复执行中」时,副作用工具会重执行(与 `resumePending` 续跑同口径)—— 副作用工具自己保证幂等 |
|
|
1239
1239
|
| 挂起/恢复间预算重新起算 | `maxTotalTokens` / `maxCostUsd` 在恢复段从 0 重新计(新树新账,与 `resumePending` 续跑同口径) |
|
|
1240
|
+
| 恢复段的会话回写是进程内快照 | 带 `sessionId` 的任务挂起时,「本轮用户输入」快照只存进程内存(恢复段由 AsyncRunner 自己补写「用户输入 + 最终回复」,不再经 run 层重复拼历史)—— 进程崩在「挂起 → 重启 → approve」之间会**丢这一次会话回写**(会话少一轮,但绝不写进坏历史;审批决定本身已落库) |
|
|
1240
1241
|
| 嵌套能力内的审批不支持挂起 | @SubAgent / @Skill 子循环里的 `approval: 'required'` 工具无法把整个 run 挂起 —— 子循环挂起会以 `is_error` 交回主 agent(要审批的能力请放主菜单) |
|
|
1241
1242
|
| 同步 `/run` 撞上审批没人可批 | 同步 RPC 会带着 `stopReason: 'awaiting_approval'` 收尾返回 —— 但响应体(`toHttpBody`)**不含** `suspendedMessages`,也没有任务记录可审批(待决清单只能去 trace 的 `approval.requested` 事件里看)。**要审批请走 `POST /tasks` 异步宿主** |
|
|
1242
1243
|
| Scheduler 调度表不落库 | `every` / `at` 的调度本身只在内存:已 submit 的任务记录能经 `resumePending` 续跑,但「未来某刻再触发」的调度在重启后不存在(远期单发由宿主自己的 cron 驱动)。另:`drain()` 不停 Scheduler —— 停机窗口内到点的 tick 会打一条触发失败日志(无害但吵),介意就 `scheduler.stop()` 先行 |
|
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export declare const AGENTIA_VERSION = "0.7.
|
|
1
|
+
export declare const AGENTIA_VERSION = "0.7.2";
|
|
2
2
|
export type { Trace, Span, SpanEvent, SpanError, SpanId, SpanKind, SpanLink, SpanStatus, TraceId, TraceContext, TraceSink, CapabilityType, Usage, Score, } from './core/trace.js';
|
|
3
3
|
export { attachScore, parseTraceparent } from './core/trace.js';
|
|
4
4
|
export type { AgentTool, ApprovalDecision, JsonSchema, ModelClient, RecorderBackend, SchemaInput, SchemaType, ToolRunContext, TypedSchema, } from './core/tool.js';
|
package/dist/index.js
CHANGED
|
@@ -32,6 +32,11 @@ export interface AnthropicClientOptions {
|
|
|
32
32
|
/**
|
|
33
33
|
* 单次请求超时(毫秒)。缺省不给(中止由引擎的 signal 管,见 `ModelClient` 契约);
|
|
34
34
|
* 给了就用超时信号与 params.signal 合成(任一触发即中止)。超时按连接错误处理(可重试)。
|
|
35
|
+
*
|
|
36
|
+
* 必须为**正的有限数**(构造期校验,与 AsyncRunner 对 `runTimeoutMs` 的校验同款):
|
|
37
|
+
* NaN / Infinity 会被 `setTimeout` 钳到 1ms —— 每个请求立即「超时」,静默全挂。
|
|
38
|
+
* ⚠️ 校验只挡非法配置,**不改超时的既有行为**:client 层超时经合成信号中止请求、
|
|
39
|
+
* 自身不再重试,抛出的 `TimeoutError`(DOMException)由引擎归 `timeout` 一类账。
|
|
35
40
|
*/
|
|
36
41
|
timeout?: number;
|
|
37
42
|
/**
|
|
@@ -22,6 +22,11 @@ export function createAnthropicClient(options = {}) {
|
|
|
22
22
|
'https://api.anthropic.com').replace(/\/+$/, '');
|
|
23
23
|
const maxRetries = typeof options.maxRetries === 'number' ? options.maxRetries : 2;
|
|
24
24
|
const timeoutMs = typeof options.timeout === 'number' ? options.timeout : undefined;
|
|
25
|
+
if (timeoutMs !== undefined && (!Number.isFinite(timeoutMs) || timeoutMs <= 0)) {
|
|
26
|
+
// NaN / Infinity 会被 setTimeout 钳到 1ms(每个请求立即「超时」),0 / 负数同理无意义 ——
|
|
27
|
+
// 响亮抛错,不静默生效(与 AsyncRunner 对 runTimeoutMs 的构造期校验同款)。
|
|
28
|
+
throw new Error(`createAnthropicClient:timeout 必须为正的有限毫秒数(不设 = 不限),收到 ${String(options.timeout)}`);
|
|
29
|
+
}
|
|
25
30
|
return {
|
|
26
31
|
messages: {
|
|
27
32
|
stream(params) {
|
|
@@ -196,6 +201,12 @@ function mergeUsage(base, delta) {
|
|
|
196
201
|
}
|
|
197
202
|
return out;
|
|
198
203
|
}
|
|
204
|
+
/**
|
|
205
|
+
* content_block `index` 的合法上限。官方端点的块数是个位数;index 是**外部输入**,
|
|
206
|
+
* `blocks[index] = acc` 对超大 index 会造出稀疏数组 —— 之后 `for (const b of blocks)` 与
|
|
207
|
+
* `reduce` 都按 length 迭代(含空洞),index=1e9 就是十亿次空转(畸形/恶意端点的 DoS 面)。
|
|
208
|
+
*/
|
|
209
|
+
const MAX_STREAM_BLOCK_INDEX = 1024;
|
|
199
210
|
/**
|
|
200
211
|
* 消费 `text/event-stream` 并组装成 Message。事件处理:
|
|
201
212
|
*
|
|
@@ -207,7 +218,7 @@ function mergeUsage(base, delta) {
|
|
|
207
218
|
* | content_block_stop | 无动作(块按 index 累积,无需收尾) |
|
|
208
219
|
* | message_delta | stop_reason / stop_sequence + 累计 usage 合并(后者覆盖前者出现的字段) |
|
|
209
220
|
* | message_stop / ping | 结束 / 忽略 |
|
|
210
|
-
* | error | 抛 AnthropicApiError(类型映射 status:rate_limit→429、overloaded→529、其余→500) |
|
|
221
|
+
* | error | 抛 AnthropicApiError(类型映射 status:rate_limit→429、overloaded→529、请求/鉴权类→400、其余→500) |
|
|
211
222
|
*
|
|
212
223
|
* thinking 块只做「收拼 + signature 累积 + redacted/未知块原样透传」——
|
|
213
224
|
* 框架**从不主动请求 extended thinking**,这些是端点自己开了之后的兜底不丢。
|
|
@@ -248,6 +259,13 @@ async function readAnthropicStream(body, fallbackModel, textCallbacks) {
|
|
|
248
259
|
}
|
|
249
260
|
case 'content_block_start': {
|
|
250
261
|
const cb = event.content_block ?? {};
|
|
262
|
+
const index = event.index ?? blocks.length;
|
|
263
|
+
// index 是外部输入:超大 / 负数 / 非整数会把 blocks 造成稀疏数组(见
|
|
264
|
+
// MAX_STREAM_BLOCK_INDEX 注释)—— 畸形输入响亮抛错,不静默拖垮组装
|
|
265
|
+
if (!Number.isInteger(index) || index < 0 || index > MAX_STREAM_BLOCK_INDEX) {
|
|
266
|
+
throw new AnthropicApiError(500, `Anthropic 流式响应的 content_block index 非法(${String(event.index)}):` +
|
|
267
|
+
`必须是 0..${MAX_STREAM_BLOCK_INDEX} 的整数,按上游故障处理`);
|
|
268
|
+
}
|
|
251
269
|
const type = cb.type ?? 'text';
|
|
252
270
|
const acc = {
|
|
253
271
|
type,
|
|
@@ -271,7 +289,7 @@ async function readAnthropicStream(body, fallbackModel, textCallbacks) {
|
|
|
271
289
|
if (type !== 'text' && type !== 'tool_use' && type !== 'thinking') {
|
|
272
290
|
acc.raw = { ...cb, type };
|
|
273
291
|
}
|
|
274
|
-
blocks[
|
|
292
|
+
blocks[index] = acc;
|
|
275
293
|
break;
|
|
276
294
|
}
|
|
277
295
|
case 'content_block_delta': {
|
|
@@ -391,6 +409,15 @@ function statusOfStreamError(type) {
|
|
|
391
409
|
return 429;
|
|
392
410
|
case 'overloaded_error':
|
|
393
411
|
return 529;
|
|
412
|
+
// 4xx 档(与 openai.ts 的 statusOfStreamError 同口径 —— 那边把
|
|
413
|
+
// invalid_request / authentication / permission / model_not_found 一律归 400,
|
|
414
|
+
// 不细分 401/403/404):这些是**改配置才有救**的病因,归 500 + retryable 会让
|
|
415
|
+
// 引擎白重试三轮,且 trace 记成 server —— 排障方向被带偏。
|
|
416
|
+
case 'invalid_request_error':
|
|
417
|
+
case 'authentication_error':
|
|
418
|
+
case 'permission_error':
|
|
419
|
+
case 'not_found_error':
|
|
420
|
+
return 400;
|
|
394
421
|
default:
|
|
395
422
|
return 500;
|
|
396
423
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"anthropic.js","sourceRoot":"","sources":["../../src/integrations/anthropic.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"anthropic.js","sourceRoot":"","sources":["../../src/integrations/anthropic.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import type { McpConnector } from './mcp.js';
|
|
2
|
+
/**
|
|
3
|
+
* MCP **StreamableHTTP 连接器**(内置默认件之一):一个 endpoint,POST JSON-RPC。
|
|
4
|
+
* 桥与共享 helper 在 `mcp.ts`;本文件只含 HTTP 传输。module 级 export,
|
|
5
|
+
* 公共面仍由 `mcp.ts` re-export(`src/index.ts` 不变)。
|
|
6
|
+
*/
|
|
7
|
+
export interface StreamableHttpMcpConnectorOptions {
|
|
8
|
+
/** 附加请求头(鉴权等)。会覆盖缺省的 `content-type` / `accept` 同名字段 */
|
|
9
|
+
headers?: Record<string, string>;
|
|
10
|
+
/** 见 {@link DEFAULT_CLIENT_INFO} */
|
|
11
|
+
clientInfo?: {
|
|
12
|
+
name: string;
|
|
13
|
+
version: string;
|
|
14
|
+
};
|
|
15
|
+
/** 请求的协议版本,缺省 `'2024-11-05'`;协商结果以 server 回的为准 */
|
|
16
|
+
protocolVersion?: string;
|
|
17
|
+
/** 装配期超时(毫秒)—— 只作用于**握手 + `tools/list`**,语义同 {@link StdioMcpConnectorOptions.timeoutMs} */
|
|
18
|
+
timeoutMs?: number;
|
|
19
|
+
/**
|
|
20
|
+
* 会话过期时被调一次(见 `rpc` 的 404 自愈)。**给可观测用**:默认自愈是静默的,
|
|
21
|
+
* 而「静默恢复」和「静默失效」在监控上看不出区别 —— 要计数 / 告警 / 打日志就挂这个钩子。
|
|
22
|
+
*/
|
|
23
|
+
onSessionExpired?: () => void;
|
|
24
|
+
/** 注入 `fetch`(测试用;缺省全局 `fetch`,与 `createOpenAIClient` 同款) */
|
|
25
|
+
fetchImpl?: typeof fetch;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* **StreamableHTTP 连接器**:一个 endpoint,POST JSON-RPC(MCP 2025-03-26 起的
|
|
29
|
+
* Streamable HTTP 传输)。
|
|
30
|
+
*
|
|
31
|
+
* - 两种响应形态**都要接**:`application/json`(整条报文)与 `text/event-stream`
|
|
32
|
+
* (报文按 SSE 帧下发,server 应在发完响应后关流);
|
|
33
|
+
* - 会话:`initialize` 响应里的 `Mcp-Session-Id` 会被记住并在后续请求上回带
|
|
34
|
+
* (后续响应不带该头时**不覆盖**);`close()` 尽力 `DELETE` 终止会话;
|
|
35
|
+
* **会话过期自愈**:带会话 id 收到 `404` ⇒ 视为「会话已终止、该请求未被 server 执行」
|
|
36
|
+
* ⇒ 丢会话 → 重新握手 → 把这一次**重试一次**(只一次,不再循环)。自愈是静默的,
|
|
37
|
+
* 所以给了 `onSessionExpired` 钩子给你计数 / 告警 —— 否则它和「静默失效」没区别。
|
|
38
|
+
* - 协议版本:请求头 `MCP-Protocol-Version` 带**协商到的**版本(2025-06-18 起要求,
|
|
39
|
+
* 老 server 忽略未知头);
|
|
40
|
+
* - HTTP 层失败**挂数值 `status`** ⇒ `engine/errors.ts::classifyError` 自动分流
|
|
41
|
+
* (429 → `rate_limit` 可重试 / ≥500 → `server` 可重试 / 其余 4xx → `api` 不可重试)。
|
|
42
|
+
*/
|
|
43
|
+
export declare function createStreamableHttpMcpConnector(url: string, opts?: StreamableHttpMcpConnectorOptions): McpConnector;
|
|
@@ -0,0 +1,250 @@
|
|
|
1
|
+
import { DEFAULT_CLIENT_INFO, DEFAULT_PROTOCOL_VERSION, MCP_DEFAULT_TIMEOUT_MS, brief, isJsonRpcResponse, unwrap, withDeadline, } from './mcp.js';
|
|
2
|
+
/**
|
|
3
|
+
* **StreamableHTTP 连接器**:一个 endpoint,POST JSON-RPC(MCP 2025-03-26 起的
|
|
4
|
+
* Streamable HTTP 传输)。
|
|
5
|
+
*
|
|
6
|
+
* - 两种响应形态**都要接**:`application/json`(整条报文)与 `text/event-stream`
|
|
7
|
+
* (报文按 SSE 帧下发,server 应在发完响应后关流);
|
|
8
|
+
* - 会话:`initialize` 响应里的 `Mcp-Session-Id` 会被记住并在后续请求上回带
|
|
9
|
+
* (后续响应不带该头时**不覆盖**);`close()` 尽力 `DELETE` 终止会话;
|
|
10
|
+
* **会话过期自愈**:带会话 id 收到 `404` ⇒ 视为「会话已终止、该请求未被 server 执行」
|
|
11
|
+
* ⇒ 丢会话 → 重新握手 → 把这一次**重试一次**(只一次,不再循环)。自愈是静默的,
|
|
12
|
+
* 所以给了 `onSessionExpired` 钩子给你计数 / 告警 —— 否则它和「静默失效」没区别。
|
|
13
|
+
* - 协议版本:请求头 `MCP-Protocol-Version` 带**协商到的**版本(2025-06-18 起要求,
|
|
14
|
+
* 老 server 忽略未知头);
|
|
15
|
+
* - HTTP 层失败**挂数值 `status`** ⇒ `engine/errors.ts::classifyError` 自动分流
|
|
16
|
+
* (429 → `rate_limit` 可重试 / ≥500 → `server` 可重试 / 其余 4xx → `api` 不可重试)。
|
|
17
|
+
*/
|
|
18
|
+
export function createStreamableHttpMcpConnector(url, opts = {}) {
|
|
19
|
+
if (typeof url !== 'string' || url === '') {
|
|
20
|
+
throw new Error('createStreamableHttpMcpConnector:url 不能为空');
|
|
21
|
+
}
|
|
22
|
+
const fetchImpl = opts.fetchImpl ?? fetch;
|
|
23
|
+
const timeoutMs = opts.timeoutMs ?? MCP_DEFAULT_TIMEOUT_MS;
|
|
24
|
+
const clientInfo = opts.clientInfo ?? DEFAULT_CLIENT_INFO;
|
|
25
|
+
const requestedVersion = opts.protocolVersion ?? DEFAULT_PROTOCOL_VERSION;
|
|
26
|
+
const baseHeaders = {
|
|
27
|
+
'content-type': 'application/json',
|
|
28
|
+
// MCP 规定客户端必须同时接受两种响应形态(否则 server 无法按规范回 SSE)
|
|
29
|
+
accept: 'application/json, text/event-stream',
|
|
30
|
+
...opts.headers,
|
|
31
|
+
};
|
|
32
|
+
let sessionId = null;
|
|
33
|
+
let negotiated = requestedVersion;
|
|
34
|
+
let closed = false;
|
|
35
|
+
let ready = null;
|
|
36
|
+
let reinit = null;
|
|
37
|
+
let nextId = 1;
|
|
38
|
+
const guard = (p, label) => withDeadline(p, timeoutMs, label);
|
|
39
|
+
/** HTTP 层失败:带上数值 `status`,让 `classifyError` 能按状态分流 */
|
|
40
|
+
const httpError = (status, method, body) => {
|
|
41
|
+
const e = new Error(`MCP ${method} HTTP ${status}${body ? `:${body}` : ''}`);
|
|
42
|
+
e.status = status;
|
|
43
|
+
return e;
|
|
44
|
+
};
|
|
45
|
+
const readText = async (res) => {
|
|
46
|
+
try {
|
|
47
|
+
return await res.text();
|
|
48
|
+
}
|
|
49
|
+
catch {
|
|
50
|
+
return '';
|
|
51
|
+
}
|
|
52
|
+
};
|
|
53
|
+
const post = async (payload, o = {}) => {
|
|
54
|
+
if (closed)
|
|
55
|
+
throw new Error('MCP 连接器已 close —— 请重新创建一个');
|
|
56
|
+
const headers = { ...baseHeaders };
|
|
57
|
+
if (sessionId !== null)
|
|
58
|
+
headers['mcp-session-id'] = sessionId;
|
|
59
|
+
if (o.withVersion)
|
|
60
|
+
headers['mcp-protocol-version'] = negotiated;
|
|
61
|
+
const res = await fetchImpl(url, {
|
|
62
|
+
method: 'POST',
|
|
63
|
+
headers,
|
|
64
|
+
body: JSON.stringify(payload),
|
|
65
|
+
// 裁判(引擎 toolTimeoutMs / 桥兜底)的 abandoned 直达传输层:放弃等待时在飞 fetch
|
|
66
|
+
// 被真掐掉,不留泄漏(HTTP 侧没有 stdio 那样的 pending 簿记,掐连接就是清簿记)。
|
|
67
|
+
// exactOptionalPropertyTypes:无 signal 时不落这个键。
|
|
68
|
+
...(o.signal !== undefined ? { signal: o.signal } : {}),
|
|
69
|
+
});
|
|
70
|
+
// 会话 id 只在 initialize 响应里出现;后续响应不带时**不能**把它清成 null
|
|
71
|
+
const sid = res.headers.get('mcp-session-id');
|
|
72
|
+
if (sid !== null && sid !== '')
|
|
73
|
+
sessionId = sid;
|
|
74
|
+
return res;
|
|
75
|
+
};
|
|
76
|
+
/** 非 SSE 报文(单条 JSON-RPC)→ 取 result;SSE 里可能有别的通知帧,只取与 `id` 配对的 */
|
|
77
|
+
const pickResult = (msg, id, method) => {
|
|
78
|
+
// id 必须**等值**配对(与 SSE 分支同款):只验「是带 id 的响应」会把别的请求的
|
|
79
|
+
// 结果当本次的返回(代理串包/通知帧),静默错值比报错难查得多。
|
|
80
|
+
if (!isJsonRpcResponse(msg) || msg.id !== id) {
|
|
81
|
+
throw new Error(`MCP ${method}:响应里没有 id 为 ${id} 的 JSON-RPC 报文`);
|
|
82
|
+
}
|
|
83
|
+
return unwrap(msg, method);
|
|
84
|
+
};
|
|
85
|
+
/**
|
|
86
|
+
* 从响应取结果。SSE 分支一次性读完整个 body 再解析 —— StreamableHTTP 约定 server 发完
|
|
87
|
+
* 响应即关流,读全比手写增量解析器稳(`text/event-stream` 里 `data:` 行按规范可跨多行拼接)。
|
|
88
|
+
*/
|
|
89
|
+
const readResult = async (res, id, method) => {
|
|
90
|
+
const ct = (res.headers.get('content-type') ?? '').toLowerCase();
|
|
91
|
+
const text = await readText(res);
|
|
92
|
+
if (ct.includes('text/event-stream')) {
|
|
93
|
+
for (const frame of text.split(/\r?\n\r?\n/)) {
|
|
94
|
+
const data = frame
|
|
95
|
+
.split(/\r?\n/)
|
|
96
|
+
.filter((l) => l.startsWith('data:'))
|
|
97
|
+
.map((l) => l.slice(5).trim())
|
|
98
|
+
.join('');
|
|
99
|
+
if (data === '')
|
|
100
|
+
continue;
|
|
101
|
+
let msg;
|
|
102
|
+
try {
|
|
103
|
+
msg = JSON.parse(data);
|
|
104
|
+
}
|
|
105
|
+
catch {
|
|
106
|
+
continue;
|
|
107
|
+
}
|
|
108
|
+
if (isJsonRpcResponse(msg) && msg.id === id)
|
|
109
|
+
return unwrap(msg, method);
|
|
110
|
+
}
|
|
111
|
+
throw new Error(`MCP ${method}:SSE 响应里没有 id 为 ${id} 的报文`);
|
|
112
|
+
}
|
|
113
|
+
if (text.trim() === '') {
|
|
114
|
+
throw new Error(`MCP ${method}:响应体为空(期望 id 为 ${id} 的 JSON-RPC 报文)`);
|
|
115
|
+
}
|
|
116
|
+
let msg;
|
|
117
|
+
try {
|
|
118
|
+
msg = JSON.parse(text);
|
|
119
|
+
}
|
|
120
|
+
catch {
|
|
121
|
+
throw new Error(`MCP ${method}:响应不是合法 JSON:${brief(text)}`);
|
|
122
|
+
}
|
|
123
|
+
return pickResult(msg, id, method);
|
|
124
|
+
};
|
|
125
|
+
/**
|
|
126
|
+
* 会话过期自愈的互斥:并发请求同时吃到 404 时**共享同一次重握手**。
|
|
127
|
+
* 没有这层时,两个并发调用各自执行 `ready = null`(第二个会把第一个刚建的握手
|
|
128
|
+
* Promise 抹掉)⇒ 双 initialize 并发跑、`sessionId` 互相覆盖,重试带着被覆盖的
|
|
129
|
+
* 会话再 404 且不再重试。`onSessionExpired` 仍按 404 逐次记(每个 404 都是事实),
|
|
130
|
+
* 共享的只是「重握手」这个动作。
|
|
131
|
+
*/
|
|
132
|
+
const reinitialize = () => {
|
|
133
|
+
if (reinit)
|
|
134
|
+
return reinit;
|
|
135
|
+
reinit = (async () => {
|
|
136
|
+
sessionId = null;
|
|
137
|
+
ready = null; // 下一次 ensureReady 会新建会话
|
|
138
|
+
await ensureReady();
|
|
139
|
+
})().finally(() => {
|
|
140
|
+
reinit = null;
|
|
141
|
+
});
|
|
142
|
+
return reinit;
|
|
143
|
+
};
|
|
144
|
+
/**
|
|
145
|
+
* 一次 JSON-RPC 往返,带**会话过期自愈**(2026-09-18;MCP Streamable HTTP 的规范语义)。
|
|
146
|
+
*
|
|
147
|
+
* 带会话 id 收到 `404` 的含义是「这个会话我不认识」⇒ **该请求没有被执行** ——
|
|
148
|
+
* 所以丢掉会话、重新握手、把这一次**重试一次**是安全的(不会重复执行副作用)。
|
|
149
|
+
* 规范也是这么要求的:客户端**必须**新建会话(不带会话 id 重新 `initialize`)。
|
|
150
|
+
*
|
|
151
|
+
* **只重试一次**:第二次再 404 说明对面不是「会话过期」而是别的问题,直接抛(不循环)。
|
|
152
|
+
* 自愈本身是静默的,但可通过 `onSessionExpired` 观测 —— 否则它和「静默失效」没区别。
|
|
153
|
+
*/
|
|
154
|
+
const rpc = async (method, params, withVersion, allowReinit = true, abandoned) => {
|
|
155
|
+
const id = nextId++;
|
|
156
|
+
const res = await post({ jsonrpc: '2.0', id, method, params }, { withVersion, ...(abandoned !== undefined ? { signal: abandoned } : {}) });
|
|
157
|
+
if (res.status === 404 && sessionId !== null && allowReinit) {
|
|
158
|
+
await readText(res); // 排空,别把连接晾着
|
|
159
|
+
opts.onSessionExpired?.();
|
|
160
|
+
await reinitialize();
|
|
161
|
+
// 自愈重试那次同样带上 abandoned —— 裁判放弃时两条在飞 fetch 都要被掐
|
|
162
|
+
return rpc(method, params, withVersion, false, abandoned);
|
|
163
|
+
}
|
|
164
|
+
if (!res.ok)
|
|
165
|
+
throw httpError(res.status, method, await readText(res));
|
|
166
|
+
// 计时裁判权在调用方(initialize / notifications / tools/list 都在调用点自带
|
|
167
|
+
// guard —— 它们是装配期路径、没有别的裁判);`tools/call` 不在此起计时器:
|
|
168
|
+
// 它的裁判是引擎的 `toolTimeoutMs`(spec §10 2026-09-17 ① 超时单源化)——
|
|
169
|
+
// 再包一层 guard 就是双计时器,同一事件两本账(stdio 侧就没有这层)。
|
|
170
|
+
return readResult(res, id, method);
|
|
171
|
+
};
|
|
172
|
+
const ensureReady = () => {
|
|
173
|
+
if (ready)
|
|
174
|
+
return ready;
|
|
175
|
+
ready = (async () => {
|
|
176
|
+
const init = await guard(rpc('initialize', { protocolVersion: requestedVersion, capabilities: {}, clientInfo }, false), 'initialize');
|
|
177
|
+
if (typeof init === 'object' && init !== null) {
|
|
178
|
+
const v = init.protocolVersion;
|
|
179
|
+
if (typeof v === 'string' && v !== '')
|
|
180
|
+
negotiated = v;
|
|
181
|
+
}
|
|
182
|
+
const res = await guard(post({ jsonrpc: '2.0', method: 'notifications/initialized', params: {} }, { withVersion: true }), 'notifications/initialized');
|
|
183
|
+
if (!res.ok) {
|
|
184
|
+
throw httpError(res.status, 'notifications/initialized', await readText(res));
|
|
185
|
+
}
|
|
186
|
+
await readText(res); // 排空:202 + 空体是合法应答,但别把连接晾着
|
|
187
|
+
})();
|
|
188
|
+
return ready;
|
|
189
|
+
};
|
|
190
|
+
const listTools = async () => {
|
|
191
|
+
await ensureReady();
|
|
192
|
+
const r = await guard(rpc('tools/list', {}, true), 'tools/list');
|
|
193
|
+
if (typeof r !== 'object' || r === null) {
|
|
194
|
+
throw new Error(`MCP tools/list 返回了非对象:${brief(r)}`);
|
|
195
|
+
}
|
|
196
|
+
const listed = r.tools;
|
|
197
|
+
if (listed === undefined)
|
|
198
|
+
return [];
|
|
199
|
+
if (!Array.isArray(listed)) {
|
|
200
|
+
throw new Error(`MCP tools/list 的 tools 不是数组:${brief(listed)}`);
|
|
201
|
+
}
|
|
202
|
+
return listed;
|
|
203
|
+
};
|
|
204
|
+
const callTool = async (name, args, callOpts) => {
|
|
205
|
+
await ensureReady();
|
|
206
|
+
const r = await rpc('tools/call', { name, arguments: args }, true, true, callOpts?.abandoned);
|
|
207
|
+
// 承重同 stdio:协议层 isError 只有连接器看得见
|
|
208
|
+
if (typeof r === 'object' && r !== null && r.isError) {
|
|
209
|
+
throw new Error(`MCP 工具 ${name} 返回 isError: ${brief(r.content)}`);
|
|
210
|
+
}
|
|
211
|
+
return r;
|
|
212
|
+
};
|
|
213
|
+
return {
|
|
214
|
+
listTools,
|
|
215
|
+
callTool,
|
|
216
|
+
async close() {
|
|
217
|
+
if (closed)
|
|
218
|
+
return;
|
|
219
|
+
closed = true;
|
|
220
|
+
const sid = sessionId;
|
|
221
|
+
sessionId = null;
|
|
222
|
+
if (sid === null)
|
|
223
|
+
return;
|
|
224
|
+
try {
|
|
225
|
+
// 尽力终止会话(MCP 约定的显式关闭);server 不认这个方法也不该让 close() 抛。
|
|
226
|
+
//
|
|
227
|
+
// ⚠️ **必须过 `guard`**:这里此前直接 `await fetchImpl(...)`。下面的 catch 只兜得住
|
|
228
|
+
// **抛错**,兜不住**挂死** —— server 接受连接后不回(半开 / 卡在代理后面),
|
|
229
|
+
// `close()` 就永久挂住,而调用方(宿主停机路径)会一直等它。**挂住比失败更糟**,
|
|
230
|
+
// 与「best-effort、不抛错」的承诺相悖。fetch 与排空**一起**进 guard:
|
|
231
|
+
// 只护住响应头、body 照样能卡(`readText` 读的是 body)。
|
|
232
|
+
await guard((async () => {
|
|
233
|
+
const res = await fetchImpl(url, {
|
|
234
|
+
method: 'DELETE',
|
|
235
|
+
headers: {
|
|
236
|
+
...baseHeaders,
|
|
237
|
+
'mcp-session-id': sid,
|
|
238
|
+
'mcp-protocol-version': negotiated,
|
|
239
|
+
},
|
|
240
|
+
});
|
|
241
|
+
await readText(res);
|
|
242
|
+
})(), 'close');
|
|
243
|
+
}
|
|
244
|
+
catch {
|
|
245
|
+
/* 关闭是尽力而为(超时也走这里 —— guard 抛 TimeoutError) */
|
|
246
|
+
}
|
|
247
|
+
},
|
|
248
|
+
};
|
|
249
|
+
}
|
|
250
|
+
//# sourceMappingURL=mcp-http.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-http.js","sourceRoot":"","sources":["../../src/integrations/mcp-http.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,EACnB,wBAAwB,EACxB,sBAAsB,EACtB,KAAK,EACL,iBAAiB,EACjB,MAAM,EACN,YAAY,GACb,MAAM,UAAU,CAAC;AA2BlB;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,gCAAgC,CAC9C,GAAW,EACX,IAAI,GAAsC,EAAE;IAE5C,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,EAAE,EAAE,CAAC;QAC1C,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;IAC/D,CAAC;IACD,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,KAAK,CAAC;IAC1C,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,sBAAsB,CAAC;IAC3D,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,IAAI,mBAAmB,CAAC;IAC1D,MAAM,gBAAgB,GAAG,IAAI,CAAC,eAAe,IAAI,wBAAwB,CAAC;IAC1E,MAAM,WAAW,GAA2B;QAC1C,cAAc,EAAE,kBAAkB;QAClC,8CAA8C;QAC9C,MAAM,EAAE,qCAAqC;QAC7C,GAAG,IAAI,CAAC,OAAO;KAChB,CAAC;IAEF,IAAI,SAAS,GAAkB,IAAI,CAAC;IACpC,IAAI,UAAU,GAAG,gBAAgB,CAAC;IAClC,IAAI,MAAM,GAAG,KAAK,CAAC;IACnB,IAAI,KAAK,GAAyB,IAAI,CAAC;IACvC,IAAI,MAAM,GAAyB,IAAI,CAAC;IACxC,IAAI,MAAM,GAAG,CAAC,CAAC;IAEf,MAAM,KAAK,GAAU,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;IAErE,sDAAsD;IACtD,MAAM,SAAS,GAAG,CAAC,MAAc,EAAE,MAAc,EAAE,IAAY,EAAS,EAAE;QACxE,MAAM,CAAC,GAAG,IAAI,KAAK,CAAC,OAAO,MAAM,SAAS,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC5E,CAAyB,CAAC,MAAM,GAAG,MAAM,CAAC;QAC3C,OAAO,CAAC,CAAC;IACX,CAAC,CAAC;IAEF,MAAM,QAAQ,GAAG,KAAK,EAAE,GAAa,EAAmB,EAAE;QACxD,IAAI,CAAC;YACH,OAAO,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;QAC1B,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,IAAI,GAAG,KAAK,EAChB,OAAgB,EAChB,CAAC,GAAoD,EAAE,EACpC,EAAE;QACrB,IAAI,MAAM;YAAE,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;QACzD,MAAM,OAAO,GAA2B,EAAE,GAAG,WAAW,EAAE,CAAC;QAC3D,IAAI,SAAS,KAAK,IAAI;YAAE,OAAO,CAAC,gBAAgB,CAAC,GAAG,SAAS,CAAC;QAC9D,IAAI,CAAC,CAAC,WAAW;YAAE,OAAO,CAAC,sBAAsB,CAAC,GAAG,UAAU,CAAC;QAChE,MAAM,GAAG,GAAG,MAAM,SAAS,CAAC,GAAG,EAAE;YAC/B,MAAM,EAAE,MAAM;YACd,OAAO;YACP,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;YAC7B,4DAA4D;YAC5D,qDAAqD;YACrD,8CAA8C;YAC9C,GAAG,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACxD,CAAC,CAAC;QACH,mDAAmD;QACnD,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;QAC9C,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,EAAE;YAAE,SAAS,GAAG,GAAG,CAAC;QAChD,OAAO,GAAG,CAAC;IACb,CAAC,CAAC;IAEF,iEAAiE;IACjE,MAAM,UAAU,GAAG,CAAC,GAAY,EAAE,EAAU,EAAE,MAAc,EAAW,EAAE;QACvE,iDAAiD;QACjD,kCAAkC;QAClC,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC;YAC7C,MAAM,IAAI,KAAK,CAAC,OAAO,MAAM,eAAe,EAAE,gBAAgB,CAAC,CAAC;QAClE,CAAC;QACD,OAAO,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAC7B,CAAC,CAAC;IAEF;;;OAGG;IACH,MAAM,UAAU,GAAG,KAAK,EAAE,GAAa,EAAE,EAAU,EAAE,MAAc,EAAoB,EAAE;QACvF,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;QACjE,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,GAAG,CAAC,CAAC;QACjC,IAAI,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,CAAC;YACrC,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,CAAC;gBAC7C,MAAM,IAAI,GAAG,KAAK;qBACf,KAAK,CAAC,OAAO,CAAC;qBACd,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;qBACpC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;qBAC7B,IAAI,CAAC,EAAE,CAAC,CAAC;gBACZ,IAAI,IAAI,KAAK,EAAE;oBAAE,SAAS;gBAC1B,IAAI,GAAY,CAAC;gBACjB,IAAI,CAAC;oBACH,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBACzB,CAAC;gBAAC,MAAM,CAAC;oBACP,SAAS;gBACX,CAAC;gBACD,IAAI,iBAAiB,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,EAAE,KAAK,EAAE;oBAAE,OAAO,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;YAC1E,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,OAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,CAAC;QAC5D,CAAC;QACD,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;YACvB,MAAM,IAAI,KAAK,CAAC,OAAO,MAAM,kBAAkB,EAAE,iBAAiB,CAAC,CAAC;QACtE,CAAC;QACD,IAAI,GAAY,CAAC;QACjB,IAAI,CAAC;YACH,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACzB,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,IAAI,KAAK,CAAC,OAAO,MAAM,gBAAgB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC9D,CAAC;QACD,OAAO,UAAU,CAAC,GAAG,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC;IACrC,CAAC,CAAC;IAEF;;;;;;OAMG;IACH,MAAM,YAAY,GAAG,GAAkB,EAAE;QACvC,IAAI,MAAM;YAAE,OAAO,MAAM,CAAC;QAC1B,MAAM,GAAG,CAAC,KAAK,IAAI,EAAE;YACnB,SAAS,GAAG,IAAI,CAAC;YACjB,KAAK,GAAG,IAAI,CAAC,CAAC,wBAAwB;YACtC,MAAM,WAAW,EAAE,CAAC;QACtB,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE;YAChB,MAAM,GAAG,IAAI,CAAC;QAChB,CAAC,CAAC,CAAC;QACH,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC;IAEF;;;;;;;;;OASG;IACH,MAAM,GAAG,GAAG,KAAK,EACf,MAAc,EACd,MAAe,EACf,WAAoB,EACpB,WAAW,GAAG,IAAI,EAClB,SAAuB,EACL,EAAE;QACpB,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC;QACpB,MAAM,GAAG,GAAG,MAAM,IAAI,CACpB,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,EACtC,EAAE,WAAW,EAAE,GAAG,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAC3E,CAAC;QACF,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,IAAI,SAAS,KAAK,IAAI,IAAI,WAAW,EAAE,CAAC;YAC5D,MAAM,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,YAAY;YACjC,IAAI,CAAC,gBAAgB,EAAE,EAAE,CAAC;YAC1B,MAAM,YAAY,EAAE,CAAC;YACrB,+CAA+C;YAC/C,OAAO,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;QAC5D,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,EAAE;YAAE,MAAM,SAAS,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;QACtE,4DAA4D;QAC5D,kDAAkD;QAClD,0DAA0D;QAC1D,2CAA2C;QAC3C,OAAO,UAAU,CAAC,GAAG,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC;IACrC,CAAC,CAAC;IAEF,MAAM,WAAW,GAAG,GAAkB,EAAE;QACtC,IAAI,KAAK;YAAE,OAAO,KAAK,CAAC;QACxB,KAAK,GAAG,CAAC,KAAK,IAAI,EAAE;YAClB,MAAM,IAAI,GAAG,MAAM,KAAK,CACtB,GAAG,CACD,YAAY,EACZ,EAAE,eAAe,EAAE,gBAAgB,EAAE,YAAY,EAAE,EAAE,EAAE,UAAU,EAAE,EACnE,KAAK,CACN,EACD,YAAY,CACb,CAAC;YACF,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;gBAC9C,MAAM,CAAC,GAAI,IAAsC,CAAC,eAAe,CAAC;gBAClE,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,EAAE;oBAAE,UAAU,GAAG,CAAC,CAAC;YACxD,CAAC;YACD,MAAM,GAAG,GAAG,MAAM,KAAK,CACrB,IAAI,CACF,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,2BAA2B,EAAE,MAAM,EAAE,EAAE,EAAE,EACnE,EAAE,WAAW,EAAE,IAAI,EAAE,CACtB,EACD,2BAA2B,CAC5B,CAAC;YACF,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;gBACZ,MAAM,SAAS,CAAC,GAAG,CAAC,MAAM,EAAE,2BAA2B,EAAE,MAAM,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;YAChF,CAAC;YACD,MAAM,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,2BAA2B;QAClD,CAAC,CAAC,EAAE,CAAC;QACL,OAAO,KAAK,CAAC;IACf,CAAC,CAAC;IAEF,MAAM,SAAS,GAAG,KAAK,IAA4B,EAAE;QACnD,MAAM,WAAW,EAAE,CAAC;QACpB,MAAM,CAAC,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,YAAY,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,YAAY,CAAC,CAAC;QACjE,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;YACxC,MAAM,IAAI,KAAK,CAAC,yBAAyB,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACvD,CAAC;QACD,MAAM,MAAM,GAAI,CAAyB,CAAC,KAAK,CAAC;QAChD,IAAI,MAAM,KAAK,SAAS;YAAE,OAAO,EAAE,CAAC;QACpC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CAAC,+BAA+B,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAClE,CAAC;QACD,OAAO,MAAuB,CAAC;IACjC,CAAC,CAAC;IAEF,MAAM,QAAQ,GAAG,KAAK,EACpB,IAAY,EACZ,IAA6B,EAC7B,QAAsC,EACpB,EAAE;QACpB,MAAM,WAAW,EAAE,CAAC;QACpB,MAAM,CAAC,GAAG,MAAM,GAAG,CAAC,YAAY,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;QAC9F,iCAAiC;QACjC,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI,IAAK,CAA2B,CAAC,OAAO,EAAE,CAAC;YAChF,MAAM,IAAI,KAAK,CACb,UAAU,IAAI,gBAAgB,KAAK,CAAE,CAA2B,CAAC,OAAO,CAAC,EAAE,CAC5E,CAAC;QACJ,CAAC;QACD,OAAO,CAAC,CAAC;IACX,CAAC,CAAC;IAEF,OAAO;QACL,SAAS;QACT,QAAQ;QACR,KAAK,CAAC,KAAK;YACT,IAAI,MAAM;gBAAE,OAAO;YACnB,MAAM,GAAG,IAAI,CAAC;YACd,MAAM,GAAG,GAAG,SAAS,CAAC;YACtB,SAAS,GAAG,IAAI,CAAC;YACjB,IAAI,GAAG,KAAK,IAAI;gBAAE,OAAO;YACzB,IAAI,CAAC;gBACH,mDAAmD;gBACnD,EAAE;gBACF,kEAAkE;gBAClE,mDAAmD;gBACnD,iDAAiD;gBACjD,kDAAkD;gBAClD,yCAAyC;gBACzC,MAAM,KAAK,CACT,CAAC,KAAK,IAAI,EAAE;oBACV,MAAM,GAAG,GAAG,MAAM,SAAS,CAAC,GAAG,EAAE;wBAC/B,MAAM,EAAE,QAAQ;wBAChB,OAAO,EAAE;4BACP,GAAG,WAAW;4BACd,gBAAgB,EAAE,GAAG;4BACrB,sBAAsB,EAAE,UAAU;yBACnC;qBACF,CAAC,CAAC;oBACH,MAAM,QAAQ,CAAC,GAAG,CAAC,CAAC;gBACtB,CAAC,CAAC,EAAE,EACJ,OAAO,CACR,CAAC;YACJ,CAAC;YAAC,MAAM,CAAC;gBACP,6CAA6C;YAC/C,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import type { McpConnector } from './mcp.js';
|
|
2
|
+
/**
|
|
3
|
+
* MCP **stdio 连接器**(内置默认件之一):spawn 子进程、换行分隔 JSON-RPC。
|
|
4
|
+
* 桥与共享 helper 在 `mcp.ts`;本文件只含 stdio 传输。module 级 export,
|
|
5
|
+
* 公共面仍由 `mcp.ts` re-export(`src/index.ts` 不变)。
|
|
6
|
+
*/
|
|
7
|
+
/** `close()` 里 SIGTERM → SIGKILL 的宽限期(毫秒) */
|
|
8
|
+
export declare const MCP_CLOSE_GRACE_MS = 2000;
|
|
9
|
+
export interface StdioMcpConnectorOptions {
|
|
10
|
+
/** 追加 / 覆盖的环境变量(缺省继承 `process.env`) */
|
|
11
|
+
env?: Record<string, string>;
|
|
12
|
+
/** 子进程工作目录 */
|
|
13
|
+
cwd?: string;
|
|
14
|
+
/** 子进程 stderr 去向:`'inherit'`(缺省,server 日志直通终端)| `'ignore'` */
|
|
15
|
+
stderr?: 'inherit' | 'ignore';
|
|
16
|
+
/** 见 {@link DEFAULT_CLIENT_INFO} */
|
|
17
|
+
clientInfo?: {
|
|
18
|
+
name: string;
|
|
19
|
+
version: string;
|
|
20
|
+
};
|
|
21
|
+
/** 请求的协议版本,缺省 `'2024-11-05'` */
|
|
22
|
+
protocolVersion?: string;
|
|
23
|
+
/**
|
|
24
|
+
* 装配期超时(毫秒)—— 只作用于**握手 + `tools/list`**,缺省
|
|
25
|
+
* {@link MCP_DEFAULT_TIMEOUT_MS};非正数 = 不限。语义见 {@link Guard}。
|
|
26
|
+
*
|
|
27
|
+
* 超时同样只是一类账(`code='timeout'`):**不终止子进程**,与仓库其余「等待的终点」
|
|
28
|
+
* 一致(超时 = 放弃等待)。
|
|
29
|
+
*/
|
|
30
|
+
timeoutMs?: number;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* **stdio 连接器**:spawn 一个 MCP server 子进程,走换行分隔的 JSON-RPC 2.0
|
|
34
|
+
* (`initialize` → `notifications/initialized` → `tools/list` / `tools/call`)。
|
|
35
|
+
*
|
|
36
|
+
* 进程与握手都是**惰性**的 —— 构造不产生副作用,第一次 `listTools` / `callTool` 才 spawn;
|
|
37
|
+
* 握手只做一次(并发调用共享同一次握手)。
|
|
38
|
+
*
|
|
39
|
+
* 三处非显然的坑,这里都兜住了(此前 `scripts/e2e-mcp.ts` 内联的那 94 行踩过):
|
|
40
|
+
* 1. spawn **失败**(命令不存在 → `ENOENT`)是异步的 `'error'` 事件,不是抛出 ——
|
|
41
|
+
* 没有监听器就是未捕获异常、直接把宿主进程带崩,所以必须接住并拒绝在途请求;
|
|
42
|
+
* 2. 分帧:一条报文可能跨多个 chunk,必须自己攒 buffer 按 `\n` 切;
|
|
43
|
+
* 3. **协议层 `isError: true` 必须转成抛错** —— 否则模型收到一条「成功」的结果,
|
|
44
|
+
* trace 也把它记成成功的调用(`McpClientLike` 的约定,见其注释)。
|
|
45
|
+
*/
|
|
46
|
+
export declare function createStdioMcpConnector(cmd: readonly string[], opts?: StdioMcpConnectorOptions): McpConnector;
|