@cicctencent/agent-core 1.0.24 → 1.0.26

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 (47) hide show
  1. package/dist/cjs/a2a/index.d.ts +2 -2
  2. package/dist/cjs/a2a/index.d.ts.map +1 -1
  3. package/dist/cjs/a2a/index.js +3 -1
  4. package/dist/cjs/a2a/index.js.map +1 -1
  5. package/dist/cjs/a2a/server.d.ts +113 -1
  6. package/dist/cjs/a2a/server.d.ts.map +1 -1
  7. package/dist/cjs/a2a/server.js +299 -77
  8. package/dist/cjs/a2a/server.js.map +1 -1
  9. package/dist/cjs/agent/workflow.d.ts +12 -0
  10. package/dist/cjs/agent/workflow.d.ts.map +1 -1
  11. package/dist/cjs/agent/workflow.js +35 -0
  12. package/dist/cjs/agent/workflow.js.map +1 -1
  13. package/dist/cjs/automation/node-task-types.d.ts +2 -0
  14. package/dist/cjs/automation/node-task-types.d.ts.map +1 -1
  15. package/dist/cjs/index.d.ts +3 -3
  16. package/dist/cjs/index.d.ts.map +1 -1
  17. package/dist/cjs/index.js +7 -4
  18. package/dist/cjs/index.js.map +1 -1
  19. package/dist/cjs/mcp/client.d.ts +1 -2
  20. package/dist/cjs/mcp/client.d.ts.map +1 -1
  21. package/dist/cjs/mcp/client.js.map +1 -1
  22. package/dist/cjs/tool/types.d.ts +4 -0
  23. package/dist/cjs/tool/types.d.ts.map +1 -1
  24. package/dist/esm/a2a/index.d.ts +2 -2
  25. package/dist/esm/a2a/index.d.ts.map +1 -1
  26. package/dist/esm/a2a/index.js +1 -1
  27. package/dist/esm/a2a/index.js.map +1 -1
  28. package/dist/esm/a2a/server.d.ts +113 -1
  29. package/dist/esm/a2a/server.d.ts.map +1 -1
  30. package/dist/esm/a2a/server.js +297 -76
  31. package/dist/esm/a2a/server.js.map +1 -1
  32. package/dist/esm/agent/workflow.d.ts +12 -0
  33. package/dist/esm/agent/workflow.d.ts.map +1 -1
  34. package/dist/esm/agent/workflow.js +34 -0
  35. package/dist/esm/agent/workflow.js.map +1 -1
  36. package/dist/esm/automation/node-task-types.d.ts +2 -0
  37. package/dist/esm/automation/node-task-types.d.ts.map +1 -1
  38. package/dist/esm/index.d.ts +3 -3
  39. package/dist/esm/index.d.ts.map +1 -1
  40. package/dist/esm/index.js +2 -2
  41. package/dist/esm/index.js.map +1 -1
  42. package/dist/esm/mcp/client.d.ts +1 -2
  43. package/dist/esm/mcp/client.d.ts.map +1 -1
  44. package/dist/esm/mcp/client.js.map +1 -1
  45. package/dist/esm/tool/types.d.ts +4 -0
  46. package/dist/esm/tool/types.d.ts.map +1 -1
  47. package/package.json +1 -1
@@ -16,10 +16,75 @@ export interface A2ATaskStore {
16
16
  set(task: A2ATask): void | Promise<void>;
17
17
  delete?(id: string): void | Promise<void>;
18
18
  }
19
+ /**
20
+ * 引擎事件 → A2A 事件映射器。
21
+ *
22
+ * 返回 `null` 表示该事件不转发到 A2A 流(静默丢弃)。
23
+ * `acc` 在单次运行内共享,可用于累积最终文本等跨事件状态。
24
+ */
25
+ export type A2AEventMapper = (event: AgentEvent, task: A2ATask, acc: A2AEventAccumulator) => A2ATaskEvent | null;
26
+ /** 单次运行内共享的累积状态 */
27
+ export interface A2AEventAccumulator {
28
+ /** 累积的最终文本输出 */
29
+ finalText: string;
30
+ /** 供自定义映射器存放任意中间状态 */
31
+ [key: string]: unknown;
32
+ }
33
+ /** 单次 A2A 任务运行的上下文 */
34
+ export interface A2ARunContext {
35
+ task: A2ATask;
36
+ params: A2ASendTaskParams;
37
+ /** 从 params.message 提取的纯文本 prompt */
38
+ message: string;
39
+ /** 取消信号 —— 由 tasks/cancel 或客户端断连触发 */
40
+ abortSignal: AbortSignal;
41
+ }
42
+ /**
43
+ * 任务执行器:产出引擎事件流。
44
+ *
45
+ * 相较 `getEngine`,本接口不假设事件来自 `AgentEngine`,
46
+ * 从而允许接入方在自有服务层(多租户解析、线程落库、可观测性等)
47
+ * 之上驱动运行,仍复用内核的协议编排、心跳与取消能力。
48
+ */
49
+ export type A2ATaskRunner = (ctx: A2ARunContext) => AsyncIterable<AgentEvent>;
19
50
  export interface A2AServerHandlerOptions {
20
- getEngine: (params: A2ASendTaskParams) => AgentEngine | Promise<AgentEngine>;
51
+ /**
52
+ * 引擎工厂(便捷路径):内核负责调用 `engine.run(...)`。
53
+ * 与 `runTask` 二选一;同时提供时 `runTask` 优先。
54
+ */
55
+ getEngine?: (params: A2ASendTaskParams) => AgentEngine | Promise<AgentEngine>;
56
+ /**
57
+ * 自定义任务执行器(高级路径):接管事件来源。
58
+ *
59
+ * 适用于事件由应用服务层产生(而非直接操作 AgentEngine)的场景,
60
+ * 内核依旧提供任务状态机、心跳、取消与事件映射。
61
+ */
62
+ runTask?: A2ATaskRunner;
21
63
  buildRunOptions?: (params: A2ASendTaskParams, task: A2ATask) => Partial<RunOptions> | Promise<Partial<RunOptions>>;
22
64
  taskStore?: A2ATaskStore;
65
+ /**
66
+ * 自定义事件映射表(按 `AgentEvent.type` 索引),覆盖同名的内置映射。
67
+ *
68
+ * 用于接入方按需改写事件形态,新增事件类型只需加一行映射,
69
+ * 无需修改流式主循环。返回 `null` 的事件不会下发。
70
+ */
71
+ eventMappers?: Record<string, A2AEventMapper>;
72
+ /**
73
+ * 未被内置或自定义映射覆盖的事件的兜底处理。
74
+ * - `'drop'`(默认):丢弃,保持 A2A 流干净
75
+ * - `'passthrough'`:以 `metadata` 形式透传,便于调试或富客户端消费
76
+ */
77
+ unknownEventStrategy?: 'drop' | 'passthrough';
78
+ /**
79
+ * SSE 心跳间隔(毫秒)。设为 `0` 或不设则禁用。
80
+ *
81
+ * 引擎长时间无事件输出时(如长工具调用),定期产出心跳事件,
82
+ * 避免中间代理/网关因空闲超时切断连接。
83
+ */
84
+ heartbeatIntervalMs?: number;
85
+ /** 任务生命周期钩子(落库、指标、会话映射等副作用挂载点) */
86
+ onTaskCreated?: (task: A2ATask, params: A2ASendTaskParams) => void | Promise<void>;
87
+ onTaskUpdated?: (task: A2ATask) => void | Promise<void>;
23
88
  }
24
89
  export interface A2AStreamingJsonRpcResponse {
25
90
  jsonrpc: '2.0';
@@ -35,14 +100,61 @@ export declare class InMemoryA2ATaskStore implements A2ATaskStore {
35
100
  }
36
101
  export declare function createA2AAgentCard(config: A2AServerAgentConfig): A2AAgentCard;
37
102
  export declare function createA2AMessage(text: string, role?: 'user' | 'agent', taskId?: string, contextId?: string): A2AMessage;
103
+ /** withHeartbeat 产出项:引擎事件或保活心跳 */
104
+ export type HeartbeatItem<T> = {
105
+ kind: 'event';
106
+ value: T;
107
+ } | {
108
+ kind: 'heartbeat';
109
+ };
110
+ /**
111
+ * 为任意异步迭代器叠加心跳保活。
112
+ *
113
+ * 当上游在 `intervalMs` 内没有产出事件时,产出一个 `heartbeat` 项,
114
+ * 供调用方下发 keep-alive,避免反向代理因空闲超时切断长连接。
115
+ *
116
+ * 实现要点(手写 race 极易出错之处):
117
+ * 1. `pending` 跨轮复用 —— 心跳胜出时**不能**丢弃已发起的 `next()`,
118
+ * 否则会漏事件或重复消费迭代器;
119
+ * 2. 定时器在每轮 `finally` 中**必定清理** —— 否则长任务会累积大量
120
+ * 游离 timer,持续占用事件循环;
121
+ * 3. 结束时调用上游 `return()` —— 保证下游提前 break 时上游能及时释放。
122
+ */
123
+ export declare function withHeartbeat<T>(source: AsyncIterable<T>, intervalMs: number, abortSignal?: AbortSignal): AsyncGenerator<HeartbeatItem<T>>;
124
+ /**
125
+ * 内置引擎事件映射表。
126
+ *
127
+ * 以表驱动替代 switch,接入方可通过 `eventMappers` 覆盖任意条目
128
+ * 或新增事件类型,无需改动流式主循环。
129
+ */
130
+ export declare const DEFAULT_A2A_EVENT_MAPPERS: Record<string, A2AEventMapper>;
131
+ /**
132
+ * 引擎事件 → A2A 事件的默认映射(保留具名导出以兼容既有调用方)。
133
+ */
38
134
  export declare function mapAgentEventToA2AEvent(event: AgentEvent, task: A2ATask): A2ATaskEvent | null;
39
135
  export declare class A2AServerHandler {
40
136
  private readonly options;
41
137
  private store;
138
+ private readonly mappers;
139
+ /** 运行中任务的中止控制器 —— 支撑 tasks/cancel 真正停止引擎 */
140
+ private readonly running;
42
141
  constructor(options: A2AServerHandlerOptions);
142
+ /** 持久化任务并触发更新钩子(钩子异常不影响协议主流程) */
143
+ private persist;
144
+ /**
145
+ * 解析本次运行的事件流来源。
146
+ *
147
+ * 优先使用 `runTask`(应用自行驱动),否则回落到 `getEngine` 便捷路径。
148
+ * `abortSignal` 一律置于 overrides 展开之后,确保取消链路不被覆盖。
149
+ */
150
+ private resolveEventStream;
151
+ /** 应用映射表,未命中时按 unknownEventStrategy 兜底 */
152
+ private mapEvent;
43
153
  handleJsonRpc(request: A2AJsonRpcRequest): Promise<A2AHandlerResponse>;
44
154
  sendTask(params: A2ASendTaskParams): Promise<A2ATask>;
45
155
  sendTaskStreaming(params: A2ASendTaskParams): AsyncGenerator<A2ATaskEvent>;
156
+ /** 创建任务、落库并触发创建钩子 */
157
+ private beginTask;
46
158
  getTask(params: A2AGetTaskParams): Promise<A2ATask>;
47
159
  cancelTask(params: A2ACancelTaskParams): Promise<A2ATask>;
48
160
  private createSubmittedTask;
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../../src/a2a/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../../src/a2a/server.ts"],"names":[],"mappings":"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"}
@@ -24,61 +24,197 @@ export function createA2AAgentCard(config) {
24
24
  export function createA2AMessage(text, role = 'agent', taskId, contextId) {
25
25
  return { kind: 'message', role, messageId: crypto.randomUUID(), taskId, contextId, parts: [{ kind: 'text', text }] };
26
26
  }
27
- export function mapAgentEventToA2AEvent(event, task) {
28
- switch (event.type) {
29
- case 'thinking':
30
- return {
31
- kind: 'status-update',
32
- taskId: task.id,
33
- contextId: task.contextId,
34
- status: { state: 'working', message: createA2AMessage(event.content || '', 'agent', task.id, task.contextId), timestamp: new Date().toISOString() },
35
- final: false,
36
- metadata: { source: 'thinking' },
37
- };
38
- case 'message':
39
- return {
40
- kind: 'status-update',
41
- taskId: task.id,
42
- contextId: task.contextId,
43
- status: { state: 'working', message: createA2AMessage(event.content || '', 'agent', task.id, task.contextId), timestamp: new Date().toISOString() },
44
- final: false,
45
- metadata: { source: 'message' },
46
- };
47
- case 'tool_call':
48
- return {
49
- kind: 'status-update',
50
- taskId: task.id,
51
- contextId: task.contextId,
52
- status: { state: 'working', message: createA2AMessage(`Calling tool: ${event.tool}`, 'agent', task.id, task.contextId), timestamp: new Date().toISOString() },
53
- final: false,
54
- metadata: { source: 'tool_call', tool: event.tool, callId: event.callId, args: event.args },
55
- };
56
- case 'done':
57
- return {
58
- kind: 'status-update',
59
- taskId: task.id,
60
- contextId: task.contextId,
61
- status: { state: 'completed', message: createA2AMessage(event.content || '', 'agent', task.id, task.contextId), timestamp: new Date().toISOString() },
62
- final: true,
63
- };
64
- case 'error':
65
- return {
66
- kind: 'status-update',
67
- taskId: task.id,
68
- contextId: task.contextId,
69
- status: { state: 'failed', message: createA2AMessage(event.error || 'Agent failed', 'agent', task.id, task.contextId), timestamp: new Date().toISOString() },
70
- final: true,
71
- };
72
- default:
73
- return null;
27
+ /**
28
+ * 为任意异步迭代器叠加心跳保活。
29
+ *
30
+ * 当上游在 `intervalMs` 内没有产出事件时,产出一个 `heartbeat` 项,
31
+ * 供调用方下发 keep-alive,避免反向代理因空闲超时切断长连接。
32
+ *
33
+ * 实现要点(手写 race 极易出错之处):
34
+ * 1. `pending` 跨轮复用 —— 心跳胜出时**不能**丢弃已发起的 `next()`,
35
+ * 否则会漏事件或重复消费迭代器;
36
+ * 2. 定时器在每轮 `finally` 中**必定清理** —— 否则长任务会累积大量
37
+ * 游离 timer,持续占用事件循环;
38
+ * 3. 结束时调用上游 `return()` —— 保证下游提前 break 时上游能及时释放。
39
+ */
40
+ export async function* withHeartbeat(source, intervalMs, abortSignal) {
41
+ const iterator = source[Symbol.asyncIterator]();
42
+ // 预建 abort 竞争 promise:避免内层循环中因引擎卡在 iterator.next()
43
+ // 而无法响应取消信号(abortSignal 仅在外层循环顶部检查)
44
+ const abortPromise = abortSignal
45
+ ? new Promise((_, reject) => {
46
+ if (abortSignal.aborted) {
47
+ reject(new Error('Aborted'));
48
+ }
49
+ else {
50
+ abortSignal.addEventListener('abort', () => reject(new Error('Aborted')), { once: true });
51
+ }
52
+ })
53
+ : null;
54
+ try {
55
+ while (true) {
56
+ if (abortSignal?.aborted)
57
+ break;
58
+ const pending = iterator.next();
59
+ // 心跳关闭时退化为直接透传,零额外开销
60
+ if (!intervalMs || intervalMs <= 0) {
61
+ const result = await pending;
62
+ if (result.done)
63
+ break;
64
+ yield { kind: 'event', value: result.value };
65
+ continue;
66
+ }
67
+ // 只包装一次:避免每轮 race 都新建 .then 分支,
68
+ // 也确保 pending 一旦 reject 时该 rejection 始终被下面的 await 消费,
69
+ // 不会因心跳先胜出而变成 unhandledRejection。
70
+ const wrapped = pending.then(result => ({ kind: 'event', result }));
71
+ let settled = false;
72
+ while (!settled) {
73
+ let timer;
74
+ try {
75
+ const winner = await Promise.race([
76
+ wrapped,
77
+ new Promise(resolve => {
78
+ timer = setTimeout(() => resolve({ kind: 'heartbeat' }), intervalMs);
79
+ // 心跳定时器不应阻止进程退出
80
+ timer?.unref?.();
81
+ }),
82
+ // 将 abort 纳入竞争:引擎卡在 iterator.next() 时仍可及时退出
83
+ ...(abortPromise ? [abortPromise] : []),
84
+ ]);
85
+ if (winner.kind === 'heartbeat') {
86
+ yield { kind: 'heartbeat' };
87
+ continue; // 继续等待同一个 pending,不重新发起 next()
88
+ }
89
+ settled = true;
90
+ if (winner.result.done)
91
+ return;
92
+ yield { kind: 'event', value: winner.result.value };
93
+ }
94
+ finally {
95
+ if (timer)
96
+ clearTimeout(timer);
97
+ }
98
+ }
99
+ }
100
+ }
101
+ finally {
102
+ await iterator.return?.(undefined);
74
103
  }
75
104
  }
105
+ /** 构造 status-update 事件的内部快捷方式 */
106
+ function statusUpdate(task, state, text, final, metadata) {
107
+ return {
108
+ kind: 'status-update',
109
+ taskId: task.id,
110
+ contextId: task.contextId,
111
+ status: {
112
+ state,
113
+ message: createA2AMessage(text, 'agent', task.id, task.contextId),
114
+ timestamp: new Date().toISOString(),
115
+ },
116
+ final,
117
+ metadata,
118
+ };
119
+ }
120
+ /**
121
+ * 内置引擎事件映射表。
122
+ *
123
+ * 以表驱动替代 switch,接入方可通过 `eventMappers` 覆盖任意条目
124
+ * 或新增事件类型,无需改动流式主循环。
125
+ */
126
+ export const DEFAULT_A2A_EVENT_MAPPERS = {
127
+ thinking: (event, task) => statusUpdate(task, 'working', event.content || '', false, { source: 'thinking' }),
128
+ message: (event, task, acc) => {
129
+ const content = event.content || '';
130
+ acc.finalText += content;
131
+ return statusUpdate(task, 'working', content, false, { source: 'message' });
132
+ },
133
+ tool_call: (event, task) => {
134
+ const e = event;
135
+ return statusUpdate(task, 'working', `Calling tool: ${e.tool}`, false, {
136
+ source: 'tool_call',
137
+ tool: e.tool,
138
+ callId: e.callId,
139
+ args: e.args,
140
+ });
141
+ },
142
+ tool_result: (event, task) => {
143
+ const e = event;
144
+ return statusUpdate(task, 'working', `Tool finished: ${e.tool}`, false, {
145
+ source: 'tool_result',
146
+ tool: e.tool,
147
+ callId: e.callId,
148
+ isError: e.isError,
149
+ });
150
+ },
151
+ done: (event, task, acc) => {
152
+ const content = event.content || acc.finalText;
153
+ acc.finalText = content;
154
+ return statusUpdate(task, 'completed', content, true, { source: 'done' });
155
+ },
156
+ error: (event, task) => statusUpdate(task, 'failed', event.error || 'Agent failed', true, { source: 'error' }),
157
+ };
158
+ /**
159
+ * 引擎事件 → A2A 事件的默认映射(保留具名导出以兼容既有调用方)。
160
+ */
161
+ export function mapAgentEventToA2AEvent(event, task) {
162
+ const mapper = DEFAULT_A2A_EVENT_MAPPERS[event.type];
163
+ return mapper ? mapper(event, task, { finalText: '' }) : null;
164
+ }
76
165
  export class A2AServerHandler {
77
166
  options;
78
167
  store;
168
+ mappers;
169
+ /** 运行中任务的中止控制器 —— 支撑 tasks/cancel 真正停止引擎 */
170
+ running = new Map();
79
171
  constructor(options) {
80
172
  this.options = options;
81
173
  this.store = options.taskStore || new InMemoryA2ATaskStore();
174
+ this.mappers = { ...DEFAULT_A2A_EVENT_MAPPERS, ...(options.eventMappers || {}) };
175
+ }
176
+ /** 持久化任务并触发更新钩子(钩子异常不影响协议主流程) */
177
+ async persist(task) {
178
+ await this.store.set(task);
179
+ try {
180
+ await this.options.onTaskUpdated?.(task);
181
+ }
182
+ catch (err) {
183
+ console.error('[A2A] onTaskUpdated hook failed:', err?.message || err);
184
+ }
185
+ }
186
+ /**
187
+ * 解析本次运行的事件流来源。
188
+ *
189
+ * 优先使用 `runTask`(应用自行驱动),否则回落到 `getEngine` 便捷路径。
190
+ * `abortSignal` 一律置于 overrides 展开之后,确保取消链路不被覆盖。
191
+ */
192
+ async resolveEventStream(params, task, abortSignal) {
193
+ const message = extractTextFromMessage(params.message);
194
+ if (this.options.runTask) {
195
+ return this.options.runTask({ task, params, message, abortSignal });
196
+ }
197
+ if (!this.options.getEngine) {
198
+ throw new Error('A2AServerHandler requires either "getEngine" or "runTask"');
199
+ }
200
+ const engine = await this.options.getEngine(params);
201
+ const overrides = await this.options.buildRunOptions?.(params, task);
202
+ return engine.run({
203
+ sessionId: task.contextId,
204
+ message,
205
+ ...overrides,
206
+ abortSignal,
207
+ });
208
+ }
209
+ /** 应用映射表,未命中时按 unknownEventStrategy 兜底 */
210
+ mapEvent(event, task, acc) {
211
+ const mapper = this.mappers[event.type];
212
+ if (mapper)
213
+ return mapper(event, task, acc);
214
+ if (this.options.unknownEventStrategy === 'passthrough') {
215
+ return statusUpdate(task, 'working', '', false, { source: event.type, raw: event });
216
+ }
217
+ return null;
82
218
  }
83
219
  async handleJsonRpc(request) {
84
220
  try {
@@ -100,44 +236,119 @@ export class A2AServerHandler {
100
236
  }
101
237
  }
102
238
  async sendTask(params) {
103
- const task = this.createSubmittedTask(params);
104
- await this.store.set(task);
105
- const engine = await this.options.getEngine(params);
106
- const message = extractTextFromMessage(params.message);
107
- let finalText = '';
108
- const overrides = await this.options.buildRunOptions?.(params, task);
109
- for await (const event of engine.run({ sessionId: task.contextId, message, ...overrides })) {
110
- if (event.type === 'message')
111
- finalText += event.content || '';
112
- if (event.type === 'done') {
113
- finalText = event.content || finalText;
114
- task.status = { state: 'completed', message: createA2AMessage(finalText, 'agent', task.id, task.contextId), timestamp: new Date().toISOString() };
239
+ const task = await this.beginTask(params);
240
+ const acc = { finalText: '' };
241
+ const abort = new AbortController();
242
+ this.running.set(task.id, abort);
243
+ try {
244
+ const stream = await this.resolveEventStream(params, task, abort.signal);
245
+ for await (const event of stream) {
246
+ // 复用映射表推导状态,避免与流式路径出现语义分叉
247
+ const mapped = this.mapEvent(event, task, acc);
248
+ if (mapped?.kind === 'status-update') {
249
+ task.status = mapped.status;
250
+ }
251
+ else {
252
+ task.status = { state: 'working', timestamp: new Date().toISOString() };
253
+ }
254
+ await this.persist(task);
115
255
  }
116
- else if (event.type === 'error') {
117
- task.status = { state: 'failed', message: createA2AMessage(event.error, 'agent', task.id, task.contextId), timestamp: new Date().toISOString() };
256
+ // 引擎未显式产出 done/error 时收敛为 completed,避免任务永久停留在 working
257
+ if (task.status.state === 'working' || task.status.state === 'submitted') {
258
+ task.status = {
259
+ state: 'completed',
260
+ message: createA2AMessage(acc.finalText, 'agent', task.id, task.contextId),
261
+ timestamp: new Date().toISOString(),
262
+ };
263
+ await this.persist(task);
118
264
  }
119
- else {
120
- task.status = { state: 'working', timestamp: new Date().toISOString() };
265
+ }
266
+ catch (err) {
267
+ // 已被 tasks/cancel 标记为取消时,保留 canceled 状态而非覆盖为 failed
268
+ if (task.status.state !== 'canceled') {
269
+ task.status = {
270
+ state: 'failed',
271
+ message: createA2AMessage(err?.message || String(err), 'agent', task.id, task.contextId),
272
+ timestamp: new Date().toISOString(),
273
+ };
274
+ await this.persist(task);
121
275
  }
122
- await this.store.set(task);
276
+ }
277
+ finally {
278
+ this.running.delete(task.id);
279
+ // 与 sendTaskStreaming 保持一致:防御性中止,确保引擎资源释放
280
+ if (!abort.signal.aborted)
281
+ abort.abort();
123
282
  }
124
283
  return task;
125
284
  }
126
285
  async *sendTaskStreaming(params) {
286
+ const task = await this.beginTask(params);
287
+ const acc = { finalText: '' };
288
+ const abort = new AbortController();
289
+ this.running.set(task.id, abort);
290
+ const stream = await this.resolveEventStream(params, task, abort.signal);
291
+ const heartbeatMs = this.options.heartbeatIntervalMs ?? 0;
292
+ let sawFinal = false;
293
+ try {
294
+ for await (const item of withHeartbeat(stream, heartbeatMs, abort.signal)) {
295
+ if (item.kind === 'heartbeat') {
296
+ yield statusUpdate(task, 'working', '', false, { source: 'heartbeat', keepAlive: true });
297
+ continue;
298
+ }
299
+ const mapped = this.mapEvent(item.value, task, acc);
300
+ if (!mapped)
301
+ continue;
302
+ if (mapped.kind === 'status-update') {
303
+ task.status = mapped.status;
304
+ if (mapped.final)
305
+ sawFinal = true;
306
+ }
307
+ await this.persist(task);
308
+ yield mapped;
309
+ }
310
+ // 引擎未产出终态事件时补一个,保证客户端能正常结束 SSE
311
+ if (!sawFinal) {
312
+ task.status = {
313
+ state: 'completed',
314
+ message: createA2AMessage(acc.finalText, 'agent', task.id, task.contextId),
315
+ timestamp: new Date().toISOString(),
316
+ };
317
+ await this.persist(task);
318
+ yield statusUpdate(task, 'completed', acc.finalText, true, { source: 'implicit-done' });
319
+ }
320
+ }
321
+ catch (err) {
322
+ const canceled = task.status.state === 'canceled';
323
+ const state = canceled ? 'canceled' : 'failed';
324
+ const text = canceled ? 'Task canceled' : err?.message || String(err);
325
+ task.status = {
326
+ state,
327
+ message: createA2AMessage(text, 'agent', task.id, task.contextId),
328
+ timestamp: new Date().toISOString(),
329
+ };
330
+ await this.persist(task);
331
+ yield statusUpdate(task, state, text, true, { source: 'error' });
332
+ }
333
+ finally {
334
+ this.running.delete(task.id);
335
+ // 客户端提前断开时(generator.return())终止引擎,避免算力泄漏。
336
+ // withHeartbeat 的 finally 已负责关闭上游迭代器。
337
+ if (!abort.signal.aborted)
338
+ abort.abort();
339
+ }
340
+ }
341
+ /** 创建任务、落库并触发创建钩子 */
342
+ async beginTask(params) {
127
343
  const task = this.createSubmittedTask(params);
128
344
  await this.store.set(task);
129
- const engine = await this.options.getEngine(params);
130
- const message = extractTextFromMessage(params.message);
131
- const overrides = await this.options.buildRunOptions?.(params, task);
132
- for await (const event of engine.run({ sessionId: task.contextId, message, ...overrides })) {
133
- const mapped = mapAgentEventToA2AEvent(event, task);
134
- if (!mapped)
135
- continue;
136
- if (mapped.kind === 'status-update')
137
- task.status = mapped.status;
138
- await this.store.set(task);
139
- yield mapped;
345
+ try {
346
+ await this.options.onTaskCreated?.(task, params);
347
+ }
348
+ catch (err) {
349
+ console.error('[A2A] onTaskCreated hook failed:', err?.message || err);
140
350
  }
351
+ return task;
141
352
  }
142
353
  async getTask(params) {
143
354
  const task = await this.store.get(params.id);
@@ -147,8 +358,18 @@ export class A2AServerHandler {
147
358
  }
148
359
  async cancelTask(params) {
149
360
  const task = await this.getTask(params);
361
+ // 终态任务不可取消(幂等返回,符合 A2A 语义)
362
+ if (['completed', 'failed', 'canceled'].includes(task.status.state)) {
363
+ return task;
364
+ }
365
+ // 先中止引擎再置状态:abort() 是同步的(不 yield 事件循环),
366
+ // 而引擎对 abort 的响应(throw)是异步的,会在后续 persist 的 await 期间
367
+ // 才被 sendTask 的 catch 块捕获。此时 task.status 已是 'canceled',
368
+ // 从而正确区分「主动取消」与「运行失败」。
369
+ this.running.get(task.id)?.abort();
370
+ this.running.delete(task.id);
150
371
  task.status = { state: 'canceled', timestamp: new Date().toISOString() };
151
- await this.store.set(task);
372
+ await this.persist(task);
152
373
  return task;
153
374
  }
154
375
  createSubmittedTask(params) {
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../../../src/a2a/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../../../src/a2a/server.ts"],"names":[],"mappings":"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"}
@@ -61,6 +61,18 @@ export declare function getWorkflowTemplate(id?: string): WorkflowTemplate | und
61
61
  export declare function getWorkflowRoleStage(role?: WorkflowRole | string): string;
62
62
  export declare function formatWorkflowTemplateForPrompt(template?: WorkflowTemplate): string;
63
63
  export declare function buildWorkflowDecisionMemory(log: WorkflowDecisionLog): string;
64
+ /**
65
+ * 从一次 workflow run 的 checkpoint 快照 + 主输出文本中提取决策记忆内容。
66
+ *
67
+ * 纯函数,无 I/O 副作用。上层应用在 run 完成后调用此函数,
68
+ * 将返回的内容写入各自的记忆存储(文件 / MySQL / 等)。
69
+ *
70
+ * @param checkpoints 内核 RunRegistry 维护的 checkpoint 列表
71
+ * @param finalText 主运行收集到的完整输出文本
72
+ * @param userTask 用户原始输入(作为 decision log 的 task 字段)
73
+ * @returns 决策记忆纯文本内容;若非 workflow 运行(无 checkpoint)返回 null
74
+ */
75
+ export declare function extractWorkflowDecisionFromRun(checkpoints: WorkflowCheckpoint[], finalText: string, userTask: string): string | null;
64
76
  export declare function buildStructuredOutputInstruction(role?: WorkflowRole | string): string;
65
77
  export declare function wrapTaskWithWorkflowInstructions(task: string, role?: WorkflowRole | string): string;
66
78
  export declare function parseStructuredAgentOutput(content: string, fallbackRole?: WorkflowRole | string): StructuredAgentOutput;