@cicctencent/agent-core 0.1.72 → 0.1.74
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/interaction/service.d.ts +14 -0
- package/dist/cjs/interaction/service.d.ts.map +1 -1
- package/dist/cjs/interaction/service.js +114 -31
- package/dist/cjs/interaction/service.js.map +1 -1
- package/dist/cjs/interaction/store.d.ts +1 -0
- package/dist/cjs/interaction/store.d.ts.map +1 -1
- package/dist/cjs/interaction/store.js +10 -0
- package/dist/cjs/interaction/store.js.map +1 -1
- package/dist/cjs/interaction/types.d.ts +5 -1
- package/dist/cjs/interaction/types.d.ts.map +1 -1
- package/dist/cjs/interaction/types.js.map +1 -1
- package/dist/cjs/tool/ask-user.d.ts.map +1 -1
- package/dist/cjs/tool/ask-user.js +5 -0
- package/dist/cjs/tool/ask-user.js.map +1 -1
- package/dist/esm/interaction/service.d.ts +14 -0
- package/dist/esm/interaction/service.d.ts.map +1 -1
- package/dist/esm/interaction/service.js +114 -31
- package/dist/esm/interaction/service.js.map +1 -1
- package/dist/esm/interaction/store.d.ts +1 -0
- package/dist/esm/interaction/store.d.ts.map +1 -1
- package/dist/esm/interaction/store.js +10 -0
- package/dist/esm/interaction/store.js.map +1 -1
- package/dist/esm/interaction/types.d.ts +5 -1
- package/dist/esm/interaction/types.d.ts.map +1 -1
- package/dist/esm/interaction/types.js.map +1 -1
- package/dist/esm/tool/ask-user.d.ts.map +1 -1
- package/dist/esm/tool/ask-user.js +5 -0
- package/dist/esm/tool/ask-user.js.map +1 -1
- package/package.json +1 -1
|
@@ -14,6 +14,10 @@ export declare class InteractionService {
|
|
|
14
14
|
private waiters;
|
|
15
15
|
private defaultTimeoutMs;
|
|
16
16
|
constructor(store: InteractionStore, defaultTimeoutMs?: number);
|
|
17
|
+
/**
|
|
18
|
+
* 清理 waiter:清除超时和轮询定时器,从 map 中删除并返回
|
|
19
|
+
*/
|
|
20
|
+
private clearWaiter;
|
|
17
21
|
/**
|
|
18
22
|
* 创建交互请求并返回 Promise,等待用户回答
|
|
19
23
|
*/
|
|
@@ -32,6 +36,8 @@ export declare class InteractionService {
|
|
|
32
36
|
timeoutMs?: number;
|
|
33
37
|
/** 创建请求后的回调(用于发送 SSE 事件通知前端) */
|
|
34
38
|
emit?: (request: InteractionRequest) => void;
|
|
39
|
+
/** 会话/工具中止信号 */
|
|
40
|
+
abortSignal?: AbortSignal;
|
|
35
41
|
/** 扩展字段(如 permissionId 用于权限审批联动) */
|
|
36
42
|
meta?: Record<string, unknown>;
|
|
37
43
|
}): Promise<InteractionAnswer>;
|
|
@@ -57,10 +63,14 @@ export declare class InteractionService {
|
|
|
57
63
|
}): InteractionRequest;
|
|
58
64
|
/**
|
|
59
65
|
* 回答交互请求
|
|
66
|
+
* 先更新 store(跨进程可见),再尝试 resolve 本地 waiter。
|
|
67
|
+
* 即使本地 waiter 不存在(跨进程场景),store 已更新,轮询方会检测到。
|
|
60
68
|
*/
|
|
61
69
|
answerInteraction(requestId: string, answer: InteractionAnswer): boolean;
|
|
62
70
|
/**
|
|
63
71
|
* 取消交互请求
|
|
72
|
+
* 先更新 store(跨进程可见),再尝试 reject 本地 waiter。
|
|
73
|
+
* 即使本地 waiter 不存在(跨进程场景),store 已更新,轮询方会检测到。
|
|
64
74
|
*/
|
|
65
75
|
cancelInteraction(requestId: string): boolean;
|
|
66
76
|
/**
|
|
@@ -75,6 +85,10 @@ export declare class InteractionService {
|
|
|
75
85
|
* 取消会话下所有 pending 请求
|
|
76
86
|
*/
|
|
77
87
|
cancelAllForSession(sessionId: string): void;
|
|
88
|
+
/**
|
|
89
|
+
* 取消线程下所有 pending 请求(包含使用子会话 ID 创建的交互)
|
|
90
|
+
*/
|
|
91
|
+
cancelAllForThread(threadId: string | number): void;
|
|
78
92
|
/**
|
|
79
93
|
* 清理已完成/已过期/已取消的请求
|
|
80
94
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../../src/interaction/service.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,kBAAkB,EAClB,iBAAiB,
|
|
1
|
+
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../../src/interaction/service.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,kBAAkB,EAClB,iBAAiB,EACjB,gBAAgB,EAChB,eAAe,EACf,iBAAiB,EAClB,MAAM,YAAY,CAAC;AAwBpB;;;;;;;;;GASG;AACH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,KAAK,CAAmB;IAChC,OAAO,CAAC,OAAO,CAAoC;IACnD,OAAO,CAAC,gBAAgB,CAAS;gBAErB,KAAK,EAAE,gBAAgB,EAAE,gBAAgB,GAAE,MAAsB;IAK7E;;OAEG;IACH,OAAO,CAAC,WAAW;IAanB;;OAEG;IACH,kBAAkB,CAAC,MAAM,EAAE;QACzB,SAAS,EAAE,MAAM,CAAC;QAClB,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;QAC3B,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B,MAAM,EAAE,iBAAiB,CAAC;QAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,IAAI,EAAE,eAAe,CAAC;QACtB,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,CAAC,EAAE,kBAAkB,CAAC,SAAS,CAAC,CAAC;QACxC,aAAa,CAAC,EAAE,OAAO,CAAC;QACxB,QAAQ,CAAC,EAAE,OAAO,CAAC;QACnB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,gCAAgC;QAChC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,kBAAkB,KAAK,IAAI,CAAC;QAC7C,gBAAgB;QAChB,WAAW,CAAC,EAAE,WAAW,CAAC;QAC1B,oCAAoC;QACpC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KAChC,GAAG,OAAO,CAAC,iBAAiB,CAAC;IA0E9B;;;OAGG;IACH,iBAAiB,CAAC,MAAM,EAAE;QACxB,SAAS,EAAE,MAAM,CAAC;QAClB,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;QAC3B,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B,MAAM,EAAE,iBAAiB,CAAC;QAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,IAAI,EAAE,eAAe,CAAC;QACtB,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,CAAC,EAAE,kBAAkB,CAAC,SAAS,CAAC,CAAC;QACxC,aAAa,CAAC,EAAE,OAAO,CAAC;QACxB,QAAQ,CAAC,EAAE,OAAO,CAAC;QACnB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,oCAAoC;QACpC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KAChC,GAAG,kBAAkB;IA2BtB;;;;OAIG;IACH,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,iBAAiB,GAAG,OAAO;IAiBxE;;;;OAIG;IACH,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAgB7C;;OAEG;IACH,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,kBAAkB,EAAE;IAIpD;;OAEG;IACH,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,kBAAkB,GAAG,SAAS;IAI7D;;OAEG;IACH,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAO5C;;OAEG;IACH,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAOnD;;OAEG;IACH,OAAO,CAAC,WAAW,GAAE,MAAuB,GAAG,MAAM;CAmCtD"}
|
|
@@ -5,6 +5,8 @@
|
|
|
5
5
|
// ============================================================
|
|
6
6
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
7
|
exports.InteractionService = void 0;
|
|
8
|
+
/** 跨进程轮询间隔(毫秒) */
|
|
9
|
+
const CROSS_PROCESS_POLL_INTERVAL_MS = 1000;
|
|
8
10
|
/**
|
|
9
11
|
* InteractionService — 管理用户交互请求的生命周期
|
|
10
12
|
*
|
|
@@ -23,19 +25,85 @@ class InteractionService {
|
|
|
23
25
|
this.store = store;
|
|
24
26
|
this.defaultTimeoutMs = defaultTimeoutMs;
|
|
25
27
|
}
|
|
28
|
+
/**
|
|
29
|
+
* 清理 waiter:清除超时和轮询定时器,从 map 中删除并返回
|
|
30
|
+
*/
|
|
31
|
+
clearWaiter(requestId) {
|
|
32
|
+
const waiter = this.waiters.get(requestId);
|
|
33
|
+
if (waiter) {
|
|
34
|
+
clearTimeout(waiter.timeout);
|
|
35
|
+
clearInterval(waiter.pollInterval);
|
|
36
|
+
if (waiter.abortSignal && waiter.abortListener) {
|
|
37
|
+
waiter.abortSignal.removeEventListener('abort', waiter.abortListener);
|
|
38
|
+
}
|
|
39
|
+
this.waiters.delete(requestId);
|
|
40
|
+
}
|
|
41
|
+
return waiter;
|
|
42
|
+
}
|
|
26
43
|
/**
|
|
27
44
|
* 创建交互请求并返回 Promise,等待用户回答
|
|
28
45
|
*/
|
|
29
46
|
requestInteraction(params) {
|
|
30
47
|
const request = this.createInteraction(params);
|
|
31
48
|
return new Promise((resolve, reject) => {
|
|
49
|
+
let settled = false;
|
|
50
|
+
// 包装 resolve/reject:调用时自动清理 timeout、pollInterval 和 abortListener,保证资源一定释放
|
|
51
|
+
const safeResolve = (answer) => {
|
|
52
|
+
if (settled)
|
|
53
|
+
return;
|
|
54
|
+
settled = true;
|
|
55
|
+
this.clearWaiter(request.requestId);
|
|
56
|
+
resolve(answer);
|
|
57
|
+
};
|
|
58
|
+
const safeReject = (reason) => {
|
|
59
|
+
if (settled)
|
|
60
|
+
return;
|
|
61
|
+
settled = true;
|
|
62
|
+
this.clearWaiter(request.requestId);
|
|
63
|
+
reject(reason);
|
|
64
|
+
};
|
|
65
|
+
if (params.abortSignal?.aborted) {
|
|
66
|
+
this.store.update(request.requestId, { status: 'cancelled' });
|
|
67
|
+
safeReject(new Error(`Interaction request ${request.requestId} was cancelled by abort`));
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
32
70
|
const timeout = setTimeout(() => {
|
|
33
|
-
this.waiters.delete(request.requestId);
|
|
34
|
-
request.status = 'expired';
|
|
35
71
|
this.store.update(request.requestId, { status: 'expired' });
|
|
36
|
-
|
|
72
|
+
safeReject(new Error(`Interaction request ${request.requestId} timed out after ${request.timeoutMs}ms`));
|
|
37
73
|
}, request.timeoutMs);
|
|
38
|
-
|
|
74
|
+
// 跨进程轮询:定期检测 store 中状态变化(其他进程 answer/cancel 后触发)
|
|
75
|
+
const pollInterval = setInterval(() => {
|
|
76
|
+
const current = this.store.get(request.requestId);
|
|
77
|
+
if (!current)
|
|
78
|
+
return; // 可能还未写入,忽略
|
|
79
|
+
if (current.status === 'answered') {
|
|
80
|
+
safeResolve(current.answer ?? { requestId: request.requestId, action: 'submit' });
|
|
81
|
+
}
|
|
82
|
+
else if (current.status === 'cancelled') {
|
|
83
|
+
safeReject(new Error(`Interaction request ${request.requestId} was cancelled`));
|
|
84
|
+
}
|
|
85
|
+
else if (current.status === 'expired') {
|
|
86
|
+
safeReject(new Error(`Interaction request ${request.requestId} expired`));
|
|
87
|
+
}
|
|
88
|
+
}, CROSS_PROCESS_POLL_INTERVAL_MS);
|
|
89
|
+
const abortListener = params.abortSignal
|
|
90
|
+
? () => {
|
|
91
|
+
this.store.update(request.requestId, { status: 'cancelled' });
|
|
92
|
+
safeReject(new Error(`Interaction request ${request.requestId} was cancelled by abort`));
|
|
93
|
+
}
|
|
94
|
+
: undefined;
|
|
95
|
+
if (params.abortSignal && abortListener) {
|
|
96
|
+
params.abortSignal.addEventListener('abort', abortListener, { once: true });
|
|
97
|
+
}
|
|
98
|
+
// 存入 waiter 的是 safeResolve/safeReject,外部调用时自动清理定时器
|
|
99
|
+
this.waiters.set(request.requestId, {
|
|
100
|
+
resolve: safeResolve,
|
|
101
|
+
reject: safeReject,
|
|
102
|
+
timeout,
|
|
103
|
+
pollInterval,
|
|
104
|
+
abortSignal: params.abortSignal,
|
|
105
|
+
abortListener,
|
|
106
|
+
});
|
|
39
107
|
// 通知前端:创建请求后立即触发 emit 回调,将 interaction-request 事件推送到 SSE,
|
|
40
108
|
// 否则前端永远收不到交互请求,用户无法作答,最终工具执行超时。
|
|
41
109
|
try {
|
|
@@ -76,40 +144,39 @@ class InteractionService {
|
|
|
76
144
|
}
|
|
77
145
|
/**
|
|
78
146
|
* 回答交互请求
|
|
147
|
+
* 先更新 store(跨进程可见),再尝试 resolve 本地 waiter。
|
|
148
|
+
* 即使本地 waiter 不存在(跨进程场景),store 已更新,轮询方会检测到。
|
|
79
149
|
*/
|
|
80
150
|
answerInteraction(requestId, answer) {
|
|
81
151
|
const request = this.store.get(requestId);
|
|
82
152
|
if (!request || request.status !== 'pending')
|
|
83
153
|
return false;
|
|
154
|
+
// 先更新 store(跨进程可见),包含 answer 数据供轮询方读取
|
|
155
|
+
this.store.update(requestId, { status: 'answered', answeredAt: Date.now(), answer });
|
|
156
|
+
// 尝试 resolve 本地 waiter(同进程立即响应);safeResolve 会自动清理定时器
|
|
84
157
|
const waiter = this.waiters.get(requestId);
|
|
85
|
-
if (
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
this.waiters.delete(requestId);
|
|
90
|
-
// 更新状态
|
|
91
|
-
request.status = 'answered';
|
|
92
|
-
request.answeredAt = Date.now();
|
|
93
|
-
this.store.update(requestId, { status: 'answered', answeredAt: Date.now() });
|
|
94
|
-
// 解析 Promise
|
|
95
|
-
waiter.resolve(answer);
|
|
158
|
+
if (waiter) {
|
|
159
|
+
waiter.resolve(answer);
|
|
160
|
+
}
|
|
161
|
+
// 即使没有本地 waiter(跨进程场景),store 已更新,轮询方会检测到
|
|
96
162
|
return true;
|
|
97
163
|
}
|
|
98
164
|
/**
|
|
99
165
|
* 取消交互请求
|
|
166
|
+
* 先更新 store(跨进程可见),再尝试 reject 本地 waiter。
|
|
167
|
+
* 即使本地 waiter 不存在(跨进程场景),store 已更新,轮询方会检测到。
|
|
100
168
|
*/
|
|
101
169
|
cancelInteraction(requestId) {
|
|
102
170
|
const request = this.store.get(requestId);
|
|
103
171
|
if (!request || request.status !== 'pending')
|
|
104
172
|
return false;
|
|
105
|
-
|
|
106
|
-
if (!waiter)
|
|
107
|
-
return false;
|
|
108
|
-
clearTimeout(waiter.timeout);
|
|
109
|
-
this.waiters.delete(requestId);
|
|
110
|
-
request.status = 'cancelled';
|
|
173
|
+
// 先更新 store
|
|
111
174
|
this.store.update(requestId, { status: 'cancelled' });
|
|
112
|
-
|
|
175
|
+
// 尝试 reject 本地 waiter;safeReject 会自动清理定时器
|
|
176
|
+
const waiter = this.waiters.get(requestId);
|
|
177
|
+
if (waiter) {
|
|
178
|
+
waiter.reject(new Error(`Interaction request ${requestId} was cancelled`));
|
|
179
|
+
}
|
|
113
180
|
return true;
|
|
114
181
|
}
|
|
115
182
|
/**
|
|
@@ -133,6 +200,15 @@ class InteractionService {
|
|
|
133
200
|
this.cancelInteraction(req.requestId);
|
|
134
201
|
}
|
|
135
202
|
}
|
|
203
|
+
/**
|
|
204
|
+
* 取消线程下所有 pending 请求(包含使用子会话 ID 创建的交互)
|
|
205
|
+
*/
|
|
206
|
+
cancelAllForThread(threadId) {
|
|
207
|
+
const pending = this.store.listPendingByThread(threadId);
|
|
208
|
+
for (const req of pending) {
|
|
209
|
+
this.cancelInteraction(req.requestId);
|
|
210
|
+
}
|
|
211
|
+
}
|
|
136
212
|
/**
|
|
137
213
|
* 清理已完成/已过期/已取消的请求
|
|
138
214
|
*/
|
|
@@ -140,25 +216,32 @@ class InteractionService {
|
|
|
140
216
|
let count = 0;
|
|
141
217
|
const now = Date.now();
|
|
142
218
|
// 遍历所有 waiter(它们对应的都是 pending 请求)
|
|
143
|
-
for (const [requestId
|
|
219
|
+
for (const [requestId] of this.waiters) {
|
|
144
220
|
const request = this.store.get(requestId);
|
|
145
221
|
if (!request) {
|
|
146
|
-
|
|
147
|
-
this.waiters.
|
|
222
|
+
// 请求已被删除,reject 并自动清理定时器
|
|
223
|
+
this.waiters.get(requestId)?.reject(new Error(`Interaction request ${requestId} not found during cleanup`));
|
|
224
|
+
count++;
|
|
225
|
+
continue;
|
|
226
|
+
}
|
|
227
|
+
if (request.status === 'answered') {
|
|
228
|
+
this.waiters.get(requestId)?.resolve(request.answer ?? { requestId, action: 'submit' });
|
|
229
|
+
count++;
|
|
230
|
+
continue;
|
|
231
|
+
}
|
|
232
|
+
if (request.status === 'cancelled') {
|
|
233
|
+
this.waiters.get(requestId)?.reject(new Error(`Interaction request ${requestId} was cancelled`));
|
|
148
234
|
count++;
|
|
149
235
|
continue;
|
|
150
236
|
}
|
|
151
|
-
if (request.status
|
|
152
|
-
|
|
153
|
-
this.waiters.delete(requestId);
|
|
237
|
+
if (request.status === 'expired') {
|
|
238
|
+
this.waiters.get(requestId)?.reject(new Error(`Interaction request ${requestId} expired`));
|
|
154
239
|
count++;
|
|
155
240
|
continue;
|
|
156
241
|
}
|
|
157
242
|
if (now - request.createdAt > olderThanMs) {
|
|
158
|
-
clearTimeout(waiter.timeout);
|
|
159
|
-
this.waiters.delete(requestId);
|
|
160
243
|
this.store.update(requestId, { status: 'expired' });
|
|
161
|
-
|
|
244
|
+
this.waiters.get(requestId)?.reject(new Error(`Interaction request ${requestId} expired during cleanup`));
|
|
162
245
|
count++;
|
|
163
246
|
}
|
|
164
247
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"service.js","sourceRoot":"","sources":["../../../src/interaction/service.ts"],"names":[],"mappings":";AAAA,+DAA+D;AAC/D,gCAAgC;AAChC,mCAAmC;AACnC,+DAA+D;;;
|
|
1
|
+
{"version":3,"file":"service.js","sourceRoot":"","sources":["../../../src/interaction/service.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,6 +4,7 @@ export declare class InMemoryInteractionStore implements InteractionStore {
|
|
|
4
4
|
save(request: InteractionRequest): void;
|
|
5
5
|
get(requestId: string): InteractionRequest | undefined;
|
|
6
6
|
listPending(sessionId: string): InteractionRequest[];
|
|
7
|
+
listPendingByThread(threadId: string | number): InteractionRequest[];
|
|
7
8
|
update(requestId: string, updates: Partial<InteractionRequest>): void;
|
|
8
9
|
delete(requestId: string): void;
|
|
9
10
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../../src/interaction/store.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAEvE,qBAAa,wBAAyB,YAAW,gBAAgB;IAC/D,OAAO,CAAC,QAAQ,CAAyC;IAEzD,IAAI,CAAC,OAAO,EAAE,kBAAkB,GAAG,IAAI;IAIvC,GAAG,CAAC,SAAS,EAAE,MAAM,GAAG,kBAAkB,GAAG,SAAS;IAKtD,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,kBAAkB,EAAE;IAUpD,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,kBAAkB,CAAC,GAAG,IAAI;IAOrE,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;CAGhC"}
|
|
1
|
+
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../../src/interaction/store.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAEvE,qBAAa,wBAAyB,YAAW,gBAAgB;IAC/D,OAAO,CAAC,QAAQ,CAAyC;IAEzD,IAAI,CAAC,OAAO,EAAE,kBAAkB,GAAG,IAAI;IAIvC,GAAG,CAAC,SAAS,EAAE,MAAM,GAAG,kBAAkB,GAAG,SAAS;IAKtD,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,kBAAkB,EAAE;IAUpD,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,kBAAkB,EAAE;IAWpE,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,kBAAkB,CAAC,GAAG,IAAI;IAOrE,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;CAGhC"}
|
|
@@ -22,6 +22,16 @@ class InMemoryInteractionStore {
|
|
|
22
22
|
}
|
|
23
23
|
return results.sort((a, b) => b.createdAt - a.createdAt);
|
|
24
24
|
}
|
|
25
|
+
listPendingByThread(threadId) {
|
|
26
|
+
const normalizedThreadId = String(threadId);
|
|
27
|
+
const results = [];
|
|
28
|
+
for (const r of this.requests.values()) {
|
|
29
|
+
if (r.threadId != null && String(r.threadId) === normalizedThreadId && r.status === 'pending') {
|
|
30
|
+
results.push({ ...r });
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
return results.sort((a, b) => b.createdAt - a.createdAt);
|
|
34
|
+
}
|
|
25
35
|
update(requestId, updates) {
|
|
26
36
|
const existing = this.requests.get(requestId);
|
|
27
37
|
if (existing) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store.js","sourceRoot":"","sources":["../../../src/interaction/store.ts"],"names":[],"mappings":";AAAA,+DAA+D;AAC/D,kCAAkC;AAClC,+DAA+D;;;AAI/D,MAAa,wBAAwB;IAC3B,QAAQ,GAAG,IAAI,GAAG,EAA8B,CAAC;IAEzD,IAAI,CAAC,OAA2B;QAC9B,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC;IACvD,CAAC;IAED,GAAG,CAAC,SAAiB;QACnB,MAAM,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACvC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;IAClC,CAAC;IAED,WAAW,CAAC,SAAiB;QAC3B,MAAM,OAAO,GAAyB,EAAE,CAAC;QACzC,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;YACvC,IAAI,CAAC,CAAC,SAAS,KAAK,SAAS,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;gBACxD,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;YACzB,CAAC;QACH,CAAC;QACD,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC;IAC3D,CAAC;IAED,MAAM,CAAC,SAAiB,EAAE,OAAoC;QAC5D,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC9C,IAAI,QAAQ,EAAE,CAAC;YACb,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,EAAE,EAAE,GAAG,QAAQ,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC;QAC5D,CAAC;IACH,CAAC;IAED,MAAM,CAAC,SAAiB;QACtB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAClC,CAAC;CACF;
|
|
1
|
+
{"version":3,"file":"store.js","sourceRoot":"","sources":["../../../src/interaction/store.ts"],"names":[],"mappings":";AAAA,+DAA+D;AAC/D,kCAAkC;AAClC,+DAA+D;;;AAI/D,MAAa,wBAAwB;IAC3B,QAAQ,GAAG,IAAI,GAAG,EAA8B,CAAC;IAEzD,IAAI,CAAC,OAA2B;QAC9B,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC;IACvD,CAAC;IAED,GAAG,CAAC,SAAiB;QACnB,MAAM,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACvC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;IAClC,CAAC;IAED,WAAW,CAAC,SAAiB;QAC3B,MAAM,OAAO,GAAyB,EAAE,CAAC;QACzC,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;YACvC,IAAI,CAAC,CAAC,SAAS,KAAK,SAAS,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;gBACxD,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;YACzB,CAAC;QACH,CAAC;QACD,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC;IAC3D,CAAC;IAED,mBAAmB,CAAC,QAAyB;QAC3C,MAAM,kBAAkB,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC5C,MAAM,OAAO,GAAyB,EAAE,CAAC;QACzC,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;YACvC,IAAI,CAAC,CAAC,QAAQ,IAAI,IAAI,IAAI,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,kBAAkB,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;gBAC9F,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;YACzB,CAAC;QACH,CAAC;QACD,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC;IAC3D,CAAC;IAED,MAAM,CAAC,SAAiB,EAAE,OAAoC;QAC5D,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC9C,IAAI,QAAQ,EAAE,CAAC;YACb,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,EAAE,EAAE,GAAG,QAAQ,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC;QAC5D,CAAC;IACH,CAAC;IAED,MAAM,CAAC,SAAiB;QACtB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAClC,CAAC;CACF;AA3CD,4DA2CC"}
|
|
@@ -51,6 +51,8 @@ export interface InteractionRequest {
|
|
|
51
51
|
createdAt: number;
|
|
52
52
|
/** 回答时间(毫秒时间戳) */
|
|
53
53
|
answeredAt?: number;
|
|
54
|
+
/** 用户回答(answered 状态时存在,跨进程轮询方通过此字段获取答案) */
|
|
55
|
+
answer?: InteractionAnswer;
|
|
54
56
|
/** 扩展字段(上层可附加任意数据,如 permissionId 用于权限审批联动) */
|
|
55
57
|
meta?: Record<string, unknown>;
|
|
56
58
|
}
|
|
@@ -68,7 +70,7 @@ export interface InteractionAnswer {
|
|
|
68
70
|
/** 交互请求事件(SSE 发送给前端) */
|
|
69
71
|
export interface InteractionRequestEvent {
|
|
70
72
|
type: 'interaction-request';
|
|
71
|
-
data: Omit<InteractionRequest, 'status' | 'createdAt' | 'answeredAt'>;
|
|
73
|
+
data: Omit<InteractionRequest, 'status' | 'createdAt' | 'answeredAt' | 'answer'>;
|
|
72
74
|
}
|
|
73
75
|
/** 交互回答事件(SSE 发送给前端,通知前端该请求已处理) */
|
|
74
76
|
export interface InteractionAnswerEvent {
|
|
@@ -87,6 +89,8 @@ export interface InteractionStore {
|
|
|
87
89
|
get(requestId: string): InteractionRequest | undefined;
|
|
88
90
|
/** 获取会话下所有 pending 请求 */
|
|
89
91
|
listPending(sessionId: string): InteractionRequest[];
|
|
92
|
+
/** 获取线程下所有 pending 请求(用于取消主会话及子会话交互) */
|
|
93
|
+
listPendingByThread(threadId: string | number): InteractionRequest[];
|
|
90
94
|
/** 更新交互请求状态 */
|
|
91
95
|
update(requestId: string, updates: Partial<InteractionRequest>): void;
|
|
92
96
|
/** 删除交互请求 */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/interaction/types.ts"],"names":[],"mappings":"AAKA,aAAa;AACb,MAAM,MAAM,eAAe,GAAG,SAAS,GAAG,QAAQ,GAAG,cAAc,GAAG,OAAO,GAAG,UAAU,CAAC;AAE3F,aAAa;AACb,MAAM,MAAM,iBAAiB,GAAG,YAAY,GAAG,WAAW,GAAG,MAAM,CAAC;AAEpE,aAAa;AACb,MAAM,MAAM,iBAAiB,GAAG,SAAS,GAAG,UAAU,GAAG,WAAW,GAAG,SAAS,CAAC;AAEjF,WAAW;AACX,MAAM,WAAW,iBAAiB;IAChC,aAAa;IACb,EAAE,EAAE,MAAM,CAAC;IACX,WAAW;IACX,KAAK,EAAE,MAAM,CAAC;IACd,UAAU;IACV,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,kBAAkB;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,kBAAkB;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,WAAW;AACX,MAAM,WAAW,kBAAkB;IACjC,cAAc;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY;IACZ,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC3B,2BAA2B;IAC3B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,SAAS;IACT,MAAM,EAAE,iBAAiB,CAAC;IAC1B,2BAA2B;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW;IACX,IAAI,EAAE,eAAe,CAAC;IACtB,SAAS;IACT,KAAK,EAAE,MAAM,CAAC;IACd,WAAW;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,gDAAgD;IAChD,OAAO,CAAC,EAAE,iBAAiB,EAAE,CAAC;IAC9B,yCAAyC;IACzC,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,sBAAsB;IACtB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,uBAAuB;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW;IACX,MAAM,EAAE,iBAAiB,CAAC;IAC1B,kBAAkB;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,kBAAkB;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,8CAA8C;IAC9C,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC;AAED,WAAW;AACX,MAAM,WAAW,iBAAiB;IAChC,YAAY;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,kBAAkB;IAClB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,aAAa;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW;IACX,MAAM,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAC;CAC9B;AAED,wBAAwB;AACxB,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,qBAAqB,CAAC;IAC5B,IAAI,EAAE,IAAI,CAAC,kBAAkB,EAAE,QAAQ,GAAG,WAAW,GAAG,YAAY,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/interaction/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/interaction/types.ts"],"names":[],"mappings":";AAAA,+DAA+D;AAC/D,4BAA4B;AAC5B,6BAA6B;AAC7B,+DAA+D;;;
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/interaction/types.ts"],"names":[],"mappings":";AAAA,+DAA+D;AAC/D,4BAA4B;AAC5B,6BAA6B;AAC7B,+DAA+D;;;AA6G/D,kBAAkB;AACL,QAAA,8BAA8B,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ask-user.d.ts","sourceRoot":"","sources":["../../../src/tool/ask-user.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAe,MAAM,YAAY,CAAC;AAC9E,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,KAAK,EAAqB,eAAe,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAErG,qBAAqB;AACrB,MAAM,WAAW,WAAW;IAC1B,SAAS;IACT,KAAK,EAAE,MAAM,CAAC;IACd,WAAW;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW;IACX,IAAI,EAAE,eAAe,CAAC;IACtB,qCAAqC;IACrC,OAAO,CAAC,EAAE,iBAAiB,EAAE,CAAC;IAC9B,iBAAiB;IACjB,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,oBAAoB;AACpB,eAAO,MAAM,wBAAwB,EAAE,cA2CtC,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,kBAAkB,EAAE,kBAAkB,GAAG,cAAc,
|
|
1
|
+
{"version":3,"file":"ask-user.d.ts","sourceRoot":"","sources":["../../../src/tool/ask-user.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAe,MAAM,YAAY,CAAC;AAC9E,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,KAAK,EAAqB,eAAe,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAErG,qBAAqB;AACrB,MAAM,WAAW,WAAW;IAC1B,SAAS;IACT,KAAK,EAAE,MAAM,CAAC;IACd,WAAW;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW;IACX,IAAI,EAAE,eAAe,CAAC;IACtB,qCAAqC;IACrC,OAAO,CAAC,EAAE,iBAAiB,EAAE,CAAC;IAC9B,iBAAiB;IACjB,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,oBAAoB;AACpB,eAAO,MAAM,wBAAwB,EAAE,cA2CtC,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,kBAAkB,EAAE,kBAAkB,GAAG,cAAc,CA4FxF"}
|
|
@@ -80,6 +80,7 @@ function createAskUserTool(interactionService) {
|
|
|
80
80
|
try {
|
|
81
81
|
const answer = await interactionService.requestInteraction({
|
|
82
82
|
sessionId: ctx.sessionId,
|
|
83
|
+
threadId: ctx.custom?.threadId,
|
|
83
84
|
parentToolCallId: ctx.currentToolCallId,
|
|
84
85
|
source: 'tool',
|
|
85
86
|
type: typedArgs.type,
|
|
@@ -87,6 +88,7 @@ function createAskUserTool(interactionService) {
|
|
|
87
88
|
message: typedArgs.message,
|
|
88
89
|
options: options.length > 0 ? options : undefined,
|
|
89
90
|
allowFreeText: typedArgs.allowFreeText ?? false,
|
|
91
|
+
abortSignal: ctx.abortSignal,
|
|
90
92
|
emit: (request) => {
|
|
91
93
|
const emitFn = ctx.custom?.emitInteractionRequest;
|
|
92
94
|
emitFn?.({
|
|
@@ -101,6 +103,9 @@ function createAskUserTool(interactionService) {
|
|
|
101
103
|
message: request.message,
|
|
102
104
|
options: request.options,
|
|
103
105
|
allowFreeText: request.allowFreeText,
|
|
106
|
+
// 供前端倒计时:创建时间与超时阈值(毫秒)
|
|
107
|
+
createdAt: request.createdAt,
|
|
108
|
+
timeoutMs: request.timeoutMs,
|
|
104
109
|
});
|
|
105
110
|
},
|
|
106
111
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ask-user.js","sourceRoot":"","sources":["../../../src/tool/ask-user.ts"],"names":[],"mappings":";AAAA,+DAA+D;AAC/D,kCAAkC;AAClC,+DAA+D;;;AAwE/D,
|
|
1
|
+
{"version":3,"file":"ask-user.js","sourceRoot":"","sources":["../../../src/tool/ask-user.ts"],"names":[],"mappings":"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"}
|
|
@@ -14,6 +14,10 @@ export declare class InteractionService {
|
|
|
14
14
|
private waiters;
|
|
15
15
|
private defaultTimeoutMs;
|
|
16
16
|
constructor(store: InteractionStore, defaultTimeoutMs?: number);
|
|
17
|
+
/**
|
|
18
|
+
* 清理 waiter:清除超时和轮询定时器,从 map 中删除并返回
|
|
19
|
+
*/
|
|
20
|
+
private clearWaiter;
|
|
17
21
|
/**
|
|
18
22
|
* 创建交互请求并返回 Promise,等待用户回答
|
|
19
23
|
*/
|
|
@@ -32,6 +36,8 @@ export declare class InteractionService {
|
|
|
32
36
|
timeoutMs?: number;
|
|
33
37
|
/** 创建请求后的回调(用于发送 SSE 事件通知前端) */
|
|
34
38
|
emit?: (request: InteractionRequest) => void;
|
|
39
|
+
/** 会话/工具中止信号 */
|
|
40
|
+
abortSignal?: AbortSignal;
|
|
35
41
|
/** 扩展字段(如 permissionId 用于权限审批联动) */
|
|
36
42
|
meta?: Record<string, unknown>;
|
|
37
43
|
}): Promise<InteractionAnswer>;
|
|
@@ -57,10 +63,14 @@ export declare class InteractionService {
|
|
|
57
63
|
}): InteractionRequest;
|
|
58
64
|
/**
|
|
59
65
|
* 回答交互请求
|
|
66
|
+
* 先更新 store(跨进程可见),再尝试 resolve 本地 waiter。
|
|
67
|
+
* 即使本地 waiter 不存在(跨进程场景),store 已更新,轮询方会检测到。
|
|
60
68
|
*/
|
|
61
69
|
answerInteraction(requestId: string, answer: InteractionAnswer): boolean;
|
|
62
70
|
/**
|
|
63
71
|
* 取消交互请求
|
|
72
|
+
* 先更新 store(跨进程可见),再尝试 reject 本地 waiter。
|
|
73
|
+
* 即使本地 waiter 不存在(跨进程场景),store 已更新,轮询方会检测到。
|
|
64
74
|
*/
|
|
65
75
|
cancelInteraction(requestId: string): boolean;
|
|
66
76
|
/**
|
|
@@ -75,6 +85,10 @@ export declare class InteractionService {
|
|
|
75
85
|
* 取消会话下所有 pending 请求
|
|
76
86
|
*/
|
|
77
87
|
cancelAllForSession(sessionId: string): void;
|
|
88
|
+
/**
|
|
89
|
+
* 取消线程下所有 pending 请求(包含使用子会话 ID 创建的交互)
|
|
90
|
+
*/
|
|
91
|
+
cancelAllForThread(threadId: string | number): void;
|
|
78
92
|
/**
|
|
79
93
|
* 清理已完成/已过期/已取消的请求
|
|
80
94
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../../src/interaction/service.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,kBAAkB,EAClB,iBAAiB,
|
|
1
|
+
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../../src/interaction/service.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,kBAAkB,EAClB,iBAAiB,EACjB,gBAAgB,EAChB,eAAe,EACf,iBAAiB,EAClB,MAAM,YAAY,CAAC;AAwBpB;;;;;;;;;GASG;AACH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,KAAK,CAAmB;IAChC,OAAO,CAAC,OAAO,CAAoC;IACnD,OAAO,CAAC,gBAAgB,CAAS;gBAErB,KAAK,EAAE,gBAAgB,EAAE,gBAAgB,GAAE,MAAsB;IAK7E;;OAEG;IACH,OAAO,CAAC,WAAW;IAanB;;OAEG;IACH,kBAAkB,CAAC,MAAM,EAAE;QACzB,SAAS,EAAE,MAAM,CAAC;QAClB,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;QAC3B,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B,MAAM,EAAE,iBAAiB,CAAC;QAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,IAAI,EAAE,eAAe,CAAC;QACtB,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,CAAC,EAAE,kBAAkB,CAAC,SAAS,CAAC,CAAC;QACxC,aAAa,CAAC,EAAE,OAAO,CAAC;QACxB,QAAQ,CAAC,EAAE,OAAO,CAAC;QACnB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,gCAAgC;QAChC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,kBAAkB,KAAK,IAAI,CAAC;QAC7C,gBAAgB;QAChB,WAAW,CAAC,EAAE,WAAW,CAAC;QAC1B,oCAAoC;QACpC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KAChC,GAAG,OAAO,CAAC,iBAAiB,CAAC;IA0E9B;;;OAGG;IACH,iBAAiB,CAAC,MAAM,EAAE;QACxB,SAAS,EAAE,MAAM,CAAC;QAClB,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;QAC3B,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B,MAAM,EAAE,iBAAiB,CAAC;QAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,IAAI,EAAE,eAAe,CAAC;QACtB,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,CAAC,EAAE,kBAAkB,CAAC,SAAS,CAAC,CAAC;QACxC,aAAa,CAAC,EAAE,OAAO,CAAC;QACxB,QAAQ,CAAC,EAAE,OAAO,CAAC;QACnB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,oCAAoC;QACpC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KAChC,GAAG,kBAAkB;IA2BtB;;;;OAIG;IACH,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,iBAAiB,GAAG,OAAO;IAiBxE;;;;OAIG;IACH,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAgB7C;;OAEG;IACH,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,kBAAkB,EAAE;IAIpD;;OAEG;IACH,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,kBAAkB,GAAG,SAAS;IAI7D;;OAEG;IACH,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAO5C;;OAEG;IACH,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAOnD;;OAEG;IACH,OAAO,CAAC,WAAW,GAAE,MAAuB,GAAG,MAAM;CAmCtD"}
|
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
// InteractionService — 用户交互请求管理
|
|
3
3
|
// 管理 pending 交互请求,支持暂停/恢复 Agent 运行
|
|
4
4
|
// ============================================================
|
|
5
|
+
/** 跨进程轮询间隔(毫秒) */
|
|
6
|
+
const CROSS_PROCESS_POLL_INTERVAL_MS = 1000;
|
|
5
7
|
/**
|
|
6
8
|
* InteractionService — 管理用户交互请求的生命周期
|
|
7
9
|
*
|
|
@@ -20,19 +22,85 @@ export class InteractionService {
|
|
|
20
22
|
this.store = store;
|
|
21
23
|
this.defaultTimeoutMs = defaultTimeoutMs;
|
|
22
24
|
}
|
|
25
|
+
/**
|
|
26
|
+
* 清理 waiter:清除超时和轮询定时器,从 map 中删除并返回
|
|
27
|
+
*/
|
|
28
|
+
clearWaiter(requestId) {
|
|
29
|
+
const waiter = this.waiters.get(requestId);
|
|
30
|
+
if (waiter) {
|
|
31
|
+
clearTimeout(waiter.timeout);
|
|
32
|
+
clearInterval(waiter.pollInterval);
|
|
33
|
+
if (waiter.abortSignal && waiter.abortListener) {
|
|
34
|
+
waiter.abortSignal.removeEventListener('abort', waiter.abortListener);
|
|
35
|
+
}
|
|
36
|
+
this.waiters.delete(requestId);
|
|
37
|
+
}
|
|
38
|
+
return waiter;
|
|
39
|
+
}
|
|
23
40
|
/**
|
|
24
41
|
* 创建交互请求并返回 Promise,等待用户回答
|
|
25
42
|
*/
|
|
26
43
|
requestInteraction(params) {
|
|
27
44
|
const request = this.createInteraction(params);
|
|
28
45
|
return new Promise((resolve, reject) => {
|
|
46
|
+
let settled = false;
|
|
47
|
+
// 包装 resolve/reject:调用时自动清理 timeout、pollInterval 和 abortListener,保证资源一定释放
|
|
48
|
+
const safeResolve = (answer) => {
|
|
49
|
+
if (settled)
|
|
50
|
+
return;
|
|
51
|
+
settled = true;
|
|
52
|
+
this.clearWaiter(request.requestId);
|
|
53
|
+
resolve(answer);
|
|
54
|
+
};
|
|
55
|
+
const safeReject = (reason) => {
|
|
56
|
+
if (settled)
|
|
57
|
+
return;
|
|
58
|
+
settled = true;
|
|
59
|
+
this.clearWaiter(request.requestId);
|
|
60
|
+
reject(reason);
|
|
61
|
+
};
|
|
62
|
+
if (params.abortSignal?.aborted) {
|
|
63
|
+
this.store.update(request.requestId, { status: 'cancelled' });
|
|
64
|
+
safeReject(new Error(`Interaction request ${request.requestId} was cancelled by abort`));
|
|
65
|
+
return;
|
|
66
|
+
}
|
|
29
67
|
const timeout = setTimeout(() => {
|
|
30
|
-
this.waiters.delete(request.requestId);
|
|
31
|
-
request.status = 'expired';
|
|
32
68
|
this.store.update(request.requestId, { status: 'expired' });
|
|
33
|
-
|
|
69
|
+
safeReject(new Error(`Interaction request ${request.requestId} timed out after ${request.timeoutMs}ms`));
|
|
34
70
|
}, request.timeoutMs);
|
|
35
|
-
|
|
71
|
+
// 跨进程轮询:定期检测 store 中状态变化(其他进程 answer/cancel 后触发)
|
|
72
|
+
const pollInterval = setInterval(() => {
|
|
73
|
+
const current = this.store.get(request.requestId);
|
|
74
|
+
if (!current)
|
|
75
|
+
return; // 可能还未写入,忽略
|
|
76
|
+
if (current.status === 'answered') {
|
|
77
|
+
safeResolve(current.answer ?? { requestId: request.requestId, action: 'submit' });
|
|
78
|
+
}
|
|
79
|
+
else if (current.status === 'cancelled') {
|
|
80
|
+
safeReject(new Error(`Interaction request ${request.requestId} was cancelled`));
|
|
81
|
+
}
|
|
82
|
+
else if (current.status === 'expired') {
|
|
83
|
+
safeReject(new Error(`Interaction request ${request.requestId} expired`));
|
|
84
|
+
}
|
|
85
|
+
}, CROSS_PROCESS_POLL_INTERVAL_MS);
|
|
86
|
+
const abortListener = params.abortSignal
|
|
87
|
+
? () => {
|
|
88
|
+
this.store.update(request.requestId, { status: 'cancelled' });
|
|
89
|
+
safeReject(new Error(`Interaction request ${request.requestId} was cancelled by abort`));
|
|
90
|
+
}
|
|
91
|
+
: undefined;
|
|
92
|
+
if (params.abortSignal && abortListener) {
|
|
93
|
+
params.abortSignal.addEventListener('abort', abortListener, { once: true });
|
|
94
|
+
}
|
|
95
|
+
// 存入 waiter 的是 safeResolve/safeReject,外部调用时自动清理定时器
|
|
96
|
+
this.waiters.set(request.requestId, {
|
|
97
|
+
resolve: safeResolve,
|
|
98
|
+
reject: safeReject,
|
|
99
|
+
timeout,
|
|
100
|
+
pollInterval,
|
|
101
|
+
abortSignal: params.abortSignal,
|
|
102
|
+
abortListener,
|
|
103
|
+
});
|
|
36
104
|
// 通知前端:创建请求后立即触发 emit 回调,将 interaction-request 事件推送到 SSE,
|
|
37
105
|
// 否则前端永远收不到交互请求,用户无法作答,最终工具执行超时。
|
|
38
106
|
try {
|
|
@@ -73,40 +141,39 @@ export class InteractionService {
|
|
|
73
141
|
}
|
|
74
142
|
/**
|
|
75
143
|
* 回答交互请求
|
|
144
|
+
* 先更新 store(跨进程可见),再尝试 resolve 本地 waiter。
|
|
145
|
+
* 即使本地 waiter 不存在(跨进程场景),store 已更新,轮询方会检测到。
|
|
76
146
|
*/
|
|
77
147
|
answerInteraction(requestId, answer) {
|
|
78
148
|
const request = this.store.get(requestId);
|
|
79
149
|
if (!request || request.status !== 'pending')
|
|
80
150
|
return false;
|
|
151
|
+
// 先更新 store(跨进程可见),包含 answer 数据供轮询方读取
|
|
152
|
+
this.store.update(requestId, { status: 'answered', answeredAt: Date.now(), answer });
|
|
153
|
+
// 尝试 resolve 本地 waiter(同进程立即响应);safeResolve 会自动清理定时器
|
|
81
154
|
const waiter = this.waiters.get(requestId);
|
|
82
|
-
if (
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
this.waiters.delete(requestId);
|
|
87
|
-
// 更新状态
|
|
88
|
-
request.status = 'answered';
|
|
89
|
-
request.answeredAt = Date.now();
|
|
90
|
-
this.store.update(requestId, { status: 'answered', answeredAt: Date.now() });
|
|
91
|
-
// 解析 Promise
|
|
92
|
-
waiter.resolve(answer);
|
|
155
|
+
if (waiter) {
|
|
156
|
+
waiter.resolve(answer);
|
|
157
|
+
}
|
|
158
|
+
// 即使没有本地 waiter(跨进程场景),store 已更新,轮询方会检测到
|
|
93
159
|
return true;
|
|
94
160
|
}
|
|
95
161
|
/**
|
|
96
162
|
* 取消交互请求
|
|
163
|
+
* 先更新 store(跨进程可见),再尝试 reject 本地 waiter。
|
|
164
|
+
* 即使本地 waiter 不存在(跨进程场景),store 已更新,轮询方会检测到。
|
|
97
165
|
*/
|
|
98
166
|
cancelInteraction(requestId) {
|
|
99
167
|
const request = this.store.get(requestId);
|
|
100
168
|
if (!request || request.status !== 'pending')
|
|
101
169
|
return false;
|
|
102
|
-
|
|
103
|
-
if (!waiter)
|
|
104
|
-
return false;
|
|
105
|
-
clearTimeout(waiter.timeout);
|
|
106
|
-
this.waiters.delete(requestId);
|
|
107
|
-
request.status = 'cancelled';
|
|
170
|
+
// 先更新 store
|
|
108
171
|
this.store.update(requestId, { status: 'cancelled' });
|
|
109
|
-
|
|
172
|
+
// 尝试 reject 本地 waiter;safeReject 会自动清理定时器
|
|
173
|
+
const waiter = this.waiters.get(requestId);
|
|
174
|
+
if (waiter) {
|
|
175
|
+
waiter.reject(new Error(`Interaction request ${requestId} was cancelled`));
|
|
176
|
+
}
|
|
110
177
|
return true;
|
|
111
178
|
}
|
|
112
179
|
/**
|
|
@@ -130,6 +197,15 @@ export class InteractionService {
|
|
|
130
197
|
this.cancelInteraction(req.requestId);
|
|
131
198
|
}
|
|
132
199
|
}
|
|
200
|
+
/**
|
|
201
|
+
* 取消线程下所有 pending 请求(包含使用子会话 ID 创建的交互)
|
|
202
|
+
*/
|
|
203
|
+
cancelAllForThread(threadId) {
|
|
204
|
+
const pending = this.store.listPendingByThread(threadId);
|
|
205
|
+
for (const req of pending) {
|
|
206
|
+
this.cancelInteraction(req.requestId);
|
|
207
|
+
}
|
|
208
|
+
}
|
|
133
209
|
/**
|
|
134
210
|
* 清理已完成/已过期/已取消的请求
|
|
135
211
|
*/
|
|
@@ -137,25 +213,32 @@ export class InteractionService {
|
|
|
137
213
|
let count = 0;
|
|
138
214
|
const now = Date.now();
|
|
139
215
|
// 遍历所有 waiter(它们对应的都是 pending 请求)
|
|
140
|
-
for (const [requestId
|
|
216
|
+
for (const [requestId] of this.waiters) {
|
|
141
217
|
const request = this.store.get(requestId);
|
|
142
218
|
if (!request) {
|
|
143
|
-
|
|
144
|
-
this.waiters.
|
|
219
|
+
// 请求已被删除,reject 并自动清理定时器
|
|
220
|
+
this.waiters.get(requestId)?.reject(new Error(`Interaction request ${requestId} not found during cleanup`));
|
|
221
|
+
count++;
|
|
222
|
+
continue;
|
|
223
|
+
}
|
|
224
|
+
if (request.status === 'answered') {
|
|
225
|
+
this.waiters.get(requestId)?.resolve(request.answer ?? { requestId, action: 'submit' });
|
|
226
|
+
count++;
|
|
227
|
+
continue;
|
|
228
|
+
}
|
|
229
|
+
if (request.status === 'cancelled') {
|
|
230
|
+
this.waiters.get(requestId)?.reject(new Error(`Interaction request ${requestId} was cancelled`));
|
|
145
231
|
count++;
|
|
146
232
|
continue;
|
|
147
233
|
}
|
|
148
|
-
if (request.status
|
|
149
|
-
|
|
150
|
-
this.waiters.delete(requestId);
|
|
234
|
+
if (request.status === 'expired') {
|
|
235
|
+
this.waiters.get(requestId)?.reject(new Error(`Interaction request ${requestId} expired`));
|
|
151
236
|
count++;
|
|
152
237
|
continue;
|
|
153
238
|
}
|
|
154
239
|
if (now - request.createdAt > olderThanMs) {
|
|
155
|
-
clearTimeout(waiter.timeout);
|
|
156
|
-
this.waiters.delete(requestId);
|
|
157
240
|
this.store.update(requestId, { status: 'expired' });
|
|
158
|
-
|
|
241
|
+
this.waiters.get(requestId)?.reject(new Error(`Interaction request ${requestId} expired during cleanup`));
|
|
159
242
|
count++;
|
|
160
243
|
}
|
|
161
244
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"service.js","sourceRoot":"","sources":["../../../src/interaction/service.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,gCAAgC;AAChC,mCAAmC;AACnC,+DAA+D;
|
|
1
|
+
{"version":3,"file":"service.js","sourceRoot":"","sources":["../../../src/interaction/service.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,gCAAgC;AAChC,mCAAmC;AACnC,+DAA+D;AAgB/D,kBAAkB;AAClB,MAAM,8BAA8B,GAAG,IAAI,CAAC;AAe5C;;;;;;;;;GASG;AACH,MAAM,OAAO,kBAAkB;IACrB,KAAK,CAAmB;IACxB,OAAO,GAAG,IAAI,GAAG,EAAyB,CAAC;IAC3C,gBAAgB,CAAS;IAEjC,YAAY,KAAuB,EAAE,mBAA2B,CAAC,GAAG,EAAE,GAAG,IAAI;QAC3E,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;IAC3C,CAAC;IAED;;OAEG;IACK,WAAW,CAAC,SAAiB;QACnC,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC3C,IAAI,MAAM,EAAE,CAAC;YACX,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YAC7B,aAAa,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;YACnC,IAAI,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,aAAa,EAAE,CAAC;gBAC/C,MAAM,CAAC,WAAW,CAAC,mBAAmB,CAAC,OAAO,EAAE,MAAM,CAAC,aAAa,CAAC,CAAC;YACxE,CAAC;YACD,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QACjC,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;OAEG;IACH,kBAAkB,CAAC,MAmBlB;QACC,MAAM,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;QAC/C,OAAO,IAAI,OAAO,CAAoB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACxD,IAAI,OAAO,GAAG,KAAK,CAAC;YAEpB,0EAA0E;YAC1E,MAAM,WAAW,GAAG,CAAC,MAAyB,EAAE,EAAE;gBAChD,IAAI,OAAO;oBAAE,OAAO;gBACpB,OAAO,GAAG,IAAI,CAAC;gBACf,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;gBACpC,OAAO,CAAC,MAAM,CAAC,CAAC;YAClB,CAAC,CAAC;YACF,MAAM,UAAU,GAAG,CAAC,MAAa,EAAE,EAAE;gBACnC,IAAI,OAAO;oBAAE,OAAO;gBACpB,OAAO,GAAG,IAAI,CAAC;gBACf,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;gBACpC,MAAM,CAAC,MAAM,CAAC,CAAC;YACjB,CAAC,CAAC;YAEF,IAAI,MAAM,CAAC,WAAW,EAAE,OAAO,EAAE,CAAC;gBAChC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC;gBAC9D,UAAU,CAAC,IAAI,KAAK,CAAC,uBAAuB,OAAO,CAAC,SAAS,yBAAyB,CAAC,CAAC,CAAC;gBACzF,OAAO;YACT,CAAC;YAED,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE;gBAC9B,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;gBAC5D,UAAU,CAAC,IAAI,KAAK,CAAC,uBAAuB,OAAO,CAAC,SAAS,oBAAoB,OAAO,CAAC,SAAS,IAAI,CAAC,CAAC,CAAC;YAC3G,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;YAEtB,iDAAiD;YACjD,MAAM,YAAY,GAAG,WAAW,CAAC,GAAG,EAAE;gBACpC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;gBAClD,IAAI,CAAC,OAAO;oBAAE,OAAO,CAAC,YAAY;gBAElC,IAAI,OAAO,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;oBAClC,WAAW,CAAC,OAAO,CAAC,MAAM,IAAI,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;gBACpF,CAAC;qBAAM,IAAI,OAAO,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;oBAC1C,UAAU,CAAC,IAAI,KAAK,CAAC,uBAAuB,OAAO,CAAC,SAAS,gBAAgB,CAAC,CAAC,CAAC;gBAClF,CAAC;qBAAM,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;oBACxC,UAAU,CAAC,IAAI,KAAK,CAAC,uBAAuB,OAAO,CAAC,SAAS,UAAU,CAAC,CAAC,CAAC;gBAC5E,CAAC;YACH,CAAC,EAAE,8BAA8B,CAAC,CAAC;YAEnC,MAAM,aAAa,GAAG,MAAM,CAAC,WAAW;gBACtC,CAAC,CAAC,GAAG,EAAE;oBACH,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC;oBAC9D,UAAU,CAAC,IAAI,KAAK,CAAC,uBAAuB,OAAO,CAAC,SAAS,yBAAyB,CAAC,CAAC,CAAC;gBAC3F,CAAC;gBACH,CAAC,CAAC,SAAS,CAAC;YACd,IAAI,MAAM,CAAC,WAAW,IAAI,aAAa,EAAE,CAAC;gBACxC,MAAM,CAAC,WAAW,CAAC,gBAAgB,CAAC,OAAO,EAAE,aAAa,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;YAC9E,CAAC;YAED,mDAAmD;YACnD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE;gBAClC,OAAO,EAAE,WAAW;gBACpB,MAAM,EAAE,UAAU;gBAClB,OAAO;gBACP,YAAY;gBACZ,WAAW,EAAE,MAAM,CAAC,WAAW;gBAC/B,aAAa;aACd,CAAC,CAAC;YAEH,0DAA0D;YAC1D,iCAAiC;YACjC,IAAI,CAAC;gBACH,MAAM,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,CAAC;YACzB,CAAC;YAAC,OAAO,OAAY,EAAE,CAAC;gBACtB,OAAO,CAAC,IAAI,CAAC,wCAAwC,OAAO,CAAC,SAAS,GAAG,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;YAC/F,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;;OAGG;IACH,iBAAiB,CAAC,MAejB;QACC,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;QAC/E,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,IAAI,IAAI,CAAC,gBAAgB,CAAC;QAE5D,MAAM,OAAO,GAAuB;YAClC,SAAS;YACT,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;YACzC,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,aAAa,EAAE,MAAM,CAAC,aAAa;YACnC,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,IAAI;YACjC,SAAS;YACT,MAAM,EAAE,SAAS;YACjB,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;YACrB,IAAI,EAAE,MAAM,CAAC,IAAI;SAClB,CAAC;QAEF,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACzB,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;;;OAIG;IACH,iBAAiB,CAAC,SAAiB,EAAE,MAAyB;QAC5D,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC1C,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS;YAAE,OAAO,KAAK,CAAC;QAE3D,sCAAsC;QACtC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;QAErF,qDAAqD;QACrD,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC3C,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACzB,CAAC;QAED,yCAAyC;QACzC,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;OAIG;IACH,iBAAiB,CAAC,SAAiB;QACjC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC1C,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS;YAAE,OAAO,KAAK,CAAC;QAE3D,YAAY;QACZ,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC;QAEtD,0CAA0C;QAC1C,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC3C,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,uBAAuB,SAAS,gBAAgB,CAAC,CAAC,CAAC;QAC7E,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACH,WAAW,CAAC,SAAiB;QAC3B,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;IAC3C,CAAC;IAED;;OAEG;IACH,UAAU,CAAC,SAAiB;QAC1B,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACnC,CAAC;IAED;;OAEG;IACH,mBAAmB,CAAC,SAAiB;QACnC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;QAClD,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;YAC1B,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACxC,CAAC;IACH,CAAC;IAED;;OAEG;IACH,kBAAkB,CAAC,QAAyB;QAC1C,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC;QACzD,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;YAC1B,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACxC,CAAC;IACH,CAAC;IAED;;OAEG;IACH,OAAO,CAAC,cAAsB,EAAE,GAAG,EAAE,GAAG,IAAI;QAC1C,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,kCAAkC;QAClC,KAAK,MAAM,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACvC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YAC1C,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,yBAAyB;gBACzB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC,IAAI,KAAK,CAAC,uBAAuB,SAAS,2BAA2B,CAAC,CAAC,CAAC;gBAC5G,KAAK,EAAE,CAAC;gBACR,SAAS;YACX,CAAC;YACD,IAAI,OAAO,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;gBAClC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,MAAM,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;gBACxF,KAAK,EAAE,CAAC;gBACR,SAAS;YACX,CAAC;YACD,IAAI,OAAO,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;gBACnC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC,IAAI,KAAK,CAAC,uBAAuB,SAAS,gBAAgB,CAAC,CAAC,CAAC;gBACjG,KAAK,EAAE,CAAC;gBACR,SAAS;YACX,CAAC;YACD,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;gBACjC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC,IAAI,KAAK,CAAC,uBAAuB,SAAS,UAAU,CAAC,CAAC,CAAC;gBAC3F,KAAK,EAAE,CAAC;gBACR,SAAS;YACX,CAAC;YACD,IAAI,GAAG,GAAG,OAAO,CAAC,SAAS,GAAG,WAAW,EAAE,CAAC;gBAC1C,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;gBACpD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC,IAAI,KAAK,CAAC,uBAAuB,SAAS,yBAAyB,CAAC,CAAC,CAAC;gBAC1G,KAAK,EAAE,CAAC;YACV,CAAC;QACH,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;CACF"}
|
|
@@ -4,6 +4,7 @@ export declare class InMemoryInteractionStore implements InteractionStore {
|
|
|
4
4
|
save(request: InteractionRequest): void;
|
|
5
5
|
get(requestId: string): InteractionRequest | undefined;
|
|
6
6
|
listPending(sessionId: string): InteractionRequest[];
|
|
7
|
+
listPendingByThread(threadId: string | number): InteractionRequest[];
|
|
7
8
|
update(requestId: string, updates: Partial<InteractionRequest>): void;
|
|
8
9
|
delete(requestId: string): void;
|
|
9
10
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../../src/interaction/store.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAEvE,qBAAa,wBAAyB,YAAW,gBAAgB;IAC/D,OAAO,CAAC,QAAQ,CAAyC;IAEzD,IAAI,CAAC,OAAO,EAAE,kBAAkB,GAAG,IAAI;IAIvC,GAAG,CAAC,SAAS,EAAE,MAAM,GAAG,kBAAkB,GAAG,SAAS;IAKtD,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,kBAAkB,EAAE;IAUpD,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,kBAAkB,CAAC,GAAG,IAAI;IAOrE,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;CAGhC"}
|
|
1
|
+
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../../src/interaction/store.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAEvE,qBAAa,wBAAyB,YAAW,gBAAgB;IAC/D,OAAO,CAAC,QAAQ,CAAyC;IAEzD,IAAI,CAAC,OAAO,EAAE,kBAAkB,GAAG,IAAI;IAIvC,GAAG,CAAC,SAAS,EAAE,MAAM,GAAG,kBAAkB,GAAG,SAAS;IAKtD,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,kBAAkB,EAAE;IAUpD,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,kBAAkB,EAAE;IAWpE,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,kBAAkB,CAAC,GAAG,IAAI;IAOrE,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;CAGhC"}
|
|
@@ -19,6 +19,16 @@ export class InMemoryInteractionStore {
|
|
|
19
19
|
}
|
|
20
20
|
return results.sort((a, b) => b.createdAt - a.createdAt);
|
|
21
21
|
}
|
|
22
|
+
listPendingByThread(threadId) {
|
|
23
|
+
const normalizedThreadId = String(threadId);
|
|
24
|
+
const results = [];
|
|
25
|
+
for (const r of this.requests.values()) {
|
|
26
|
+
if (r.threadId != null && String(r.threadId) === normalizedThreadId && r.status === 'pending') {
|
|
27
|
+
results.push({ ...r });
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
return results.sort((a, b) => b.createdAt - a.createdAt);
|
|
31
|
+
}
|
|
22
32
|
update(requestId, updates) {
|
|
23
33
|
const existing = this.requests.get(requestId);
|
|
24
34
|
if (existing) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store.js","sourceRoot":"","sources":["../../../src/interaction/store.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,kCAAkC;AAClC,+DAA+D;AAI/D,MAAM,OAAO,wBAAwB;IAC3B,QAAQ,GAAG,IAAI,GAAG,EAA8B,CAAC;IAEzD,IAAI,CAAC,OAA2B;QAC9B,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC;IACvD,CAAC;IAED,GAAG,CAAC,SAAiB;QACnB,MAAM,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACvC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;IAClC,CAAC;IAED,WAAW,CAAC,SAAiB;QAC3B,MAAM,OAAO,GAAyB,EAAE,CAAC;QACzC,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;YACvC,IAAI,CAAC,CAAC,SAAS,KAAK,SAAS,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;gBACxD,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;YACzB,CAAC;QACH,CAAC;QACD,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC;IAC3D,CAAC;IAED,MAAM,CAAC,SAAiB,EAAE,OAAoC;QAC5D,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC9C,IAAI,QAAQ,EAAE,CAAC;YACb,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,EAAE,EAAE,GAAG,QAAQ,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC;QAC5D,CAAC;IACH,CAAC;IAED,MAAM,CAAC,SAAiB;QACtB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAClC,CAAC;CACF"}
|
|
1
|
+
{"version":3,"file":"store.js","sourceRoot":"","sources":["../../../src/interaction/store.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,kCAAkC;AAClC,+DAA+D;AAI/D,MAAM,OAAO,wBAAwB;IAC3B,QAAQ,GAAG,IAAI,GAAG,EAA8B,CAAC;IAEzD,IAAI,CAAC,OAA2B;QAC9B,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC;IACvD,CAAC;IAED,GAAG,CAAC,SAAiB;QACnB,MAAM,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACvC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;IAClC,CAAC;IAED,WAAW,CAAC,SAAiB;QAC3B,MAAM,OAAO,GAAyB,EAAE,CAAC;QACzC,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;YACvC,IAAI,CAAC,CAAC,SAAS,KAAK,SAAS,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;gBACxD,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;YACzB,CAAC;QACH,CAAC;QACD,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC;IAC3D,CAAC;IAED,mBAAmB,CAAC,QAAyB;QAC3C,MAAM,kBAAkB,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC5C,MAAM,OAAO,GAAyB,EAAE,CAAC;QACzC,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;YACvC,IAAI,CAAC,CAAC,QAAQ,IAAI,IAAI,IAAI,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,kBAAkB,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;gBAC9F,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;YACzB,CAAC;QACH,CAAC;QACD,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC;IAC3D,CAAC;IAED,MAAM,CAAC,SAAiB,EAAE,OAAoC;QAC5D,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC9C,IAAI,QAAQ,EAAE,CAAC;YACb,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,EAAE,EAAE,GAAG,QAAQ,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC;QAC5D,CAAC;IACH,CAAC;IAED,MAAM,CAAC,SAAiB;QACtB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAClC,CAAC;CACF"}
|
|
@@ -51,6 +51,8 @@ export interface InteractionRequest {
|
|
|
51
51
|
createdAt: number;
|
|
52
52
|
/** 回答时间(毫秒时间戳) */
|
|
53
53
|
answeredAt?: number;
|
|
54
|
+
/** 用户回答(answered 状态时存在,跨进程轮询方通过此字段获取答案) */
|
|
55
|
+
answer?: InteractionAnswer;
|
|
54
56
|
/** 扩展字段(上层可附加任意数据,如 permissionId 用于权限审批联动) */
|
|
55
57
|
meta?: Record<string, unknown>;
|
|
56
58
|
}
|
|
@@ -68,7 +70,7 @@ export interface InteractionAnswer {
|
|
|
68
70
|
/** 交互请求事件(SSE 发送给前端) */
|
|
69
71
|
export interface InteractionRequestEvent {
|
|
70
72
|
type: 'interaction-request';
|
|
71
|
-
data: Omit<InteractionRequest, 'status' | 'createdAt' | 'answeredAt'>;
|
|
73
|
+
data: Omit<InteractionRequest, 'status' | 'createdAt' | 'answeredAt' | 'answer'>;
|
|
72
74
|
}
|
|
73
75
|
/** 交互回答事件(SSE 发送给前端,通知前端该请求已处理) */
|
|
74
76
|
export interface InteractionAnswerEvent {
|
|
@@ -87,6 +89,8 @@ export interface InteractionStore {
|
|
|
87
89
|
get(requestId: string): InteractionRequest | undefined;
|
|
88
90
|
/** 获取会话下所有 pending 请求 */
|
|
89
91
|
listPending(sessionId: string): InteractionRequest[];
|
|
92
|
+
/** 获取线程下所有 pending 请求(用于取消主会话及子会话交互) */
|
|
93
|
+
listPendingByThread(threadId: string | number): InteractionRequest[];
|
|
90
94
|
/** 更新交互请求状态 */
|
|
91
95
|
update(requestId: string, updates: Partial<InteractionRequest>): void;
|
|
92
96
|
/** 删除交互请求 */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/interaction/types.ts"],"names":[],"mappings":"AAKA,aAAa;AACb,MAAM,MAAM,eAAe,GAAG,SAAS,GAAG,QAAQ,GAAG,cAAc,GAAG,OAAO,GAAG,UAAU,CAAC;AAE3F,aAAa;AACb,MAAM,MAAM,iBAAiB,GAAG,YAAY,GAAG,WAAW,GAAG,MAAM,CAAC;AAEpE,aAAa;AACb,MAAM,MAAM,iBAAiB,GAAG,SAAS,GAAG,UAAU,GAAG,WAAW,GAAG,SAAS,CAAC;AAEjF,WAAW;AACX,MAAM,WAAW,iBAAiB;IAChC,aAAa;IACb,EAAE,EAAE,MAAM,CAAC;IACX,WAAW;IACX,KAAK,EAAE,MAAM,CAAC;IACd,UAAU;IACV,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,kBAAkB;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,kBAAkB;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,WAAW;AACX,MAAM,WAAW,kBAAkB;IACjC,cAAc;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY;IACZ,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC3B,2BAA2B;IAC3B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,SAAS;IACT,MAAM,EAAE,iBAAiB,CAAC;IAC1B,2BAA2B;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW;IACX,IAAI,EAAE,eAAe,CAAC;IACtB,SAAS;IACT,KAAK,EAAE,MAAM,CAAC;IACd,WAAW;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,gDAAgD;IAChD,OAAO,CAAC,EAAE,iBAAiB,EAAE,CAAC;IAC9B,yCAAyC;IACzC,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,sBAAsB;IACtB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,uBAAuB;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW;IACX,MAAM,EAAE,iBAAiB,CAAC;IAC1B,kBAAkB;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,kBAAkB;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,8CAA8C;IAC9C,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC;AAED,WAAW;AACX,MAAM,WAAW,iBAAiB;IAChC,YAAY;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,kBAAkB;IAClB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,aAAa;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW;IACX,MAAM,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAC;CAC9B;AAED,wBAAwB;AACxB,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,qBAAqB,CAAC;IAC5B,IAAI,EAAE,IAAI,CAAC,kBAAkB,EAAE,QAAQ,GAAG,WAAW,GAAG,YAAY,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/interaction/types.ts"],"names":[],"mappings":"AAKA,aAAa;AACb,MAAM,MAAM,eAAe,GAAG,SAAS,GAAG,QAAQ,GAAG,cAAc,GAAG,OAAO,GAAG,UAAU,CAAC;AAE3F,aAAa;AACb,MAAM,MAAM,iBAAiB,GAAG,YAAY,GAAG,WAAW,GAAG,MAAM,CAAC;AAEpE,aAAa;AACb,MAAM,MAAM,iBAAiB,GAAG,SAAS,GAAG,UAAU,GAAG,WAAW,GAAG,SAAS,CAAC;AAEjF,WAAW;AACX,MAAM,WAAW,iBAAiB;IAChC,aAAa;IACb,EAAE,EAAE,MAAM,CAAC;IACX,WAAW;IACX,KAAK,EAAE,MAAM,CAAC;IACd,UAAU;IACV,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,kBAAkB;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,kBAAkB;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,WAAW;AACX,MAAM,WAAW,kBAAkB;IACjC,cAAc;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY;IACZ,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC3B,2BAA2B;IAC3B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,SAAS;IACT,MAAM,EAAE,iBAAiB,CAAC;IAC1B,2BAA2B;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW;IACX,IAAI,EAAE,eAAe,CAAC;IACtB,SAAS;IACT,KAAK,EAAE,MAAM,CAAC;IACd,WAAW;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,gDAAgD;IAChD,OAAO,CAAC,EAAE,iBAAiB,EAAE,CAAC;IAC9B,yCAAyC;IACzC,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,sBAAsB;IACtB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,uBAAuB;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW;IACX,MAAM,EAAE,iBAAiB,CAAC;IAC1B,kBAAkB;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,kBAAkB;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,2CAA2C;IAC3C,MAAM,CAAC,EAAE,iBAAiB,CAAC;IAC3B,8CAA8C;IAC9C,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC;AAED,WAAW;AACX,MAAM,WAAW,iBAAiB;IAChC,YAAY;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,kBAAkB;IAClB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,aAAa;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW;IACX,MAAM,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAC;CAC9B;AAED,wBAAwB;AACxB,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,qBAAqB,CAAC;IAC5B,IAAI,EAAE,IAAI,CAAC,kBAAkB,EAAE,QAAQ,GAAG,WAAW,GAAG,YAAY,GAAG,QAAQ,CAAC,CAAC;CAClF;AAED,mCAAmC;AACnC,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,oBAAoB,CAAC;IAC3B,IAAI,EAAE;QACJ,SAAS,EAAE,MAAM,CAAC;QAClB,MAAM,EAAE,iBAAiB,CAAC;QAC1B,MAAM,CAAC,EAAE,iBAAiB,CAAC;KAC5B,CAAC;CACH;AAED,eAAe;AACf,MAAM,WAAW,gBAAgB;IAC/B,aAAa;IACb,IAAI,CAAC,OAAO,EAAE,kBAAkB,GAAG,IAAI,CAAC;IACxC,aAAa;IACb,GAAG,CAAC,SAAS,EAAE,MAAM,GAAG,kBAAkB,GAAG,SAAS,CAAC;IACvD,yBAAyB;IACzB,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,kBAAkB,EAAE,CAAC;IACrD,wCAAwC;IACxC,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,kBAAkB,EAAE,CAAC;IACrE,eAAe;IACf,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,kBAAkB,CAAC,GAAG,IAAI,CAAC;IACtE,aAAa;IACb,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CACjC;AAED,kBAAkB;AAClB,eAAO,MAAM,8BAA8B,QAAgB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/interaction/types.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,4BAA4B;AAC5B,6BAA6B;AAC7B,+DAA+D;
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/interaction/types.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,4BAA4B;AAC5B,6BAA6B;AAC7B,+DAA+D;AA6G/D,kBAAkB;AAClB,MAAM,CAAC,MAAM,8BAA8B,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ask-user.d.ts","sourceRoot":"","sources":["../../../src/tool/ask-user.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAe,MAAM,YAAY,CAAC;AAC9E,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,KAAK,EAAqB,eAAe,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAErG,qBAAqB;AACrB,MAAM,WAAW,WAAW;IAC1B,SAAS;IACT,KAAK,EAAE,MAAM,CAAC;IACd,WAAW;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW;IACX,IAAI,EAAE,eAAe,CAAC;IACtB,qCAAqC;IACrC,OAAO,CAAC,EAAE,iBAAiB,EAAE,CAAC;IAC9B,iBAAiB;IACjB,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,oBAAoB;AACpB,eAAO,MAAM,wBAAwB,EAAE,cA2CtC,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,kBAAkB,EAAE,kBAAkB,GAAG,cAAc,
|
|
1
|
+
{"version":3,"file":"ask-user.d.ts","sourceRoot":"","sources":["../../../src/tool/ask-user.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAe,MAAM,YAAY,CAAC;AAC9E,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,KAAK,EAAqB,eAAe,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAErG,qBAAqB;AACrB,MAAM,WAAW,WAAW;IAC1B,SAAS;IACT,KAAK,EAAE,MAAM,CAAC;IACd,WAAW;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW;IACX,IAAI,EAAE,eAAe,CAAC;IACtB,qCAAqC;IACrC,OAAO,CAAC,EAAE,iBAAiB,EAAE,CAAC;IAC9B,iBAAiB;IACjB,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,oBAAoB;AACpB,eAAO,MAAM,wBAAwB,EAAE,cA2CtC,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,kBAAkB,EAAE,kBAAkB,GAAG,cAAc,CA4FxF"}
|
|
@@ -76,6 +76,7 @@ export function createAskUserTool(interactionService) {
|
|
|
76
76
|
try {
|
|
77
77
|
const answer = await interactionService.requestInteraction({
|
|
78
78
|
sessionId: ctx.sessionId,
|
|
79
|
+
threadId: ctx.custom?.threadId,
|
|
79
80
|
parentToolCallId: ctx.currentToolCallId,
|
|
80
81
|
source: 'tool',
|
|
81
82
|
type: typedArgs.type,
|
|
@@ -83,6 +84,7 @@ export function createAskUserTool(interactionService) {
|
|
|
83
84
|
message: typedArgs.message,
|
|
84
85
|
options: options.length > 0 ? options : undefined,
|
|
85
86
|
allowFreeText: typedArgs.allowFreeText ?? false,
|
|
87
|
+
abortSignal: ctx.abortSignal,
|
|
86
88
|
emit: (request) => {
|
|
87
89
|
const emitFn = ctx.custom?.emitInteractionRequest;
|
|
88
90
|
emitFn?.({
|
|
@@ -97,6 +99,9 @@ export function createAskUserTool(interactionService) {
|
|
|
97
99
|
message: request.message,
|
|
98
100
|
options: request.options,
|
|
99
101
|
allowFreeText: request.allowFreeText,
|
|
102
|
+
// 供前端倒计时:创建时间与超时阈值(毫秒)
|
|
103
|
+
createdAt: request.createdAt,
|
|
104
|
+
timeoutMs: request.timeoutMs,
|
|
100
105
|
});
|
|
101
106
|
},
|
|
102
107
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ask-user.js","sourceRoot":"","sources":["../../../src/tool/ask-user.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"ask-user.js","sourceRoot":"","sources":["../../../src/tool/ask-user.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.
|
|
3
|
+
"version": "0.1.74",
|
|
4
4
|
"description": "Core engine for AI agent — LLM orchestration, tool execution, MCP, skill routing, security, and memory pipeline.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/cjs/index.js",
|