@cicctencent/agent-core 0.1.28 → 0.1.31

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 (75) hide show
  1. package/dist/cjs/a2a/rest-runner.d.ts +16 -0
  2. package/dist/cjs/a2a/rest-runner.d.ts.map +1 -1
  3. package/dist/cjs/a2a/rest-runner.js +71 -4
  4. package/dist/cjs/a2a/rest-runner.js.map +1 -1
  5. package/dist/cjs/agent/engine.d.ts +57 -0
  6. package/dist/cjs/agent/engine.d.ts.map +1 -1
  7. package/dist/cjs/agent/engine.js +191 -1
  8. package/dist/cjs/agent/engine.js.map +1 -1
  9. package/dist/cjs/agent/llm-caller.d.ts.map +1 -1
  10. package/dist/cjs/agent/llm-caller.js +8 -0
  11. package/dist/cjs/agent/llm-caller.js.map +1 -1
  12. package/dist/cjs/agent/rate-limit-manager.d.ts +127 -0
  13. package/dist/cjs/agent/rate-limit-manager.d.ts.map +1 -0
  14. package/dist/cjs/agent/rate-limit-manager.js +465 -0
  15. package/dist/cjs/agent/rate-limit-manager.js.map +1 -0
  16. package/dist/cjs/agent/tool-executor.d.ts +11 -0
  17. package/dist/cjs/agent/tool-executor.d.ts.map +1 -1
  18. package/dist/cjs/agent/tool-executor.js +95 -4
  19. package/dist/cjs/agent/tool-executor.js.map +1 -1
  20. package/dist/cjs/agent/types.d.ts +59 -0
  21. package/dist/cjs/agent/types.d.ts.map +1 -1
  22. package/dist/cjs/agent/types.js.map +1 -1
  23. package/dist/cjs/index.d.ts +3 -2
  24. package/dist/cjs/index.d.ts.map +1 -1
  25. package/dist/cjs/index.js +7 -3
  26. package/dist/cjs/index.js.map +1 -1
  27. package/dist/cjs/runtime/run-registry.d.ts +2 -0
  28. package/dist/cjs/runtime/run-registry.d.ts.map +1 -1
  29. package/dist/cjs/runtime/run-registry.js +24 -1
  30. package/dist/cjs/runtime/run-registry.js.map +1 -1
  31. package/dist/cjs/tool/delegate.d.ts +9 -0
  32. package/dist/cjs/tool/delegate.d.ts.map +1 -1
  33. package/dist/cjs/tool/delegate.js.map +1 -1
  34. package/dist/cjs/utils/dsml-parser.d.ts +1 -1
  35. package/dist/cjs/utils/dsml-parser.d.ts.map +1 -1
  36. package/dist/cjs/utils/dsml-parser.js +16 -3
  37. package/dist/cjs/utils/dsml-parser.js.map +1 -1
  38. package/dist/esm/a2a/rest-runner.d.ts +16 -0
  39. package/dist/esm/a2a/rest-runner.d.ts.map +1 -1
  40. package/dist/esm/a2a/rest-runner.js +71 -4
  41. package/dist/esm/a2a/rest-runner.js.map +1 -1
  42. package/dist/esm/agent/engine.d.ts +57 -0
  43. package/dist/esm/agent/engine.d.ts.map +1 -1
  44. package/dist/esm/agent/engine.js +191 -1
  45. package/dist/esm/agent/engine.js.map +1 -1
  46. package/dist/esm/agent/llm-caller.d.ts.map +1 -1
  47. package/dist/esm/agent/llm-caller.js +8 -0
  48. package/dist/esm/agent/llm-caller.js.map +1 -1
  49. package/dist/esm/agent/rate-limit-manager.d.ts +127 -0
  50. package/dist/esm/agent/rate-limit-manager.d.ts.map +1 -0
  51. package/dist/esm/agent/rate-limit-manager.js +463 -0
  52. package/dist/esm/agent/rate-limit-manager.js.map +1 -0
  53. package/dist/esm/agent/tool-executor.d.ts +11 -0
  54. package/dist/esm/agent/tool-executor.d.ts.map +1 -1
  55. package/dist/esm/agent/tool-executor.js +95 -4
  56. package/dist/esm/agent/tool-executor.js.map +1 -1
  57. package/dist/esm/agent/types.d.ts +59 -0
  58. package/dist/esm/agent/types.d.ts.map +1 -1
  59. package/dist/esm/agent/types.js.map +1 -1
  60. package/dist/esm/index.d.ts +3 -2
  61. package/dist/esm/index.d.ts.map +1 -1
  62. package/dist/esm/index.js +1 -0
  63. package/dist/esm/index.js.map +1 -1
  64. package/dist/esm/runtime/run-registry.d.ts +2 -0
  65. package/dist/esm/runtime/run-registry.d.ts.map +1 -1
  66. package/dist/esm/runtime/run-registry.js +24 -1
  67. package/dist/esm/runtime/run-registry.js.map +1 -1
  68. package/dist/esm/tool/delegate.d.ts +9 -0
  69. package/dist/esm/tool/delegate.d.ts.map +1 -1
  70. package/dist/esm/tool/delegate.js.map +1 -1
  71. package/dist/esm/utils/dsml-parser.d.ts +1 -1
  72. package/dist/esm/utils/dsml-parser.d.ts.map +1 -1
  73. package/dist/esm/utils/dsml-parser.js +16 -3
  74. package/dist/esm/utils/dsml-parser.js.map +1 -1
  75. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"dsml-parser.js","sourceRoot":"","sources":["../../../src/utils/dsml-parser.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dsml-parser.js","sourceRoot":"","sources":["../../../src/utils/dsml-parser.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,13 @@
1
1
  import type { SubAgentRunner } from '../tool/delegate.js';
2
2
  import type { RestA2AClient } from './rest-client.js';
3
+ /** 远程 Capability 的 input_schema 片段(供 runner 拆解 JSON 打包的 task) */
4
+ export interface RestInputSchema {
5
+ type?: string;
6
+ /** input_schema.required 字段名列表 */
7
+ required?: string[];
8
+ /** input_schema.properties,值为各字段的 schema 定义(含 type/description/enum 等) */
9
+ properties?: Record<string, unknown>;
10
+ }
3
11
  /** createRestA2ARemoteRunner 配置项 */
4
12
  export interface RestA2ARemoteRunnerConfig {
5
13
  /** 远程 Agent 的 base URL(如 http://localhost:8000) */
@@ -16,6 +24,14 @@ export interface RestA2ARemoteRunnerConfig {
16
24
  staticFields?: Record<string, string>;
17
25
  /** 任务字符串映射到的字段名(默认 'analysis_focus') */
18
26
  taskField?: string;
27
+ /**
28
+ * 允许 LLM 动态填写的字段名列表(来自 input_schema 的 properties 键)。
29
+ * - 缺省时仅 taskField 为动态,其余走 staticFields(与旧行为一致)。
30
+ * - 配置后,当 LLM 把 task 打包成 JSON 对象时,这些键会被合并进最终 input。
31
+ */
32
+ dynamicFields?: string[];
33
+ /** 远程 Capability 的 input_schema 片段,用于校验/白名单动态字段及生成 LLM 引导文案 */
34
+ inputSchema?: RestInputSchema;
19
35
  /** 是否启用流式(默认 true) */
20
36
  streaming?: boolean;
21
37
  /** 流式失败时是否自动回退到同步模式,默认 true */
@@ -1 +1 @@
1
- {"version":3,"file":"rest-runner.d.ts","sourceRoot":"","sources":["../../../src/a2a/rest-runner.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAE1D,OAAO,KAAK,EAAE,aAAa,EAAsC,MAAM,kBAAkB,CAAC;AAE1F,oCAAoC;AACpC,MAAM,WAAW,yBAAyB;IACxC,mDAAmD;IACnD,OAAO,EAAE,MAAM,CAAC;IAChB,4CAA4C;IAC5C,YAAY,EAAE,MAAM,CAAC;IACrB,sBAAsB;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,4BAA4B;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,qBAAqB;IACrB,MAAM,EAAE,aAAa,CAAC;IACtB,0EAA0E;IAC1E,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC,wCAAwC;IACxC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,sBAAsB;IACtB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,+BAA+B;IAC/B,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,yBAAyB,GAAG,cAAc,CA8F3F"}
1
+ {"version":3,"file":"rest-runner.d.ts","sourceRoot":"","sources":["../../../src/a2a/rest-runner.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAE1D,OAAO,KAAK,EAAE,aAAa,EAAsC,MAAM,kBAAkB,CAAC;AAE1F,iEAAiE;AACjE,MAAM,WAAW,eAAe;IAC9B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,kCAAkC;IAClC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,0EAA0E;IAC1E,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACtC;AAED,oCAAoC;AACpC,MAAM,WAAW,yBAAyB;IACxC,mDAAmD;IACnD,OAAO,EAAE,MAAM,CAAC;IAChB,4CAA4C;IAC5C,YAAY,EAAE,MAAM,CAAC;IACrB,sBAAsB;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,4BAA4B;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,qBAAqB;IACrB,MAAM,EAAE,aAAa,CAAC;IACtB,0EAA0E;IAC1E,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC,wCAAwC;IACxC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;OAIG;IACH,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,+DAA+D;IAC/D,WAAW,CAAC,EAAE,eAAe,CAAC;IAC9B,sBAAsB;IACtB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,+BAA+B;IAC/B,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,yBAAyB,GAAG,cAAc,CAsK3F"}
@@ -19,11 +19,61 @@
19
19
  * - error → error
20
20
  */
21
21
  export function createRestA2ARemoteRunner(config) {
22
- const { baseUrl, capabilityId, name: runnerName, description: runnerDesc, client, staticFields = {}, taskField = 'analysis_focus', streaming = true, fallbackToSync = true, } = config;
23
- /** 将 task 字符串构建为请求输入 */
22
+ const { baseUrl, capabilityId, name: runnerName, description: runnerDesc, client, staticFields = {}, taskField = 'analysis_focus', dynamicFields, inputSchema, streaming = true, fallbackToSync = true, } = config;
23
+ /**
24
+ * 允许 LLM 动态填写的字段白名单。
25
+ * - 优先用 dynamicFields;
26
+ * - 缺省时退化为 inputSchema 的所有 properties 键;
27
+ * - 都没有则只保留 taskField。
28
+ * taskField 永远视为动态字段。
29
+ */
30
+ const allowedDynamicFields = Array.from(new Set([
31
+ taskField,
32
+ ...(dynamicFields && dynamicFields.length
33
+ ? dynamicFields
34
+ : (inputSchema?.properties ? Object.keys(inputSchema.properties) : [])),
35
+ ]));
36
+ /**
37
+ * 将 task 字符串构建为请求输入。
38
+ *
39
+ * 支持两种形态:
40
+ * 1. task 为普通字符串 → 映射到 taskField(旧行为,向后兼容)。
41
+ * 2. task 为 JSON 对象字符串(如 '{"analysis_focus":"...","competitors":"..."}')
42
+ * → 解析后把属于 allowedDynamicFields 的键合并进 input(覆盖静态默认值),
43
+ * 其余键忽略,避免污染请求体。
44
+ *
45
+ * 静态字段始终作为基础值先行铺底,动态字段在后覆盖。
46
+ */
24
47
  function buildInput(task) {
25
- const input = { ...staticFields, [taskField]: task };
26
- console.log(`[REST-A2A] '${runnerName}' buildInput:\n baseUrl: ${baseUrl}\n capabilityId: ${capabilityId}\n taskField: ${taskField}\n task (value): ${JSON.stringify(task)}\n staticFields: ${JSON.stringify(staticFields)}\n => final input: ${JSON.stringify(input, null, 2)}`);
48
+ const input = { ...staticFields };
49
+ const trimmed = (task ?? '').trim();
50
+ const looksLikeJson = trimmed.startsWith('{') && trimmed.endsWith('}');
51
+ let parsedTask = null;
52
+ if (looksLikeJson) {
53
+ try {
54
+ const parsed = JSON.parse(trimmed);
55
+ if (parsed && typeof parsed === 'object' && !Array.isArray(parsed)) {
56
+ parsedTask = parsed;
57
+ }
58
+ }
59
+ catch { /* 非法 JSON,按纯文本处理 */ }
60
+ }
61
+ if (parsedTask) {
62
+ for (const key of allowedDynamicFields) {
63
+ if (parsedTask[key] !== undefined && parsedTask[key] !== null) {
64
+ input[key] = parsedTask[key];
65
+ }
66
+ }
67
+ // 若解析出的对象未命中任何动态字段,则把整段原文回填到 taskField,避免丢内容
68
+ const hitAny = allowedDynamicFields.some(k => parsedTask[k] !== undefined && parsedTask[k] !== null);
69
+ if (!hitAny) {
70
+ input[taskField] = task;
71
+ }
72
+ }
73
+ else {
74
+ input[taskField] = task;
75
+ }
76
+ console.log(`[REST-A2A] '${runnerName}' buildInput:\n baseUrl: ${baseUrl}\n capabilityId: ${capabilityId}\n taskField: ${taskField}\n dynamicFields: [${allowedDynamicFields.join(', ')}]\n task (value): ${JSON.stringify(task)}\n staticFields: ${JSON.stringify(staticFields)}\n => final input: ${JSON.stringify(input, null, 2)}`);
27
77
  return input;
28
78
  }
29
79
  /** 从 RestCapabilityResult 中提取最终文本 */
@@ -82,9 +132,26 @@ export function createRestA2ARemoteRunner(config) {
82
132
  return `[REST A2A '${runnerName}'] Error: ${errMsg}`;
83
133
  }
84
134
  };
135
+ // 暴露给 delegate_task 用于生成 LLM 引导文案的动态字段元数据。
136
+ // 仅当存在多个动态字段(>1,即不止 taskField)时才填充,避免单字段场景产生噪音。
137
+ const inputFields = allowedDynamicFields.length > 1
138
+ ? allowedDynamicFields.map(name => {
139
+ const prop = inputSchema?.properties?.[name];
140
+ const propDef = (prop && typeof prop === 'object' ? prop : {});
141
+ const rawType = propDef.type;
142
+ const type = Array.isArray(rawType) ? rawType.filter(Boolean).join('|') : (typeof rawType === 'string' ? rawType : 'string');
143
+ return {
144
+ name,
145
+ required: inputSchema?.required?.includes(name) ?? false,
146
+ description: typeof propDef.description === 'string' ? propDef.description : '',
147
+ type,
148
+ };
149
+ })
150
+ : undefined;
85
151
  return {
86
152
  name: runnerName,
87
153
  description: runnerDesc,
154
+ inputFields,
88
155
  run: async (task, ctx, _options) => {
89
156
  return streaming && ctx?.emitSubEvent
90
157
  ? runStreaming(task, ctx)
@@ -1 +1 @@
1
- {"version":3,"file":"rest-runner.js","sourceRoot":"","sources":["../../../src/a2a/rest-runner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"rest-runner.js","sourceRoot":"","sources":["../../../src/a2a/rest-runner.ts"],"names":[],"mappings":"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"}
@@ -10,6 +10,10 @@ export declare class AgentEngine {
10
10
  private abortMap;
11
11
  /** sessionId → steering messages(实时转向队列) */
12
12
  private steeringMap;
13
+ /** parentSessionId → Set<childSessionId>(父子会话关系跟踪,用于级联 abort) */
14
+ private childSessionMap;
15
+ /** childSessionId → parentSessionId(反向索引,用于快速查找父会话) */
16
+ private parentSessionMap;
13
17
  /** 子模块:历史管理器 */
14
18
  private historyManager;
15
19
  /** 子模块:LLM 调用器 */
@@ -26,6 +30,8 @@ export declare class AgentEngine {
26
30
  private outputTools;
27
31
  /** Guard 策略配置(阈值可注入,不硬编码业务逻辑) */
28
32
  private guardConfig;
33
+ /** 错误恢复策略配置 */
34
+ private errorRecovery;
29
35
  constructor(config: AgentConfig);
30
36
  /** 获取当前 Agent 的 ToolRegistry(供 read_tool_doc 等内置工具使用) */
31
37
  getToolRegistry(): ToolRegistry;
@@ -65,6 +71,29 @@ export declare class AgentEngine {
65
71
  forkHistory(sourceSessionId: string, targetSessionId: string, fromIndex?: number): number;
66
72
  /** 获取会话历史的消息数量 */
67
73
  getHistoryLength(sessionId: string): number;
74
+ /**
75
+ * 注册父子会话关系。
76
+ *
77
+ * 典型场景:主 Agent 通过 delegate_task 工具派生子任务时,
78
+ * 上层调用此方法将子会话与父会话关联。当父会话因异常终止时,
79
+ * 如果配置了 `cascadeAbortChildren`,所有子会话也会被自动 abort。
80
+ *
81
+ * @param parentSessionId 父会话 ID
82
+ * @param childSessionId 子会话 ID
83
+ */
84
+ linkChildSession(parentSessionId: string, childSessionId: string): void;
85
+ /**
86
+ * 解除父子会话关系(子会话完成后调用)。
87
+ */
88
+ unlinkChildSession(childSessionId: string): void;
89
+ /**
90
+ * 获取指定父会话的所有子会话 ID。
91
+ */
92
+ getChildSessions(parentSessionId: string): string[];
93
+ /**
94
+ * 获取指定子会话的父会话 ID(如有)。
95
+ */
96
+ getParentSession(childSessionId: string): string | undefined;
68
97
  /**
69
98
  * 执行 Agent 任务(流式推送事件)
70
99
  * 上层通过 for-await-of 消费事件流
@@ -161,10 +190,38 @@ export declare class AgentEngine {
161
190
  private emitDone;
162
191
  /** 中断指定会话的 Agent 执行 */
163
192
  abort(sessionId: string): void;
193
+ /**
194
+ * 中断指定会话及其所有子会话的 Agent 执行(级联 abort)。
195
+ *
196
+ * 递归遍历子会话树,从叶子节点到根节点依次 abort。
197
+ * 用于确保父会话异常终止时,所有 delegate_task 派生的子任务也被终止。
198
+ */
199
+ abortCascade(sessionId: string): void;
164
200
  /** 查询指定会话的 Agent 状态 */
165
201
  getStatus(sessionId: string): AgentStatus;
166
202
  /** 销毁引擎,释放所有会话资源 */
167
203
  destroy(): void;
204
+ /**
205
+ * 统一的致命错误处理入口。
206
+ *
207
+ * 由引擎内部(agentLoop、catch 块)在遇到不可恢复错误时调用。
208
+ * 按以下顺序执行:
209
+ * 1. 调用 config.errorRecovery.onFatalError 回调(允许上层记录/通知)
210
+ * 2. 如果 config.errorRecovery.autoAbortOnFatal,abort 当前会话
211
+ * 3. 如果 config.errorRecovery.cascadeAbortChildren,级联 abort 所有子会话
212
+ *
213
+ * @param error 致命错误信息(含 sessionId)
214
+ */
215
+ private handleFatalError;
216
+ /**
217
+ * 清理指定会话的父子关系记录。
218
+ *
219
+ * 在会话自然完成或 abort 后调用,防止内存泄漏。
220
+ * 处理两个方向:
221
+ * - 如果是父会话:移除所有子会话引用(但子会话若仍在运行则保留其关系)
222
+ * - 如果是子会话:从父会话的子集中移除自身
223
+ */
224
+ private cleanupSessionRelations;
168
225
  createEvent(sessionId: string, event: Record<string, unknown>): AgentEvent;
169
226
  private createNoopShell;
170
227
  }
@@ -1 +1 @@
1
- {"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../../src/agent/engine.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../../src/agent/engine.ts"],"names":[],"mappings":"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"}
@@ -8,6 +8,7 @@ import { HistoryManager } from "./history-manager.js";
8
8
  import { LLMCaller } from "./llm-caller.js";
9
9
  import { AgentToolExecutor } from "./tool-executor.js";
10
10
  import { logEvent } from "../observability/logger.js";
11
+ import { rateLimitManager } from "./rate-limit-manager.js";
11
12
  /** 默认系统提示词 */
12
13
  const DEFAULT_BASE_PROMPT = `You are a helpful AI assistant with access to tools. Use tools when needed to accomplish tasks. Always explain your actions clearly.`;
13
14
  /** 进度叙述规则(追加到 system prompt,引导 LLM 在工具调用间输出可见文本)— 可通过 AgentConfig.progressNarrationRules 覆盖 */
@@ -82,6 +83,10 @@ export class AgentEngine {
82
83
  abortMap = new Map();
83
84
  /** sessionId → steering messages(实时转向队列) */
84
85
  steeringMap = new Map();
86
+ /** parentSessionId → Set<childSessionId>(父子会话关系跟踪,用于级联 abort) */
87
+ childSessionMap = new Map();
88
+ /** childSessionId → parentSessionId(反向索引,用于快速查找父会话) */
89
+ parentSessionMap = new Map();
85
90
  /** 子模块:历史管理器 */
86
91
  historyManager;
87
92
  /** 子模块:LLM 调用器 */
@@ -98,6 +103,8 @@ export class AgentEngine {
98
103
  outputTools;
99
104
  /** Guard 策略配置(阈值可注入,不硬编码业务逻辑) */
100
105
  guardConfig;
106
+ /** 错误恢复策略配置 */
107
+ errorRecovery;
101
108
  constructor(config) {
102
109
  this.config = {
103
110
  ...config,
@@ -156,6 +163,13 @@ export class AgentEngine {
156
163
  delegateTargets: gc.delegateTargets ?? {},
157
164
  iterationGuardPrompt: gc.iterationGuardPrompt ?? '',
158
165
  };
166
+ // 初始化错误恢复策略
167
+ const er = config.errorRecovery ?? {};
168
+ this.errorRecovery = {
169
+ autoAbortOnFatal: er.autoAbortOnFatal ?? true,
170
+ cascadeAbortChildren: er.cascadeAbortChildren ?? false,
171
+ onFatalError: er.onFatalError ?? undefined,
172
+ };
159
173
  }
160
174
  /** 获取当前 Agent 的 ToolRegistry(供 read_tool_doc 等内置工具使用) */
161
175
  getToolRegistry() {
@@ -213,6 +227,51 @@ export class AgentEngine {
213
227
  getHistoryLength(sessionId) {
214
228
  return this.historyManager.getHistoryLength(sessionId);
215
229
  }
230
+ // ---- 父子会话关系管理 ----
231
+ /**
232
+ * 注册父子会话关系。
233
+ *
234
+ * 典型场景:主 Agent 通过 delegate_task 工具派生子任务时,
235
+ * 上层调用此方法将子会话与父会话关联。当父会话因异常终止时,
236
+ * 如果配置了 `cascadeAbortChildren`,所有子会话也会被自动 abort。
237
+ *
238
+ * @param parentSessionId 父会话 ID
239
+ * @param childSessionId 子会话 ID
240
+ */
241
+ linkChildSession(parentSessionId, childSessionId) {
242
+ if (!this.childSessionMap.has(parentSessionId)) {
243
+ this.childSessionMap.set(parentSessionId, new Set());
244
+ }
245
+ this.childSessionMap.get(parentSessionId).add(childSessionId);
246
+ this.parentSessionMap.set(childSessionId, parentSessionId);
247
+ // 通知 RateLimitManager 建立父子映射(用于 429 终止主会话时定位父会话)
248
+ rateLimitManager.registerSubSession(childSessionId, parentSessionId);
249
+ logEvent({ event: 'engine.child_linked', sessionId: parentSessionId, data: { childSessionId } });
250
+ }
251
+ /**
252
+ * 解除父子会话关系(子会话完成后调用)。
253
+ */
254
+ unlinkChildSession(childSessionId) {
255
+ const parentId = this.parentSessionMap.get(childSessionId);
256
+ if (parentId) {
257
+ this.childSessionMap.get(parentId)?.delete(childSessionId);
258
+ this.parentSessionMap.delete(childSessionId);
259
+ }
260
+ // 通知 RateLimitManager 注销子会话,释放并发槽位
261
+ rateLimitManager.unregisterSubSession(childSessionId);
262
+ }
263
+ /**
264
+ * 获取指定父会话的所有子会话 ID。
265
+ */
266
+ getChildSessions(parentSessionId) {
267
+ return Array.from(this.childSessionMap.get(parentSessionId) ?? []);
268
+ }
269
+ /**
270
+ * 获取指定子会话的父会话 ID(如有)。
271
+ */
272
+ getParentSession(childSessionId) {
273
+ return this.parentSessionMap.get(childSessionId);
274
+ }
216
275
  /**
217
276
  * 执行 Agent 任务(流式推送事件)
218
277
  * 上层通过 for-await-of 消费事件流
@@ -222,6 +281,8 @@ export class AgentEngine {
222
281
  // ① Abort 控制
223
282
  const internalAbort = new AbortController();
224
283
  this.abortMap.set(sessionId, internalAbort);
284
+ // 注册到 RateLimitManager,使其能在多轮冷却失败时终止主会话
285
+ rateLimitManager.registerMainSession(sessionId, internalAbort);
225
286
  const onExternalAbort = () => internalAbort.abort();
226
287
  if (abortSignal) {
227
288
  if (abortSignal.aborted)
@@ -243,6 +304,15 @@ export class AgentEngine {
243
304
  error: errorMsg,
244
305
  recoverable: false,
245
306
  });
307
+ // 致命错误 → 自动 abort + 级联清理
308
+ await this.handleFatalError({
309
+ sessionId,
310
+ errorType: 'unexpected_exception',
311
+ error: errorMsg,
312
+ timestamp: Date.now(),
313
+ iteration: 0,
314
+ rawError: err,
315
+ });
246
316
  this.statusMap.set(sessionId, 'idle');
247
317
  }
248
318
  finally {
@@ -250,6 +320,8 @@ export class AgentEngine {
250
320
  abortSignal.removeEventListener('abort', onExternalAbort);
251
321
  this.abortMap.delete(sessionId);
252
322
  this.steeringMap.delete(sessionId);
323
+ // 注销主会话,清理限流状态和子会话映射
324
+ rateLimitManager.unregisterMainSession(sessionId);
253
325
  }
254
326
  }
255
327
  // ---- 准备阶段 ----
@@ -620,12 +692,21 @@ ${textHistory.join('\n')}`;
620
692
  const budgetCheck = this.config.usageTracker.checkBudget(state.sessionId, this.config.tokenBudget);
621
693
  if (budgetCheck.exceeded) {
622
694
  if (this.config.tokenBudget.onExceed === 'abort') {
695
+ const budgetErrMsg = `Token budget exceeded (${budgetCheck.currentTokens}/${budgetCheck.maxTokens} tokens). Task aborted to prevent cost overrun.`;
623
696
  logEvent({ event: 'engine.token_budget_exceeded', sessionId: state.sessionId, level: 'warn', data: { current: budgetCheck.currentTokens, max: budgetCheck.maxTokens, action: 'abort' } });
624
697
  yield this.createEvent(state.sessionId, {
625
698
  type: 'error',
626
- error: `Token budget exceeded (${budgetCheck.currentTokens}/${budgetCheck.maxTokens} tokens). Task aborted to prevent cost overrun.`,
699
+ error: budgetErrMsg,
627
700
  recoverable: false,
628
701
  });
702
+ // 致命错误 → 自动 abort + 级联清理
703
+ await this.handleFatalError({
704
+ sessionId: state.sessionId,
705
+ errorType: 'token_budget_exceeded',
706
+ error: budgetErrMsg,
707
+ timestamp: Date.now(),
708
+ iteration: state.iteration,
709
+ });
629
710
  yield this.emitDone(state);
630
711
  return;
631
712
  }
@@ -671,8 +752,17 @@ ${textHistory.join('\n')}`;
671
752
  // 所有 LLM provider 均已失败(callWithRetry 内部已重试+降级),
672
753
  // 不再发 done 事件(callWithRetry 已发出带详细错误信息的 error 事件),
673
754
  // 仅完成清理,避免 done 事件覆盖前端已展示的错误消息
755
+ const errorMsg = 'All LLM providers exhausted (all calls failed including retries and fallback)';
674
756
  logEvent({ event: 'engine.llm_exhausted', sessionId: state.sessionId, level: 'warn', data: { iteration: state.iteration } });
675
757
  this.statusMap.set(state.sessionId, 'idle');
758
+ // 致命错误 → 自动 abort + 级联清理(级联清理子 Agent 运行中的子任务)
759
+ await this.handleFatalError({
760
+ sessionId: state.sessionId,
761
+ errorType: 'llm_exhausted',
762
+ error: errorMsg,
763
+ timestamp: Date.now(),
764
+ iteration: state.iteration,
765
+ });
676
766
  // 记录 Token 用量到 UsageTracker
677
767
  if (this.config.usageTracker && state.totalUsage) {
678
768
  const modelInfo = this.config.llmProvider.getModel();
@@ -745,7 +835,16 @@ ${textHistory.join('\n')}`;
745
835
  if (allFailed) {
746
836
  state.consecutiveAllFailIterations++;
747
837
  if (state.consecutiveAllFailIterations >= this.guardConfig.consecutiveAllFailThreshold) {
838
+ const failMsg = `All tool calls failed for ${state.consecutiveAllFailIterations} consecutive iterations`;
748
839
  logEvent({ event: 'engine.global_fail_breaker', sessionId: state.sessionId, level: 'warn', data: { consecutiveFails: state.consecutiveAllFailIterations, iteration: state.iteration } });
840
+ // 致命错误 → 自动 abort + 级联清理
841
+ await this.handleFatalError({
842
+ sessionId: state.sessionId,
843
+ errorType: 'all_tools_failed',
844
+ error: failMsg,
845
+ timestamp: Date.now(),
846
+ iteration: state.iteration,
847
+ });
749
848
  yield this.emitDone(state);
750
849
  return;
751
850
  }
@@ -1056,6 +1155,8 @@ ${textHistory.join('\n')}`;
1056
1155
  // ---- 辅助 ----
1057
1156
  emitDone(state) {
1058
1157
  this.statusMap.set(state.sessionId, 'idle');
1158
+ // 会话正常结束时清理父子关系(不级联 abort,子会话可自行运行完成)
1159
+ this.cleanupSessionRelations(state.sessionId);
1059
1160
  // 记录 Token 用量到 UsageTracker
1060
1161
  if (this.config.usageTracker && state.totalUsage) {
1061
1162
  const modelInfo = this.config.llmProvider.getModel();
@@ -1086,8 +1187,25 @@ ${textHistory.join('\n')}`;
1086
1187
  if (controller) {
1087
1188
  controller.abort();
1088
1189
  this.statusMap.set(sessionId, 'aborting');
1190
+ logEvent({ event: 'engine.abort', sessionId, data: { reason: 'abort() called' } });
1089
1191
  }
1090
1192
  }
1193
+ /**
1194
+ * 中断指定会话及其所有子会话的 Agent 执行(级联 abort)。
1195
+ *
1196
+ * 递归遍历子会话树,从叶子节点到根节点依次 abort。
1197
+ * 用于确保父会话异常终止时,所有 delegate_task 派生的子任务也被终止。
1198
+ */
1199
+ abortCascade(sessionId) {
1200
+ this.abort(sessionId);
1201
+ // 遍历直接子会话,递归 abort
1202
+ const children = this.getChildSessions(sessionId);
1203
+ for (const childId of children) {
1204
+ this.abortCascade(childId);
1205
+ }
1206
+ // 清理父子关系
1207
+ this.cleanupSessionRelations(sessionId);
1208
+ }
1091
1209
  /** 查询指定会话的 Agent 状态 */
1092
1210
  getStatus(sessionId) {
1093
1211
  return this.statusMap.get(sessionId) || 'idle';
@@ -1100,9 +1218,81 @@ ${textHistory.join('\n')}`;
1100
1218
  this.abortMap.clear();
1101
1219
  this.statusMap.clear();
1102
1220
  this.steeringMap.clear();
1221
+ this.childSessionMap.clear();
1222
+ this.parentSessionMap.clear();
1103
1223
  this.summaryCache.clear();
1104
1224
  this.historyManager.clearAll();
1105
1225
  }
1226
+ // ---- 致命错误处理 ----
1227
+ /**
1228
+ * 统一的致命错误处理入口。
1229
+ *
1230
+ * 由引擎内部(agentLoop、catch 块)在遇到不可恢复错误时调用。
1231
+ * 按以下顺序执行:
1232
+ * 1. 调用 config.errorRecovery.onFatalError 回调(允许上层记录/通知)
1233
+ * 2. 如果 config.errorRecovery.autoAbortOnFatal,abort 当前会话
1234
+ * 3. 如果 config.errorRecovery.cascadeAbortChildren,级联 abort 所有子会话
1235
+ *
1236
+ * @param error 致命错误信息(含 sessionId)
1237
+ */
1238
+ async handleFatalError(error) {
1239
+ logEvent({
1240
+ event: 'engine.fatal_error',
1241
+ sessionId: error.sessionId,
1242
+ level: 'error',
1243
+ data: {
1244
+ errorType: error.errorType,
1245
+ error: error.error,
1246
+ iteration: error.iteration,
1247
+ autoAbort: this.errorRecovery.autoAbortOnFatal,
1248
+ cascadeAbort: this.errorRecovery.cascadeAbortChildren,
1249
+ },
1250
+ });
1251
+ // ① 外部回调通知(不阻塞后续清理流程)
1252
+ if (this.errorRecovery.onFatalError) {
1253
+ try {
1254
+ await this.errorRecovery.onFatalError(error);
1255
+ }
1256
+ catch (e) {
1257
+ // 回调异常不影响后续清理流程
1258
+ logEvent({
1259
+ event: 'engine.fatal_error_callback_failed',
1260
+ sessionId: error.sessionId,
1261
+ level: 'warn',
1262
+ data: { error: e?.message || String(e) },
1263
+ });
1264
+ }
1265
+ }
1266
+ // ② 自动 abort 当前会话
1267
+ if (this.errorRecovery.autoAbortOnFatal) {
1268
+ if (this.errorRecovery.cascadeAbortChildren) {
1269
+ // 级联 abort:终止当前会话及其所有子孙会话
1270
+ this.abortCascade(error.sessionId);
1271
+ }
1272
+ else {
1273
+ // 仅 abort 当前会话
1274
+ this.abort(error.sessionId);
1275
+ }
1276
+ }
1277
+ }
1278
+ /**
1279
+ * 清理指定会话的父子关系记录。
1280
+ *
1281
+ * 在会话自然完成或 abort 后调用,防止内存泄漏。
1282
+ * 处理两个方向:
1283
+ * - 如果是父会话:移除所有子会话引用(但子会话若仍在运行则保留其关系)
1284
+ * - 如果是子会话:从父会话的子集中移除自身
1285
+ */
1286
+ cleanupSessionRelations(sessionId) {
1287
+ // 从父会话的子集中移除自身
1288
+ const parentId = this.parentSessionMap.get(sessionId);
1289
+ if (parentId) {
1290
+ this.childSessionMap.get(parentId)?.delete(sessionId);
1291
+ this.parentSessionMap.delete(sessionId);
1292
+ }
1293
+ // 删除自身作为父会话的所有子关系记录(但保留子会话本身仍在运行)
1294
+ this.childSessionMap.delete(sessionId);
1295
+ }
1106
1296
  // ---- 内部辅助 ----
1107
1297
  createEvent(sessionId, event) {
1108
1298
  return { ...event, timestamp: Date.now(), sessionId };