@cicctencent/agent-core 1.0.73 → 1.0.75
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/dist/cjs/a2a/client.d.ts +1 -3
- package/dist/cjs/a2a/client.d.ts.map +1 -1
- package/dist/cjs/a2a/client.js +13 -24
- package/dist/cjs/a2a/client.js.map +1 -1
- package/dist/cjs/a2a/rest-client.d.ts +1 -3
- package/dist/cjs/a2a/rest-client.d.ts.map +1 -1
- package/dist/cjs/a2a/rest-client.js +15 -53
- package/dist/cjs/a2a/rest-client.js.map +1 -1
- package/dist/cjs/index.d.ts +2 -0
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +7 -1
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/llm/debug.d.ts +5 -2
- package/dist/cjs/llm/debug.d.ts.map +1 -1
- package/dist/cjs/llm/debug.js +22 -20
- package/dist/cjs/llm/debug.js.map +1 -1
- package/dist/cjs/mcp/http-client.d.ts +1 -1
- package/dist/cjs/mcp/http-client.d.ts.map +1 -1
- package/dist/cjs/mcp/http-client.js +15 -11
- package/dist/cjs/mcp/http-client.js.map +1 -1
- package/dist/cjs/utils/http-client.d.ts +86 -0
- package/dist/cjs/utils/http-client.d.ts.map +1 -0
- package/dist/cjs/utils/http-client.js +377 -0
- package/dist/cjs/utils/http-client.js.map +1 -0
- package/dist/esm/a2a/client.d.ts +1 -3
- package/dist/esm/a2a/client.d.ts.map +1 -1
- package/dist/esm/a2a/client.js +13 -24
- package/dist/esm/a2a/client.js.map +1 -1
- package/dist/esm/a2a/rest-client.d.ts +1 -3
- package/dist/esm/a2a/rest-client.d.ts.map +1 -1
- package/dist/esm/a2a/rest-client.js +15 -53
- package/dist/esm/a2a/rest-client.js.map +1 -1
- package/dist/esm/index.d.ts +2 -0
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +4 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/llm/debug.d.ts +5 -2
- package/dist/esm/llm/debug.d.ts.map +1 -1
- package/dist/esm/llm/debug.js +22 -20
- package/dist/esm/llm/debug.js.map +1 -1
- package/dist/esm/mcp/http-client.d.ts +1 -1
- package/dist/esm/mcp/http-client.d.ts.map +1 -1
- package/dist/esm/mcp/http-client.js +16 -12
- package/dist/esm/mcp/http-client.js.map +1 -1
- package/dist/esm/utils/http-client.d.ts +86 -0
- package/dist/esm/utils/http-client.d.ts.map +1 -0
- package/dist/esm/utils/http-client.js +339 -0
- package/dist/esm/utils/http-client.js.map +1 -0
- package/package.json +1 -1
package/dist/cjs/llm/debug.js
CHANGED
|
@@ -43,7 +43,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
43
43
|
exports.extractHost = extractHost;
|
|
44
44
|
exports.resolveHostIp = resolveHostIp;
|
|
45
45
|
exports.fetchWithDiagnostics = fetchWithDiagnostics;
|
|
46
|
-
const
|
|
46
|
+
const http_client_ts_1 = require("../utils/http-client.js");
|
|
47
47
|
/** 从 URL 中提取 host(含端口),解析失败返回原始 URL */
|
|
48
48
|
function extractHost(url) {
|
|
49
49
|
try {
|
|
@@ -74,11 +74,14 @@ async function resolveHostIp(domain) {
|
|
|
74
74
|
/**
|
|
75
75
|
* 包装一次 fetch,捕获网络层诊断信息并在调试模式下回调。
|
|
76
76
|
*
|
|
77
|
+
* 出网内核(超时、代理 dispatcher、外部 signal 联动)复用通用 HttpClient,
|
|
78
|
+
* 本函数只负责 LLM 调试侧的 DNS 解析、耗时/状态采集与回调。
|
|
79
|
+
*
|
|
77
80
|
* 行为:
|
|
78
|
-
* - 合并外部 abortSignal 与内部超时控制器;
|
|
79
81
|
* - 调试模式下先做 DNS 解析,再发请求,记录总耗时;
|
|
80
82
|
* - 无论成功/失败/超时,均在 finally 中回调调试信息(若 debug=true);
|
|
81
|
-
* -
|
|
83
|
+
* - 调试回调抛错不会影响主流程;
|
|
84
|
+
* - 外部取消(非超时)以 AbortError 透传,超时归一为 HttpError(code=TIMEOUT)。
|
|
82
85
|
*/
|
|
83
86
|
async function fetchWithDiagnostics(url, init, opts) {
|
|
84
87
|
const start = Date.now();
|
|
@@ -87,32 +90,31 @@ async function fetchWithDiagnostics(url, init, opts) {
|
|
|
87
90
|
if (opts.debugCtx?.debug) {
|
|
88
91
|
resolvedIp = await resolveHostIp(domain);
|
|
89
92
|
}
|
|
90
|
-
|
|
91
|
-
const
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
const dispatcher = await (0, proxy_ts_1.createProxyDispatcher)(opts.proxy);
|
|
93
|
+
// 代理语义与原实现一致:显式 proxy URL → custom,未配置 → direct
|
|
94
|
+
const http = (0, http_client_ts_1.createHttpClient)({
|
|
95
|
+
timeout: opts.timeout,
|
|
96
|
+
proxy: opts.proxy
|
|
97
|
+
? { mode: 'custom', url: opts.proxy }
|
|
98
|
+
: { mode: 'direct' },
|
|
99
|
+
label: 'LLM',
|
|
100
|
+
});
|
|
101
|
+
// init.proxy 仅为透传标记,不属于 fetch 参数
|
|
102
|
+
const { proxy: _ignoredProxy, ...fetchInit } = init;
|
|
101
103
|
let res;
|
|
102
104
|
let errMsg;
|
|
105
|
+
let aborted = false;
|
|
103
106
|
try {
|
|
104
|
-
res = await fetch(url, {
|
|
105
|
-
...
|
|
106
|
-
signal:
|
|
107
|
-
...(dispatcher ? { dispatcher } : {}),
|
|
107
|
+
res = await http.fetch(url, {
|
|
108
|
+
...fetchInit,
|
|
109
|
+
...(opts.externalSignal ? { signal: opts.externalSignal } : {}),
|
|
108
110
|
});
|
|
109
111
|
}
|
|
110
112
|
catch (e) {
|
|
111
113
|
errMsg = e?.message || String(e);
|
|
114
|
+
aborted = e?.name === 'AbortError' || e?.code === 'TIMEOUT';
|
|
112
115
|
throw e;
|
|
113
116
|
}
|
|
114
117
|
finally {
|
|
115
|
-
clearTimeout(timer);
|
|
116
118
|
if (opts.debugCtx?.debug) {
|
|
117
119
|
const info = {
|
|
118
120
|
provider: opts.provider,
|
|
@@ -126,7 +128,7 @@ async function fetchWithDiagnostics(url, init, opts) {
|
|
|
126
128
|
durationMs: Date.now() - start,
|
|
127
129
|
httpStatus: res?.status,
|
|
128
130
|
ok: res?.ok,
|
|
129
|
-
aborted
|
|
131
|
+
aborted,
|
|
130
132
|
error: errMsg,
|
|
131
133
|
};
|
|
132
134
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"debug.js","sourceRoot":"","sources":["../../../src/llm/debug.ts"],"names":[],"mappings":";AAAA,+DAA+D;AAC/D,yBAAyB;AACzB,+DAA+D;AAC/D,EAAE;AACF,gDAAgD;AAChD,0CAA0C;AAC1C,qDAAqD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAYrD,kCAMC;AASD,sCASC;
|
|
1
|
+
{"version":3,"file":"debug.js","sourceRoot":"","sources":["../../../src/llm/debug.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,7 +3,7 @@ import type { MCPServerConfig } from './types.js';
|
|
|
3
3
|
export declare class HttpMCPClient extends MCPClientBase {
|
|
4
4
|
private endpoint;
|
|
5
5
|
private sessionId?;
|
|
6
|
-
private
|
|
6
|
+
private http;
|
|
7
7
|
/** 用户自定义请求头模板(值可含 ${vars.x} / ${env.x} 占位符,发送时解析) */
|
|
8
8
|
private headerTemplates?;
|
|
9
9
|
/** 结构化鉴权配置 */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http-client.d.ts","sourceRoot":"","sources":["../../../src/mcp/http-client.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"http-client.d.ts","sourceRoot":"","sources":["../../../src/mcp/http-client.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAKlD,qBAAa,aAAc,SAAQ,aAAa;IAC9C,OAAO,CAAC,QAAQ,CAAM;IACtB,OAAO,CAAC,SAAS,CAAC,CAAS;IAC3B,OAAO,CAAC,IAAI,CAAa;IACzB,qDAAqD;IACrD,OAAO,CAAC,eAAe,CAAC,CAAyB;IACjD,cAAc;IACd,OAAO,CAAC,UAAU,CAAC,CAAiD;cACpD,SAAS,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAkBjE,SAAS,CAAC,YAAY,IAAI,IAAI;IAQ9B,+EAA+E;IAC/E,OAAO,CAAC,gBAAgB;IAmBxB,+DAA+D;IAC/D,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,gBAAgB,CAAgB;IAExD,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IA8IhJ;;;;;;OAMG;IACH,OAAO,CAAC,QAAQ;IAgChB,OAAO,CAAC,eAAe;IAMvB,OAAO,CAAC,kBAAkB;CAe3B"}
|
|
@@ -6,11 +6,12 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
6
6
|
exports.HttpMCPClient = void 0;
|
|
7
7
|
const base_client_ts_1 = require("./base-client.js");
|
|
8
8
|
const proxy_ts_1 = require("../utils/proxy.js");
|
|
9
|
+
const http_client_ts_1 = require("../utils/http-client.js");
|
|
9
10
|
const header_vars_ts_1 = require("../utils/header-vars.js");
|
|
10
11
|
class HttpMCPClient extends base_client_ts_1.MCPClientBase {
|
|
11
12
|
endpoint = '';
|
|
12
13
|
sessionId;
|
|
13
|
-
|
|
14
|
+
http;
|
|
14
15
|
/** 用户自定义请求头模板(值可含 ${vars.x} / ${env.x} 占位符,发送时解析) */
|
|
15
16
|
headerTemplates;
|
|
16
17
|
/** 结构化鉴权配置 */
|
|
@@ -21,7 +22,13 @@ class HttpMCPClient extends base_client_ts_1.MCPClientBase {
|
|
|
21
22
|
}
|
|
22
23
|
this.endpoint = config.endpoint;
|
|
23
24
|
this.proxyUrl = (0, proxy_ts_1.resolveProxyAgentForCategory)(config.proxyCategory, 'MCP:HTTP');
|
|
24
|
-
|
|
25
|
+
// timeout=0:MCP 请求不设传输层超时(由 base-client 请求/通知机制控制),
|
|
26
|
+
// 通知的 10s 超时在 send 中经外部 signal 传入。
|
|
27
|
+
this.http = (0, http_client_ts_1.createHttpClient)({
|
|
28
|
+
timeout: 0,
|
|
29
|
+
proxy: config.proxyCategory ?? { mode: 'direct' },
|
|
30
|
+
label: 'MCP:HTTP',
|
|
31
|
+
});
|
|
25
32
|
this.headerTemplates = config.headers;
|
|
26
33
|
this.authConfig = config.auth;
|
|
27
34
|
this.onDebugTrace = config.onDebugTrace;
|
|
@@ -32,7 +39,6 @@ class HttpMCPClient extends base_client_ts_1.MCPClientBase {
|
|
|
32
39
|
this.headerTemplates = undefined;
|
|
33
40
|
this.authConfig = undefined;
|
|
34
41
|
this.proxyUrl = undefined;
|
|
35
|
-
this.proxyDispatcher = undefined;
|
|
36
42
|
}
|
|
37
43
|
/** 根据 auth 配置生成鉴权请求头(value 支持 ${vars.x} / ${env.x} 模板)。vars 随请求显式传入,避免共享状态。 */
|
|
38
44
|
buildAuthHeaders(vars) {
|
|
@@ -79,17 +85,15 @@ class HttpMCPClient extends base_client_ts_1.MCPClientBase {
|
|
|
79
85
|
}
|
|
80
86
|
const body = JSON.stringify(request);
|
|
81
87
|
const startTime = Date.now();
|
|
82
|
-
|
|
83
|
-
|
|
88
|
+
console.debug(`[MCP:HTTP] sending ${request.method} (id=${request.id}), isNotification=${isNotification}, endpoint=${this.endpoint}`);
|
|
89
|
+
this.http
|
|
90
|
+
.fetch(this.endpoint, {
|
|
84
91
|
method: 'POST',
|
|
85
92
|
headers,
|
|
86
93
|
body,
|
|
87
|
-
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
fetchOptions.dispatcher = this.proxyDispatcher;
|
|
91
|
-
console.debug(`[MCP:HTTP] sending ${request.method} (id=${request.id}), isNotification=${isNotification}, endpoint=${this.endpoint}`);
|
|
92
|
-
fetch(this.endpoint, fetchOptions).then(async (res) => {
|
|
94
|
+
...(isNotification ? { signal: AbortSignal.timeout(10000) } : {}),
|
|
95
|
+
})
|
|
96
|
+
.then(async (res) => {
|
|
93
97
|
// 即使是通知(无需处理响应),也必须消费响应体以释放 HTTP keep-alive 连接。
|
|
94
98
|
// 否则连接停留在 "body unconsumed" 状态,后续请求(如 tools/list)无法复用
|
|
95
99
|
// 该连接,最终等到连接池耗尽后超时 —— 这是 debug(逐步 await)能拿到工具
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http-client.js","sourceRoot":"","sources":["../../../src/mcp/http-client.ts"],"names":[],"mappings":";AAAA,+DAA+D;AAC/D,yCAAyC;AACzC,+DAA+D;;;AAE/D,qDAAiD;AAEjD,
|
|
1
|
+
{"version":3,"file":"http-client.js","sourceRoot":"","sources":["../../../src/mcp/http-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { type ProxyCategoryConfig } from './proxy.js';
|
|
2
|
+
export type HttpEncoding = 'json' | 'text' | 'gbk' | 'buffer' | 'arraybuffer';
|
|
3
|
+
export interface HttpClientOptions {
|
|
4
|
+
/** 请求超时(毫秒);默认 30000;0 = 不超时 */
|
|
5
|
+
timeout?: number;
|
|
6
|
+
/** 可恢复错误重试次数(仅 request/get/post 生效),默认 0(不重试) */
|
|
7
|
+
retry?: number;
|
|
8
|
+
/** 重试基础退避(线性:delay * attempt),默认 500 */
|
|
9
|
+
retryDelayMs?: number;
|
|
10
|
+
/**
|
|
11
|
+
* client 级默认代理;默认 `{ mode: 'system' }`(跟随系统代理)。
|
|
12
|
+
* 三种模式:`{ mode: 'direct' }` 强制直连 / `{ mode: 'custom', url }` 指定代理
|
|
13
|
+
* (http/https/socks4/socks5)/ `{ mode: 'system' }` 跟随系统代理。
|
|
14
|
+
* system 模式每次请求动态解析(自动跟随系统代理变化),并遵循 NO_PROXY 环境变量。
|
|
15
|
+
* 可用 setProxy() 运行时更新;单个请求可用 options.proxy 覆盖。
|
|
16
|
+
*/
|
|
17
|
+
proxy?: ProxyCategoryConfig;
|
|
18
|
+
/** 每个请求默认携带的请求头 */
|
|
19
|
+
defaultHeaders?: Record<string, string>;
|
|
20
|
+
/** 直连地址族:0=auto(默认)/4=IPv4/6=IPv6;走代理时忽略 */
|
|
21
|
+
family?: 0 | 4 | 6;
|
|
22
|
+
/** 日志前缀,默认 'Http' */
|
|
23
|
+
label?: string;
|
|
24
|
+
/** 自定义 fetch 实现(测试注入),默认 globalThis.fetch */
|
|
25
|
+
fetch?: typeof fetch;
|
|
26
|
+
}
|
|
27
|
+
export interface HttpRequestOptions {
|
|
28
|
+
method?: 'GET' | 'POST';
|
|
29
|
+
/** 查询参数;undefined/null/空字符串值忽略 */
|
|
30
|
+
params?: Record<string, string | number | undefined | null>;
|
|
31
|
+
/** POST 请求体:对象自动 JSON.stringify 并补 Content-Type;字符串/URLSearchParams 原样发送 */
|
|
32
|
+
body?: unknown;
|
|
33
|
+
headers?: Record<string, string>;
|
|
34
|
+
/** 响应解码方式,默认 json */
|
|
35
|
+
encoding?: HttpEncoding;
|
|
36
|
+
/** 覆盖 client 级超时 */
|
|
37
|
+
timeout?: number;
|
|
38
|
+
/** 覆盖 client 级重试次数 */
|
|
39
|
+
retry?: number;
|
|
40
|
+
/**
|
|
41
|
+
* 覆盖 client 级代理(单请求粒度)。
|
|
42
|
+
* 典型用法:client 默认走系统代理,个别域名 `{ mode: 'direct' }` 强制直连。
|
|
43
|
+
*/
|
|
44
|
+
proxy?: ProxyCategoryConfig;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* 归一化 HTTP 错误:
|
|
48
|
+
* - 网络层失败(连接重置/超时/DNS 等):带 code 与原始 cause;
|
|
49
|
+
* - 非 2xx 响应:带 status 与响应体摘要(body)。
|
|
50
|
+
*/
|
|
51
|
+
export declare class HttpError extends Error {
|
|
52
|
+
readonly code?: string;
|
|
53
|
+
readonly status?: number;
|
|
54
|
+
readonly body?: string;
|
|
55
|
+
constructor(message: string, opts?: {
|
|
56
|
+
code?: string;
|
|
57
|
+
status?: number;
|
|
58
|
+
body?: string;
|
|
59
|
+
cause?: unknown;
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
export interface HttpClient {
|
|
63
|
+
/** 通用请求入口:按 encoding 返回解码后数据 */
|
|
64
|
+
request(url: string, options?: HttpRequestOptions): Promise<any>;
|
|
65
|
+
get(url: string, options?: Omit<HttpRequestOptions, 'method' | 'body'>): Promise<any>;
|
|
66
|
+
post(url: string, body?: unknown, options?: Omit<HttpRequestOptions, 'method' | 'body'>): Promise<any>;
|
|
67
|
+
/** 低层请求:仅做超时 + 代理 + 错误归一,不重试、不解码,返回原始 Response */
|
|
68
|
+
fetch(url: string, init?: RequestInit & {
|
|
69
|
+
timeout?: number;
|
|
70
|
+
proxy?: ProxyCategoryConfig;
|
|
71
|
+
}): Promise<Response>;
|
|
72
|
+
/**
|
|
73
|
+
* 运行时更新 client 级默认代理(下一次请求即生效,进行中请求不受影响)。
|
|
74
|
+
* 适合代理配置热更新场景(如管理端切换代理)。
|
|
75
|
+
*/
|
|
76
|
+
setProxy(config: ProxyCategoryConfig): void;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* 创建通用 HTTP 客户端
|
|
80
|
+
*
|
|
81
|
+
* @example
|
|
82
|
+
* const http = createHttpClient({ timeout: 8000, retry: 2, proxy: { mode: 'system' } });
|
|
83
|
+
* const data = await http.get('https://push2.eastmoney.com/api/qt/clist/get', { params });
|
|
84
|
+
*/
|
|
85
|
+
export declare function createHttpClient(options?: HttpClientOptions): HttpClient;
|
|
86
|
+
//# sourceMappingURL=http-client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http-client.d.ts","sourceRoot":"","sources":["../../../src/utils/http-client.ts"],"names":[],"mappings":"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"}
|