skyloom 1.25.0 → 1.26.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.
- package/.env.example +90 -0
- package/CONVERSION_PLAN.md +5 -0
- package/LICENSE +21 -0
- package/README.md +4 -4
- package/dist/core/mcp.d.ts +25 -1
- package/dist/core/mcp.d.ts.map +1 -1
- package/dist/core/mcp.js +175 -8
- package/dist/core/mcp.js.map +1 -1
- package/package.json +1 -1
- package/src/core/mcp.ts +185 -8
- package/tests/mcp_sse.test.ts +112 -0
- package/tests/skill.test.ts +6 -5
- package/skill-test-ty2fOA/test.md +0 -10
package/.env.example
ADDED
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
# ════════════════════════════════════════════════════════════════════
|
|
2
|
+
# Skyloom — 环境变量样例 / Environment variable reference
|
|
3
|
+
# ════════════════════════════════════════════════════════════════════
|
|
4
|
+
#
|
|
5
|
+
# Skyloom 的首选配置方式是 `~/.skyloom/config.yaml`(运行 `sky` 的设置向导
|
|
6
|
+
# 自动生成)。本文件仅作为「有哪些变量可用」的参考清单 —— 复制为 `.env`
|
|
7
|
+
# 并按需填写,或直接 export 到你的 shell。`.env` 已被 .gitignore 忽略。
|
|
8
|
+
#
|
|
9
|
+
# Skyloom prefers `~/.skyloom/config.yaml` for persistent config. This file
|
|
10
|
+
# is a reference for the env vars Skyloom reads. Copy to `.env` and fill in
|
|
11
|
+
# what you need (`.env` is gitignored), or export them in your shell.
|
|
12
|
+
# Only set the API key for the provider(s) you actually use.
|
|
13
|
+
|
|
14
|
+
# ─── LLM Provider API Keys ───────────────────────────────────────────
|
|
15
|
+
# 国际 / International
|
|
16
|
+
OPENAI_API_KEY=
|
|
17
|
+
ANTHROPIC_API_KEY=
|
|
18
|
+
GEMINI_API_KEY=
|
|
19
|
+
DEEPSEEK_API_KEY=
|
|
20
|
+
XAI_API_KEY=
|
|
21
|
+
MISTRAL_API_KEY=
|
|
22
|
+
GROQ_API_KEY=
|
|
23
|
+
COHERE_API_KEY=
|
|
24
|
+
PERPLEXITY_API_KEY=
|
|
25
|
+
FIREWORKS_API_KEY=
|
|
26
|
+
TOGETHER_API_KEY=
|
|
27
|
+
OPENROUTER_API_KEY=
|
|
28
|
+
REKA_API_KEY=
|
|
29
|
+
NVIDIA_API_KEY=
|
|
30
|
+
SAMBANOVA_API_KEY=
|
|
31
|
+
|
|
32
|
+
# 国内 / Chinese providers
|
|
33
|
+
QWEN_API_KEY=
|
|
34
|
+
ZHIPU_API_KEY=
|
|
35
|
+
LINGYIWANWU_API_KEY=
|
|
36
|
+
MINIMAX_API_KEY=
|
|
37
|
+
MOONSHOT_API_KEY=
|
|
38
|
+
BAIDU_API_KEY=
|
|
39
|
+
BAICHUAN_API_KEY=
|
|
40
|
+
STEPFUN_API_KEY=
|
|
41
|
+
|
|
42
|
+
# ─── 本地 / 自托管模型端点(OpenAI 兼容) ───────────────────────────
|
|
43
|
+
# Local / self-hosted endpoints. Override only if not on the default port.
|
|
44
|
+
# OLLAMA_HOST=http://localhost:11434/v1
|
|
45
|
+
# LMSTUDIO_HOST=http://localhost:1234/v1
|
|
46
|
+
# VLLM_HOST=http://localhost:8000/v1
|
|
47
|
+
# LITELLM_HOST=http://localhost:4000/v1
|
|
48
|
+
|
|
49
|
+
# ─── 运行时开关 / Runtime flags ──────────────────────────────────────
|
|
50
|
+
# SKYLOOM_CLASSIC=1 # 强制经典线性 TUI(跳过立轴全屏模式)
|
|
51
|
+
# SKYLOOM_WEB_HOST=0.0.0.0 # Web UI 对外开放(默认仅本机;无鉴权,谨慎)
|
|
52
|
+
# SKYLOOM_WORKSPACE_FENCE=1 # 限制文件操作在工作区根目录内
|
|
53
|
+
# SKYLOOM_WORKSPACE_ROOT= # 显式指定工作区根(默认 cwd)
|
|
54
|
+
# SKYLOOM_ALLOW_DANGEROUS=1 # 允许高危命令(默认红线拦截,谨慎)
|
|
55
|
+
# SKYLOOM_ALLOW_PRIVATE_FETCH=1 # 关闭 SSRF 防护,允许请求内网/环回地址
|
|
56
|
+
# SKYLOOM_ALLOW_UNSAFE_PLUGINS=1 # 允许加载未签名插件
|
|
57
|
+
# SKYLOOM_LOG_FILE= # 结构化日志写入路径
|
|
58
|
+
# SKYLOOM_LOG_CONSOLE=1 # 日志同时打到 stderr
|
|
59
|
+
|
|
60
|
+
# ─── 记忆 / 自动抽取调优 / Memory & auto-extraction tuning ───────────
|
|
61
|
+
# WA_NO_RESUME=1 # 禁用上次会话自动恢复
|
|
62
|
+
# WA_RESUME_GAP_SECONDS=1800 # 超过此空闲秒数才开新会话
|
|
63
|
+
# WA_NO_RECALL=1 # 禁用长期记忆语义召回
|
|
64
|
+
# WA_NO_EXTRACT=1 # 禁用从对话自动抽取事实
|
|
65
|
+
# WA_EXTRACT_EVERY_N=4 # 每 N 轮抽取一次事实
|
|
66
|
+
|
|
67
|
+
# ─── 渠道网关 / Gateway (sky gateway) ────────────────────────────────
|
|
68
|
+
# SKYLOOM_GATEWAY_HOST=0.0.0.0
|
|
69
|
+
# SKYLOOM_GATEWAY_PORT=8848
|
|
70
|
+
|
|
71
|
+
# 飞书 / Feishu (Lark)
|
|
72
|
+
# FEISHU_APP_ID=
|
|
73
|
+
# FEISHU_APP_SECRET=
|
|
74
|
+
# FEISHU_ENCRYPT_KEY= # 可选:开启加密时
|
|
75
|
+
# FEISHU_VERIFICATION_TOKEN= # 可选
|
|
76
|
+
|
|
77
|
+
# 企业微信 / WeCom
|
|
78
|
+
# WECOM_CORP_ID=
|
|
79
|
+
# WECOM_CORP_SECRET=
|
|
80
|
+
# WECOM_TOKEN=
|
|
81
|
+
# WECOM_AES_KEY= # 43 位 EncodingAESKey
|
|
82
|
+
# WECOM_AGENT_ID=
|
|
83
|
+
|
|
84
|
+
# QQ 官方机器人 / QQ Bot
|
|
85
|
+
# QQ_BOT_APPID=
|
|
86
|
+
# QQ_BOT_SECRET=
|
|
87
|
+
|
|
88
|
+
# ─── 语音合成 / Text-to-Speech (火山引擎 Volcano Engine) ─────────────
|
|
89
|
+
# VOLC_ACCESS_TOKEN=
|
|
90
|
+
# VOLC_APP_ID=
|
package/CONVERSION_PLAN.md
CHANGED
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
# Skyloom Python → TypeScript 完整转换计划
|
|
2
2
|
|
|
3
|
+
> **状态:迁移已完成(自 v1.25.0)。** 本文档现作为历史记录与转换规范留存。
|
|
4
|
+
> 下方 Phase 1–8 的清单复选框反映的是迁移过程中的规划,**全部模块均已转换并
|
|
5
|
+
> 落地**(97 个 TS 源文件 + 49 套件 530 用例,`tsc --noEmit` / 测试 / lint 全绿)。
|
|
6
|
+
> 当前及后续的工程演进路线见 [`docs/OPTIMIZATION_PLAN.md`](docs/OPTIMIZATION_PLAN.md)。
|
|
7
|
+
|
|
3
8
|
## 已完成的核心模块(✅)
|
|
4
9
|
|
|
5
10
|
### 基础配置层
|
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Skyloom Team
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
CHANGED
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
[](LICENSE)
|
|
12
12
|
[](https://nodejs.org)
|
|
13
13
|
[](https://www.typescriptlang.org)
|
|
14
|
-
[](https://github.com/susurrune/skyloom-ts/tree/main/tests)
|
|
15
15
|
|
|
16
16
|
</div>
|
|
17
17
|
|
|
@@ -542,7 +542,7 @@ skyloom-ts/
|
|
|
542
542
|
│ ├── providers.yaml Provider 目录(base URL / env var)
|
|
543
543
|
│ ├── models.yaml 模型目录(上下文窗口 / 成本)
|
|
544
544
|
│ └── skills/ 17 个内置技能 (SKILL.md)
|
|
545
|
-
├── tests/
|
|
545
|
+
├── tests/ 49 套件 · 530 Vitest 用例
|
|
546
546
|
├── docs/
|
|
547
547
|
│ ├── AESTHETIC_DESIGN.md 美学设计系统
|
|
548
548
|
│ └── OPTIMIZATION_PLAN.md 优化路线图
|
|
@@ -565,7 +565,7 @@ npm install
|
|
|
565
565
|
|
|
566
566
|
npm run build # tsc 编译
|
|
567
567
|
npm run dev # watch 模式
|
|
568
|
-
npm test # Vitest (
|
|
568
|
+
npm test # Vitest (49 套件 · 530 用例)
|
|
569
569
|
npm run test:coverage # 覆盖率报告
|
|
570
570
|
npm run type-check # TypeScript 严格模式检查
|
|
571
571
|
npm run lint # ESLint
|
|
@@ -605,4 +605,4 @@ Skyloom 正朝「顶级开源 Agent 框架」演进,对标 [opencode](https://
|
|
|
605
605
|
|
|
606
606
|
## 许可证
|
|
607
607
|
|
|
608
|
-
[MIT License](LICENSE) · **v1.
|
|
608
|
+
[MIT License](LICENSE) · **v1.26.0** · 全功能迁移自 [Python 原版](https://github.com/susurrune/skyloom)
|
package/dist/core/mcp.d.ts
CHANGED
|
@@ -43,7 +43,9 @@ export declare class MCPClient {
|
|
|
43
43
|
private pending;
|
|
44
44
|
private log;
|
|
45
45
|
private sseResponse;
|
|
46
|
+
private sseAbort;
|
|
46
47
|
private sseMessageUrl;
|
|
48
|
+
private sseEndpointResolver;
|
|
47
49
|
constructor(config: MCPServerConfig, log?: Logger | null);
|
|
48
50
|
/**
|
|
49
51
|
* Generate next request ID.
|
|
@@ -66,8 +68,28 @@ export declare class MCPClient {
|
|
|
66
68
|
private initStdio;
|
|
67
69
|
/**
|
|
68
70
|
* Initialize SSE transport.
|
|
71
|
+
*
|
|
72
|
+
* Opens a persistent `text/event-stream` GET to the configured URL. The
|
|
73
|
+
* server first emits an `endpoint` event carrying the URL to POST JSON-RPC
|
|
74
|
+
* messages to; subsequent `message` events carry responses/notifications,
|
|
75
|
+
* which are correlated against `this.pending` by request id (same path the
|
|
76
|
+
* stdio loop uses). Once the endpoint is known we run the standard
|
|
77
|
+
* initialize → initialized → tools/list handshake.
|
|
69
78
|
*/
|
|
70
79
|
private initSSE;
|
|
80
|
+
/**
|
|
81
|
+
* Open the SSE stream and dispatch parsed events. Resolves once the HTTP
|
|
82
|
+
* connection is established (not when it closes).
|
|
83
|
+
*/
|
|
84
|
+
private openSSEStream;
|
|
85
|
+
/**
|
|
86
|
+
* Parse one raw SSE event block (`event:`/`data:` lines) and dispatch it.
|
|
87
|
+
*/
|
|
88
|
+
private handleSSEEvent;
|
|
89
|
+
/**
|
|
90
|
+
* Reject every in-flight SSE request (stream closed or errored).
|
|
91
|
+
*/
|
|
92
|
+
private failPendingSSE;
|
|
71
93
|
/**
|
|
72
94
|
* Health check via stdio.
|
|
73
95
|
*/
|
|
@@ -97,7 +119,9 @@ export declare class MCPClient {
|
|
|
97
119
|
*/
|
|
98
120
|
private sendJson;
|
|
99
121
|
/**
|
|
100
|
-
* POST JSON data
|
|
122
|
+
* POST JSON-RPC data to the SSE message endpoint. The actual response
|
|
123
|
+
* arrives asynchronously over the event stream (see handleSSEEvent), so
|
|
124
|
+
* this only confirms the message was accepted by the server.
|
|
101
125
|
*/
|
|
102
126
|
private postJson;
|
|
103
127
|
/**
|
package/dist/core/mcp.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../../src/core/mcp.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;
|
|
1
|
+
{"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../../src/core/mcp.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAMH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAKvC;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE;QACZ,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QACjC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;KACrB,CAAC;CACH;AAkBD;;;;;GAKG;AACH,qBAAa,SAAS;IACpB,OAAO,CAAC,MAAM,CAAkB;IAChC,OAAO,CAAC,OAAO,CAA6B;IAC5C,OAAO,CAAC,WAAW,CAAoB;IACvC,OAAO,CAAC,MAAM,CAAa;IAC3B,OAAO,CAAC,OAAO,CAIA;IACf,OAAO,CAAC,GAAG,CAAuB;IAGlC,OAAO,CAAC,WAAW,CAAa;IAChC,OAAO,CAAC,QAAQ,CAAgC;IAChD,OAAO,CAAC,aAAa,CAAc;IACnC,OAAO,CAAC,mBAAmB,CAA6B;gBAE5C,MAAM,EAAE,eAAe,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI;IAKxD;;OAEG;IACH,OAAO,CAAC,KAAK;IAIb;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;IAgBzC;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IASnE;;OAEG;YACW,SAAS;IAkEvB;;;;;;;;;OASG;YACW,OAAO;IA8DrB;;;OAGG;YACW,aAAa;IAiC3B;;OAEG;IACH,OAAO,CAAC,cAAc;IA4CtB;;OAEG;IACH,OAAO,CAAC,cAAc;IAQtB;;OAEG;YACW,WAAW;IAmBzB;;OAEG;YACW,SAAS;IAsBvB;;OAEG;YACW,aAAa;IAoD3B;;OAEG;YACW,WAAW;IAkBzB;;OAEG;YACW,YAAY;IA0C1B;;OAEG;YACW,UAAU;IAsCxB;;OAEG;YACW,QAAQ;IAmBtB;;;;OAIG;YACW,QAAQ;IActB;;OAEG;IACH,OAAO,CAAC,aAAa;IAQrB;;OAEG;IACG,QAAQ,CACZ,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GACxB,OAAO,CAAC,MAAM,CAAC;IAuBlB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAgBzB;;OAEG;IACH,kBAAkB,IAAI,UAAU,EAAE;IAIlC;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAoD7B;AAED;;GAEG;AACH,qBAAa,UAAU;IACrB,OAAO,CAAC,YAAY,CAAM;IAC1B,OAAO,CAAC,OAAO,CAAqC;IACpD,OAAO,CAAC,aAAa,CAAyB;IAC9C,OAAO,CAAC,MAAM,CAA+B;IAC7C,OAAO,CAAC,GAAG,CAAuB;gBAEtB,YAAY,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,MAAM;IAK3C;;OAEG;IACH,UAAU,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI;IAI1C;;OAEG;IACH,SAAS,CAAC,OAAO,EAAE,eAAe,EAAE,GAAG,IAAI;IAa3C;;;OAGG;IACG,UAAU,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IA2CrC;;OAEG;IACH,OAAO,CAAC,gBAAgB;IA+DxB;;OAEG;IACH,OAAO,CAAC,cAAc;IAatB;;OAEG;IACG,SAAS,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC;IAwCzD;;OAEG;IACG,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IA4CjD;;OAEG;IACH,WAAW,IAAI,KAAK,CAAC;QACnB,IAAI,EAAE,MAAM,CAAC;QACb,SAAS,EAAE,MAAM,CAAC;QAClB,MAAM,EAAE,MAAM,CAAC;QACf,KAAK,EAAE,MAAM,CAAC;QACd,SAAS,EAAE,OAAO,CAAC;KACpB,CAAC;IAqBF;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;CAwBhC;AAED;;;;;;;;;;;GAWG;AAEH,+EAA+E;AAC/E,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAE/C;AAED,sEAAsE;AACtE,wBAAgB,kBAAkB,CAAC,GAAG,GAAE,MAAsB,GAAG,eAAe,EAAE,CA2BjF;AAcD;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,eAAe,EAAE,CAYxD;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,eAAe,GAAG,IAAI,CAuBjE;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAmBxD"}
|
package/dist/core/mcp.js
CHANGED
|
@@ -39,6 +39,9 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
39
39
|
return result;
|
|
40
40
|
};
|
|
41
41
|
})();
|
|
42
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
43
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
44
|
+
};
|
|
42
45
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
43
46
|
exports.MCPManager = exports.MCPClient = void 0;
|
|
44
47
|
exports.expandEnvRefs = expandEnvRefs;
|
|
@@ -49,6 +52,7 @@ exports.removePersistedServer = removePersistedServer;
|
|
|
49
52
|
const child_process_1 = require("child_process");
|
|
50
53
|
const fs = __importStar(require("fs"));
|
|
51
54
|
const path = __importStar(require("path"));
|
|
55
|
+
const axios_1 = __importDefault(require("axios"));
|
|
52
56
|
const MCP_PROTOCOL_VERSION = "2025-03-26";
|
|
53
57
|
const CLIENT_INFO = { name: "skyloom", version: "1.0.0" };
|
|
54
58
|
/**
|
|
@@ -66,7 +70,9 @@ class MCPClient {
|
|
|
66
70
|
this.log = null;
|
|
67
71
|
// SSE-specific state
|
|
68
72
|
this.sseResponse = null;
|
|
73
|
+
this.sseAbort = null;
|
|
69
74
|
this.sseMessageUrl = "";
|
|
75
|
+
this.sseEndpointResolver = null;
|
|
70
76
|
this.config = config;
|
|
71
77
|
this.log = log || null;
|
|
72
78
|
}
|
|
@@ -172,12 +178,155 @@ class MCPClient {
|
|
|
172
178
|
}
|
|
173
179
|
/**
|
|
174
180
|
* Initialize SSE transport.
|
|
181
|
+
*
|
|
182
|
+
* Opens a persistent `text/event-stream` GET to the configured URL. The
|
|
183
|
+
* server first emits an `endpoint` event carrying the URL to POST JSON-RPC
|
|
184
|
+
* messages to; subsequent `message` events carry responses/notifications,
|
|
185
|
+
* which are correlated against `this.pending` by request id (same path the
|
|
186
|
+
* stdio loop uses). Once the endpoint is known we run the standard
|
|
187
|
+
* initialize → initialized → tools/list handshake.
|
|
175
188
|
*/
|
|
176
189
|
async initSSE() {
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
190
|
+
const url = this.config.url;
|
|
191
|
+
if (!url) {
|
|
192
|
+
return [];
|
|
193
|
+
}
|
|
194
|
+
// Wait for the server to advertise its message endpoint before we can POST.
|
|
195
|
+
const endpointReady = new Promise((resolve, reject) => {
|
|
196
|
+
const timer = setTimeout(() => reject(new Error("SSE endpoint handshake timeout")), 10000);
|
|
197
|
+
this.sseEndpointResolver = () => {
|
|
198
|
+
clearTimeout(timer);
|
|
199
|
+
resolve();
|
|
200
|
+
};
|
|
201
|
+
});
|
|
202
|
+
try {
|
|
203
|
+
await this.openSSEStream(url);
|
|
204
|
+
await endpointReady;
|
|
205
|
+
}
|
|
206
|
+
catch (e) {
|
|
207
|
+
this.log?.warn("mcp_sse_connect_failed", {
|
|
208
|
+
server: this.config.name,
|
|
209
|
+
error: String(e),
|
|
210
|
+
});
|
|
211
|
+
await this.close().catch(() => { });
|
|
212
|
+
return [];
|
|
213
|
+
}
|
|
214
|
+
try {
|
|
215
|
+
const initResp = await this.requestSSE("initialize", {
|
|
216
|
+
protocolVersion: MCP_PROTOCOL_VERSION,
|
|
217
|
+
capabilities: {},
|
|
218
|
+
clientInfo: CLIENT_INFO,
|
|
219
|
+
});
|
|
220
|
+
if (!initResp || initResp.error) {
|
|
221
|
+
return [];
|
|
222
|
+
}
|
|
223
|
+
// Fire-and-forget the initialized notification (no id → no response).
|
|
224
|
+
this.postJson({
|
|
225
|
+
jsonrpc: "2.0",
|
|
226
|
+
method: "notifications/initialized",
|
|
227
|
+
params: {},
|
|
228
|
+
}).catch(() => { });
|
|
229
|
+
const toolsResp = await this.requestSSE("tools/list", {});
|
|
230
|
+
if (toolsResp && toolsResp.result) {
|
|
231
|
+
this.serverTools = toolsResp.result.tools || [];
|
|
232
|
+
}
|
|
233
|
+
return this.serverTools;
|
|
234
|
+
}
|
|
235
|
+
catch (err) {
|
|
236
|
+
this.log?.warn("mcp_sse_init_failed", {
|
|
237
|
+
server: this.config.name,
|
|
238
|
+
error: String(err),
|
|
239
|
+
});
|
|
240
|
+
await this.close().catch(() => { });
|
|
241
|
+
return [];
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
/**
|
|
245
|
+
* Open the SSE stream and dispatch parsed events. Resolves once the HTTP
|
|
246
|
+
* connection is established (not when it closes).
|
|
247
|
+
*/
|
|
248
|
+
async openSSEStream(url) {
|
|
249
|
+
const controller = new AbortController();
|
|
250
|
+
this.sseAbort = controller;
|
|
251
|
+
const resp = await axios_1.default.get(url, {
|
|
252
|
+
responseType: "stream",
|
|
253
|
+
signal: controller.signal,
|
|
254
|
+
headers: {
|
|
255
|
+
Accept: "text/event-stream",
|
|
256
|
+
...(this.config.env || {}),
|
|
257
|
+
},
|
|
258
|
+
timeout: 0,
|
|
259
|
+
});
|
|
260
|
+
this.sseResponse = resp.data;
|
|
261
|
+
let buffer = "";
|
|
262
|
+
resp.data.on("data", (chunk) => {
|
|
263
|
+
buffer += chunk.toString("utf-8");
|
|
264
|
+
// SSE events are separated by a blank line.
|
|
265
|
+
let sep;
|
|
266
|
+
while ((sep = buffer.indexOf("\n\n")) !== -1) {
|
|
267
|
+
const rawEvent = buffer.slice(0, sep);
|
|
268
|
+
buffer = buffer.slice(sep + 2);
|
|
269
|
+
this.handleSSEEvent(rawEvent, url);
|
|
270
|
+
}
|
|
271
|
+
});
|
|
272
|
+
resp.data.on("end", () => this.failPendingSSE("MCP SSE stream closed"));
|
|
273
|
+
resp.data.on("error", (err) => this.failPendingSSE(`MCP SSE stream error: ${err.message}`));
|
|
274
|
+
}
|
|
275
|
+
/**
|
|
276
|
+
* Parse one raw SSE event block (`event:`/`data:` lines) and dispatch it.
|
|
277
|
+
*/
|
|
278
|
+
handleSSEEvent(rawEvent, baseUrl) {
|
|
279
|
+
let eventName = "message";
|
|
280
|
+
const dataLines = [];
|
|
281
|
+
for (const line of rawEvent.split("\n")) {
|
|
282
|
+
if (line.startsWith("event:")) {
|
|
283
|
+
eventName = line.slice(6).trim();
|
|
284
|
+
}
|
|
285
|
+
else if (line.startsWith("data:")) {
|
|
286
|
+
dataLines.push(line.slice(5).trimStart());
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
const data = dataLines.join("\n");
|
|
290
|
+
if (!data) {
|
|
291
|
+
return;
|
|
292
|
+
}
|
|
293
|
+
if (eventName === "endpoint") {
|
|
294
|
+
// `data` is the (possibly relative) URL to POST messages to.
|
|
295
|
+
try {
|
|
296
|
+
this.sseMessageUrl = new URL(data, baseUrl).toString();
|
|
297
|
+
}
|
|
298
|
+
catch {
|
|
299
|
+
this.sseMessageUrl = data;
|
|
300
|
+
}
|
|
301
|
+
this.sseEndpointResolver?.();
|
|
302
|
+
this.sseEndpointResolver = null;
|
|
303
|
+
return;
|
|
304
|
+
}
|
|
305
|
+
// event: message (or default) — a JSON-RPC response/notification.
|
|
306
|
+
const msg = this.parseJsonLine(data);
|
|
307
|
+
if (!msg) {
|
|
308
|
+
return;
|
|
309
|
+
}
|
|
310
|
+
const msgId = msg.id;
|
|
311
|
+
if (msgId === undefined || msgId === null) {
|
|
312
|
+
return;
|
|
313
|
+
}
|
|
314
|
+
const pending = this.pending.get(msgId);
|
|
315
|
+
if (pending) {
|
|
316
|
+
clearTimeout(pending.timer);
|
|
317
|
+
pending.resolve(msg);
|
|
318
|
+
this.pending.delete(msgId);
|
|
319
|
+
}
|
|
320
|
+
}
|
|
321
|
+
/**
|
|
322
|
+
* Reject every in-flight SSE request (stream closed or errored).
|
|
323
|
+
*/
|
|
324
|
+
failPendingSSE(reason) {
|
|
325
|
+
for (const [id, { reject, timer }] of this.pending) {
|
|
326
|
+
clearTimeout(timer);
|
|
327
|
+
reject(new Error(reason));
|
|
328
|
+
this.pending.delete(id);
|
|
329
|
+
}
|
|
181
330
|
}
|
|
182
331
|
/**
|
|
183
332
|
* Health check via stdio.
|
|
@@ -382,14 +531,21 @@ class MCPClient {
|
|
|
382
531
|
});
|
|
383
532
|
}
|
|
384
533
|
/**
|
|
385
|
-
* POST JSON data
|
|
534
|
+
* POST JSON-RPC data to the SSE message endpoint. The actual response
|
|
535
|
+
* arrives asynchronously over the event stream (see handleSSEEvent), so
|
|
536
|
+
* this only confirms the message was accepted by the server.
|
|
386
537
|
*/
|
|
387
|
-
async postJson(
|
|
538
|
+
async postJson(data) {
|
|
388
539
|
if (!this.sseMessageUrl) {
|
|
389
540
|
throw new Error("SSE message URL not set");
|
|
390
541
|
}
|
|
391
|
-
|
|
392
|
-
|
|
542
|
+
await axios_1.default.post(this.sseMessageUrl, data, {
|
|
543
|
+
headers: {
|
|
544
|
+
"Content-Type": "application/json",
|
|
545
|
+
...(this.config.env || {}),
|
|
546
|
+
},
|
|
547
|
+
timeout: 10000,
|
|
548
|
+
});
|
|
393
549
|
}
|
|
394
550
|
/**
|
|
395
551
|
* Parse a single JSON line.
|
|
@@ -480,8 +636,18 @@ class MCPClient {
|
|
|
480
636
|
this.process = null;
|
|
481
637
|
}
|
|
482
638
|
// Close SSE response if exists
|
|
639
|
+
if (this.sseAbort) {
|
|
640
|
+
try {
|
|
641
|
+
this.sseAbort.abort();
|
|
642
|
+
}
|
|
643
|
+
catch {
|
|
644
|
+
// Ignore
|
|
645
|
+
}
|
|
646
|
+
this.sseAbort = null;
|
|
647
|
+
}
|
|
483
648
|
if (this.sseResponse) {
|
|
484
649
|
try {
|
|
650
|
+
this.sseResponse.destroy?.();
|
|
485
651
|
await this.sseResponse.close?.();
|
|
486
652
|
}
|
|
487
653
|
catch {
|
|
@@ -489,6 +655,7 @@ class MCPClient {
|
|
|
489
655
|
}
|
|
490
656
|
this.sseResponse = null;
|
|
491
657
|
}
|
|
658
|
+
this.sseEndpointResolver = null;
|
|
492
659
|
this.sseMessageUrl = "";
|
|
493
660
|
}
|
|
494
661
|
}
|
package/dist/core/mcp.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../src/core/mcp.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../src/core/mcp.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/core/mcp.ts
CHANGED
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
import { spawn, ChildProcess } from "child_process";
|
|
10
10
|
import * as fs from "fs";
|
|
11
11
|
import * as path from "path";
|
|
12
|
+
import axios from "axios";
|
|
12
13
|
import type { Logger } from "./logger";
|
|
13
14
|
|
|
14
15
|
const MCP_PROTOCOL_VERSION = "2025-03-26";
|
|
@@ -75,7 +76,9 @@ export class MCPClient {
|
|
|
75
76
|
|
|
76
77
|
// SSE-specific state
|
|
77
78
|
private sseResponse: any = null;
|
|
79
|
+
private sseAbort: AbortController | null = null;
|
|
78
80
|
private sseMessageUrl: string = "";
|
|
81
|
+
private sseEndpointResolver: (() => void) | null = null;
|
|
79
82
|
|
|
80
83
|
constructor(config: MCPServerConfig, log?: Logger | null) {
|
|
81
84
|
this.config = config;
|
|
@@ -191,12 +194,169 @@ export class MCPClient {
|
|
|
191
194
|
|
|
192
195
|
/**
|
|
193
196
|
* Initialize SSE transport.
|
|
197
|
+
*
|
|
198
|
+
* Opens a persistent `text/event-stream` GET to the configured URL. The
|
|
199
|
+
* server first emits an `endpoint` event carrying the URL to POST JSON-RPC
|
|
200
|
+
* messages to; subsequent `message` events carry responses/notifications,
|
|
201
|
+
* which are correlated against `this.pending` by request id (same path the
|
|
202
|
+
* stdio loop uses). Once the endpoint is known we run the standard
|
|
203
|
+
* initialize → initialized → tools/list handshake.
|
|
194
204
|
*/
|
|
195
205
|
private async initSSE(): Promise<MCPToolDef[]> {
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
206
|
+
const url = this.config.url;
|
|
207
|
+
if (!url) {
|
|
208
|
+
return [];
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
// Wait for the server to advertise its message endpoint before we can POST.
|
|
212
|
+
const endpointReady = new Promise<void>((resolve, reject) => {
|
|
213
|
+
const timer = setTimeout(
|
|
214
|
+
() => reject(new Error("SSE endpoint handshake timeout")),
|
|
215
|
+
10000
|
|
216
|
+
);
|
|
217
|
+
this.sseEndpointResolver = () => {
|
|
218
|
+
clearTimeout(timer);
|
|
219
|
+
resolve();
|
|
220
|
+
};
|
|
221
|
+
});
|
|
222
|
+
|
|
223
|
+
try {
|
|
224
|
+
await this.openSSEStream(url);
|
|
225
|
+
await endpointReady;
|
|
226
|
+
} catch (e) {
|
|
227
|
+
this.log?.warn("mcp_sse_connect_failed", {
|
|
228
|
+
server: this.config.name,
|
|
229
|
+
error: String(e),
|
|
230
|
+
});
|
|
231
|
+
await this.close().catch(() => {});
|
|
232
|
+
return [];
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
try {
|
|
236
|
+
const initResp = await this.requestSSE("initialize", {
|
|
237
|
+
protocolVersion: MCP_PROTOCOL_VERSION,
|
|
238
|
+
capabilities: {},
|
|
239
|
+
clientInfo: CLIENT_INFO,
|
|
240
|
+
});
|
|
241
|
+
if (!initResp || initResp.error) {
|
|
242
|
+
return [];
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
// Fire-and-forget the initialized notification (no id → no response).
|
|
246
|
+
this.postJson({
|
|
247
|
+
jsonrpc: "2.0",
|
|
248
|
+
method: "notifications/initialized",
|
|
249
|
+
params: {},
|
|
250
|
+
}).catch(() => {});
|
|
251
|
+
|
|
252
|
+
const toolsResp = await this.requestSSE("tools/list", {});
|
|
253
|
+
if (toolsResp && toolsResp.result) {
|
|
254
|
+
this.serverTools = toolsResp.result.tools || [];
|
|
255
|
+
}
|
|
256
|
+
return this.serverTools;
|
|
257
|
+
} catch (err) {
|
|
258
|
+
this.log?.warn("mcp_sse_init_failed", {
|
|
259
|
+
server: this.config.name,
|
|
260
|
+
error: String(err),
|
|
261
|
+
});
|
|
262
|
+
await this.close().catch(() => {});
|
|
263
|
+
return [];
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
|
|
267
|
+
/**
|
|
268
|
+
* Open the SSE stream and dispatch parsed events. Resolves once the HTTP
|
|
269
|
+
* connection is established (not when it closes).
|
|
270
|
+
*/
|
|
271
|
+
private async openSSEStream(url: string): Promise<void> {
|
|
272
|
+
const controller = new AbortController();
|
|
273
|
+
this.sseAbort = controller;
|
|
274
|
+
|
|
275
|
+
const resp = await axios.get(url, {
|
|
276
|
+
responseType: "stream",
|
|
277
|
+
signal: controller.signal,
|
|
278
|
+
headers: {
|
|
279
|
+
Accept: "text/event-stream",
|
|
280
|
+
...(this.config.env || {}),
|
|
281
|
+
},
|
|
282
|
+
timeout: 0,
|
|
283
|
+
});
|
|
284
|
+
this.sseResponse = resp.data;
|
|
285
|
+
|
|
286
|
+
let buffer = "";
|
|
287
|
+
resp.data.on("data", (chunk: Buffer) => {
|
|
288
|
+
buffer += chunk.toString("utf-8");
|
|
289
|
+
// SSE events are separated by a blank line.
|
|
290
|
+
let sep: number;
|
|
291
|
+
while ((sep = buffer.indexOf("\n\n")) !== -1) {
|
|
292
|
+
const rawEvent = buffer.slice(0, sep);
|
|
293
|
+
buffer = buffer.slice(sep + 2);
|
|
294
|
+
this.handleSSEEvent(rawEvent, url);
|
|
295
|
+
}
|
|
296
|
+
});
|
|
297
|
+
|
|
298
|
+
resp.data.on("end", () => this.failPendingSSE("MCP SSE stream closed"));
|
|
299
|
+
resp.data.on("error", (err: Error) =>
|
|
300
|
+
this.failPendingSSE(`MCP SSE stream error: ${err.message}`)
|
|
301
|
+
);
|
|
302
|
+
}
|
|
303
|
+
|
|
304
|
+
/**
|
|
305
|
+
* Parse one raw SSE event block (`event:`/`data:` lines) and dispatch it.
|
|
306
|
+
*/
|
|
307
|
+
private handleSSEEvent(rawEvent: string, baseUrl: string): void {
|
|
308
|
+
let eventName = "message";
|
|
309
|
+
const dataLines: string[] = [];
|
|
310
|
+
for (const line of rawEvent.split("\n")) {
|
|
311
|
+
if (line.startsWith("event:")) {
|
|
312
|
+
eventName = line.slice(6).trim();
|
|
313
|
+
} else if (line.startsWith("data:")) {
|
|
314
|
+
dataLines.push(line.slice(5).trimStart());
|
|
315
|
+
}
|
|
316
|
+
}
|
|
317
|
+
const data = dataLines.join("\n");
|
|
318
|
+
if (!data) {
|
|
319
|
+
return;
|
|
320
|
+
}
|
|
321
|
+
|
|
322
|
+
if (eventName === "endpoint") {
|
|
323
|
+
// `data` is the (possibly relative) URL to POST messages to.
|
|
324
|
+
try {
|
|
325
|
+
this.sseMessageUrl = new URL(data, baseUrl).toString();
|
|
326
|
+
} catch {
|
|
327
|
+
this.sseMessageUrl = data;
|
|
328
|
+
}
|
|
329
|
+
this.sseEndpointResolver?.();
|
|
330
|
+
this.sseEndpointResolver = null;
|
|
331
|
+
return;
|
|
332
|
+
}
|
|
333
|
+
|
|
334
|
+
// event: message (or default) — a JSON-RPC response/notification.
|
|
335
|
+
const msg = this.parseJsonLine(data);
|
|
336
|
+
if (!msg) {
|
|
337
|
+
return;
|
|
338
|
+
}
|
|
339
|
+
const msgId = msg.id;
|
|
340
|
+
if (msgId === undefined || msgId === null) {
|
|
341
|
+
return;
|
|
342
|
+
}
|
|
343
|
+
const pending = this.pending.get(msgId);
|
|
344
|
+
if (pending) {
|
|
345
|
+
clearTimeout(pending.timer);
|
|
346
|
+
pending.resolve(msg);
|
|
347
|
+
this.pending.delete(msgId);
|
|
348
|
+
}
|
|
349
|
+
}
|
|
350
|
+
|
|
351
|
+
/**
|
|
352
|
+
* Reject every in-flight SSE request (stream closed or errored).
|
|
353
|
+
*/
|
|
354
|
+
private failPendingSSE(reason: string): void {
|
|
355
|
+
for (const [id, { reject, timer }] of this.pending) {
|
|
356
|
+
clearTimeout(timer);
|
|
357
|
+
reject(new Error(reason));
|
|
358
|
+
this.pending.delete(id);
|
|
359
|
+
}
|
|
200
360
|
}
|
|
201
361
|
|
|
202
362
|
/**
|
|
@@ -431,15 +591,22 @@ export class MCPClient {
|
|
|
431
591
|
}
|
|
432
592
|
|
|
433
593
|
/**
|
|
434
|
-
* POST JSON data
|
|
594
|
+
* POST JSON-RPC data to the SSE message endpoint. The actual response
|
|
595
|
+
* arrives asynchronously over the event stream (see handleSSEEvent), so
|
|
596
|
+
* this only confirms the message was accepted by the server.
|
|
435
597
|
*/
|
|
436
|
-
private async postJson(
|
|
598
|
+
private async postJson(data: JsonRpcMessage): Promise<void> {
|
|
437
599
|
if (!this.sseMessageUrl) {
|
|
438
600
|
throw new Error("SSE message URL not set");
|
|
439
601
|
}
|
|
440
602
|
|
|
441
|
-
|
|
442
|
-
|
|
603
|
+
await axios.post(this.sseMessageUrl, data, {
|
|
604
|
+
headers: {
|
|
605
|
+
"Content-Type": "application/json",
|
|
606
|
+
...(this.config.env || {}),
|
|
607
|
+
},
|
|
608
|
+
timeout: 10000,
|
|
609
|
+
});
|
|
443
610
|
}
|
|
444
611
|
|
|
445
612
|
/**
|
|
@@ -542,8 +709,17 @@ export class MCPClient {
|
|
|
542
709
|
}
|
|
543
710
|
|
|
544
711
|
// Close SSE response if exists
|
|
712
|
+
if (this.sseAbort) {
|
|
713
|
+
try {
|
|
714
|
+
this.sseAbort.abort();
|
|
715
|
+
} catch {
|
|
716
|
+
// Ignore
|
|
717
|
+
}
|
|
718
|
+
this.sseAbort = null;
|
|
719
|
+
}
|
|
545
720
|
if (this.sseResponse) {
|
|
546
721
|
try {
|
|
722
|
+
this.sseResponse.destroy?.();
|
|
547
723
|
await this.sseResponse.close?.();
|
|
548
724
|
} catch {
|
|
549
725
|
// Ignore
|
|
@@ -551,6 +727,7 @@ export class MCPClient {
|
|
|
551
727
|
this.sseResponse = null;
|
|
552
728
|
}
|
|
553
729
|
|
|
730
|
+
this.sseEndpointResolver = null;
|
|
554
731
|
this.sseMessageUrl = "";
|
|
555
732
|
}
|
|
556
733
|
}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP SSE transport — integration test against a local mock SSE server.
|
|
3
|
+
*
|
|
4
|
+
* Exercises the full handshake: GET event-stream → `endpoint` event →
|
|
5
|
+
* initialize → tools/list → tools/call, with every response delivered back
|
|
6
|
+
* over the persistent SSE stream and correlated by JSON-RPC id.
|
|
7
|
+
*/
|
|
8
|
+
import { describe, it, expect, afterEach } from "vitest";
|
|
9
|
+
import * as http from "http";
|
|
10
|
+
import { AddressInfo } from "net";
|
|
11
|
+
import { MCPClient } from "../src/core/mcp";
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* A minimal MCP-over-SSE server: one event-stream connection, a POST endpoint
|
|
15
|
+
* that echoes JSON-RPC responses back over that stream.
|
|
16
|
+
*/
|
|
17
|
+
function startMockSSEServer(): Promise<{ url: string; close: () => void }> {
|
|
18
|
+
let sseRes: http.ServerResponse | null = null;
|
|
19
|
+
|
|
20
|
+
const server = http.createServer((req, res) => {
|
|
21
|
+
if (req.method === "GET") {
|
|
22
|
+
res.writeHead(200, {
|
|
23
|
+
"Content-Type": "text/event-stream",
|
|
24
|
+
"Cache-Control": "no-cache",
|
|
25
|
+
Connection: "keep-alive",
|
|
26
|
+
});
|
|
27
|
+
sseRes = res;
|
|
28
|
+
// Advertise the message endpoint (relative path, resolved by the client).
|
|
29
|
+
res.write("event: endpoint\ndata: /messages\n\n");
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
if (req.method === "POST") {
|
|
34
|
+
let body = "";
|
|
35
|
+
req.on("data", (c) => (body += c));
|
|
36
|
+
req.on("end", () => {
|
|
37
|
+
res.writeHead(202).end();
|
|
38
|
+
const msg = JSON.parse(body);
|
|
39
|
+
if (msg.id === undefined || msg.id === null) return; // notification
|
|
40
|
+
const reply = (result: unknown) => {
|
|
41
|
+
sseRes?.write(
|
|
42
|
+
`event: message\ndata: ${JSON.stringify({ jsonrpc: "2.0", id: msg.id, result })}\n\n`
|
|
43
|
+
);
|
|
44
|
+
};
|
|
45
|
+
if (msg.method === "initialize") {
|
|
46
|
+
reply({ protocolVersion: "2025-03-26", capabilities: {} });
|
|
47
|
+
} else if (msg.method === "tools/list") {
|
|
48
|
+
reply({ tools: [{ name: "echo", description: "echo back" }] });
|
|
49
|
+
} else if (msg.method === "tools/call") {
|
|
50
|
+
reply({ content: [{ type: "text", text: `hi ${msg.params.arguments.who}` }] });
|
|
51
|
+
} else if (msg.method === "ping") {
|
|
52
|
+
reply({});
|
|
53
|
+
}
|
|
54
|
+
});
|
|
55
|
+
return;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
res.writeHead(404).end();
|
|
59
|
+
});
|
|
60
|
+
|
|
61
|
+
return new Promise((resolve) => {
|
|
62
|
+
server.listen(0, "127.0.0.1", () => {
|
|
63
|
+
const port = (server.address() as AddressInfo).port;
|
|
64
|
+
resolve({
|
|
65
|
+
url: `http://127.0.0.1:${port}/sse`,
|
|
66
|
+
close: () => {
|
|
67
|
+
sseRes?.end();
|
|
68
|
+
server.close();
|
|
69
|
+
},
|
|
70
|
+
});
|
|
71
|
+
});
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
describe("MCP SSE transport", () => {
|
|
76
|
+
let mock: { url: string; close: () => void } | null = null;
|
|
77
|
+
let client: MCPClient | null = null;
|
|
78
|
+
|
|
79
|
+
afterEach(async () => {
|
|
80
|
+
await client?.close();
|
|
81
|
+
mock?.close();
|
|
82
|
+
client = null;
|
|
83
|
+
mock = null;
|
|
84
|
+
});
|
|
85
|
+
|
|
86
|
+
it("completes the endpoint handshake and lists tools", async () => {
|
|
87
|
+
mock = await startMockSSEServer();
|
|
88
|
+
client = new MCPClient({ name: "mock", url: mock.url });
|
|
89
|
+
|
|
90
|
+
const tools = await client.initialize();
|
|
91
|
+
expect(tools.map((t) => t.name)).toEqual(["echo"]);
|
|
92
|
+
expect(client.getToolDefinitions()).toHaveLength(1);
|
|
93
|
+
});
|
|
94
|
+
|
|
95
|
+
it("calls a tool and extracts the text result over the stream", async () => {
|
|
96
|
+
mock = await startMockSSEServer();
|
|
97
|
+
client = new MCPClient({ name: "mock", url: mock.url });
|
|
98
|
+
|
|
99
|
+
await client.initialize();
|
|
100
|
+
const result = await client.callTool("echo", { who: "skyloom" });
|
|
101
|
+
expect(result).toBe("hi skyloom");
|
|
102
|
+
});
|
|
103
|
+
|
|
104
|
+
it("reports healthy after the handshake via an SSE ping round-trip", async () => {
|
|
105
|
+
mock = await startMockSSEServer();
|
|
106
|
+
client = new MCPClient({ name: "mock", url: mock.url });
|
|
107
|
+
|
|
108
|
+
await client.initialize();
|
|
109
|
+
const health = await client.healthCheck();
|
|
110
|
+
expect(health.healthy).toBe(true);
|
|
111
|
+
});
|
|
112
|
+
});
|
package/tests/skill.test.ts
CHANGED
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
import { describe, it, expect } from 'vitest';
|
|
5
5
|
import * as fs from 'fs';
|
|
6
6
|
import * as path from 'path';
|
|
7
|
+
import * as os from 'os';
|
|
7
8
|
|
|
8
9
|
describe('Skill', () => {
|
|
9
10
|
it('creates a skill with model override', async () => {
|
|
@@ -42,7 +43,7 @@ describe('Skill', () => {
|
|
|
42
43
|
describe('Skill.fromMarkdown', () => {
|
|
43
44
|
it('loads skill with YAML frontmatter', async () => {
|
|
44
45
|
const { Skill } = await import('../src/core/skill');
|
|
45
|
-
const tmpDir = fs.mkdtempSync('skill-test-');
|
|
46
|
+
const tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), 'skill-test-'));
|
|
46
47
|
const mdPath = path.join(tmpDir, 'test.md');
|
|
47
48
|
fs.writeFileSync(mdPath, `---
|
|
48
49
|
name: test_skill
|
|
@@ -69,7 +70,7 @@ This is a test skill.
|
|
|
69
70
|
|
|
70
71
|
it('supports string path', async () => {
|
|
71
72
|
const { Skill } = await import('../src/core/skill');
|
|
72
|
-
const tmpDir = fs.mkdtempSync('skill-test-');
|
|
73
|
+
const tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), 'skill-test-'));
|
|
73
74
|
const mdPath = path.join(tmpDir, 'x.md');
|
|
74
75
|
fs.writeFileSync(mdPath, '---\nname: x\ndescription: x\n---\n\nBody.', 'utf-8');
|
|
75
76
|
const s = Skill.fromMarkdown(mdPath);
|
|
@@ -83,7 +84,7 @@ This is a test skill.
|
|
|
83
84
|
|
|
84
85
|
it('derives triggers from quoted descriptions', async () => {
|
|
85
86
|
const { Skill } = await import('../src/core/skill');
|
|
86
|
-
const tmpDir = fs.mkdtempSync('skill-test-');
|
|
87
|
+
const tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), 'skill-test-'));
|
|
87
88
|
const mdPath = path.join(tmpDir, 'pptx.md');
|
|
88
89
|
fs.writeFileSync(mdPath, `---
|
|
89
90
|
name: pptx
|
|
@@ -108,7 +109,7 @@ Body.`, 'utf-8');
|
|
|
108
109
|
|
|
109
110
|
it('small body loaded in full', async () => {
|
|
110
111
|
const { Skill } = await import('../src/core/skill');
|
|
111
|
-
const tmpDir = fs.mkdtempSync('skill-test-');
|
|
112
|
+
const tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), 'skill-test-'));
|
|
112
113
|
const mdPath = path.join(tmpDir, 'small.md');
|
|
113
114
|
fs.writeFileSync(mdPath, '---\nname: small\ndescription: x\n---\n\n# Small Skill\n\nThis fits inline easily.', 'utf-8');
|
|
114
115
|
const s = Skill.fromMarkdown(mdPath);
|
|
@@ -122,7 +123,7 @@ Body.`, 'utf-8');
|
|
|
122
123
|
|
|
123
124
|
it('large body truncated to head', async () => {
|
|
124
125
|
const { Skill } = await import('../src/core/skill');
|
|
125
|
-
const tmpDir = fs.mkdtempSync('skill-test-');
|
|
126
|
+
const tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), 'skill-test-'));
|
|
126
127
|
const mdPath = path.join(tmpDir, 'big.md');
|
|
127
128
|
|
|
128
129
|
let body = '# Big Skill\n\n## Quick Reference\nFirst section content.\n\n';
|