skyloom 1.24.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/.github/workflows/ci.yml +3 -0
- package/CONVERSION_PLAN.md +5 -0
- package/LICENSE +21 -0
- package/README.md +4 -4
- package/dist/cli/main.js +2 -22
- package/dist/cli/main.js.map +1 -1
- package/dist/cli/tui.d.ts.map +1 -1
- package/dist/cli/tui.js +0 -6
- package/dist/cli/tui.js.map +1 -1
- package/dist/core/diff.d.ts.map +1 -1
- package/dist/core/diff.js +0 -1
- package/dist/core/diff.js.map +1 -1
- package/dist/core/evolve.d.ts.map +1 -1
- package/dist/core/evolve.js +0 -9
- package/dist/core/evolve.js.map +1 -1
- package/dist/core/graph.d.ts +1 -1
- package/dist/core/graph.d.ts.map +1 -1
- package/dist/core/graph.js +1 -1
- package/dist/core/graph.js.map +1 -1
- package/dist/core/llm.d.ts +3 -0
- package/dist/core/llm.d.ts.map +1 -1
- package/dist/core/llm.js +4 -27
- package/dist/core/llm.js.map +1 -1
- 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/dist/core/sandbox.d.ts.map +1 -1
- package/dist/core/sandbox.js +0 -2
- package/dist/core/sandbox.js.map +1 -1
- package/dist/core/schemas.d.ts +1 -1
- package/dist/core/schemas.d.ts.map +1 -1
- package/dist/core/schemas.js +1 -23
- package/dist/core/schemas.js.map +1 -1
- package/dist/core/skill.d.ts.map +1 -1
- package/dist/core/skill.js +0 -1
- package/dist/core/skill.js.map +1 -1
- package/dist/gateway/qr.d.ts.map +1 -1
- package/dist/gateway/qr.js +0 -1
- package/dist/gateway/qr.js.map +1 -1
- package/dist/tools/computer.d.ts.map +1 -1
- package/dist/tools/computer.js.map +1 -1
- package/dist/web/server.d.ts.map +1 -1
- package/dist/web/server.js +0 -2
- package/dist/web/server.js.map +1 -1
- package/eslint.config.js +62 -0
- package/package.json +1 -1
- package/src/cli/main.ts +3 -22
- package/src/cli/tui.ts +0 -2
- package/src/core/diff.ts +0 -1
- package/src/core/evolve.ts +0 -6
- package/src/core/graph.ts +1 -1
- package/src/core/llm.ts +4 -33
- package/src/core/mcp.ts +185 -8
- package/src/core/sandbox.ts +1 -4
- package/src/core/schemas.ts +1 -25
- package/src/core/skill.ts +0 -1
- package/src/gateway/qr.ts +0 -1
- package/src/tools/computer.ts +2 -2
- package/src/web/server.ts +0 -3
- package/tests/factory.test.ts +56 -0
- package/tests/mcp_sse.test.ts +112 -0
- package/tests/pipelines.test.ts +118 -0
- package/tests/skill.test.ts +6 -5
- package/skill-test-ty2fOA/test.md +0 -10
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"computer.js","sourceRoot":"","sources":["../../src/tools/computer.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"computer.js","sourceRoot":"","sources":["../../src/tools/computer.ts"],"names":[],"mappings":"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"}
|
package/dist/web/server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/web/server.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/web/server.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AASH,wBAAsB,cAAc,CAAC,IAAI,GAAE,MAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAuDvE"}
|
package/dist/web/server.js
CHANGED
|
@@ -10,9 +10,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
10
10
|
exports.startWebServer = startWebServer;
|
|
11
11
|
const http_1 = require("http");
|
|
12
12
|
const factory_1 = require("../core/factory");
|
|
13
|
-
const logger_1 = require("../core/logger");
|
|
14
13
|
const ui_1 = require("./ui");
|
|
15
|
-
const log = (0, logger_1.getLogger)("web-server");
|
|
16
14
|
/* ──────────────────────────────────────────────
|
|
17
15
|
Server
|
|
18
16
|
────────────────────────────────────────────── */
|
package/dist/web/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/web/server.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/web/server.ts"],"names":[],"mappings":"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"}
|
package/eslint.config.js
ADDED
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
// ESLint 9 flat config. Replaces the missing config that made `npm run lint` a
|
|
2
|
+
// silent no-op. Scope: src/ TypeScript. We run WITHOUT type-aware linting (no
|
|
3
|
+
// parserOptions.project) so it's fast and doesn't need a second TS program;
|
|
4
|
+
// the strict tsconfig already does the type checking.
|
|
5
|
+
//
|
|
6
|
+
// Philosophy: errors catch real bugs (unused vars, unsafe patterns); the large
|
|
7
|
+
// existing `any` surface and a few stylistic rules are warnings so the gate is
|
|
8
|
+
// honest without forcing a mass rewrite to go green. Tighten over time.
|
|
9
|
+
|
|
10
|
+
const tsParser = require('@typescript-eslint/parser');
|
|
11
|
+
const tsPlugin = require('@typescript-eslint/eslint-plugin');
|
|
12
|
+
|
|
13
|
+
module.exports = [
|
|
14
|
+
{
|
|
15
|
+
ignores: ['dist/**', 'node_modules/**', 'coverage/**', '**/*.d.ts'],
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
files: ['src/**/*.ts'],
|
|
19
|
+
languageOptions: {
|
|
20
|
+
parser: tsParser,
|
|
21
|
+
ecmaVersion: 2022,
|
|
22
|
+
sourceType: 'module',
|
|
23
|
+
parserOptions: { ecmaVersion: 2022, sourceType: 'module' },
|
|
24
|
+
globals: {
|
|
25
|
+
process: 'readonly', console: 'readonly', Buffer: 'readonly',
|
|
26
|
+
__dirname: 'readonly', __filename: 'readonly', module: 'writable',
|
|
27
|
+
require: 'readonly', exports: 'writable', global: 'readonly',
|
|
28
|
+
setTimeout: 'readonly', clearTimeout: 'readonly',
|
|
29
|
+
setInterval: 'readonly', clearInterval: 'readonly',
|
|
30
|
+
URL: 'readonly', URLSearchParams: 'readonly', fetch: 'readonly',
|
|
31
|
+
AbortController: 'readonly', AbortSignal: 'readonly',
|
|
32
|
+
FormData: 'readonly', Blob: 'readonly', TextEncoder: 'readonly', TextDecoder: 'readonly',
|
|
33
|
+
performance: 'readonly', NodeJS: 'readonly', BufferEncoding: 'readonly',
|
|
34
|
+
},
|
|
35
|
+
},
|
|
36
|
+
plugins: { '@typescript-eslint': tsPlugin },
|
|
37
|
+
rules: {
|
|
38
|
+
// ── Real-bug errors ──
|
|
39
|
+
'no-unused-vars': 'off', // superseded by the TS-aware version below
|
|
40
|
+
'@typescript-eslint/no-unused-vars': ['error', {
|
|
41
|
+
argsIgnorePattern: '^_', varsIgnorePattern: '^_', caughtErrors: 'none',
|
|
42
|
+
ignoreRestSiblings: true,
|
|
43
|
+
}],
|
|
44
|
+
'no-undef': 'error',
|
|
45
|
+
'no-dupe-keys': 'error',
|
|
46
|
+
'no-unreachable': 'error',
|
|
47
|
+
'no-constant-condition': ['error', { checkLoops: false }],
|
|
48
|
+
'no-fallthrough': 'error',
|
|
49
|
+
'no-self-assign': 'error',
|
|
50
|
+
'no-unsafe-negation': 'error',
|
|
51
|
+
'use-isnan': 'error',
|
|
52
|
+
'valid-typeof': 'error',
|
|
53
|
+
'no-cond-assign': ['error', 'except-parens'],
|
|
54
|
+
|
|
55
|
+
// ── Debt warnings (honest, not blocking) ──
|
|
56
|
+
'@typescript-eslint/no-explicit-any': 'warn',
|
|
57
|
+
'no-empty': ['warn', { allowEmptyCatch: true }],
|
|
58
|
+
'prefer-const': 'warn',
|
|
59
|
+
'no-var': 'warn',
|
|
60
|
+
},
|
|
61
|
+
},
|
|
62
|
+
];
|
package/package.json
CHANGED
package/src/cli/main.ts
CHANGED
|
@@ -10,9 +10,8 @@ import { createSystemContext, orchestrateTask } from "../core/factory";
|
|
|
10
10
|
import { loadConfig, USER_CONFIG_DIR } from "../core/config";
|
|
11
11
|
import { listProviders, modelsFor, providerLabel, validateModel } from "../core/catalog";
|
|
12
12
|
import { agentTheme } from "../core/theme";
|
|
13
|
-
import { classify } from "../core/router";
|
|
14
13
|
import { InteractiveMode, ModeController } from "./mode";
|
|
15
|
-
import { readLine, renderPalette, StreamRenderer
|
|
14
|
+
import { readLine, renderPalette, StreamRenderer } from "./tui";
|
|
16
15
|
import { loomChat } from "./loom_chat";
|
|
17
16
|
|
|
18
17
|
const MODE = new ModeController();
|
|
@@ -73,18 +72,6 @@ function welcome(agent: any) {
|
|
|
73
72
|
process.stdout.write(chalk.dim(" /help for commands · /quit to exit\n\n"));
|
|
74
73
|
}
|
|
75
74
|
|
|
76
|
-
function statusBar(agent: any, ctx: any): string {
|
|
77
|
-
try {
|
|
78
|
-
const cu = agent.contextUsage();
|
|
79
|
-
const pct = cu.pct || 0;
|
|
80
|
-
const bar = pct < 50 ? chalk.green : pct < 80 ? chalk.yellow : chalk.red;
|
|
81
|
-
const filled = Math.round(pct / 10);
|
|
82
|
-
const ctxBar = `${bar("█".repeat(filled) + "░".repeat(10 - filled))} ${pct}%`;
|
|
83
|
-
const cost = formatCost(ctx.llm.getTotalCost());
|
|
84
|
-
return chalk.dim(`${ctxBar} · ${cost} · ${cu.model || "?"}`);
|
|
85
|
-
} catch { return ""; }
|
|
86
|
-
}
|
|
87
|
-
|
|
88
75
|
function formatCost(c: number): string {
|
|
89
76
|
if (c >= 1) return chalk.yellow(`$${c.toFixed(2)}`);
|
|
90
77
|
if (c >= 0.01) return chalk.yellow(`$${c.toFixed(4)}`);
|
|
@@ -119,11 +106,6 @@ async function streamResponse(agent: any, input: string): Promise<void> {
|
|
|
119
106
|
const header = () => { if (!headerShown) { out.write("\n " + chalk.bold.hex(theme.hex)(`${theme.symbol} ${theme.kanji}`) + chalk.hex(theme.hex)(` ${theme.name}`) + "\n\n"); headerShown = true; } };
|
|
120
107
|
const endBlock = () => { if (renderer) { renderer.flush(); renderer = null; out.write("\n"); } };
|
|
121
108
|
|
|
122
|
-
// All content passes through this cleaner before display
|
|
123
|
-
const writeClean = (text: string) => {
|
|
124
|
-
if (renderer) renderer.write(text);
|
|
125
|
-
};
|
|
126
|
-
|
|
127
109
|
// ── Ctrl-C interrupts this turn (keeps partial output); a 2nd Ctrl-C exits. ──
|
|
128
110
|
const controller = new AbortController();
|
|
129
111
|
let interrupted = false;
|
|
@@ -374,7 +356,7 @@ async function chat(agentName: string, modelOverride?: string, classic?: boolean
|
|
|
374
356
|
|
|
375
357
|
// Wire up security approval — prompt user for HIGH/CRITICAL operations
|
|
376
358
|
try {
|
|
377
|
-
const { getSecurity,
|
|
359
|
+
const { getSecurity, PERMISSION_MODE_ALIASES } = require("../core/security");
|
|
378
360
|
const sec = getSecurity();
|
|
379
361
|
// Honor a configured permission mode (config.yaml cli.approvalMode), mapped
|
|
380
362
|
// through the same aliases as /perm.
|
|
@@ -405,7 +387,6 @@ async function chat(agentName: string, modelOverride?: string, classic?: boolean
|
|
|
405
387
|
return; // loomChat exits the process itself
|
|
406
388
|
}
|
|
407
389
|
|
|
408
|
-
// eslint-disable-next-line prefer-const
|
|
409
390
|
let currentAgent = agent; // mutable for agent switching
|
|
410
391
|
let lastSessions: any[] = []; // index→session map for /resume <n>
|
|
411
392
|
welcome(agent);
|
|
@@ -599,7 +580,7 @@ async function chat(agentName: string, modelOverride?: string, classic?: boolean
|
|
|
599
580
|
continue;
|
|
600
581
|
}
|
|
601
582
|
if (cmdL === "/models" || cmdL.startsWith("/models ")) {
|
|
602
|
-
const { listProviders, modelsFor, providerLabel
|
|
583
|
+
const { listProviders, modelsFor, providerLabel } = require("../core/catalog");
|
|
603
584
|
const args = inp.split(/\s+/).slice(1);
|
|
604
585
|
const filter = args[0]?.toLowerCase() || "";
|
|
605
586
|
process.stdout.write(chalk.bold("\n ✦ 模型目录 · Model Catalog\n"));
|
package/src/cli/tui.ts
CHANGED
|
@@ -14,8 +14,6 @@ import chalk from "chalk";
|
|
|
14
14
|
import { agentTheme, PALETTE } from "../core/theme";
|
|
15
15
|
import { registry } from "../core/commands";
|
|
16
16
|
|
|
17
|
-
const TUI_VERSION = (() => { try { return require("../../package.json").version; } catch { return ""; } })();
|
|
18
|
-
|
|
19
17
|
export interface TUIContext {
|
|
20
18
|
agent: any;
|
|
21
19
|
agents: Map<string, any>;
|
package/src/core/diff.ts
CHANGED
|
@@ -60,7 +60,6 @@ export function unifiedDiff(oldStr: string, newStr: string, opts: DiffOptions =
|
|
|
60
60
|
// Context window bounds.
|
|
61
61
|
const ctxStart = Math.max(0, pre - context);
|
|
62
62
|
const oldCtxAfterStart = oldLines.length - suf;
|
|
63
|
-
const newCtxAfterStart = newLines.length - suf;
|
|
64
63
|
const oldCtxAfter = oldLines.slice(oldCtxAfterStart, oldCtxAfterStart + context);
|
|
65
64
|
const leading = oldLines.slice(ctxStart, pre);
|
|
66
65
|
|
package/src/core/evolve.ts
CHANGED
|
@@ -121,12 +121,6 @@ export function analyzeFailures(
|
|
|
121
121
|
}
|
|
122
122
|
}
|
|
123
123
|
|
|
124
|
-
// General rule: if failure rate > 20%, suggest self-review
|
|
125
|
-
const recentExperiences = recent.filter(e => {
|
|
126
|
-
try { return new Date(e.lastSeen).getTime() > Date.now() - 3 * 86400000; }
|
|
127
|
-
catch { return false; }
|
|
128
|
-
});
|
|
129
|
-
|
|
130
124
|
// Deduplicate suggestions
|
|
131
125
|
const seen = new Set<string>();
|
|
132
126
|
const uniqueDiffs = suggestedDiffs.filter(d => {
|
package/src/core/graph.ts
CHANGED
|
@@ -140,7 +140,7 @@ const RELATION_PATTERNS: Array<[RegExp, string]> = [
|
|
|
140
140
|
[/(\w+) (?:file|path|文件|路径) (?:在|为|at) (.+?)(?:[。,,.\n]|$)/gi, "located_at"],
|
|
141
141
|
];
|
|
142
142
|
|
|
143
|
-
export function extractFacts(text: string,
|
|
143
|
+
export function extractFacts(text: string, _agent: string): Array<[string, string, string]> {
|
|
144
144
|
const facts: Array<[string, string, string]> = [];
|
|
145
145
|
for (const [pattern, pred] of RELATION_PATTERNS) {
|
|
146
146
|
let match;
|
package/src/core/llm.ts
CHANGED
|
@@ -355,37 +355,6 @@ const FALLBACK_CHAINS: Map<string, string[]> = new Map([
|
|
|
355
355
|
/**
|
|
356
356
|
* HTTP status codes that are considered transient errors (worth retrying).
|
|
357
357
|
*/
|
|
358
|
-
const RETRYABLE_STATUSES = new Set([408, 425, 429, 500, 502, 503, 504]);
|
|
359
|
-
|
|
360
|
-
/**
|
|
361
|
-
* Check if an exception is worth retrying.
|
|
362
|
-
*/
|
|
363
|
-
function isTransientError(err: unknown): boolean {
|
|
364
|
-
if (err instanceof Error) {
|
|
365
|
-
const status =
|
|
366
|
-
(err as any).status_code || (err as any).http_status || 0;
|
|
367
|
-
if (status && RETRYABLE_STATUSES.has(status)) {
|
|
368
|
-
return true;
|
|
369
|
-
}
|
|
370
|
-
|
|
371
|
-
if (err.name === "TimeoutError") {
|
|
372
|
-
return true;
|
|
373
|
-
}
|
|
374
|
-
|
|
375
|
-
const errName = err.constructor.name.toLowerCase();
|
|
376
|
-
return [
|
|
377
|
-
"ratelimiterror",
|
|
378
|
-
"apitimeouterror",
|
|
379
|
-
"apiconnectionerror",
|
|
380
|
-
"serviceunavailableerror",
|
|
381
|
-
"internalservererror",
|
|
382
|
-
"timeout",
|
|
383
|
-
].includes(errName);
|
|
384
|
-
}
|
|
385
|
-
|
|
386
|
-
return false;
|
|
387
|
-
}
|
|
388
|
-
|
|
389
358
|
/**
|
|
390
359
|
* Estimate cost for LLM API call.
|
|
391
360
|
*/
|
|
@@ -704,7 +673,7 @@ export class LLMClient {
|
|
|
704
673
|
messages: Record<string, unknown>[],
|
|
705
674
|
agentName?: string,
|
|
706
675
|
tools?: string[],
|
|
707
|
-
|
|
676
|
+
_stream: boolean = false,
|
|
708
677
|
overrides?: Record<string, unknown>
|
|
709
678
|
): Promise<LLMResponse> {
|
|
710
679
|
const temperature = (overrides?.temperature as number) ?? 0.7;
|
|
@@ -867,7 +836,9 @@ export class LLMClient {
|
|
|
867
836
|
private async *callOpenAIStream(
|
|
868
837
|
m: string, messages: Record<string, unknown>[], tools?: string[], temp?: number, maxTok?: number, signal?: AbortSignal, agentName?: string
|
|
869
838
|
): AsyncGenerator<StreamEvent> {
|
|
870
|
-
|
|
839
|
+
// Honor a per-agent API key override (agents.<name>.api_key) on the
|
|
840
|
+
// streaming path too — previously only the non-streaming path passed it.
|
|
841
|
+
const apiKey = this.getApiKey(m, agentName);
|
|
871
842
|
const baseUrl = this.getBaseUrl(m);
|
|
872
843
|
const body: Record<string, unknown> = {
|
|
873
844
|
model: m, messages, temperature: temp ?? 0.7, max_tokens: maxTok ?? 4096,
|
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
|
}
|
package/src/core/sandbox.ts
CHANGED
|
@@ -6,15 +6,12 @@
|
|
|
6
6
|
* limits, and dangerous command detection BEFORE execution.
|
|
7
7
|
*/
|
|
8
8
|
|
|
9
|
-
import { execSync
|
|
9
|
+
import { execSync } from "child_process";
|
|
10
10
|
import * as fs from "fs";
|
|
11
11
|
import * as path from "path";
|
|
12
12
|
import * as os from "os";
|
|
13
|
-
import { getLogger } from "./logger";
|
|
14
13
|
import { REDLINE_PATTERNS, REDLINE_COMMANDS } from "./security";
|
|
15
14
|
|
|
16
|
-
const log = getLogger("sandbox");
|
|
17
|
-
|
|
18
15
|
/* ═══════════════════════════════════════
|
|
19
16
|
Configuration
|
|
20
17
|
═══════════════════════════════════════ */
|
package/src/core/schemas.ts
CHANGED
|
@@ -78,30 +78,6 @@ export interface MessageSchema {
|
|
|
78
78
|
tool_call_id?: string;
|
|
79
79
|
}
|
|
80
80
|
|
|
81
|
-
/**
|
|
82
|
-
* Coerce a value to a target type with best-effort conversion
|
|
83
|
-
*/
|
|
84
|
-
function coerceType(value: unknown, targetType: string): unknown {
|
|
85
|
-
if (value === null || value === undefined) {
|
|
86
|
-
return value;
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
switch (targetType) {
|
|
90
|
-
case "string":
|
|
91
|
-
return String(value);
|
|
92
|
-
case "number":
|
|
93
|
-
return Number(value);
|
|
94
|
-
case "boolean":
|
|
95
|
-
return Boolean(value);
|
|
96
|
-
case "array":
|
|
97
|
-
return Array.isArray(value) ? value : [];
|
|
98
|
-
case "object":
|
|
99
|
-
return typeof value === "object" ? value : {};
|
|
100
|
-
default:
|
|
101
|
-
return value;
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
|
|
105
81
|
/**
|
|
106
82
|
* Extract JSON object/array from a potentially malformed string
|
|
107
83
|
*/
|
|
@@ -170,7 +146,7 @@ function repairJSON(text: string): string {
|
|
|
170
146
|
*/
|
|
171
147
|
export function parseSchema<T extends Record<string, unknown>>(
|
|
172
148
|
raw: string,
|
|
173
|
-
|
|
149
|
+
_schemaType?: new () => T
|
|
174
150
|
): T {
|
|
175
151
|
if (!raw || !raw.trim()) {
|
|
176
152
|
throw new SchemaValidationError("empty response", raw);
|
package/src/core/skill.ts
CHANGED
|
@@ -245,7 +245,6 @@ function extractSkillHead(body: string, maxChars: number): string {
|
|
|
245
245
|
// Patterns for auto-deriving triggers
|
|
246
246
|
const TRIGGER_QUOTED = /["'"'""]([^"'""\n]{1,40})["'""']/g;
|
|
247
247
|
const TRIGGER_EXT = /(?<![A-Za-z0-9])\.[A-Za-z0-9]{2,6}\b/g;
|
|
248
|
-
const TRIGGER_STRIP = " \t,.;:!?,。、;:!?、。";
|
|
249
248
|
|
|
250
249
|
/**
|
|
251
250
|
* Pull candidate trigger phrases out of a skill description.
|
package/src/gateway/qr.ts
CHANGED
|
@@ -5,7 +5,6 @@
|
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
7
|
// qrcode-terminal ships no types; declare the tiny surface we use.
|
|
8
|
-
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
|
9
8
|
const qrcode: { generate: (text: string, opts: { small?: boolean }, cb: (s: string) => void) => void } =
|
|
10
9
|
require('qrcode-terminal');
|
|
11
10
|
|