@skillfm/local 2.0.10 → 2.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +44 -10
- package/dist/agent-hints 2.js +102 -0
- package/dist/agent-hints.d 2.ts +25 -0
- package/dist/agent-hints.d.ts 2.map +1 -0
- package/dist/agent-hints.js 2.map +1 -0
- package/dist/doctor 2.js +456 -0
- package/dist/doctor.d 2.ts +56 -0
- package/dist/doctor.d.ts 2.map +1 -0
- package/dist/doctor.js 2.map +1 -0
- package/dist/index.js +8 -0
- package/dist/index.js.map +1 -1
- package/dist/mcp-stdio/api-client.d.ts +28 -0
- package/dist/mcp-stdio/api-client.d.ts.map +1 -0
- package/dist/mcp-stdio/api-client.js +123 -0
- package/dist/mcp-stdio/api-client.js.map +1 -0
- package/dist/mcp-stdio/bin.d.ts +3 -0
- package/dist/mcp-stdio/bin.d.ts.map +1 -0
- package/dist/mcp-stdio/bin.js +18 -0
- package/dist/mcp-stdio/bin.js.map +1 -0
- package/dist/mcp-stdio/config.d.ts +6 -0
- package/dist/mcp-stdio/config.d.ts.map +1 -0
- package/dist/mcp-stdio/config.js +26 -0
- package/dist/mcp-stdio/config.js.map +1 -0
- package/dist/mcp-stdio/render-flow.d.ts +53 -0
- package/dist/mcp-stdio/render-flow.d.ts.map +1 -0
- package/dist/mcp-stdio/render-flow.js +70 -0
- package/dist/mcp-stdio/render-flow.js.map +1 -0
- package/dist/mcp-stdio/request-context.d.ts +30 -0
- package/dist/mcp-stdio/request-context.d.ts.map +1 -0
- package/dist/mcp-stdio/request-context.js +78 -0
- package/dist/mcp-stdio/request-context.js.map +1 -0
- package/dist/mcp-stdio/server.d.ts +19 -0
- package/dist/mcp-stdio/server.d.ts.map +1 -0
- package/dist/mcp-stdio/server.js +651 -0
- package/dist/mcp-stdio/server.js.map +1 -0
- package/dist/mcp-stdio 2/api-client.d.ts +28 -0
- package/dist/mcp-stdio 2/api-client.d.ts.map +1 -0
- package/dist/mcp-stdio 2/api-client.js +123 -0
- package/dist/mcp-stdio 2/api-client.js.map +1 -0
- package/dist/mcp-stdio 2/bin.d.ts +3 -0
- package/dist/mcp-stdio 2/bin.d.ts.map +1 -0
- package/dist/mcp-stdio 2/bin.js +18 -0
- package/dist/mcp-stdio 2/bin.js.map +1 -0
- package/dist/mcp-stdio 2/config.d.ts +6 -0
- package/dist/mcp-stdio 2/config.d.ts.map +1 -0
- package/dist/mcp-stdio 2/config.js +26 -0
- package/dist/mcp-stdio 2/config.js.map +1 -0
- package/dist/mcp-stdio 2/render-flow.d.ts +53 -0
- package/dist/mcp-stdio 2/render-flow.d.ts.map +1 -0
- package/dist/mcp-stdio 2/render-flow.js +70 -0
- package/dist/mcp-stdio 2/render-flow.js.map +1 -0
- package/dist/mcp-stdio 2/request-context.d.ts +30 -0
- package/dist/mcp-stdio 2/request-context.d.ts.map +1 -0
- package/dist/mcp-stdio 2/request-context.js +78 -0
- package/dist/mcp-stdio 2/request-context.js.map +1 -0
- package/dist/mcp-stdio 2/server.d.ts +19 -0
- package/dist/mcp-stdio 2/server.d.ts.map +1 -0
- package/dist/mcp-stdio 2/server.js +651 -0
- package/dist/mcp-stdio 2/server.js.map +1 -0
- package/dist/skill-md/template.js +4 -4
- package/dist/soul 2.js +439 -0
- package/dist/soul-security 2.js +197 -0
- package/dist/soul-security.d 2.ts +76 -0
- package/dist/soul-security.d.ts 2.map +1 -0
- package/dist/soul-security.d.ts.map +1 -1
- package/dist/soul-security.js +4 -2
- package/dist/soul-security.js 2.map +1 -0
- package/dist/soul-security.js.map +1 -1
- package/dist/soul.d 2.ts +135 -0
- package/dist/soul.d.ts 2.map +1 -0
- package/dist/soul.js 2.map +1 -0
- package/package.json +18 -4
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/mcp-stdio/server.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import type { RequestContext } from './request-context.js';
|
|
2
|
+
interface RequestOptions {
|
|
3
|
+
method?: 'GET' | 'POST';
|
|
4
|
+
body?: Record<string, unknown>;
|
|
5
|
+
useAuth?: 'brain-key' | 'jwt' | 'none';
|
|
6
|
+
/**
|
|
7
|
+
* 可选:per-request 上下文。HTTP 多租户模式下必传。
|
|
8
|
+
* 未传时回退到模块级 config + 全局 conv-state(stdio 单租户 / tests)。
|
|
9
|
+
*/
|
|
10
|
+
ctx?: RequestContext;
|
|
11
|
+
}
|
|
12
|
+
export declare function getConversationState(): string | null;
|
|
13
|
+
export declare function setConversationState(s: string | null): void;
|
|
14
|
+
/**
|
|
15
|
+
* 把一份反馈结构(nudge / seed / proof)排入下一次出站请求。
|
|
16
|
+
* 一次性消费 — 注入后立即清空, 避免重复发送。
|
|
17
|
+
*/
|
|
18
|
+
export declare function pushConversationFeedback(payload: unknown): void;
|
|
19
|
+
export declare function _resetConversationState(): void;
|
|
20
|
+
export declare class ApiError extends Error {
|
|
21
|
+
status: number;
|
|
22
|
+
envelope: unknown;
|
|
23
|
+
body: unknown;
|
|
24
|
+
constructor(message: string, status: number, envelope?: unknown, body?: unknown);
|
|
25
|
+
}
|
|
26
|
+
export declare function apiCall<T = unknown>(path: string, options?: RequestOptions): Promise<T>;
|
|
27
|
+
export {};
|
|
28
|
+
//# sourceMappingURL=api-client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api-client.d.ts","sourceRoot":"","sources":["../../src/mcp-stdio/api-client.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE3D,UAAU,cAAc;IACtB,MAAM,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;IACxB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,OAAO,CAAC,EAAE,WAAW,GAAG,KAAK,GAAG,MAAM,CAAC;IACvC;;;OAGG;IACH,GAAG,CAAC,EAAE,cAAc,CAAC;CACtB;AAaD,wBAAgB,oBAAoB,IAAI,MAAM,GAAG,IAAI,CAEpD;AAED,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAE3D;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAE/D;AAED,wBAAgB,uBAAuB,IAAI,IAAI,CAG9C;AAMD,qBAAa,QAAS,SAAQ,KAAK;IAGxB,MAAM,EAAE,MAAM;IACd,QAAQ,EAAE,OAAO;IACjB,IAAI,EAAE,OAAO;gBAHpB,OAAO,EAAE,MAAM,EACR,MAAM,EAAE,MAAM,EACd,QAAQ,GAAE,OAAc,EACxB,IAAI,GAAE,OAAc;CAK9B;AAED,wBAAsB,OAAO,CAAC,CAAC,GAAG,OAAO,EACvC,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,cAAmB,GAC3B,OAAO,CAAC,CAAC,CAAC,CAiGZ"}
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
import { config } from './config.js';
|
|
2
|
+
const MAX_RETRIES = 2;
|
|
3
|
+
const TIMEOUT_MS = 120_000; // Brain 管线可能耗时较长
|
|
4
|
+
// ============================================================================
|
|
5
|
+
// Module-level conv-state — 仅给 stdio 单租户/tests 使用
|
|
6
|
+
// HTTP 多租户模式下走 RequestContext.convState(ConvStateStore 按 brainKey 隔离)
|
|
7
|
+
// ============================================================================
|
|
8
|
+
let _convState = null;
|
|
9
|
+
let _convFeedback = null;
|
|
10
|
+
export function getConversationState() {
|
|
11
|
+
return _convState;
|
|
12
|
+
}
|
|
13
|
+
export function setConversationState(s) {
|
|
14
|
+
_convState = s;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* 把一份反馈结构(nudge / seed / proof)排入下一次出站请求。
|
|
18
|
+
* 一次性消费 — 注入后立即清空, 避免重复发送。
|
|
19
|
+
*/
|
|
20
|
+
export function pushConversationFeedback(payload) {
|
|
21
|
+
_convFeedback = payload === null ? null : JSON.stringify(payload);
|
|
22
|
+
}
|
|
23
|
+
export function _resetConversationState() {
|
|
24
|
+
_convState = null;
|
|
25
|
+
_convFeedback = null;
|
|
26
|
+
}
|
|
27
|
+
// ============================================================================
|
|
28
|
+
// ApiError — 把 server envelope 透传给调用方, 让 MCP 工具可以渲染 dialogue_flow
|
|
29
|
+
// ============================================================================
|
|
30
|
+
export class ApiError extends Error {
|
|
31
|
+
status;
|
|
32
|
+
envelope;
|
|
33
|
+
body;
|
|
34
|
+
constructor(message, status, envelope = null, body = null) {
|
|
35
|
+
super(message);
|
|
36
|
+
this.status = status;
|
|
37
|
+
this.envelope = envelope;
|
|
38
|
+
this.body = body;
|
|
39
|
+
this.name = 'ApiError';
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
export async function apiCall(path, options = {}) {
|
|
43
|
+
const { method = 'GET', body, useAuth = 'none', ctx } = options;
|
|
44
|
+
// 选源: ctx 优先 (HTTP 多租户), 否则 config + 模块 globals (stdio / tests)
|
|
45
|
+
const apiBaseUrl = ctx?.apiBaseUrl ?? config.apiBaseUrl;
|
|
46
|
+
const brainKey = ctx?.brainKey ?? config.brainKey;
|
|
47
|
+
const jwtToken = ctx?.jwtToken ?? config.token;
|
|
48
|
+
const headers = {
|
|
49
|
+
'Content-Type': 'application/json',
|
|
50
|
+
'User-Agent': 'SkillFMMCP/0.1.0',
|
|
51
|
+
};
|
|
52
|
+
if (useAuth === 'brain-key' && brainKey) {
|
|
53
|
+
headers['X-Brain-Key'] = brainKey;
|
|
54
|
+
}
|
|
55
|
+
else if (useAuth === 'jwt' && jwtToken) {
|
|
56
|
+
headers['Authorization'] = `Bearer ${jwtToken}`;
|
|
57
|
+
}
|
|
58
|
+
// 透传 conversation-state header(来自上一次 server 响应)
|
|
59
|
+
const convStateRead = ctx?.convState.get() ?? _convState;
|
|
60
|
+
if (convStateRead) {
|
|
61
|
+
headers['X-Conversation-State'] = convStateRead;
|
|
62
|
+
}
|
|
63
|
+
// feedback 一次性消费
|
|
64
|
+
if (ctx) {
|
|
65
|
+
const f = ctx.convState.consumeFeedback();
|
|
66
|
+
if (f)
|
|
67
|
+
headers['X-Conversation-Feedback'] = f;
|
|
68
|
+
}
|
|
69
|
+
else if (_convFeedback) {
|
|
70
|
+
headers['X-Conversation-Feedback'] = _convFeedback;
|
|
71
|
+
_convFeedback = null;
|
|
72
|
+
}
|
|
73
|
+
const url = `${apiBaseUrl}${path}`;
|
|
74
|
+
let lastError = null;
|
|
75
|
+
for (let attempt = 0; attempt <= MAX_RETRIES; attempt++) {
|
|
76
|
+
const controller = new AbortController();
|
|
77
|
+
const timer = setTimeout(() => controller.abort(), TIMEOUT_MS);
|
|
78
|
+
try {
|
|
79
|
+
const res = await fetch(url, {
|
|
80
|
+
method,
|
|
81
|
+
headers,
|
|
82
|
+
body: body ? JSON.stringify(body) : undefined,
|
|
83
|
+
signal: controller.signal,
|
|
84
|
+
});
|
|
85
|
+
clearTimeout(timer);
|
|
86
|
+
// 5xx 可重试
|
|
87
|
+
if (res.status >= 500 && attempt < MAX_RETRIES) {
|
|
88
|
+
const errData = await res.json().catch(() => ({ error: res.statusText }));
|
|
89
|
+
lastError = new Error(`API 错误 ${res.status}: ${errData.error || res.statusText}`);
|
|
90
|
+
continue;
|
|
91
|
+
}
|
|
92
|
+
// 不论成功还是软错误, 都要把 server 写回来的 conversation-state 拿走
|
|
93
|
+
const newState = res.headers.get('x-conversation-state');
|
|
94
|
+
if (newState) {
|
|
95
|
+
if (ctx)
|
|
96
|
+
ctx.convState.set(newState);
|
|
97
|
+
else
|
|
98
|
+
_convState = newState;
|
|
99
|
+
}
|
|
100
|
+
if (!res.ok) {
|
|
101
|
+
const errBody = (await res.json().catch(() => ({ error: res.statusText })));
|
|
102
|
+
const message = errBody?.error || res.statusText;
|
|
103
|
+
// 把 envelope 透传给调用方 — Agent 工具可以渲染 dialogue_flow
|
|
104
|
+
throw new ApiError(`API 错误 ${res.status}: ${message}`, res.status, errBody?.envelope ?? null, errBody);
|
|
105
|
+
}
|
|
106
|
+
return res.json();
|
|
107
|
+
}
|
|
108
|
+
catch (err) {
|
|
109
|
+
clearTimeout(timer);
|
|
110
|
+
if (err.name === 'AbortError') {
|
|
111
|
+
throw new Error('请求超时');
|
|
112
|
+
}
|
|
113
|
+
// 网络错误可重试
|
|
114
|
+
if (attempt < MAX_RETRIES && !err.message?.startsWith('API 错误')) {
|
|
115
|
+
lastError = err;
|
|
116
|
+
continue;
|
|
117
|
+
}
|
|
118
|
+
throw err;
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
throw lastError || new Error('请求失败');
|
|
122
|
+
}
|
|
123
|
+
//# sourceMappingURL=api-client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api-client.js","sourceRoot":"","sources":["../../src/mcp-stdio/api-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bin.d.ts","sourceRoot":"","sources":["../../src/mcp-stdio/bin.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
// @skillfm/local — skillfm-mcp-stdio bin
|
|
3
|
+
//
|
|
4
|
+
// stdio MCP server 入口,供 stdio-only agent runtime(Claude Desktop 等)
|
|
5
|
+
// 作为 MCP transport 直接 fork:
|
|
6
|
+
// "command": "npx", "args": ["-y", "@skillfm/local", "skillfm-mcp-stdio"]
|
|
7
|
+
// 或 npx 直装后链接:
|
|
8
|
+
// "command": "skillfm-mcp-stdio"
|
|
9
|
+
//
|
|
10
|
+
// 等价路径(HTTP sidecar 模式)是 `skillfm-local start`,用户主入口统一在
|
|
11
|
+
// @skillfm/local 这一个 npm 包内,按 agent runtime 选 bin 即可。
|
|
12
|
+
import { main } from './server.js';
|
|
13
|
+
main().catch((err) => {
|
|
14
|
+
// stderr 不影响 stdio JSON-RPC 信道
|
|
15
|
+
process.stderr.write(`[skillfm-mcp-stdio] fatal: ${err?.message || err}\n`);
|
|
16
|
+
process.exit(1);
|
|
17
|
+
});
|
|
18
|
+
//# sourceMappingURL=bin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bin.js","sourceRoot":"","sources":["../../src/mcp-stdio/bin.ts"],"names":[],"mappings":";AACA,yCAAyC;AACzC,EAAE;AACF,mEAAmE;AACnE,4BAA4B;AAC5B,4EAA4E;AAC5E,eAAe;AACf,mCAAmC;AACnC,EAAE;AACF,wDAAwD;AACxD,sDAAsD;AAEtD,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAEnC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;IACnB,+BAA+B;IAC/B,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,8BAA8B,GAAG,EAAE,OAAO,IAAI,GAAG,IAAI,CACtD,CAAC;IACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/mcp-stdio/config.ts"],"names":[],"mappings":"AAyBA,eAAO,MAAM,MAAM;;;;CAOlB,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
// 配置管理 — 优先级:
|
|
2
|
+
// 1. 环境变量 (SKILLFM_BRAIN_KEY / SKILLFM_TOKEN / SKILLFM_API_URL)
|
|
3
|
+
// 2. ~/.skillfm/config.json (skillfm install 写入)
|
|
4
|
+
import { readFileSync, existsSync } from 'node:fs';
|
|
5
|
+
import { join } from 'node:path';
|
|
6
|
+
import { homedir } from 'node:os';
|
|
7
|
+
function loadFileConfig() {
|
|
8
|
+
try {
|
|
9
|
+
const path = join(homedir(), '.skillfm', 'config.json');
|
|
10
|
+
if (!existsSync(path))
|
|
11
|
+
return {};
|
|
12
|
+
return JSON.parse(readFileSync(path, 'utf-8'));
|
|
13
|
+
}
|
|
14
|
+
catch {
|
|
15
|
+
return {};
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
const file = loadFileConfig();
|
|
19
|
+
export const config = {
|
|
20
|
+
apiBaseUrl: process.env.SKILLFM_API_URL ||
|
|
21
|
+
file.apiBaseUrl ||
|
|
22
|
+
'https://api.skillfm.ai/api/v1',
|
|
23
|
+
brainKey: process.env.SKILLFM_BRAIN_KEY || file.agentToken || '',
|
|
24
|
+
token: process.env.SKILLFM_TOKEN || '',
|
|
25
|
+
};
|
|
26
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/mcp-stdio/config.ts"],"names":[],"mappings":"AAAA,cAAc;AACd,kEAAkE;AAClE,mDAAmD;AAEnD,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAOlC,SAAS,cAAc;IACrB,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,UAAU,EAAE,aAAa,CAAC,CAAC;QACxD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;YAAE,OAAO,EAAE,CAAC;QACjC,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAe,CAAC;IAC/D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,MAAM,IAAI,GAAG,cAAc,EAAE,CAAC;AAE9B,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,UAAU,EACR,OAAO,CAAC,GAAG,CAAC,eAAe;QAC3B,IAAI,CAAC,UAAU;QACf,+BAA+B;IACjC,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,IAAI,CAAC,UAAU,IAAI,EAAE;IAChE,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,EAAE;CACvC,CAAC"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
interface LocalizedText {
|
|
2
|
+
zh?: string;
|
|
3
|
+
en?: string;
|
|
4
|
+
}
|
|
5
|
+
interface DialogueFlow {
|
|
6
|
+
flow_id: string;
|
|
7
|
+
current_turn: number;
|
|
8
|
+
total_turns: number;
|
|
9
|
+
this_turn: {
|
|
10
|
+
semantic_goal: string;
|
|
11
|
+
talk_points: string[];
|
|
12
|
+
end_with: string;
|
|
13
|
+
};
|
|
14
|
+
next_turn_hints: {
|
|
15
|
+
if_user_engages: string;
|
|
16
|
+
if_user_hesitates: string;
|
|
17
|
+
if_user_declines: string;
|
|
18
|
+
};
|
|
19
|
+
gentle_exit: {
|
|
20
|
+
semantic_goal: string;
|
|
21
|
+
talk_points: string[];
|
|
22
|
+
};
|
|
23
|
+
success_criterion: string;
|
|
24
|
+
}
|
|
25
|
+
interface EnhancedError {
|
|
26
|
+
code: string;
|
|
27
|
+
severity: string;
|
|
28
|
+
user_message?: LocalizedText;
|
|
29
|
+
agent_directive?: LocalizedText;
|
|
30
|
+
dialogue_flow?: DialogueFlow | null;
|
|
31
|
+
}
|
|
32
|
+
interface Envelope {
|
|
33
|
+
ok: boolean;
|
|
34
|
+
error?: EnhancedError | null;
|
|
35
|
+
dialogue_flow?: DialogueFlow | null;
|
|
36
|
+
conversation_hints?: Array<{
|
|
37
|
+
text?: LocalizedText;
|
|
38
|
+
}>;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* 把一份 dialogue_flow 渲染成对 Agent 友好的 markdown 块。
|
|
42
|
+
*
|
|
43
|
+
* 目标读者: Agent (Claude Code / Cursor 等), 不是终端用户。
|
|
44
|
+
* 因此用 [Guide / 引导剧本] 开头, 让 Agent 知道这是元信息而非用户话语。
|
|
45
|
+
*/
|
|
46
|
+
export declare function renderDialogueFlow(flow: DialogueFlow): string;
|
|
47
|
+
/**
|
|
48
|
+
* 渲染整个 envelope 的"软错误 + dialogue_flow"区段。
|
|
49
|
+
* 用在 MCP 工具的 catch 路径里。
|
|
50
|
+
*/
|
|
51
|
+
export declare function renderEnvelopeError(envelope: Envelope | null): string | null;
|
|
52
|
+
export {};
|
|
53
|
+
//# sourceMappingURL=render-flow.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"render-flow.d.ts","sourceRoot":"","sources":["../../src/mcp-stdio/render-flow.ts"],"names":[],"mappings":"AAOA,UAAU,aAAa;IACrB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,EAAE,CAAC,EAAE,MAAM,CAAC;CACb;AAED,UAAU,YAAY;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE;QACT,aAAa,EAAE,MAAM,CAAC;QACtB,WAAW,EAAE,MAAM,EAAE,CAAC;QACtB,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;IACF,eAAe,EAAE;QACf,eAAe,EAAE,MAAM,CAAC;QACxB,iBAAiB,EAAE,MAAM,CAAC;QAC1B,gBAAgB,EAAE,MAAM,CAAC;KAC1B,CAAC;IACF,WAAW,EAAE;QACX,aAAa,EAAE,MAAM,CAAC;QACtB,WAAW,EAAE,MAAM,EAAE,CAAC;KACvB,CAAC;IACF,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED,UAAU,aAAa;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,aAAa,CAAC;IAC7B,eAAe,CAAC,EAAE,aAAa,CAAC;IAChC,aAAa,CAAC,EAAE,YAAY,GAAG,IAAI,CAAC;CACrC;AAED,UAAU,QAAQ;IAChB,EAAE,EAAE,OAAO,CAAC;IACZ,KAAK,CAAC,EAAE,aAAa,GAAG,IAAI,CAAC;IAC7B,aAAa,CAAC,EAAE,YAAY,GAAG,IAAI,CAAC;IACpC,kBAAkB,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,CAAC,EAAE,aAAa,CAAA;KAAE,CAAC,CAAC;CACtD;AAMD;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,YAAY,GAAG,MAAM,CAuB7D;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,CAsB5E"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
// Render envelope.dialogue_flow + EnhancedError 成 Agent 可读文本
|
|
2
|
+
//
|
|
3
|
+
// PRD Book 3 §3.2: MCP 工具不翻译业务话术, 只把服务端 envelope 完整呈现给 Agent。
|
|
4
|
+
// Agent 自己根据 dialogue_flow.this_turn / next_turn_hints / gentle_exit 决定怎么说。
|
|
5
|
+
//
|
|
6
|
+
// 核心约束: 不在 MCP 这层注入额外文案, 只做"忠实搬运 + 结构化展示"。
|
|
7
|
+
function pickText(loc) {
|
|
8
|
+
return loc?.zh || loc?.en || '';
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* 把一份 dialogue_flow 渲染成对 Agent 友好的 markdown 块。
|
|
12
|
+
*
|
|
13
|
+
* 目标读者: Agent (Claude Code / Cursor 等), 不是终端用户。
|
|
14
|
+
* 因此用 [Guide / 引导剧本] 开头, 让 Agent 知道这是元信息而非用户话语。
|
|
15
|
+
*/
|
|
16
|
+
export function renderDialogueFlow(flow) {
|
|
17
|
+
const lines = [];
|
|
18
|
+
lines.push(`[引导剧本 · ${flow.flow_id} · turn ${flow.current_turn}/${flow.total_turns}]`);
|
|
19
|
+
lines.push('');
|
|
20
|
+
lines.push(`本轮目标: ${flow.this_turn.semantic_goal}`);
|
|
21
|
+
if (flow.this_turn.talk_points?.length) {
|
|
22
|
+
lines.push('可以用的话题点:');
|
|
23
|
+
for (const p of flow.this_turn.talk_points)
|
|
24
|
+
lines.push(` - ${p}`);
|
|
25
|
+
}
|
|
26
|
+
lines.push(`本轮收尾方式: ${flow.this_turn.end_with}`);
|
|
27
|
+
lines.push('');
|
|
28
|
+
lines.push('下一轮根据 ta 的反应分支:');
|
|
29
|
+
lines.push(` · ta 接茬: ${flow.next_turn_hints.if_user_engages}`);
|
|
30
|
+
lines.push(` · ta 犹豫: ${flow.next_turn_hints.if_user_hesitates}`);
|
|
31
|
+
lines.push(` · ta 拒绝: ${flow.next_turn_hints.if_user_declines}`);
|
|
32
|
+
lines.push('');
|
|
33
|
+
lines.push(`温柔退路 (gentle_exit): ${flow.gentle_exit.semantic_goal}`);
|
|
34
|
+
if (flow.gentle_exit.talk_points?.length) {
|
|
35
|
+
for (const p of flow.gentle_exit.talk_points)
|
|
36
|
+
lines.push(` - ${p}`);
|
|
37
|
+
}
|
|
38
|
+
lines.push('');
|
|
39
|
+
lines.push(`本轮成功判定: ${flow.success_criterion}`);
|
|
40
|
+
return lines.join('\n');
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* 渲染整个 envelope 的"软错误 + dialogue_flow"区段。
|
|
44
|
+
* 用在 MCP 工具的 catch 路径里。
|
|
45
|
+
*/
|
|
46
|
+
export function renderEnvelopeError(envelope) {
|
|
47
|
+
if (!envelope || !envelope.error)
|
|
48
|
+
return null;
|
|
49
|
+
const err = envelope.error;
|
|
50
|
+
const blocks = [];
|
|
51
|
+
const userMsg = pickText(err.user_message);
|
|
52
|
+
if (userMsg)
|
|
53
|
+
blocks.push(userMsg);
|
|
54
|
+
const directive = pickText(err.agent_directive);
|
|
55
|
+
if (directive)
|
|
56
|
+
blocks.push(`[agent 心法] ${directive}`);
|
|
57
|
+
const flow = envelope.dialogue_flow || err.dialogue_flow;
|
|
58
|
+
if (flow)
|
|
59
|
+
blocks.push(renderDialogueFlow(flow));
|
|
60
|
+
if (envelope.conversation_hints?.length) {
|
|
61
|
+
blocks.push('—');
|
|
62
|
+
for (const h of envelope.conversation_hints) {
|
|
63
|
+
const t = pickText(h.text);
|
|
64
|
+
if (t)
|
|
65
|
+
blocks.push(`[hint] ${t}`);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
return blocks.join('\n\n');
|
|
69
|
+
}
|
|
70
|
+
//# sourceMappingURL=render-flow.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"render-flow.js","sourceRoot":"","sources":["../../src/mcp-stdio/render-flow.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
export interface RequestContext {
|
|
2
|
+
apiBaseUrl: string;
|
|
3
|
+
brainKey: string;
|
|
4
|
+
jwtToken: string;
|
|
5
|
+
/** 同一个 brainKey 下的 conversation-state 读写器(HTTP 模式下从 store 借用,stdio 下可以是全局单例) */
|
|
6
|
+
convState: ConvStateHandle;
|
|
7
|
+
}
|
|
8
|
+
export interface ConvStateHandle {
|
|
9
|
+
get(): string | null;
|
|
10
|
+
set(v: string | null): void;
|
|
11
|
+
getFeedback(): string | null;
|
|
12
|
+
consumeFeedback(): string | null;
|
|
13
|
+
pushFeedback(v: unknown): void;
|
|
14
|
+
}
|
|
15
|
+
export declare class ConvStateStore {
|
|
16
|
+
private map;
|
|
17
|
+
getHandle(brainKey: string): ConvStateHandle;
|
|
18
|
+
private getEntry;
|
|
19
|
+
private touch;
|
|
20
|
+
private evictIfNeeded;
|
|
21
|
+
/** 测试辅助 */
|
|
22
|
+
_clear(): void;
|
|
23
|
+
_size(): number;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* 全局单例 store — stdio 模式/tests 也会用到,HTTP 模式的 app 实例也直接用它。
|
|
27
|
+
* 不同 brainKey 天然隔离。
|
|
28
|
+
*/
|
|
29
|
+
export declare const globalConvStore: ConvStateStore;
|
|
30
|
+
//# sourceMappingURL=request-context.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"request-context.d.ts","sourceRoot":"","sources":["../../src/mcp-stdio/request-context.ts"],"names":[],"mappings":"AAcA,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,gFAAgF;IAChF,SAAS,EAAE,eAAe,CAAC;CAC5B;AAED,MAAM,WAAW,eAAe;IAC9B,GAAG,IAAI,MAAM,GAAG,IAAI,CAAC;IACrB,GAAG,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC;IAC5B,WAAW,IAAI,MAAM,GAAG,IAAI,CAAC;IAC7B,eAAe,IAAI,MAAM,GAAG,IAAI,CAAC;IACjC,YAAY,CAAC,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;CAChC;AASD,qBAAa,cAAc;IACzB,OAAO,CAAC,GAAG,CAAgC;IAE3C,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,eAAe;IAwB5C,OAAO,CAAC,QAAQ;IAUhB,OAAO,CAAC,KAAK;IAMb,OAAO,CAAC,aAAa;IAWrB,WAAW;IACX,MAAM,IAAI,IAAI;IAId,KAAK,IAAI,MAAM;CAGhB;AAED;;;GAGG;AACH,eAAO,MAAM,eAAe,gBAAuB,CAAC"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
// RequestContext — 每请求独立的客户端上下文,HTTP Streamable 模式下使用。
|
|
2
|
+
//
|
|
3
|
+
// 为什么需要这个?
|
|
4
|
+
// stdio 模式是单租户进程,全局 config + 全局 conv-state 没问题。
|
|
5
|
+
// HTTP 模式是多租户(多个 agent 带各自的 Bearer 打到同一个 process),
|
|
6
|
+
// 必须按 brainKey 隔离出站状态,避免 conv-state bleed across agents。
|
|
7
|
+
//
|
|
8
|
+
// 设计:
|
|
9
|
+
// - RequestContext 不可变 (per-request frozen)
|
|
10
|
+
// - ConvStateStore 是 brainKey → {state, feedback} 的 Map
|
|
11
|
+
// - LRU-ish cap(512 条)防止内存无界增长;真出问题再换 Redis
|
|
12
|
+
//
|
|
13
|
+
// BYOK 红线 (Principle 24): 这里永不读/存任何 LLM key, 只存平台自己的 brainKey + JWT。
|
|
14
|
+
const MAX_ENTRIES = 512;
|
|
15
|
+
export class ConvStateStore {
|
|
16
|
+
map = new Map();
|
|
17
|
+
getHandle(brainKey) {
|
|
18
|
+
const store = this;
|
|
19
|
+
return {
|
|
20
|
+
get: () => store.getEntry(brainKey).state,
|
|
21
|
+
set: (v) => {
|
|
22
|
+
const e = store.getEntry(brainKey);
|
|
23
|
+
e.state = v;
|
|
24
|
+
store.touch(brainKey, e);
|
|
25
|
+
},
|
|
26
|
+
getFeedback: () => store.getEntry(brainKey).feedback,
|
|
27
|
+
consumeFeedback: () => {
|
|
28
|
+
const e = store.getEntry(brainKey);
|
|
29
|
+
const f = e.feedback;
|
|
30
|
+
e.feedback = null;
|
|
31
|
+
return f;
|
|
32
|
+
},
|
|
33
|
+
pushFeedback: (v) => {
|
|
34
|
+
const e = store.getEntry(brainKey);
|
|
35
|
+
e.feedback = v === null ? null : JSON.stringify(v);
|
|
36
|
+
store.touch(brainKey, e);
|
|
37
|
+
},
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
getEntry(brainKey) {
|
|
41
|
+
let e = this.map.get(brainKey);
|
|
42
|
+
if (!e) {
|
|
43
|
+
e = { state: null, feedback: null };
|
|
44
|
+
this.map.set(brainKey, e);
|
|
45
|
+
this.evictIfNeeded();
|
|
46
|
+
}
|
|
47
|
+
return e;
|
|
48
|
+
}
|
|
49
|
+
touch(brainKey, e) {
|
|
50
|
+
// LRU: delete + re-set 让它移到 Map 末尾
|
|
51
|
+
this.map.delete(brainKey);
|
|
52
|
+
this.map.set(brainKey, e);
|
|
53
|
+
}
|
|
54
|
+
evictIfNeeded() {
|
|
55
|
+
while (this.map.size > MAX_ENTRIES) {
|
|
56
|
+
const oldest = this.map.keys().next().value;
|
|
57
|
+
if (oldest !== undefined) {
|
|
58
|
+
this.map.delete(oldest);
|
|
59
|
+
}
|
|
60
|
+
else {
|
|
61
|
+
break;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
/** 测试辅助 */
|
|
66
|
+
_clear() {
|
|
67
|
+
this.map.clear();
|
|
68
|
+
}
|
|
69
|
+
_size() {
|
|
70
|
+
return this.map.size;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* 全局单例 store — stdio 模式/tests 也会用到,HTTP 模式的 app 实例也直接用它。
|
|
75
|
+
* 不同 brainKey 天然隔离。
|
|
76
|
+
*/
|
|
77
|
+
export const globalConvStore = new ConvStateStore();
|
|
78
|
+
//# sourceMappingURL=request-context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"request-context.js","sourceRoot":"","sources":["../../src/mcp-stdio/request-context.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
3
|
+
import { type RequestContext } from './request-context.js';
|
|
4
|
+
type ToolContextProvider = (extra: {
|
|
5
|
+
authInfo?: {
|
|
6
|
+
token?: string;
|
|
7
|
+
};
|
|
8
|
+
} | undefined) => RequestContext;
|
|
9
|
+
/**
|
|
10
|
+
* 构造一个注册了所有工具的 McpServer。
|
|
11
|
+
* 工具回调在运行时调用 getCtx(extra) 拿到 per-request RequestContext。
|
|
12
|
+
*/
|
|
13
|
+
declare function buildMcpServer(getCtx: ToolContextProvider): McpServer;
|
|
14
|
+
export { buildMcpServer };
|
|
15
|
+
export { globalConvStore } from './request-context.js';
|
|
16
|
+
export type { RequestContext } from './request-context.js';
|
|
17
|
+
export type { ToolContextProvider };
|
|
18
|
+
export declare function main(): Promise<void>;
|
|
19
|
+
//# sourceMappingURL=server.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/mcp-stdio/server.ts"],"names":[],"mappings":";AAoBA,OAAO,EAAE,SAAS,EAAoB,MAAM,yCAAyC,CAAC;AAOtF,OAAO,EAAmB,KAAK,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAQ5E,KAAK,mBAAmB,GAAG,CAAC,KAAK,EAAE;IAAE,QAAQ,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,GAAG,SAAS,KAAK,cAAc,CAAC;AAEpG;;;GAGG;AACH,iBAAS,cAAc,CAAC,MAAM,EAAE,mBAAmB,GAAG,SAAS,CAqkB9D;AA4BD,OAAO,EAAE,cAAc,EAAE,CAAC;AAC1B,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,YAAY,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,YAAY,EAAE,mBAAmB,EAAE,CAAC;AAEpC,wBAAsB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAU1C"}
|