@cicctencent/agent-core 0.1.69 → 0.1.72

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 (135) 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/agent/tool-executor.d.ts +4 -1
  18. package/dist/cjs/agent/tool-executor.d.ts.map +1 -1
  19. package/dist/cjs/agent/tool-executor.js +17 -2
  20. package/dist/cjs/agent/tool-executor.js.map +1 -1
  21. package/dist/cjs/index.d.ts +6 -3
  22. package/dist/cjs/index.d.ts.map +1 -1
  23. package/dist/cjs/index.js +15 -10
  24. package/dist/cjs/index.js.map +1 -1
  25. package/dist/cjs/llm/debug.d.ts.map +1 -1
  26. package/dist/cjs/llm/debug.js +4 -1
  27. package/dist/cjs/llm/debug.js.map +1 -1
  28. package/dist/cjs/mcp/base-client.d.ts +19 -4
  29. package/dist/cjs/mcp/base-client.d.ts.map +1 -1
  30. package/dist/cjs/mcp/base-client.js +28 -8
  31. package/dist/cjs/mcp/base-client.js.map +1 -1
  32. package/dist/cjs/mcp/http-client.d.ts +5 -5
  33. package/dist/cjs/mcp/http-client.d.ts.map +1 -1
  34. package/dist/cjs/mcp/http-client.js +26 -21
  35. package/dist/cjs/mcp/http-client.js.map +1 -1
  36. package/dist/cjs/mcp/proxy-agent.d.ts +2 -50
  37. package/dist/cjs/mcp/proxy-agent.d.ts.map +1 -1
  38. package/dist/cjs/mcp/proxy-agent.js +12 -174
  39. package/dist/cjs/mcp/proxy-agent.js.map +1 -1
  40. package/dist/cjs/mcp/stdio-client.d.ts +1 -1
  41. package/dist/cjs/mcp/stdio-client.d.ts.map +1 -1
  42. package/dist/cjs/mcp/stdio-client.js +1 -1
  43. package/dist/cjs/mcp/stdio-client.js.map +1 -1
  44. package/dist/cjs/mcp/types.d.ts +8 -2
  45. package/dist/cjs/mcp/types.d.ts.map +1 -1
  46. package/dist/cjs/tool/delegate.d.ts +21 -1
  47. package/dist/cjs/tool/delegate.d.ts.map +1 -1
  48. package/dist/cjs/tool/delegate.js +44 -7
  49. package/dist/cjs/tool/delegate.js.map +1 -1
  50. package/dist/cjs/tool/types.d.ts +8 -0
  51. package/dist/cjs/tool/types.d.ts.map +1 -1
  52. package/dist/cjs/utils/header-vars.d.ts +18 -0
  53. package/dist/cjs/utils/header-vars.d.ts.map +1 -0
  54. package/dist/cjs/utils/header-vars.js +71 -0
  55. package/dist/cjs/utils/header-vars.js.map +1 -0
  56. package/dist/cjs/utils/proxy-agent.d.ts +53 -0
  57. package/dist/cjs/utils/proxy-agent.d.ts.map +1 -0
  58. package/dist/cjs/utils/proxy-agent.js +154 -0
  59. package/dist/cjs/utils/proxy-agent.js.map +1 -0
  60. package/dist/cjs/utils/proxy.d.ts +53 -0
  61. package/dist/cjs/utils/proxy.d.ts.map +1 -0
  62. package/dist/cjs/utils/proxy.js +148 -0
  63. package/dist/cjs/utils/proxy.js.map +1 -0
  64. package/dist/cjs/utils/system-proxy.d.ts +15 -0
  65. package/dist/cjs/utils/system-proxy.d.ts.map +1 -0
  66. package/dist/cjs/utils/system-proxy.js +133 -0
  67. package/dist/cjs/utils/system-proxy.js.map +1 -0
  68. package/dist/esm/a2a/client.d.ts +39 -11
  69. package/dist/esm/a2a/client.d.ts.map +1 -1
  70. package/dist/esm/a2a/client.js +69 -22
  71. package/dist/esm/a2a/client.js.map +1 -1
  72. package/dist/esm/a2a/rest-client.d.ts +35 -9
  73. package/dist/esm/a2a/rest-client.d.ts.map +1 -1
  74. package/dist/esm/a2a/rest-client.js +65 -18
  75. package/dist/esm/a2a/rest-client.js.map +1 -1
  76. package/dist/esm/a2a/rest-runner.d.ts +6 -0
  77. package/dist/esm/a2a/rest-runner.d.ts.map +1 -1
  78. package/dist/esm/a2a/rest-runner.js +19 -7
  79. package/dist/esm/a2a/rest-runner.js.map +1 -1
  80. package/dist/esm/a2a/runner.d.ts +6 -0
  81. package/dist/esm/a2a/runner.d.ts.map +1 -1
  82. package/dist/esm/a2a/runner.js +24 -7
  83. package/dist/esm/a2a/runner.js.map +1 -1
  84. package/dist/esm/agent/tool-executor.d.ts +4 -1
  85. package/dist/esm/agent/tool-executor.d.ts.map +1 -1
  86. package/dist/esm/agent/tool-executor.js +17 -2
  87. package/dist/esm/agent/tool-executor.js.map +1 -1
  88. package/dist/esm/index.d.ts +6 -3
  89. package/dist/esm/index.d.ts.map +1 -1
  90. package/dist/esm/index.js +3 -1
  91. package/dist/esm/index.js.map +1 -1
  92. package/dist/esm/llm/debug.d.ts.map +1 -1
  93. package/dist/esm/llm/debug.js +4 -1
  94. package/dist/esm/llm/debug.js.map +1 -1
  95. package/dist/esm/mcp/base-client.d.ts +19 -4
  96. package/dist/esm/mcp/base-client.d.ts.map +1 -1
  97. package/dist/esm/mcp/base-client.js +28 -8
  98. package/dist/esm/mcp/base-client.js.map +1 -1
  99. package/dist/esm/mcp/http-client.d.ts +5 -5
  100. package/dist/esm/mcp/http-client.d.ts.map +1 -1
  101. package/dist/esm/mcp/http-client.js +25 -20
  102. package/dist/esm/mcp/http-client.js.map +1 -1
  103. package/dist/esm/mcp/proxy-agent.d.ts +2 -50
  104. package/dist/esm/mcp/proxy-agent.d.ts.map +1 -1
  105. package/dist/esm/mcp/proxy-agent.js +7 -168
  106. package/dist/esm/mcp/proxy-agent.js.map +1 -1
  107. package/dist/esm/mcp/stdio-client.d.ts +1 -1
  108. package/dist/esm/mcp/stdio-client.d.ts.map +1 -1
  109. package/dist/esm/mcp/stdio-client.js +1 -1
  110. package/dist/esm/mcp/stdio-client.js.map +1 -1
  111. package/dist/esm/mcp/types.d.ts +8 -2
  112. package/dist/esm/mcp/types.d.ts.map +1 -1
  113. package/dist/esm/tool/delegate.d.ts +21 -1
  114. package/dist/esm/tool/delegate.d.ts.map +1 -1
  115. package/dist/esm/tool/delegate.js +44 -7
  116. package/dist/esm/tool/delegate.js.map +1 -1
  117. package/dist/esm/tool/types.d.ts +8 -0
  118. package/dist/esm/tool/types.d.ts.map +1 -1
  119. package/dist/esm/utils/header-vars.d.ts +18 -0
  120. package/dist/esm/utils/header-vars.d.ts.map +1 -0
  121. package/dist/esm/utils/header-vars.js +65 -0
  122. package/dist/esm/utils/header-vars.js.map +1 -0
  123. package/dist/esm/utils/proxy-agent.d.ts +53 -0
  124. package/dist/esm/utils/proxy-agent.d.ts.map +1 -0
  125. package/dist/esm/utils/proxy-agent.js +115 -0
  126. package/dist/esm/utils/proxy-agent.js.map +1 -0
  127. package/dist/esm/utils/proxy.d.ts +53 -0
  128. package/dist/esm/utils/proxy.d.ts.map +1 -0
  129. package/dist/esm/utils/proxy.js +109 -0
  130. package/dist/esm/utils/proxy.js.map +1 -0
  131. package/dist/esm/utils/system-proxy.d.ts +15 -0
  132. package/dist/esm/utils/system-proxy.d.ts.map +1 -0
  133. package/dist/esm/utils/system-proxy.js +128 -0
  134. package/dist/esm/utils/system-proxy.js.map +1 -0
  135. package/package.json +1 -1
@@ -13,7 +13,8 @@ exports.createDelegateTool = createDelegateTool;
13
13
  *
14
14
  * @param runners 可用的子 Agent 列表(由上层注入)
15
15
  * @param options 可选配置
16
- * - timeoutMs: 单次委派超时时间(毫秒),超时后返回错误信息。默认不限制。
16
+ * - timeoutMs: 全局委派超时时间(毫秒),作为所有 runner 的默认超时;
17
+ * 若某个 runner 自身设置了 timeoutMs,则其覆盖该全局值。超时后返回错误信息。默认不限制。
17
18
  */
18
19
  function createDelegateTool(runners, options) {
19
20
  const timeoutMs = options?.timeoutMs;
@@ -80,17 +81,53 @@ function createDelegateTool(runners, options) {
80
81
  const startTime = Date.now();
81
82
  console.log(`[delegate_task] 委派 → '${agentName}': taskLength=${task.length}, hasCtx=${!!ctx}, structured=${structured}${role ? `, role=${role}` : ''}`);
82
83
  try {
83
- const runPromise = runner.run(task, ctx, { role, structured });
84
- const result = timeoutMs
84
+ // 优先使用 runner 自身的超时,回退到全局 timeoutMs
85
+ const effectiveTimeout = runner.timeoutMs ?? timeoutMs;
86
+ let lastPartialContent = '';
87
+ const runPromise = runner.run(task, ctx, {
88
+ role, structured,
89
+ onPartial: effectiveTimeout ? (c) => { lastPartialContent = c; } : undefined,
90
+ });
91
+ const result = effectiveTimeout
85
92
  ? await Promise.race([
86
93
  runPromise,
87
- new Promise((_, reject) => setTimeout(() => reject(new Error(`delegate_task timeout after ${timeoutMs}ms`)), timeoutMs)),
94
+ new Promise((resolve) => setTimeout(() => {
95
+ if (lastPartialContent) {
96
+ console.log(`[delegate_task] '${agentName}' 超时,返回部分结果: ${lastPartialContent.length} chars`);
97
+ resolve(`[${agentName}] delegate_task timeout after ${effectiveTimeout}ms. Partial result:\n${lastPartialContent}`);
98
+ }
99
+ else {
100
+ resolve(`Error delegating to ${agentName}: delegate_task timeout after ${effectiveTimeout}ms`);
101
+ }
102
+ }, effectiveTimeout)),
88
103
  ])
89
104
  : await runPromise;
90
105
  const elapsed = Date.now() - startTime;
91
- const content = typeof result === 'string' ? result : result.content;
92
- console.log(`[delegate_task] '${agentName}' 完成: elapsed=${elapsed}ms, resultLength=${content.length}`);
93
- return content;
106
+ if (typeof result === 'string') {
107
+ const isTimeout = result.includes('delegate_task timeout');
108
+ console.log(`[delegate_task] ${isTimeout ? '⏱' : '✓'} '${agentName}' ${isTimeout ? '超时(含部分结果)' : '完成'}: elapsed=${elapsed}ms, resultLength=${result.length}`);
109
+ return result;
110
+ }
111
+ // SubAgentRunResult: 结构化结果
112
+ const content = result.content;
113
+ const errors = result.errors ?? [];
114
+ const partialContent = result.partialContent;
115
+ // 构建返回内容:优先使用 content,其次 partialContent
116
+ let finalContent = content || partialContent || '';
117
+ // 如果有错误但已有部分输出,附加错误信息
118
+ if (errors.length > 0) {
119
+ const errorSummary = errors.length === 1
120
+ ? errors[0]
121
+ : `${errors.length} errors: ${errors.join('; ')}`;
122
+ if (finalContent) {
123
+ finalContent += `\n\n⚠️ 子 Agent 执行中遇到错误: ${errorSummary}`;
124
+ }
125
+ else {
126
+ finalContent = `[${agentName}] Error: ${errorSummary}`;
127
+ }
128
+ }
129
+ console.log(`[delegate_task] ✓ '${agentName}' 完成: elapsed=${elapsed}ms, resultLength=${finalContent.length}${errors.length > 0 ? `, errors=${errors.length}` : ''}`);
130
+ return finalContent || `[${agentName}] completed with no output.`;
94
131
  }
95
132
  catch (err) {
96
133
  const elapsed = Date.now() - startTime;
@@ -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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"}
@@ -63,6 +63,8 @@ export interface ArtifactData {
63
63
  }
64
64
  /** Artifact 事件发射回调(由上层 SSE 流注入,供 save_artifact 工具使用) */
65
65
  export type ArtifactEventEmitter = (artifact: ArtifactData) => void;
66
+ /** 部分结果注入回调(由 delegate_task executor 注入,子 Agent 用于实时向主 Agent 历史注入中间结果) */
67
+ export type PartialResultInjector = (content: string) => void;
66
68
  /** 工具执行上下文(由 AgentEngine 注入) */
67
69
  export interface ToolContext {
68
70
  sessionId: string;
@@ -84,6 +86,12 @@ export interface ToolContext {
84
86
  emitArtifact?: ArtifactEventEmitter;
85
87
  /** 当前工具调用的 callId(由引擎注入) */
86
88
  currentToolCallId?: string;
89
+ /**
90
+ * 部分结果注入回调(由 delegate_task executor 注入)。
91
+ * 子 Agent 在流式输出过程中调用此回调,将中间结果实时注入主 Agent 的对话历史。
92
+ * 这使得主 Agent LLM 能在子 Agent 执行过程中就开始感知进度和中间发现。
93
+ */
94
+ injectPartialResult?: PartialResultInjector;
87
95
  }
88
96
  /** 工具执行器签名 */
89
97
  export type ToolExecutor = (args: Record<string, unknown>, ctx: ToolContext) => Promise<string>;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/tool/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/tool/types.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,71 @@
1
+ "use strict";
2
+ // ============================================================
3
+ // vars-interpolator - 请求变量插值(header 值 / 请求体参数通用)
4
+ //
5
+ // 占位符语法:
6
+ // ${vars.<name>} 从调用时传入的 vars 对象读取(运行时变量优先)
7
+ // ${env.<name>} 从 process.env 读取(兼容既有 auth 行为)
8
+ // ${<name>} 简写,等价于 ${vars.<name>}
9
+ //
10
+ // 未匹配到变量时替换为空字符串;非字符串值统一 String() 处理。
11
+ // ============================================================
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ exports.interpolateString = interpolateString;
14
+ exports.interpolateValue = interpolateValue;
15
+ exports.interpolateHeaderValue = interpolateHeaderValue;
16
+ exports.resolveHeaderTemplates = resolveHeaderTemplates;
17
+ /** 占位符匹配:${vars.x} / ${env.x} / ${x} */
18
+ const VAR_PATTERN = /\$\{(?:vars\.|env\.)?(\w+)\}/g;
19
+ /** 将单个字符串中的占位符替换为实际变量 */
20
+ function interpolateString(value, vars) {
21
+ if (typeof value !== 'string')
22
+ return value;
23
+ return value.replace(VAR_PATTERN, (_match, name) => {
24
+ if (vars && Object.prototype.hasOwnProperty.call(vars, name) && vars[name] !== undefined) {
25
+ return String(vars[name]);
26
+ }
27
+ if (process.env[name] !== undefined) {
28
+ return process.env[name];
29
+ }
30
+ return '';
31
+ });
32
+ }
33
+ /**
34
+ * 递归对任意 JSON 值进行变量插值(深拷贝,不改原对象)。
35
+ * - string 叶子:替换 ${vars.x} / ${env.x} / ${x} 占位符
36
+ * - object / array:递归处理每个元素
37
+ * - 其他类型(number/boolean/null 等):原样返回
38
+ *
39
+ * 用于请求体静态参数的变量注入(与 header 插值共用同一套占位符语法)。
40
+ */
41
+ function interpolateValue(value, vars) {
42
+ if (value == null)
43
+ return value;
44
+ if (typeof value === 'string')
45
+ return interpolateString(value, vars);
46
+ if (Array.isArray(value))
47
+ return value.map((v) => interpolateValue(v, vars));
48
+ if (typeof value === 'object') {
49
+ const result = {};
50
+ for (const [k, v] of Object.entries(value)) {
51
+ result[k] = interpolateValue(v, vars);
52
+ }
53
+ return result;
54
+ }
55
+ return value;
56
+ }
57
+ /** 将单个 header 值中的占位符替换为实际变量(兼容旧 API,等价于 interpolateString) */
58
+ function interpolateHeaderValue(value, vars) {
59
+ return interpolateString(value, vars);
60
+ }
61
+ /** 解析一组 header 模板(值可含 ${vars.x} / ${env.x} 占位符) */
62
+ function resolveHeaderTemplates(headers, vars) {
63
+ if (!headers)
64
+ return {};
65
+ const result = {};
66
+ for (const [key, raw] of Object.entries(headers)) {
67
+ result[key] = interpolateString(raw, vars);
68
+ }
69
+ return result;
70
+ }
71
+ //# 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;;AAS/D,8CAWC;AAUD,4CAYC;AAGD,wDAEC;AAGD,wDAUC;AAvDD,wCAAwC;AACxC,MAAM,WAAW,GAAG,+BAA+B,CAAC;AAEpD,yBAAyB;AACzB,SAAgB,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,SAAgB,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,SAAgB,sBAAsB,CAAC,KAAa,EAAE,IAAiB;IACrE,OAAO,iBAAiB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AACxC,CAAC;AAED,mDAAmD;AACnD,SAAgB,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,154 @@
1
+ "use strict";
2
+ // ============================================================
3
+ // Proxy Agent — 通用 HTTP/HTTPS/SOCKS 代理解析工具
4
+ // ============================================================
5
+ //
6
+ // 与 utils/system-proxy.ts 的关系:
7
+ // - system-proxy 仅负责「检测系统代理 URL」(环境变量 + macOS scutil + Windows 注册表),
8
+ // 是基础能力、与环境/OS 相关的工具。
9
+ // - proxy-agent 在 system-proxy 之上提供更高层的代理能力:
10
+ // 1. 按分类(LLM / MCP / Fetch)的代理配置解析出最终代理 URL;
11
+ // 2. 将代理 URL 转换为 undici ProxyAgent dispatcher,供 Node fetch 使用。
12
+ // 因此 proxy-agent 依赖 system-proxy,两者同属于 utils 目录下的通用工具。
13
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
14
+ if (k2 === undefined) k2 = k;
15
+ var desc = Object.getOwnPropertyDescriptor(m, k);
16
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
17
+ desc = { enumerable: true, get: function() { return m[k]; } };
18
+ }
19
+ Object.defineProperty(o, k2, desc);
20
+ }) : (function(o, m, k, k2) {
21
+ if (k2 === undefined) k2 = k;
22
+ o[k2] = m[k];
23
+ }));
24
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
25
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
26
+ }) : function(o, v) {
27
+ o["default"] = v;
28
+ });
29
+ var __importStar = (this && this.__importStar) || (function () {
30
+ var ownKeys = function(o) {
31
+ ownKeys = Object.getOwnPropertyNames || function (o) {
32
+ var ar = [];
33
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
34
+ return ar;
35
+ };
36
+ return ownKeys(o);
37
+ };
38
+ return function (mod) {
39
+ if (mod && mod.__esModule) return mod;
40
+ var result = {};
41
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
42
+ __setModuleDefault(result, mod);
43
+ return result;
44
+ };
45
+ })();
46
+ var __rewriteRelativeImportExtension = (this && this.__rewriteRelativeImportExtension) || function (path, preserveJsx) {
47
+ if (typeof path === "string" && /^\.\.?\//.test(path)) {
48
+ return path.replace(/\.(tsx)$|((?:\.d)?)((?:\.[^./]+?)?)\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {
49
+ return tsx ? preserveJsx ? ".jsx" : ".js" : d && (!ext || !cm) ? m : (d + ext + "." + cm.toLowerCase() + "js");
50
+ });
51
+ }
52
+ return path;
53
+ };
54
+ Object.defineProperty(exports, "__esModule", { value: true });
55
+ exports.DEFAULT_PROXY_SETTINGS = void 0;
56
+ exports.resolveProxyAgentForCategory = resolveProxyAgentForCategory;
57
+ exports.createProxyDispatcher = createProxyDispatcher;
58
+ exports.resolveProxyUrlForCategory = resolveProxyUrlForCategory;
59
+ const system_proxy_ts_1 = require("./system-proxy.js");
60
+ /** 默认代理设置:全部分类走系统代理 */
61
+ exports.DEFAULT_PROXY_SETTINGS = {
62
+ llm: { mode: 'system' },
63
+ mcp: { mode: 'system' },
64
+ fetch: { mode: 'system' },
65
+ };
66
+ // ---- Proxy URL 解析 ----
67
+ /**
68
+ * 根据分类代理配置解析代理 URL
69
+ *
70
+ * - `mode='system'`:自动检测系统代理(环境变量 + macOS scutil + Windows 注册表)
71
+ * - `mode='custom'`:使用用户指定的代理 URL
72
+ * - `mode='direct'`:不走代理,返回 undefined
73
+ *
74
+ * 返回代理 URL 字符串,需配合 createProxyDispatcher() 使用。
75
+ * 支持 http://、https://、socks4://、socks5:// 协议。
76
+ *
77
+ * @param category 分类代理配置
78
+ * @param label 日志标签(如 'LLM', 'MCP', 'Fetch')
79
+ * @returns 代理 URL 字符串,无代理时返回 undefined
80
+ */
81
+ function resolveProxyAgentForCategory(category, label = 'Proxy') {
82
+ if (!category)
83
+ return undefined;
84
+ let proxyUrl;
85
+ switch (category.mode) {
86
+ case 'direct':
87
+ console.debug(`[${label}] proxy mode: direct (no proxy)`);
88
+ return undefined;
89
+ case 'custom':
90
+ if (!category.url) {
91
+ console.debug(`[${label}] proxy mode: custom but no URL configured, falling back to direct`);
92
+ return undefined;
93
+ }
94
+ proxyUrl = category.url;
95
+ break;
96
+ case 'system':
97
+ default:
98
+ proxyUrl = (0, system_proxy_ts_1.getSystemProxyUrl)();
99
+ if (!proxyUrl) {
100
+ console.debug(`[${label}] proxy mode: system, no system proxy detected`);
101
+ return undefined;
102
+ }
103
+ break;
104
+ }
105
+ console.debug(`[${label}] using proxy: ${proxyUrl}`);
106
+ return proxyUrl;
107
+ }
108
+ /**
109
+ * 根据代理 URL 创建 undici ProxyAgent dispatcher
110
+ *
111
+ * Node.js 原生 fetch() 不支持 RequestInit.proxy 选项,
112
+ * 需通过 dispatcher 传入 undici 的 ProxyAgent 来正确使用代理。
113
+ *
114
+ * 使用动态 import('undici') 避免浏览器环境静态解析失败。
115
+ * 仅在传入 proxyUrl 时才创建 ProxyAgent,无代理时返回 undefined。
116
+ *
117
+ * @param proxyUrl 代理 URL(如 http://127.0.0.1:7890),undefined 时不创建
118
+ * @returns ProxyAgent dispatcher 或 undefined
119
+ */
120
+ async function createProxyDispatcher(proxyUrl) {
121
+ if (!proxyUrl)
122
+ return undefined;
123
+ try {
124
+ // 动态 import undici(Node 18+ 内置),用变量规避静态模块解析错误
125
+ const modName = 'undici';
126
+ const { ProxyAgent } = await Promise.resolve(`${__rewriteRelativeImportExtension(modName)}`).then(s => __importStar(require(s)));
127
+ if (!ProxyAgent)
128
+ return undefined;
129
+ return new ProxyAgent({ uri: proxyUrl });
130
+ }
131
+ catch {
132
+ console.warn(`[Proxy] Failed to create ProxyAgent for ${proxyUrl}, falling back to direct`);
133
+ return undefined;
134
+ }
135
+ }
136
+ /**
137
+ * 获取分类代理的有效 URL(用于 axios 等 HTTP 客户端)
138
+ *
139
+ * @returns 代理 URL 字符串,无代理时返回 undefined
140
+ */
141
+ function resolveProxyUrlForCategory(category) {
142
+ if (!category)
143
+ return undefined;
144
+ switch (category.mode) {
145
+ case 'direct':
146
+ return undefined;
147
+ case 'custom':
148
+ return category.url || undefined;
149
+ case 'system':
150
+ default:
151
+ return (0, system_proxy_ts_1.getSystemProxyUrl)();
152
+ }
153
+ }
154
+ //# 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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiDzD,oEAiCC;AAcD,sDAYC;AAOD,gEAYC;AA7HD,uDAAsD;AAwBtD,uBAAuB;AACV,QAAA,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,SAAgB,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,IAAA,mCAAiB,GAAE,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;AACI,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,0DAAa,OAAO,wCAAQ,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,SAAgB,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,IAAA,mCAAiB,GAAE,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"}