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 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=
@@ -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: MIT](https://img.shields.io/badge/license-MIT-3a7a6e.svg)](LICENSE)
12
12
  [![Node](https://img.shields.io/badge/node-%3E%3D18-3a7a6e)](https://nodejs.org)
13
13
  [![TypeScript](https://img.shields.io/badge/TypeScript-strict-3178c6)](https://www.typescriptlang.org)
14
- [![Tests](https://img.shields.io/badge/tests-240%20passed-2ecc71)](https://github.com/susurrune/skyloom-ts/tree/main/tests)
14
+ [![Tests](https://img.shields.io/badge/tests-530%20passed-2ecc71)](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/ 24 套件 · 240 Vitest 用例
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 (24 套件 · 240 用例)
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.14.7** · 全功能迁移自 [Python 原版](https://github.com/susurrune/skyloom)
608
+ [MIT License](LICENSE) · **v1.26.0** · 全功能迁移自 [Python 原版](https://github.com/susurrune/skyloom)
@@ -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 via HTTP (SSE).
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
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../../src/core/mcp.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../../src/core/mcp.ts"],"names":[],"mappings":"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"}
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
- // SSE implementation would connect via HTTP GET to /sse endpoint
178
- // and receive endpoint information, then POST to message endpoint.
179
- // For now, return empty array as placeholder.
180
- return [];
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 via HTTP (SSE).
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(_data) {
538
+ async postJson(data) {
388
539
  if (!this.sseMessageUrl) {
389
540
  throw new Error("SSE message URL not set");
390
541
  }
391
- // Placeholder: in real implementation would use fetch() to POST
392
- // For now, just return empty promise
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
  }
@@ -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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "skyloom",
3
- "version": "1.25.0",
3
+ "version": "1.26.0",
4
4
  "description": "天空织机 Skyloom — 6 weather-themed AI agents: Fog, Rain, Frost, Snow, Dew, Fair",
5
5
  "preferGlobal": true,
6
6
  "type": "commonjs",
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
- // SSE implementation would connect via HTTP GET to /sse endpoint
197
- // and receive endpoint information, then POST to message endpoint.
198
- // For now, return empty array as placeholder.
199
- return [];
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 via HTTP (SSE).
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(_data: JsonRpcMessage): Promise<void> {
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
- // Placeholder: in real implementation would use fetch() to POST
442
- // For now, just return empty promise
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
+ });
@@ -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';
@@ -1,10 +0,0 @@
1
- ---
2
- name: test_skill
3
- description: A test
4
- model: claude-sonnet-4-6
5
- temperature: 0.5
6
- max_tokens: 8192
7
- ---
8
-
9
- ## Test Skill
10
- This is a test skill.