@cicctencent/agent-core 1.0.72 → 1.0.74

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.
Files changed (55) hide show
  1. package/dist/cjs/a2a/client.d.ts +1 -3
  2. package/dist/cjs/a2a/client.d.ts.map +1 -1
  3. package/dist/cjs/a2a/client.js +13 -24
  4. package/dist/cjs/a2a/client.js.map +1 -1
  5. package/dist/cjs/a2a/rest-client.d.ts +1 -3
  6. package/dist/cjs/a2a/rest-client.d.ts.map +1 -1
  7. package/dist/cjs/a2a/rest-client.js +15 -53
  8. package/dist/cjs/a2a/rest-client.js.map +1 -1
  9. package/dist/cjs/index.d.ts +2 -0
  10. package/dist/cjs/index.d.ts.map +1 -1
  11. package/dist/cjs/index.js +7 -1
  12. package/dist/cjs/index.js.map +1 -1
  13. package/dist/cjs/llm/debug.d.ts +5 -2
  14. package/dist/cjs/llm/debug.d.ts.map +1 -1
  15. package/dist/cjs/llm/debug.js +22 -20
  16. package/dist/cjs/llm/debug.js.map +1 -1
  17. package/dist/cjs/mcp/http-client.d.ts +1 -1
  18. package/dist/cjs/mcp/http-client.d.ts.map +1 -1
  19. package/dist/cjs/mcp/http-client.js +15 -11
  20. package/dist/cjs/mcp/http-client.js.map +1 -1
  21. package/dist/cjs/sandbox/path-guard.d.ts.map +1 -1
  22. package/dist/cjs/sandbox/path-guard.js +14 -1
  23. package/dist/cjs/sandbox/path-guard.js.map +1 -1
  24. package/dist/cjs/utils/http-client.d.ts +86 -0
  25. package/dist/cjs/utils/http-client.d.ts.map +1 -0
  26. package/dist/cjs/utils/http-client.js +377 -0
  27. package/dist/cjs/utils/http-client.js.map +1 -0
  28. package/dist/esm/a2a/client.d.ts +1 -3
  29. package/dist/esm/a2a/client.d.ts.map +1 -1
  30. package/dist/esm/a2a/client.js +13 -24
  31. package/dist/esm/a2a/client.js.map +1 -1
  32. package/dist/esm/a2a/rest-client.d.ts +1 -3
  33. package/dist/esm/a2a/rest-client.d.ts.map +1 -1
  34. package/dist/esm/a2a/rest-client.js +15 -53
  35. package/dist/esm/a2a/rest-client.js.map +1 -1
  36. package/dist/esm/index.d.ts +2 -0
  37. package/dist/esm/index.d.ts.map +1 -1
  38. package/dist/esm/index.js +4 -0
  39. package/dist/esm/index.js.map +1 -1
  40. package/dist/esm/llm/debug.d.ts +5 -2
  41. package/dist/esm/llm/debug.d.ts.map +1 -1
  42. package/dist/esm/llm/debug.js +22 -20
  43. package/dist/esm/llm/debug.js.map +1 -1
  44. package/dist/esm/mcp/http-client.d.ts +1 -1
  45. package/dist/esm/mcp/http-client.d.ts.map +1 -1
  46. package/dist/esm/mcp/http-client.js +16 -12
  47. package/dist/esm/mcp/http-client.js.map +1 -1
  48. package/dist/esm/sandbox/path-guard.d.ts.map +1 -1
  49. package/dist/esm/sandbox/path-guard.js +14 -1
  50. package/dist/esm/sandbox/path-guard.js.map +1 -1
  51. package/dist/esm/utils/http-client.d.ts +86 -0
  52. package/dist/esm/utils/http-client.d.ts.map +1 -0
  53. package/dist/esm/utils/http-client.js +339 -0
  54. package/dist/esm/utils/http-client.js.map +1 -0
  55. package/package.json +1 -1
@@ -36,7 +36,20 @@ export function detectOutsideSandboxPath(command, rootDir) {
36
36
  const winHome = (process.env.USERPROFILE || (homeDrive && process.env.HOMEPATH ? path.join(homeDrive, process.env.HOMEPATH) : '')) || '';
37
37
  // 注意:Windows 盘符路径部分([A-Za-z]:[\\/]...)的尾部排除集不含反斜杠,
38
38
  // 否则 C:\Users\someone\secret.txt 会在首个反斜杠处截断、导致沙箱内路径误拦。
39
- const pattern = /(~(?:\/[^\s"'<>|;()&\\]*)?)|(\$HOME|\$\{HOME\})(?:\/[^\s"'<>|;()&\\]*)?|(\/Users(?:\/[^\s"'<>|;()&\\]*)?|\/home(?:\/[^\s"'<>|;()&\\]*)?|\/etc(?:\/[^\s"'<>|;()&\\]*)?|\/private(?:\/[^\s"'<>|;()&\\]*)?|\/System(?:\/[^\s"'<>|;()&\\]*)?|\/root(?:\/[^\s"'<>|;()&\\]*)?|\/var(?:\/[^\s"'<>|;()&\\]*)?|(?<![:A-Za-z])[A-Za-z]:[\\/][^\s"'<>|;()&]*)|(file:\/\/[^\s"'<>|;()&\\]*)/g;
39
+ //
40
+ // POSIX 绝对路径分支前置路径起始边界断言 `(?<![\w.\-\/\\])`:
41
+ // 该断言使黑名单目录名仅在其处于路径 token 起始位置时命中,MUST NOT 把更深层
42
+ // 路径中间恰好同名的片段当作绝对路径起点。
43
+ // 反例(修复前被拦截):`ls /data/home/fefeding/T0_v3_train/` 中 `/home/` 片段
44
+ // 被单独匹配,候选路径 `/home/fefeding/T0_v3_train/` 落在用户主目录内;而下方
45
+ // 「主目录命中」判定先于「rootDir 内」判定返回,故命令被假阳性拦截,且报错片段
46
+ // 丢失了 `/data` 前缀。
47
+ // 断言字符集 `[\w.\-\/\\]`:`\w` 覆盖路径常规构成字符;`.` 与 `-` 为路径中常见合法
48
+ // 字符(如版本目录 `v1.2/home`);`/`、`\` 为分隔符,是本假阳性的直接排除项。
49
+ // 此处用排除式黑名单而非「允许位置白名单」(如 `(?<=^|\s|=|"|')`)——后者会漏掉
50
+ // `;`、`|`、`&`、`(`、`>` 等 shell 元字符之后的真实逃逸路径。
51
+ // 后行断言在本正则的 Windows 盘符分支 `(?<![:A-Za-z])` 已有先例,无新增引擎约束。
52
+ const pattern = /(~(?:\/[^\s"'<>|;()&\\]*)?)|(\$HOME|\$\{HOME\})(?:\/[^\s"'<>|;()&\\]*)?|((?<![\w.\-\/\\])\/(?:Users|home|etc|private|System|root|var)(?:\/[^\s"'<>|;()&\\]*)?|(?<![:A-Za-z])[A-Za-z]:[\\/][^\s"'<>|;()&]*)|(file:\/\/[^\s"'<>|;()&\\]*)/g;
40
53
  let m;
41
54
  while ((m = pattern.exec(command))) {
42
55
  let candidate;
@@ -1 +1 @@
1
- {"version":3,"file":"path-guard.js","sourceRoot":"","sources":["../../../src/sandbox/path-guard.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"path-guard.js","sourceRoot":"","sources":["../../../src/sandbox/path-guard.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":"AAmBA,OAAO,EAGL,KAAK,mBAAmB,EAEzB,MAAM,YAAY,CAAC;AAEpB,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,GAAG,aAAa,CAAC;AAE9E,MAAM,WAAW,iBAAiB;IAChC,gCAAgC;IAChC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iDAAiD;IACjD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,wCAAwC;IACxC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;;;;OAMG;IACH,KAAK,CAAC,EAAE,mBAAmB,CAAC;IAC5B,mBAAmB;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxC,4CAA4C;IAC5C,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACnB,qBAAqB;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,6CAA6C;IAC7C,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;CACtB;AAED,MAAM,WAAW,kBAAkB;IACjC,MAAM,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;IACxB,kCAAkC;IAClC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC,CAAC;IAC5D,4EAA4E;IAC5E,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,qBAAqB;IACrB,QAAQ,CAAC,EAAE,YAAY,CAAC;IACxB,oBAAoB;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,sBAAsB;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,KAAK,CAAC,EAAE,mBAAmB,CAAC;CAC7B;AAED;;;;GAIG;AACH,qBAAa,SAAU,SAAQ,KAAK;IAClC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;gBAErB,OAAO,EAAE,MAAM,EACf,IAAI,GAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,OAAO,CAAA;KAAO;CAShF;AAED,MAAM,WAAW,UAAU;IACzB,gCAAgC;IAChC,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IACjE,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC,kBAAkB,EAAE,QAAQ,GAAG,MAAM,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IACtF,IAAI,CACF,GAAG,EAAE,MAAM,EACX,IAAI,CAAC,EAAE,OAAO,EACd,OAAO,CAAC,EAAE,IAAI,CAAC,kBAAkB,EAAE,QAAQ,GAAG,MAAM,CAAC,GACpD,OAAO,CAAC,GAAG,CAAC,CAAC;IAChB,kDAAkD;IAClD,KAAK,CACH,GAAG,EAAE,MAAM,EACX,IAAI,CAAC,EAAE,WAAW,GAAG;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,mBAAmB,CAAA;KAAE,GACrE,OAAO,CAAC,QAAQ,CAAC,CAAC;IACrB;;;OAGG;IACH,QAAQ,CAAC,MAAM,EAAE,mBAAmB,GAAG,IAAI,CAAC;CAC7C;AAoHD;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,GAAE,iBAAsB,GAAG,UAAU,CAsM5E"}
@@ -0,0 +1,339 @@
1
+ // ============================================================
2
+ // HttpClient — 通用 HTTP 请求客户端(跨 A2A / MCP / LLM / 上层应用的基础能力)
3
+ // ============================================================
4
+ //
5
+ // 统一承接出网细节:
6
+ // - 代理:system(环境变量 + macOS scutil + Windows 注册表)/ custom / direct,
7
+ // 底层走 undici ProxyAgent,支持 http/https/socks4/socks5;
8
+ // - 超时(AbortController)、可恢复错误自动重试(线性退避);
9
+ // - 响应解码:json / text / gbk / buffer / arraybuffer;
10
+ // - 错误归一为 HttpError(网络层 code 或非 2xx 的 status + body 摘要)。
11
+ //
12
+ // 设计原则:
13
+ // - 传输层 only,不耦合任何业务协议(A2A/MCP/LLM 的请求体、鉴权、SSE 解析留在各自模块);
14
+ // - fetch 低层方法返回原始 Response(供流式/SSE 场景),request/get/post 返回解码后数据;
15
+ // - 代理自由度:direct / custom / system 三种模式可作用于 client 级默认、
16
+ // 请求级覆盖(options.proxy)与运行时更新(setProxy)三个层级;
17
+ // system 模式每次请求动态解析(跟随系统代理变化)并遵循 NO_PROXY 环境变量;
18
+ // - 代理默认策略由调用方显式声明(如 data-source 用 system,a2a/mcp/llm 保持各自原语义)。
19
+ var __rewriteRelativeImportExtension = (this && this.__rewriteRelativeImportExtension) || function (path, preserveJsx) {
20
+ if (typeof path === "string" && /^\.\.?\//.test(path)) {
21
+ return path.replace(/\.(tsx)$|((?:\.d)?)((?:\.[^./]+?)?)\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {
22
+ return tsx ? preserveJsx ? ".jsx" : ".js" : d && (!ext || !cm) ? m : (d + ext + "." + cm.toLowerCase() + "js");
23
+ });
24
+ }
25
+ return path;
26
+ };
27
+ import { resolveProxyUrlForCategory, createProxyDispatcher, } from "./proxy.js";
28
+ /**
29
+ * 归一化 HTTP 错误:
30
+ * - 网络层失败(连接重置/超时/DNS 等):带 code 与原始 cause;
31
+ * - 非 2xx 响应:带 status 与响应体摘要(body)。
32
+ */
33
+ export class HttpError extends Error {
34
+ code;
35
+ status;
36
+ body;
37
+ constructor(message, opts = {}) {
38
+ super(message);
39
+ this.name = 'HttpError';
40
+ this.code = opts.code;
41
+ this.status = opts.status;
42
+ this.body = opts.body;
43
+ if (opts.cause !== undefined)
44
+ this.cause = opts.cause;
45
+ }
46
+ }
47
+ const DEFAULT_TIMEOUT = 30_000;
48
+ /** 可恢复的瞬时网络错误:连接重置 / 超时 / DNS */
49
+ function isRetryableError(err) {
50
+ const code = err instanceof HttpError ? err.code : undefined;
51
+ return (code === 'ECONNRESET' ||
52
+ code === 'ETIMEDOUT' ||
53
+ code === 'EAI_AGAIN' ||
54
+ code === 'ENOTFOUND' ||
55
+ code === 'TIMEOUT');
56
+ }
57
+ /** 把查询参数拼到 URL 上(过滤 undefined/null/空字符串,兼容 URL 已带 query) */
58
+ function buildUrl(url, params) {
59
+ if (!params)
60
+ return url;
61
+ const qs = Object.entries(params)
62
+ .filter(([, v]) => v !== undefined && v !== null && v !== '')
63
+ .map(([k, v]) => `${encodeURIComponent(k)}=${encodeURIComponent(String(v))}`)
64
+ .join('&');
65
+ if (!qs)
66
+ return url;
67
+ return url.includes('?') ? `${url}&${qs}` : `${url}?${qs}`;
68
+ }
69
+ /** 从底层 fetch 错误中提取错误码(undici 网络错误挂在 err.cause.code) */
70
+ function errCode(err) {
71
+ return err?.cause?.code || err?.code;
72
+ }
73
+ /**
74
+ * 判断目标 host 是否命中 NO_PROXY 名单(标准环境变量约定,仅 system 代理模式生效)。
75
+ *
76
+ * 语义(与 curl/undici NoProxy 对齐的常用子集):
77
+ * - `*` 匹配所有主机,全部直连;
78
+ * - 条目为逗号分隔的域名(可带端口),如 `localhost,.internal.com,10.0.0.1:8080`;
79
+ * - 条目等于 host 或为 host 的域名后缀(`foo.com` 匹配 `foo.com` 与 `a.foo.com`);
80
+ * - 条目带端口时需与目标端口一致,未带端口时匹配任意端口。
81
+ */
82
+ function hostMatchesNoProxy(hostWithPort, noProxyList) {
83
+ const host = hostWithPort.toLowerCase();
84
+ const hostNoPort = host.split(':')[0];
85
+ for (const rawEntry of noProxyList.split(',')) {
86
+ const entry = rawEntry.trim().toLowerCase();
87
+ if (!entry)
88
+ continue;
89
+ if (entry === '*')
90
+ return true;
91
+ const [entryHost, entryPort] = entry.split(':');
92
+ if (entryPort && !host.endsWith(`:${entryPort}`))
93
+ continue;
94
+ const eHost = entryHost.replace(/^\./, '');
95
+ if (hostNoPort === eHost || hostNoPort.endsWith(`.${eHost}`))
96
+ return true;
97
+ }
98
+ return false;
99
+ }
100
+ /** 读取 NO_PROXY 环境变量(大小写两种形式) */
101
+ function getNoProxyList() {
102
+ return process.env.NO_PROXY || process.env.no_proxy;
103
+ }
104
+ /** 网络层错误归一为 HttpError */
105
+ function normalizeNetworkError(err, url, timeout) {
106
+ const code = errCode(err);
107
+ if (err?.name === 'AbortError' || code === 'UND_ERR_CONNECT_TIMEOUT') {
108
+ return new HttpError(`request timeout after ${timeout}ms: ${url}`, {
109
+ code: 'TIMEOUT',
110
+ cause: err,
111
+ });
112
+ }
113
+ if (code === 'ECONNRESET') {
114
+ return new HttpError(`connection reset: ${url}`, { code, cause: err });
115
+ }
116
+ if (code === 'ECONNREFUSED') {
117
+ return new HttpError(`connection refused: ${url}`, { code, cause: err });
118
+ }
119
+ if (code === 'ENOTFOUND' || code === 'EAI_AGAIN' || code === 'ETIMEDOUT') {
120
+ return new HttpError(`network error (${code}): ${url}`, { code, cause: err });
121
+ }
122
+ if (err instanceof HttpError)
123
+ return err;
124
+ return new HttpError(`fetch failed: ${url} — ${err?.message || String(err)}`, { code, cause: err });
125
+ }
126
+ /** 按 encoding 解码响应 */
127
+ async function decodeResponse(res, encoding) {
128
+ switch (encoding) {
129
+ case 'text':
130
+ return res.text();
131
+ case 'gbk':
132
+ return new TextDecoder('gbk').decode(new Uint8Array(await res.arrayBuffer()));
133
+ case 'buffer':
134
+ return Buffer.from(await res.arrayBuffer());
135
+ case 'arraybuffer':
136
+ return res.arrayBuffer();
137
+ case 'json':
138
+ default: {
139
+ const text = await res.text();
140
+ if (!text)
141
+ return undefined;
142
+ try {
143
+ return JSON.parse(text);
144
+ }
145
+ catch {
146
+ // 与 axios transformResponse 对齐:非 JSON 响应返回原始文本而非抛错
147
+ return text;
148
+ }
149
+ }
150
+ }
151
+ }
152
+ /**
153
+ * 创建通用 HTTP 客户端
154
+ *
155
+ * @example
156
+ * const http = createHttpClient({ timeout: 8000, retry: 2, proxy: { mode: 'system' } });
157
+ * const data = await http.get('https://push2.eastmoney.com/api/qt/clist/get', { params });
158
+ */
159
+ export function createHttpClient(options = {}) {
160
+ const label = options.label ?? 'Http';
161
+ const defaultTimeout = options.timeout ?? DEFAULT_TIMEOUT;
162
+ const defaultRetry = options.retry ?? 0;
163
+ const retryDelayMs = options.retryDelayMs ?? 500;
164
+ const defaultHeaders = options.defaultHeaders ?? {};
165
+ const family = options.family ?? 0;
166
+ const fetchFn = options.fetch ?? globalThis.fetch.bind(globalThis);
167
+ // client 级默认代理(可 setProxy 运行时更新);system 模式每次请求动态解析,
168
+ // 自动跟随系统代理变化(getSystemProxyUrl 内部有 TTL 缓存,成本可控)
169
+ let clientProxy = options.proxy ?? { mode: 'system' };
170
+ // dispatcher 按「代理 URL」键控缓存(请求级覆盖会产生多个代理 URL,需多 dispatcher),
171
+ // 超过上限时淘汰最旧的,避免长期运行内存增长
172
+ const dispatcherCache = new Map();
173
+ const MAX_DISPATCHERS = 8;
174
+ let familyAgent;
175
+ async function getProxyDispatcher(proxyUrl) {
176
+ const cached = dispatcherCache.get(proxyUrl);
177
+ if (cached)
178
+ return cached;
179
+ const dispatcher = await createProxyDispatcher(proxyUrl);
180
+ if (!dispatcher)
181
+ return undefined;
182
+ dispatcherCache.set(proxyUrl, dispatcher);
183
+ if (dispatcherCache.size > MAX_DISPATCHERS) {
184
+ const oldest = dispatcherCache.keys().next().value;
185
+ dispatcherCache.delete(oldest);
186
+ }
187
+ return dispatcher;
188
+ }
189
+ /**
190
+ * 解析本次请求应使用的 dispatcher。
191
+ * @param override 请求级代理覆盖;未传时用 client 级默认
192
+ * @param targetUrl 目标 URL(用于 system 模式的 NO_PROXY 匹配)
193
+ */
194
+ async function resolveDispatcher(override, targetUrl) {
195
+ const cfg = override ?? clientProxy;
196
+ if (cfg.mode === 'custom' && !cfg.url) {
197
+ // 配置错误显式暴露,而非静默直连(静默会让「以为走了代理其实没有」极难排查)
198
+ throw new HttpError(`proxy mode 'custom' requires "url" (${label}: ${targetUrl})`, { code: 'PROXY_CONFIG' });
199
+ }
200
+ let proxyUrl = resolveProxyUrlForCategory(cfg);
201
+ // system 模式遵循 NO_PROXY:命中的目标主机直连(标准环境变量约定)
202
+ if (proxyUrl && cfg.mode === 'system') {
203
+ const noProxy = getNoProxyList();
204
+ if (noProxy) {
205
+ try {
206
+ const { host } = new URL(targetUrl);
207
+ if (hostMatchesNoProxy(host, noProxy))
208
+ proxyUrl = undefined;
209
+ }
210
+ catch {
211
+ // URL 解析失败时按原代理处理
212
+ }
213
+ }
214
+ }
215
+ if (proxyUrl)
216
+ return getProxyDispatcher(proxyUrl);
217
+ // 直连:仅当显式指定地址族时创建 family Agent
218
+ if (family === 4 || family === 6) {
219
+ if (!familyAgent) {
220
+ try {
221
+ const modName = 'undici';
222
+ const undiciMod = (await import(__rewriteRelativeImportExtension(modName)));
223
+ if (undiciMod?.Agent) {
224
+ familyAgent = new undiciMod.Agent({ connect: { family } });
225
+ }
226
+ }
227
+ catch {
228
+ familyAgent = undefined;
229
+ }
230
+ }
231
+ return familyAgent;
232
+ }
233
+ return undefined;
234
+ }
235
+ async function rawFetch(url, init = {}) {
236
+ const timeout = init.timeout ?? defaultTimeout;
237
+ const controller = new AbortController();
238
+ let timedOut = false;
239
+ const timer = timeout > 0
240
+ ? setTimeout(() => {
241
+ timedOut = true;
242
+ controller.abort();
243
+ }, timeout)
244
+ : undefined;
245
+ // 外部 signal 联动(如调用方自带 AbortSignal.timeout 或用户取消)
246
+ const externalSignal = init.signal;
247
+ if (externalSignal) {
248
+ if (externalSignal.aborted)
249
+ controller.abort();
250
+ else {
251
+ externalSignal.addEventListener('abort', () => controller.abort(), { once: true });
252
+ }
253
+ }
254
+ try {
255
+ const dispatcher = await resolveDispatcher(init.proxy, url);
256
+ const { timeout: _ignoredTimeout, signal: _ignoredSignal, proxy: _ignoredProxy, ...rest } = init;
257
+ return await fetchFn(url, {
258
+ ...rest,
259
+ signal: controller.signal,
260
+ ...(dispatcher ? { dispatcher } : {}),
261
+ });
262
+ }
263
+ catch (err) {
264
+ if (err?.name === 'AbortError' && !timedOut) {
265
+ // 外部 signal 取消(非超时):保持 AbortError 语义透传,供调用方区分「用户取消」
266
+ throw err;
267
+ }
268
+ throw normalizeNetworkError(err, url, timeout);
269
+ }
270
+ finally {
271
+ if (timer)
272
+ clearTimeout(timer);
273
+ }
274
+ }
275
+ async function request(url, o = {}) {
276
+ const method = o.method ?? 'GET';
277
+ const encoding = o.encoding ?? 'json';
278
+ const timeout = o.timeout ?? defaultTimeout;
279
+ const maxRetry = o.retry ?? defaultRetry;
280
+ const target = buildUrl(url, o.params);
281
+ const headers = {
282
+ ...defaultHeaders,
283
+ ...(o.headers || {}),
284
+ };
285
+ let body;
286
+ if (o.body !== undefined) {
287
+ if (typeof o.body === 'string' ||
288
+ o.body instanceof URLSearchParams) {
289
+ body = o.body;
290
+ }
291
+ else {
292
+ body = JSON.stringify(o.body);
293
+ if (!Object.keys(headers).some(k => k.toLowerCase() === 'content-type')) {
294
+ headers['Content-Type'] = 'application/json';
295
+ }
296
+ }
297
+ }
298
+ let attempt = 0;
299
+ // eslint-disable-next-line no-constant-condition
300
+ while (true) {
301
+ try {
302
+ const res = await rawFetch(target, {
303
+ method,
304
+ headers,
305
+ body,
306
+ timeout,
307
+ proxy: o.proxy,
308
+ });
309
+ if (!res.ok) {
310
+ const respText = await res.text().catch(() => '');
311
+ throw new HttpError(`HTTP ${res.status} ${res.statusText}: ${target}`, {
312
+ status: res.status,
313
+ body: respText.slice(0, 500),
314
+ });
315
+ }
316
+ return await decodeResponse(res, encoding);
317
+ }
318
+ catch (err) {
319
+ if (attempt < maxRetry && isRetryableError(err)) {
320
+ attempt += 1;
321
+ console.warn(`[${label}] 请求失败,第 ${attempt}/${maxRetry + 1} 次重试: ${target} code=${err.code || '-'}`);
322
+ await new Promise(r => setTimeout(r, retryDelayMs * attempt));
323
+ continue;
324
+ }
325
+ throw err;
326
+ }
327
+ }
328
+ }
329
+ return {
330
+ request,
331
+ get: (url, o) => request(url, { ...o, method: 'GET' }),
332
+ post: (url, body, o) => request(url, { ...o, method: 'POST', body }),
333
+ fetch: rawFetch,
334
+ setProxy(config) {
335
+ clientProxy = config;
336
+ },
337
+ };
338
+ }
339
+ //# sourceMappingURL=http-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http-client.js","sourceRoot":"","sources":["../../../src/utils/http-client.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cicctencent/agent-core",
3
- "version": "1.0.72",
3
+ "version": "1.0.74",
4
4
  "description": "Core engine for AI agent — LLM orchestration, tool execution, MCP, skill routing, security, and memory pipeline.",
5
5
  "type": "module",
6
6
  "main": "./dist/cjs/index.js",