@cicctencent/agent-core 0.1.70 → 0.1.73

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 (151) hide show
  1. package/dist/cjs/a2a/client.d.ts +39 -11
  2. package/dist/cjs/a2a/client.d.ts.map +1 -1
  3. package/dist/cjs/a2a/client.js +69 -22
  4. package/dist/cjs/a2a/client.js.map +1 -1
  5. package/dist/cjs/a2a/rest-client.d.ts +35 -9
  6. package/dist/cjs/a2a/rest-client.d.ts.map +1 -1
  7. package/dist/cjs/a2a/rest-client.js +65 -18
  8. package/dist/cjs/a2a/rest-client.js.map +1 -1
  9. package/dist/cjs/a2a/rest-runner.d.ts +6 -0
  10. package/dist/cjs/a2a/rest-runner.d.ts.map +1 -1
  11. package/dist/cjs/a2a/rest-runner.js +19 -7
  12. package/dist/cjs/a2a/rest-runner.js.map +1 -1
  13. package/dist/cjs/a2a/runner.d.ts +6 -0
  14. package/dist/cjs/a2a/runner.d.ts.map +1 -1
  15. package/dist/cjs/a2a/runner.js +24 -7
  16. package/dist/cjs/a2a/runner.js.map +1 -1
  17. package/dist/cjs/index.d.ts +5 -2
  18. package/dist/cjs/index.d.ts.map +1 -1
  19. package/dist/cjs/index.js +15 -10
  20. package/dist/cjs/index.js.map +1 -1
  21. package/dist/cjs/interaction/service.d.ts +14 -0
  22. package/dist/cjs/interaction/service.d.ts.map +1 -1
  23. package/dist/cjs/interaction/service.js +114 -31
  24. package/dist/cjs/interaction/service.js.map +1 -1
  25. package/dist/cjs/interaction/store.d.ts +1 -0
  26. package/dist/cjs/interaction/store.d.ts.map +1 -1
  27. package/dist/cjs/interaction/store.js +10 -0
  28. package/dist/cjs/interaction/store.js.map +1 -1
  29. package/dist/cjs/interaction/types.d.ts +5 -1
  30. package/dist/cjs/interaction/types.d.ts.map +1 -1
  31. package/dist/cjs/interaction/types.js.map +1 -1
  32. package/dist/cjs/llm/debug.d.ts.map +1 -1
  33. package/dist/cjs/llm/debug.js +4 -1
  34. package/dist/cjs/llm/debug.js.map +1 -1
  35. package/dist/cjs/mcp/base-client.d.ts +19 -4
  36. package/dist/cjs/mcp/base-client.d.ts.map +1 -1
  37. package/dist/cjs/mcp/base-client.js +28 -8
  38. package/dist/cjs/mcp/base-client.js.map +1 -1
  39. package/dist/cjs/mcp/http-client.d.ts +5 -5
  40. package/dist/cjs/mcp/http-client.d.ts.map +1 -1
  41. package/dist/cjs/mcp/http-client.js +26 -21
  42. package/dist/cjs/mcp/http-client.js.map +1 -1
  43. package/dist/cjs/mcp/proxy-agent.d.ts +2 -50
  44. package/dist/cjs/mcp/proxy-agent.d.ts.map +1 -1
  45. package/dist/cjs/mcp/proxy-agent.js +12 -174
  46. package/dist/cjs/mcp/proxy-agent.js.map +1 -1
  47. package/dist/cjs/mcp/stdio-client.d.ts +1 -1
  48. package/dist/cjs/mcp/stdio-client.d.ts.map +1 -1
  49. package/dist/cjs/mcp/stdio-client.js +1 -1
  50. package/dist/cjs/mcp/stdio-client.js.map +1 -1
  51. package/dist/cjs/mcp/types.d.ts +8 -2
  52. package/dist/cjs/mcp/types.d.ts.map +1 -1
  53. package/dist/cjs/tool/ask-user.d.ts.map +1 -1
  54. package/dist/cjs/tool/ask-user.js +2 -0
  55. package/dist/cjs/tool/ask-user.js.map +1 -1
  56. package/dist/cjs/tool/delegate.d.ts +12 -1
  57. package/dist/cjs/tool/delegate.d.ts.map +1 -1
  58. package/dist/cjs/tool/delegate.js +21 -5
  59. package/dist/cjs/tool/delegate.js.map +1 -1
  60. package/dist/cjs/utils/header-vars.d.ts +18 -0
  61. package/dist/cjs/utils/header-vars.d.ts.map +1 -0
  62. package/dist/cjs/utils/header-vars.js +71 -0
  63. package/dist/cjs/utils/header-vars.js.map +1 -0
  64. package/dist/cjs/utils/proxy-agent.d.ts +53 -0
  65. package/dist/cjs/utils/proxy-agent.d.ts.map +1 -0
  66. package/dist/cjs/utils/proxy-agent.js +154 -0
  67. package/dist/cjs/utils/proxy-agent.js.map +1 -0
  68. package/dist/cjs/utils/proxy.d.ts +53 -0
  69. package/dist/cjs/utils/proxy.d.ts.map +1 -0
  70. package/dist/cjs/utils/proxy.js +148 -0
  71. package/dist/cjs/utils/proxy.js.map +1 -0
  72. package/dist/cjs/utils/system-proxy.d.ts +15 -0
  73. package/dist/cjs/utils/system-proxy.d.ts.map +1 -0
  74. package/dist/cjs/utils/system-proxy.js +133 -0
  75. package/dist/cjs/utils/system-proxy.js.map +1 -0
  76. package/dist/esm/a2a/client.d.ts +39 -11
  77. package/dist/esm/a2a/client.d.ts.map +1 -1
  78. package/dist/esm/a2a/client.js +69 -22
  79. package/dist/esm/a2a/client.js.map +1 -1
  80. package/dist/esm/a2a/rest-client.d.ts +35 -9
  81. package/dist/esm/a2a/rest-client.d.ts.map +1 -1
  82. package/dist/esm/a2a/rest-client.js +65 -18
  83. package/dist/esm/a2a/rest-client.js.map +1 -1
  84. package/dist/esm/a2a/rest-runner.d.ts +6 -0
  85. package/dist/esm/a2a/rest-runner.d.ts.map +1 -1
  86. package/dist/esm/a2a/rest-runner.js +19 -7
  87. package/dist/esm/a2a/rest-runner.js.map +1 -1
  88. package/dist/esm/a2a/runner.d.ts +6 -0
  89. package/dist/esm/a2a/runner.d.ts.map +1 -1
  90. package/dist/esm/a2a/runner.js +24 -7
  91. package/dist/esm/a2a/runner.js.map +1 -1
  92. package/dist/esm/index.d.ts +5 -2
  93. package/dist/esm/index.d.ts.map +1 -1
  94. package/dist/esm/index.js +3 -1
  95. package/dist/esm/index.js.map +1 -1
  96. package/dist/esm/interaction/service.d.ts +14 -0
  97. package/dist/esm/interaction/service.d.ts.map +1 -1
  98. package/dist/esm/interaction/service.js +114 -31
  99. package/dist/esm/interaction/service.js.map +1 -1
  100. package/dist/esm/interaction/store.d.ts +1 -0
  101. package/dist/esm/interaction/store.d.ts.map +1 -1
  102. package/dist/esm/interaction/store.js +10 -0
  103. package/dist/esm/interaction/store.js.map +1 -1
  104. package/dist/esm/interaction/types.d.ts +5 -1
  105. package/dist/esm/interaction/types.d.ts.map +1 -1
  106. package/dist/esm/interaction/types.js.map +1 -1
  107. package/dist/esm/llm/debug.d.ts.map +1 -1
  108. package/dist/esm/llm/debug.js +4 -1
  109. package/dist/esm/llm/debug.js.map +1 -1
  110. package/dist/esm/mcp/base-client.d.ts +19 -4
  111. package/dist/esm/mcp/base-client.d.ts.map +1 -1
  112. package/dist/esm/mcp/base-client.js +28 -8
  113. package/dist/esm/mcp/base-client.js.map +1 -1
  114. package/dist/esm/mcp/http-client.d.ts +5 -5
  115. package/dist/esm/mcp/http-client.d.ts.map +1 -1
  116. package/dist/esm/mcp/http-client.js +25 -20
  117. package/dist/esm/mcp/http-client.js.map +1 -1
  118. package/dist/esm/mcp/proxy-agent.d.ts +2 -50
  119. package/dist/esm/mcp/proxy-agent.d.ts.map +1 -1
  120. package/dist/esm/mcp/proxy-agent.js +7 -168
  121. package/dist/esm/mcp/proxy-agent.js.map +1 -1
  122. package/dist/esm/mcp/stdio-client.d.ts +1 -1
  123. package/dist/esm/mcp/stdio-client.d.ts.map +1 -1
  124. package/dist/esm/mcp/stdio-client.js +1 -1
  125. package/dist/esm/mcp/stdio-client.js.map +1 -1
  126. package/dist/esm/mcp/types.d.ts +8 -2
  127. package/dist/esm/mcp/types.d.ts.map +1 -1
  128. package/dist/esm/tool/ask-user.d.ts.map +1 -1
  129. package/dist/esm/tool/ask-user.js +2 -0
  130. package/dist/esm/tool/ask-user.js.map +1 -1
  131. package/dist/esm/tool/delegate.d.ts +12 -1
  132. package/dist/esm/tool/delegate.d.ts.map +1 -1
  133. package/dist/esm/tool/delegate.js +21 -5
  134. package/dist/esm/tool/delegate.js.map +1 -1
  135. package/dist/esm/utils/header-vars.d.ts +18 -0
  136. package/dist/esm/utils/header-vars.d.ts.map +1 -0
  137. package/dist/esm/utils/header-vars.js +65 -0
  138. package/dist/esm/utils/header-vars.js.map +1 -0
  139. package/dist/esm/utils/proxy-agent.d.ts +53 -0
  140. package/dist/esm/utils/proxy-agent.d.ts.map +1 -0
  141. package/dist/esm/utils/proxy-agent.js +115 -0
  142. package/dist/esm/utils/proxy-agent.js.map +1 -0
  143. package/dist/esm/utils/proxy.d.ts +53 -0
  144. package/dist/esm/utils/proxy.d.ts.map +1 -0
  145. package/dist/esm/utils/proxy.js +109 -0
  146. package/dist/esm/utils/proxy.js.map +1 -0
  147. package/dist/esm/utils/system-proxy.d.ts +15 -0
  148. package/dist/esm/utils/system-proxy.d.ts.map +1 -0
  149. package/dist/esm/utils/system-proxy.js +128 -0
  150. package/dist/esm/utils/system-proxy.js.map +1 -0
  151. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"delegate.js","sourceRoot":"","sources":["../../../src/tool/delegate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"delegate.js","sourceRoot":"","sources":["../../../src/tool/delegate.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ /** 变量集合(运行时由上层业务传入,如 { userId, userMail }) */
2
+ export type HeaderVars = Record<string, unknown>;
3
+ /** 将单个字符串中的占位符替换为实际变量 */
4
+ export declare function interpolateString(value: string, vars?: HeaderVars): string;
5
+ /**
6
+ * 递归对任意 JSON 值进行变量插值(深拷贝,不改原对象)。
7
+ * - string 叶子:替换 ${vars.x} / ${env.x} / ${x} 占位符
8
+ * - object / array:递归处理每个元素
9
+ * - 其他类型(number/boolean/null 等):原样返回
10
+ *
11
+ * 用于请求体静态参数的变量注入(与 header 插值共用同一套占位符语法)。
12
+ */
13
+ export declare function interpolateValue<T>(value: T, vars?: HeaderVars): T;
14
+ /** 将单个 header 值中的占位符替换为实际变量(兼容旧 API,等价于 interpolateString) */
15
+ export declare function interpolateHeaderValue(value: string, vars?: HeaderVars): string;
16
+ /** 解析一组 header 模板(值可含 ${vars.x} / ${env.x} 占位符) */
17
+ export declare function resolveHeaderTemplates(headers: Record<string, string> | undefined, vars?: HeaderVars): Record<string, string>;
18
+ //# sourceMappingURL=header-vars.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"header-vars.d.ts","sourceRoot":"","sources":["../../../src/utils/header-vars.ts"],"names":[],"mappings":"AAWA,8CAA8C;AAC9C,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAKjD,yBAAyB;AACzB,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,UAAU,GAAG,MAAM,CAW1E;AAED;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,UAAU,GAAG,CAAC,CAYlE;AAED,8DAA8D;AAC9D,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,UAAU,GAAG,MAAM,CAE/E;AAED,mDAAmD;AACnD,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,EAC3C,IAAI,CAAC,EAAE,UAAU,GAChB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAOxB"}
@@ -0,0 +1,65 @@
1
+ // ============================================================
2
+ // vars-interpolator - 请求变量插值(header 值 / 请求体参数通用)
3
+ //
4
+ // 占位符语法:
5
+ // ${vars.<name>} 从调用时传入的 vars 对象读取(运行时变量优先)
6
+ // ${env.<name>} 从 process.env 读取(兼容既有 auth 行为)
7
+ // ${<name>} 简写,等价于 ${vars.<name>}
8
+ //
9
+ // 未匹配到变量时替换为空字符串;非字符串值统一 String() 处理。
10
+ // ============================================================
11
+ /** 占位符匹配:${vars.x} / ${env.x} / ${x} */
12
+ const VAR_PATTERN = /\$\{(?:vars\.|env\.)?(\w+)\}/g;
13
+ /** 将单个字符串中的占位符替换为实际变量 */
14
+ export function interpolateString(value, vars) {
15
+ if (typeof value !== 'string')
16
+ return value;
17
+ return value.replace(VAR_PATTERN, (_match, name) => {
18
+ if (vars && Object.prototype.hasOwnProperty.call(vars, name) && vars[name] !== undefined) {
19
+ return String(vars[name]);
20
+ }
21
+ if (process.env[name] !== undefined) {
22
+ return process.env[name];
23
+ }
24
+ return '';
25
+ });
26
+ }
27
+ /**
28
+ * 递归对任意 JSON 值进行变量插值(深拷贝,不改原对象)。
29
+ * - string 叶子:替换 ${vars.x} / ${env.x} / ${x} 占位符
30
+ * - object / array:递归处理每个元素
31
+ * - 其他类型(number/boolean/null 等):原样返回
32
+ *
33
+ * 用于请求体静态参数的变量注入(与 header 插值共用同一套占位符语法)。
34
+ */
35
+ export function interpolateValue(value, vars) {
36
+ if (value == null)
37
+ return value;
38
+ if (typeof value === 'string')
39
+ return interpolateString(value, vars);
40
+ if (Array.isArray(value))
41
+ return value.map((v) => interpolateValue(v, vars));
42
+ if (typeof value === 'object') {
43
+ const result = {};
44
+ for (const [k, v] of Object.entries(value)) {
45
+ result[k] = interpolateValue(v, vars);
46
+ }
47
+ return result;
48
+ }
49
+ return value;
50
+ }
51
+ /** 将单个 header 值中的占位符替换为实际变量(兼容旧 API,等价于 interpolateString) */
52
+ export function interpolateHeaderValue(value, vars) {
53
+ return interpolateString(value, vars);
54
+ }
55
+ /** 解析一组 header 模板(值可含 ${vars.x} / ${env.x} 占位符) */
56
+ export function resolveHeaderTemplates(headers, vars) {
57
+ if (!headers)
58
+ return {};
59
+ const result = {};
60
+ for (const [key, raw] of Object.entries(headers)) {
61
+ result[key] = interpolateString(raw, vars);
62
+ }
63
+ return result;
64
+ }
65
+ //# sourceMappingURL=header-vars.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"header-vars.js","sourceRoot":"","sources":["../../../src/utils/header-vars.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,iDAAiD;AACjD,EAAE;AACF,SAAS;AACT,+CAA+C;AAC/C,mDAAmD;AACnD,2CAA2C;AAC3C,EAAE;AACF,sCAAsC;AACtC,+DAA+D;AAK/D,wCAAwC;AACxC,MAAM,WAAW,GAAG,+BAA+B,CAAC;AAEpD,yBAAyB;AACzB,MAAM,UAAU,iBAAiB,CAAC,KAAa,EAAE,IAAiB;IAChE,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAA0B,CAAC;IACjE,OAAO,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,MAAM,EAAE,IAAY,EAAE,EAAE;QACzD,IAAI,IAAI,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,SAAS,EAAE,CAAC;YACzF,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAC5B,CAAC;QACD,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,SAAS,EAAE,CAAC;YACpC,OAAO,OAAO,CAAC,GAAG,CAAC,IAAI,CAAW,CAAC;QACrC,CAAC;QACD,OAAO,EAAE,CAAC;IACZ,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,gBAAgB,CAAI,KAAQ,EAAE,IAAiB;IAC7D,IAAI,KAAK,IAAI,IAAI;QAAE,OAAO,KAAK,CAAC;IAChC,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,iBAAiB,CAAC,KAAK,EAAE,IAAI,CAAiB,CAAC;IACrF,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,gBAAgB,CAAC,CAAC,EAAE,IAAI,CAAC,CAAiB,CAAC;IAC7F,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,MAAM,MAAM,GAA4B,EAAE,CAAC;QAC3C,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAgC,CAAC,EAAE,CAAC;YACtE,MAAM,CAAC,CAAC,CAAC,GAAG,gBAAgB,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;QACxC,CAAC;QACD,OAAO,MAAsB,CAAC;IAChC,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,8DAA8D;AAC9D,MAAM,UAAU,sBAAsB,CAAC,KAAa,EAAE,IAAiB;IACrE,OAAO,iBAAiB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AACxC,CAAC;AAED,mDAAmD;AACnD,MAAM,UAAU,sBAAsB,CACpC,OAA2C,EAC3C,IAAiB;IAEjB,IAAI,CAAC,OAAO;QAAE,OAAO,EAAE,CAAC;IACxB,MAAM,MAAM,GAA2B,EAAE,CAAC;IAC1C,KAAK,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QACjD,MAAM,CAAC,GAAG,CAAC,GAAG,iBAAiB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAC7C,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -0,0 +1,53 @@
1
+ /** ProxyAgent 类型(undici 内置,Node 18+ 可直接 import;用 any 避免未声明依赖的 TS 错误) */
2
+ export type ProxyAgentType = any;
3
+ /** 代理模式:system=系统代理, custom=自定义, direct=直连 */
4
+ export type ProxyMode = 'system' | 'custom' | 'direct';
5
+ /** 单分类代理配置 */
6
+ export interface ProxyCategoryConfig {
7
+ mode: ProxyMode;
8
+ /** mode='custom' 时的代理 URL */
9
+ url?: string;
10
+ }
11
+ /** 分类代理设置(LLM / MCP / Fetch 各自独立) */
12
+ export interface ProxySettings {
13
+ llm: ProxyCategoryConfig;
14
+ mcp: ProxyCategoryConfig;
15
+ fetch: ProxyCategoryConfig;
16
+ }
17
+ /** 默认代理设置:全部分类走系统代理 */
18
+ export declare const DEFAULT_PROXY_SETTINGS: ProxySettings;
19
+ /**
20
+ * 根据分类代理配置解析代理 URL
21
+ *
22
+ * - `mode='system'`:自动检测系统代理(环境变量 + macOS scutil + Windows 注册表)
23
+ * - `mode='custom'`:使用用户指定的代理 URL
24
+ * - `mode='direct'`:不走代理,返回 undefined
25
+ *
26
+ * 返回代理 URL 字符串,需配合 createProxyDispatcher() 使用。
27
+ * 支持 http://、https://、socks4://、socks5:// 协议。
28
+ *
29
+ * @param category 分类代理配置
30
+ * @param label 日志标签(如 'LLM', 'MCP', 'Fetch')
31
+ * @returns 代理 URL 字符串,无代理时返回 undefined
32
+ */
33
+ export declare function resolveProxyAgentForCategory(category?: ProxyCategoryConfig, label?: string): string | undefined;
34
+ /**
35
+ * 根据代理 URL 创建 undici ProxyAgent dispatcher
36
+ *
37
+ * Node.js 原生 fetch() 不支持 RequestInit.proxy 选项,
38
+ * 需通过 dispatcher 传入 undici 的 ProxyAgent 来正确使用代理。
39
+ *
40
+ * 使用动态 import('undici') 避免浏览器环境静态解析失败。
41
+ * 仅在传入 proxyUrl 时才创建 ProxyAgent,无代理时返回 undefined。
42
+ *
43
+ * @param proxyUrl 代理 URL(如 http://127.0.0.1:7890),undefined 时不创建
44
+ * @returns ProxyAgent dispatcher 或 undefined
45
+ */
46
+ export declare function createProxyDispatcher(proxyUrl?: string): Promise<ProxyAgentType | undefined>;
47
+ /**
48
+ * 获取分类代理的有效 URL(用于 axios 等 HTTP 客户端)
49
+ *
50
+ * @returns 代理 URL 字符串,无代理时返回 undefined
51
+ */
52
+ export declare function resolveProxyUrlForCategory(category?: ProxyCategoryConfig): string | undefined;
53
+ //# sourceMappingURL=proxy-agent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"proxy-agent.d.ts","sourceRoot":"","sources":["../../../src/utils/proxy-agent.ts"],"names":[],"mappings":"AAcA,wEAAwE;AACxE,MAAM,MAAM,cAAc,GAAG,GAAG,CAAC;AAIjC,8CAA8C;AAC9C,MAAM,MAAM,SAAS,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAEvD,cAAc;AACd,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,SAAS,CAAC;IAChB,6BAA6B;IAC7B,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,qCAAqC;AACrC,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,mBAAmB,CAAC;IACzB,GAAG,EAAE,mBAAmB,CAAC;IACzB,KAAK,EAAE,mBAAmB,CAAC;CAC5B;AAED,uBAAuB;AACvB,eAAO,MAAM,sBAAsB,EAAE,aAIpC,CAAC;AAIF;;;;;;;;;;;;;GAaG;AACH,wBAAgB,4BAA4B,CAC1C,QAAQ,CAAC,EAAE,mBAAmB,EAC9B,KAAK,SAAU,GACd,MAAM,GAAG,SAAS,CA8BpB;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,qBAAqB,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,GAAG,SAAS,CAAC,CAYlG;AAED;;;;GAIG;AACH,wBAAgB,0BAA0B,CAAC,QAAQ,CAAC,EAAE,mBAAmB,GAAG,MAAM,GAAG,SAAS,CAY7F"}
@@ -0,0 +1,115 @@
1
+ // ============================================================
2
+ // Proxy Agent — 通用 HTTP/HTTPS/SOCKS 代理解析工具
3
+ // ============================================================
4
+ //
5
+ // 与 utils/system-proxy.ts 的关系:
6
+ // - system-proxy 仅负责「检测系统代理 URL」(环境变量 + macOS scutil + Windows 注册表),
7
+ // 是基础能力、与环境/OS 相关的工具。
8
+ // - proxy-agent 在 system-proxy 之上提供更高层的代理能力:
9
+ // 1. 按分类(LLM / MCP / Fetch)的代理配置解析出最终代理 URL;
10
+ // 2. 将代理 URL 转换为 undici ProxyAgent dispatcher,供 Node fetch 使用。
11
+ // 因此 proxy-agent 依赖 system-proxy,两者同属于 utils 目录下的通用工具。
12
+ var __rewriteRelativeImportExtension = (this && this.__rewriteRelativeImportExtension) || function (path, preserveJsx) {
13
+ if (typeof path === "string" && /^\.\.?\//.test(path)) {
14
+ return path.replace(/\.(tsx)$|((?:\.d)?)((?:\.[^./]+?)?)\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {
15
+ return tsx ? preserveJsx ? ".jsx" : ".js" : d && (!ext || !cm) ? m : (d + ext + "." + cm.toLowerCase() + "js");
16
+ });
17
+ }
18
+ return path;
19
+ };
20
+ import { getSystemProxyUrl } from "./system-proxy.js";
21
+ /** 默认代理设置:全部分类走系统代理 */
22
+ export const DEFAULT_PROXY_SETTINGS = {
23
+ llm: { mode: 'system' },
24
+ mcp: { mode: 'system' },
25
+ fetch: { mode: 'system' },
26
+ };
27
+ // ---- Proxy URL 解析 ----
28
+ /**
29
+ * 根据分类代理配置解析代理 URL
30
+ *
31
+ * - `mode='system'`:自动检测系统代理(环境变量 + macOS scutil + Windows 注册表)
32
+ * - `mode='custom'`:使用用户指定的代理 URL
33
+ * - `mode='direct'`:不走代理,返回 undefined
34
+ *
35
+ * 返回代理 URL 字符串,需配合 createProxyDispatcher() 使用。
36
+ * 支持 http://、https://、socks4://、socks5:// 协议。
37
+ *
38
+ * @param category 分类代理配置
39
+ * @param label 日志标签(如 'LLM', 'MCP', 'Fetch')
40
+ * @returns 代理 URL 字符串,无代理时返回 undefined
41
+ */
42
+ export function resolveProxyAgentForCategory(category, label = 'Proxy') {
43
+ if (!category)
44
+ return undefined;
45
+ let proxyUrl;
46
+ switch (category.mode) {
47
+ case 'direct':
48
+ console.debug(`[${label}] proxy mode: direct (no proxy)`);
49
+ return undefined;
50
+ case 'custom':
51
+ if (!category.url) {
52
+ console.debug(`[${label}] proxy mode: custom but no URL configured, falling back to direct`);
53
+ return undefined;
54
+ }
55
+ proxyUrl = category.url;
56
+ break;
57
+ case 'system':
58
+ default:
59
+ proxyUrl = getSystemProxyUrl();
60
+ if (!proxyUrl) {
61
+ console.debug(`[${label}] proxy mode: system, no system proxy detected`);
62
+ return undefined;
63
+ }
64
+ break;
65
+ }
66
+ console.debug(`[${label}] using proxy: ${proxyUrl}`);
67
+ return proxyUrl;
68
+ }
69
+ /**
70
+ * 根据代理 URL 创建 undici ProxyAgent dispatcher
71
+ *
72
+ * Node.js 原生 fetch() 不支持 RequestInit.proxy 选项,
73
+ * 需通过 dispatcher 传入 undici 的 ProxyAgent 来正确使用代理。
74
+ *
75
+ * 使用动态 import('undici') 避免浏览器环境静态解析失败。
76
+ * 仅在传入 proxyUrl 时才创建 ProxyAgent,无代理时返回 undefined。
77
+ *
78
+ * @param proxyUrl 代理 URL(如 http://127.0.0.1:7890),undefined 时不创建
79
+ * @returns ProxyAgent dispatcher 或 undefined
80
+ */
81
+ export async function createProxyDispatcher(proxyUrl) {
82
+ if (!proxyUrl)
83
+ return undefined;
84
+ try {
85
+ // 动态 import undici(Node 18+ 内置),用变量规避静态模块解析错误
86
+ const modName = 'undici';
87
+ const { ProxyAgent } = await import(__rewriteRelativeImportExtension(modName));
88
+ if (!ProxyAgent)
89
+ return undefined;
90
+ return new ProxyAgent({ uri: proxyUrl });
91
+ }
92
+ catch {
93
+ console.warn(`[Proxy] Failed to create ProxyAgent for ${proxyUrl}, falling back to direct`);
94
+ return undefined;
95
+ }
96
+ }
97
+ /**
98
+ * 获取分类代理的有效 URL(用于 axios 等 HTTP 客户端)
99
+ *
100
+ * @returns 代理 URL 字符串,无代理时返回 undefined
101
+ */
102
+ export function resolveProxyUrlForCategory(category) {
103
+ if (!category)
104
+ return undefined;
105
+ switch (category.mode) {
106
+ case 'direct':
107
+ return undefined;
108
+ case 'custom':
109
+ return category.url || undefined;
110
+ case 'system':
111
+ default:
112
+ return getSystemProxyUrl();
113
+ }
114
+ }
115
+ //# sourceMappingURL=proxy-agent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"proxy-agent.js","sourceRoot":"","sources":["../../../src/utils/proxy-agent.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,2CAA2C;AAC3C,+DAA+D;AAC/D,EAAE;AACF,+BAA+B;AAC/B,uEAAuE;AACvE,0BAA0B;AAC1B,+CAA+C;AAC/C,mDAAmD;AACnD,qEAAqE;AACrE,yDAAyD;;;;;;;;;AAEzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAwBtD,uBAAuB;AACvB,MAAM,CAAC,MAAM,sBAAsB,GAAkB;IACnD,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;IACvB,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;IACvB,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;CAC1B,CAAC;AAEF,yBAAyB;AAEzB;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,4BAA4B,CAC1C,QAA8B,EAC9B,KAAK,GAAG,OAAO;IAEf,IAAI,CAAC,QAAQ;QAAE,OAAO,SAAS,CAAC;IAEhC,IAAI,QAA4B,CAAC;IAEjC,QAAQ,QAAQ,CAAC,IAAI,EAAE,CAAC;QACtB,KAAK,QAAQ;YACX,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,iCAAiC,CAAC,CAAC;YAC1D,OAAO,SAAS,CAAC;QAEnB,KAAK,QAAQ;YACX,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC;gBAClB,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,oEAAoE,CAAC,CAAC;gBAC7F,OAAO,SAAS,CAAC;YACnB,CAAC;YACD,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC;YACxB,MAAM;QAER,KAAK,QAAQ,CAAC;QACd;YACE,QAAQ,GAAG,iBAAiB,EAAE,CAAC;YAC/B,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,gDAAgD,CAAC,CAAC;gBACzE,OAAO,SAAS,CAAC;YACnB,CAAC;YACD,MAAM;IACV,CAAC;IAED,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,kBAAkB,QAAQ,EAAE,CAAC,CAAC;IACrD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,QAAiB;IAC3D,IAAI,CAAC,QAAQ;QAAE,OAAO,SAAS,CAAC;IAChC,IAAI,CAAC;QACH,8CAA8C;QAC9C,MAAM,OAAO,GAAG,QAAQ,CAAC;QACzB,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,MAAM,kCAAC,OAAO,EAAQ,CAAC;QACpD,IAAI,CAAC,UAAU;YAAE,OAAO,SAAS,CAAC;QAClC,OAAO,IAAI,UAAU,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC,CAAC;IAC3C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,IAAI,CAAC,2CAA2C,QAAQ,0BAA0B,CAAC,CAAC;QAC5F,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,0BAA0B,CAAC,QAA8B;IACvE,IAAI,CAAC,QAAQ;QAAE,OAAO,SAAS,CAAC;IAEhC,QAAQ,QAAQ,CAAC,IAAI,EAAE,CAAC;QACtB,KAAK,QAAQ;YACX,OAAO,SAAS,CAAC;QACnB,KAAK,QAAQ;YACX,OAAO,QAAQ,CAAC,GAAG,IAAI,SAAS,CAAC;QACnC,KAAK,QAAQ,CAAC;QACd;YACE,OAAO,iBAAiB,EAAE,CAAC;IAC/B,CAAC;AACH,CAAC"}
@@ -0,0 +1,53 @@
1
+ /** ProxyAgent 类型(undici 内置,Node 18+ 可直接 import;用 any 避免未声明依赖的 TS 错误) */
2
+ export type ProxyAgentType = any;
3
+ /** 代理模式:system=系统代理, custom=自定义, direct=直连 */
4
+ export type ProxyMode = 'system' | 'custom' | 'direct';
5
+ /** 单分类代理配置 */
6
+ export interface ProxyCategoryConfig {
7
+ mode: ProxyMode;
8
+ /** mode='custom' 时的代理 URL */
9
+ url?: string;
10
+ }
11
+ /** 分类代理设置(LLM / MCP / Fetch 各自独立) */
12
+ export interface ProxySettings {
13
+ llm: ProxyCategoryConfig;
14
+ mcp: ProxyCategoryConfig;
15
+ fetch: ProxyCategoryConfig;
16
+ }
17
+ /** 默认代理设置:全部分类走系统代理 */
18
+ export declare const DEFAULT_PROXY_SETTINGS: ProxySettings;
19
+ /**
20
+ * 根据分类代理配置解析代理 URL
21
+ *
22
+ * - `mode='system'`:自动检测系统代理(环境变量 + macOS scutil + Windows 注册表)
23
+ * - `mode='custom'`:使用用户指定的代理 URL
24
+ * - `mode='direct'`:不走代理,返回 undefined
25
+ *
26
+ * 返回代理 URL 字符串,需配合 createProxyDispatcher() 使用。
27
+ * 支持 http://、https://、socks4://、socks5:// 协议。
28
+ *
29
+ * @param category 分类代理配置
30
+ * @param label 日志标签(如 'LLM', 'MCP', 'Fetch')
31
+ * @returns 代理 URL 字符串,无代理时返回 undefined
32
+ */
33
+ export declare function resolveProxyAgentForCategory(category?: ProxyCategoryConfig, label?: string): string | undefined;
34
+ /**
35
+ * 根据代理 URL 创建 undici ProxyAgent dispatcher
36
+ *
37
+ * Node.js 原生 fetch() 不支持 RequestInit.proxy 选项,
38
+ * 需通过 dispatcher 传入 undici 的 ProxyAgent 来正确使用代理。
39
+ *
40
+ * 使用动态 import('undici') 避免浏览器环境静态解析失败。
41
+ * 仅在传入 proxyUrl 时才创建 ProxyAgent,无代理时返回 undefined。
42
+ *
43
+ * @param proxyUrl 代理 URL(如 http://127.0.0.1:7890),undefined 时不创建
44
+ * @returns ProxyAgent dispatcher 或 undefined
45
+ */
46
+ export declare function createProxyDispatcher(proxyUrl?: string): Promise<ProxyAgentType | undefined>;
47
+ /**
48
+ * 获取分类代理的有效 URL(用于 axios 等 HTTP 客户端)
49
+ *
50
+ * @returns 代理 URL 字符串,无代理时返回 undefined
51
+ */
52
+ export declare function resolveProxyUrlForCategory(category?: ProxyCategoryConfig): string | undefined;
53
+ //# sourceMappingURL=proxy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"proxy.d.ts","sourceRoot":"","sources":["../../../src/utils/proxy.ts"],"names":[],"mappings":"AAIA,wEAAwE;AACxE,MAAM,MAAM,cAAc,GAAG,GAAG,CAAC;AAIjC,8CAA8C;AAC9C,MAAM,MAAM,SAAS,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAEvD,cAAc;AACd,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,SAAS,CAAC;IAChB,6BAA6B;IAC7B,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,qCAAqC;AACrC,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,mBAAmB,CAAC;IACzB,GAAG,EAAE,mBAAmB,CAAC;IACzB,KAAK,EAAE,mBAAmB,CAAC;CAC5B;AAED,uBAAuB;AACvB,eAAO,MAAM,sBAAsB,EAAE,aAIpC,CAAC;AAQF;;;;;;;;;;;;;GAaG;AACH,wBAAgB,4BAA4B,CAC1C,QAAQ,CAAC,EAAE,mBAAmB,EAC9B,KAAK,SAAU,GACd,MAAM,GAAG,SAAS,CA8BpB;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,qBAAqB,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,GAAG,SAAS,CAAC,CAYlG;AAED;;;;GAIG;AACH,wBAAgB,0BAA0B,CAAC,QAAQ,CAAC,EAAE,mBAAmB,GAAG,MAAM,GAAG,SAAS,CAY7F"}
@@ -0,0 +1,109 @@
1
+ // ============================================================
2
+ // Proxy — 通用 HTTP/HTTPS/SOCKS 代理解析工具(跨 MCP / A2A / LLM 的基础能力)
3
+ // ============================================================
4
+ var __rewriteRelativeImportExtension = (this && this.__rewriteRelativeImportExtension) || function (path, preserveJsx) {
5
+ if (typeof path === "string" && /^\.\.?\//.test(path)) {
6
+ return path.replace(/\.(tsx)$|((?:\.d)?)((?:\.[^./]+?)?)\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {
7
+ return tsx ? preserveJsx ? ".jsx" : ".js" : d && (!ext || !cm) ? m : (d + ext + "." + cm.toLowerCase() + "js");
8
+ });
9
+ }
10
+ return path;
11
+ };
12
+ /** 默认代理设置:全部分类走系统代理 */
13
+ export const DEFAULT_PROXY_SETTINGS = {
14
+ llm: { mode: 'system' },
15
+ mcp: { mode: 'system' },
16
+ fetch: { mode: 'system' },
17
+ };
18
+ // ---- Proxy URL 解析 ----
19
+ // 系统代理检测(环境变量 + macOS scutil + Windows 注册表)为通用基础能力,
20
+ // 统一放在 utils/system-proxy 中,供 LLM / MCP / Fetch 各分类复用。
21
+ import { getSystemProxyUrl } from "./system-proxy.js";
22
+ /**
23
+ * 根据分类代理配置解析代理 URL
24
+ *
25
+ * - `mode='system'`:自动检测系统代理(环境变量 + macOS scutil + Windows 注册表)
26
+ * - `mode='custom'`:使用用户指定的代理 URL
27
+ * - `mode='direct'`:不走代理,返回 undefined
28
+ *
29
+ * 返回代理 URL 字符串,需配合 createProxyDispatcher() 使用。
30
+ * 支持 http://、https://、socks4://、socks5:// 协议。
31
+ *
32
+ * @param category 分类代理配置
33
+ * @param label 日志标签(如 'LLM', 'MCP', 'Fetch')
34
+ * @returns 代理 URL 字符串,无代理时返回 undefined
35
+ */
36
+ export function resolveProxyAgentForCategory(category, label = 'Proxy') {
37
+ if (!category)
38
+ return undefined;
39
+ let proxyUrl;
40
+ switch (category.mode) {
41
+ case 'direct':
42
+ console.debug(`[${label}] proxy mode: direct (no proxy)`);
43
+ return undefined;
44
+ case 'custom':
45
+ if (!category.url) {
46
+ console.debug(`[${label}] proxy mode: custom but no URL configured, falling back to direct`);
47
+ return undefined;
48
+ }
49
+ proxyUrl = category.url;
50
+ break;
51
+ case 'system':
52
+ default:
53
+ proxyUrl = getSystemProxyUrl();
54
+ if (!proxyUrl) {
55
+ console.debug(`[${label}] proxy mode: system, no system proxy detected`);
56
+ return undefined;
57
+ }
58
+ break;
59
+ }
60
+ console.debug(`[${label}] using proxy: ${proxyUrl}`);
61
+ return proxyUrl;
62
+ }
63
+ /**
64
+ * 根据代理 URL 创建 undici ProxyAgent dispatcher
65
+ *
66
+ * Node.js 原生 fetch() 不支持 RequestInit.proxy 选项,
67
+ * 需通过 dispatcher 传入 undici 的 ProxyAgent 来正确使用代理。
68
+ *
69
+ * 使用动态 import('undici') 避免浏览器环境静态解析失败。
70
+ * 仅在传入 proxyUrl 时才创建 ProxyAgent,无代理时返回 undefined。
71
+ *
72
+ * @param proxyUrl 代理 URL(如 http://127.0.0.1:7890),undefined 时不创建
73
+ * @returns ProxyAgent dispatcher 或 undefined
74
+ */
75
+ export async function createProxyDispatcher(proxyUrl) {
76
+ if (!proxyUrl)
77
+ return undefined;
78
+ try {
79
+ // 动态 import undici(Node 18+ 内置),用变量规避静态模块解析错误
80
+ const modName = 'undici';
81
+ const { ProxyAgent } = await import(__rewriteRelativeImportExtension(modName));
82
+ if (!ProxyAgent)
83
+ return undefined;
84
+ return new ProxyAgent({ uri: proxyUrl });
85
+ }
86
+ catch {
87
+ console.warn(`[Proxy] Failed to create ProxyAgent for ${proxyUrl}, falling back to direct`);
88
+ return undefined;
89
+ }
90
+ }
91
+ /**
92
+ * 获取分类代理的有效 URL(用于 axios 等 HTTP 客户端)
93
+ *
94
+ * @returns 代理 URL 字符串,无代理时返回 undefined
95
+ */
96
+ export function resolveProxyUrlForCategory(category) {
97
+ if (!category)
98
+ return undefined;
99
+ switch (category.mode) {
100
+ case 'direct':
101
+ return undefined;
102
+ case 'custom':
103
+ return category.url || undefined;
104
+ case 'system':
105
+ default:
106
+ return getSystemProxyUrl();
107
+ }
108
+ }
109
+ //# sourceMappingURL=proxy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"proxy.js","sourceRoot":"","sources":["../../../src/utils/proxy.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,8DAA8D;AAC9D,+DAA+D;;;;;;;;;AAwB/D,uBAAuB;AACvB,MAAM,CAAC,MAAM,sBAAsB,GAAkB;IACnD,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;IACvB,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;IACvB,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;CAC1B,CAAC;AAEF,yBAAyB;AAEzB,oDAAoD;AACpD,uDAAuD;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAEtD;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,4BAA4B,CAC1C,QAA8B,EAC9B,KAAK,GAAG,OAAO;IAEf,IAAI,CAAC,QAAQ;QAAE,OAAO,SAAS,CAAC;IAEhC,IAAI,QAA4B,CAAC;IAEjC,QAAQ,QAAQ,CAAC,IAAI,EAAE,CAAC;QACtB,KAAK,QAAQ;YACX,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,iCAAiC,CAAC,CAAC;YAC1D,OAAO,SAAS,CAAC;QAEnB,KAAK,QAAQ;YACX,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC;gBAClB,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,oEAAoE,CAAC,CAAC;gBAC7F,OAAO,SAAS,CAAC;YACnB,CAAC;YACD,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC;YACxB,MAAM;QAER,KAAK,QAAQ,CAAC;QACd;YACE,QAAQ,GAAG,iBAAiB,EAAE,CAAC;YAC/B,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,gDAAgD,CAAC,CAAC;gBACzE,OAAO,SAAS,CAAC;YACnB,CAAC;YACD,MAAM;IACV,CAAC;IAED,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,kBAAkB,QAAQ,EAAE,CAAC,CAAC;IACrD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,QAAiB;IAC3D,IAAI,CAAC,QAAQ;QAAE,OAAO,SAAS,CAAC;IAChC,IAAI,CAAC;QACH,8CAA8C;QAC9C,MAAM,OAAO,GAAG,QAAQ,CAAC;QACzB,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,MAAM,kCAAC,OAAO,EAAQ,CAAC;QACpD,IAAI,CAAC,UAAU;YAAE,OAAO,SAAS,CAAC;QAClC,OAAO,IAAI,UAAU,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC,CAAC;IAC3C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,IAAI,CAAC,2CAA2C,QAAQ,0BAA0B,CAAC,CAAC;QAC5F,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,0BAA0B,CAAC,QAA8B;IACvE,IAAI,CAAC,QAAQ;QAAE,OAAO,SAAS,CAAC;IAEhC,QAAQ,QAAQ,CAAC,IAAI,EAAE,CAAC;QACtB,KAAK,QAAQ;YACX,OAAO,SAAS,CAAC;QACnB,KAAK,QAAQ;YACX,OAAO,QAAQ,CAAC,GAAG,IAAI,SAAS,CAAC;QACnC,KAAK,QAAQ,CAAC;QACd;YACE,OAAO,iBAAiB,EAAE,CAAC;IAC/B,CAAC;AACH,CAAC"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * 从 Windows 注册表读取系统代理配置
3
+ * 仅 Windows 平台生效,其他平台返回 undefined。
4
+ * 结果带 TTL 缓存,避免重复查询注册表,同时保证系统设置变更后生效。
5
+ */
6
+ export declare function getWindowsSystemProxy(): string | undefined;
7
+ /** 清除系统代理缓存(应用内修改代理设置、或希望强制重新探测时调用) */
8
+ export declare function clearSystemProxyCache(): void;
9
+ /**
10
+ * 获取系统代理 URL
11
+ * 优先级:环境变量 HTTPS_PROXY / HTTP_PROXY / ALL_PROXY > macOS scutil > Windows 注册表
12
+ * 环境变量每次实时读取(即时生效、零成本);OS 探测结果带 TTL 缓存 + 显式失效。
13
+ */
14
+ export declare function getSystemProxyUrl(): string | undefined;
15
+ //# sourceMappingURL=system-proxy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"system-proxy.d.ts","sourceRoot":"","sources":["../../../src/utils/system-proxy.ts"],"names":[],"mappings":"AAwEA;;;;GAIG;AACH,wBAAgB,qBAAqB,IAAI,MAAM,GAAG,SAAS,CA8B1D;AAED,uCAAuC;AACvC,wBAAgB,qBAAqB,IAAI,IAAI,CAO5C;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,GAAG,SAAS,CAStD"}
@@ -0,0 +1,128 @@
1
+ // ============================================================
2
+ // System Proxy — 通用系统代理检测工具(跨平台,与业务模块无关的基础方法)
3
+ // ============================================================
4
+ import { execSync } from 'child_process';
5
+ // ---- 缓存策略 ----
6
+ // macOS scutil / Windows 注册表探测都比较重(spawn 进程 / 读注册表),不能每次调用都执行;
7
+ // 但「永久缓存」又会导致系统级代理被直接修改后无法生效。
8
+ // 因此采用「TTL 缓存 + 显式失效」:
9
+ // - 性能:TTL 内复用结果,不重复探测;
10
+ // - 时效:超过 TTL 自动重新探测,确保系统设置变更(非经本应用)后最终生效;
11
+ // - 即时:应用内修改代理设置会调用 clearSystemProxyCache() 立即失效。
12
+ // 环境变量始终实时读取(零成本、即时生效),不参与缓存。
13
+ const OS_PROXY_TTL_MS = 30_000;
14
+ // ---- macOS 系统代理检测 ----
15
+ let _macProxy = null;
16
+ let _macProbed = false;
17
+ let _macTs = 0;
18
+ /**
19
+ * 从 macOS 系统偏好设置读取代理配置
20
+ * 通过 scutil --proxy 查询,仅 macOS 平台生效。
21
+ * 结果带 TTL 缓存,兼顾性能与「系统设置变更后生效」。
22
+ */
23
+ function getMacOSSystemProxy() {
24
+ if (_macProbed && Date.now() - _macTs < OS_PROXY_TTL_MS)
25
+ return _macProxy ?? undefined;
26
+ let url;
27
+ if (process.platform === 'darwin') {
28
+ try {
29
+ const output = execSync('scutil --proxy', { encoding: 'utf-8', timeout: 3000 });
30
+ const parsed = {};
31
+ // scutil 输出格式: " Key : Value"
32
+ for (const line of output.split('\n')) {
33
+ const m = line.trim().match(/^(\w+)\s*:\s*(.+)$/);
34
+ if (m)
35
+ parsed[m[1]] = m[2].trim();
36
+ }
37
+ // 优先 HTTPS 代理,其次 HTTP 代理,最后 SOCKS 代理
38
+ if (parsed['HTTPSEnable'] === '1' && parsed['HTTPSProxy']) {
39
+ const port = parsed['HTTPSPort'] || '443';
40
+ url = `http://${parsed['HTTPSProxy']}:${port}`;
41
+ console.debug(`[Proxy] macOS system HTTPS proxy detected: ${url}`);
42
+ }
43
+ else if (parsed['HTTPEnable'] === '1' && parsed['HTTPProxy']) {
44
+ const port = parsed['HTTPPort'] || '80';
45
+ url = `http://${parsed['HTTPProxy']}:${port}`;
46
+ console.debug(`[Proxy] macOS system HTTP proxy detected: ${url}`);
47
+ }
48
+ else if (parsed['SOCKSEnable'] === '1' && parsed['SOCKSProxy']) {
49
+ const port = parsed['SOCKSPort'] || '1080';
50
+ url = `socks5://${parsed['SOCKSProxy']}:${port}`;
51
+ console.debug(`[Proxy] macOS system SOCKS proxy detected: ${url}`);
52
+ }
53
+ }
54
+ catch {
55
+ url = undefined;
56
+ }
57
+ }
58
+ _macProxy = url ?? null;
59
+ _macProbed = true;
60
+ _macTs = Date.now();
61
+ return _macProxy ?? undefined;
62
+ }
63
+ // ---- Windows 系统代理检测 ----
64
+ let _winProxy = null;
65
+ let _winProbed = false;
66
+ let _winTs = 0;
67
+ /**
68
+ * 从 Windows 注册表读取系统代理配置
69
+ * 仅 Windows 平台生效,其他平台返回 undefined。
70
+ * 结果带 TTL 缓存,避免重复查询注册表,同时保证系统设置变更后生效。
71
+ */
72
+ export function getWindowsSystemProxy() {
73
+ if (_winProbed && Date.now() - _winTs < OS_PROXY_TTL_MS)
74
+ return _winProxy ?? undefined;
75
+ let url;
76
+ if (process.platform === 'win32') {
77
+ try {
78
+ const regPath = 'HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings';
79
+ const output = execSync(`reg query "${regPath}" /v ProxyEnable`, { encoding: 'utf-8', timeout: 3000, windowsHide: true });
80
+ const enabledMatch = output.match(/ProxyEnable\s+REG_DWORD\s+0x(\d+)/i);
81
+ if (!enabledMatch || enabledMatch[1] === '0') {
82
+ url = undefined;
83
+ }
84
+ else {
85
+ const serverOutput = execSync(`reg query "${regPath}" /v ProxyServer`, { encoding: 'utf-8', timeout: 3000, windowsHide: true });
86
+ const serverMatch = serverOutput.match(/ProxyServer\s+REG_SZ\s+(.+)/i);
87
+ if (serverMatch) {
88
+ const proxyServer = serverMatch[1].trim();
89
+ // Windows 代理可能是 ip:port 格式,需要补全协议
90
+ url = proxyServer.includes('://') ? proxyServer : `http://${proxyServer}`;
91
+ console.debug(`[Proxy] Windows system proxy detected: ${url}`);
92
+ }
93
+ }
94
+ }
95
+ catch {
96
+ url = undefined;
97
+ }
98
+ }
99
+ _winProxy = url ?? null;
100
+ _winProbed = true;
101
+ _winTs = Date.now();
102
+ return _winProxy ?? undefined;
103
+ }
104
+ /** 清除系统代理缓存(应用内修改代理设置、或希望强制重新探测时调用) */
105
+ export function clearSystemProxyCache() {
106
+ _macProxy = null;
107
+ _macProbed = false;
108
+ _macTs = 0;
109
+ _winProxy = null;
110
+ _winProbed = false;
111
+ _winTs = 0;
112
+ }
113
+ /**
114
+ * 获取系统代理 URL
115
+ * 优先级:环境变量 HTTPS_PROXY / HTTP_PROXY / ALL_PROXY > macOS scutil > Windows 注册表
116
+ * 环境变量每次实时读取(即时生效、零成本);OS 探测结果带 TTL 缓存 + 显式失效。
117
+ */
118
+ export function getSystemProxyUrl() {
119
+ return process.env.HTTPS_PROXY
120
+ || process.env.https_proxy
121
+ || process.env.HTTP_PROXY
122
+ || process.env.http_proxy
123
+ || process.env.ALL_PROXY
124
+ || process.env.all_proxy
125
+ || getMacOSSystemProxy()
126
+ || getWindowsSystemProxy();
127
+ }
128
+ //# sourceMappingURL=system-proxy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"system-proxy.js","sourceRoot":"","sources":["../../../src/utils/system-proxy.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": "0.1.70",
3
+ "version": "0.1.73",
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",