@cicctencent/agent-core 0.1.63 → 0.1.67

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 (59) hide show
  1. package/dist/cjs/agent/tool-executor.d.ts.map +1 -1
  2. package/dist/cjs/agent/tool-executor.js +5 -1
  3. package/dist/cjs/agent/tool-executor.js.map +1 -1
  4. package/dist/cjs/index.d.ts +4 -0
  5. package/dist/cjs/index.d.ts.map +1 -1
  6. package/dist/cjs/index.js +23 -16
  7. package/dist/cjs/index.js.map +1 -1
  8. package/dist/cjs/interaction/index.d.ts +5 -0
  9. package/dist/cjs/interaction/index.d.ts.map +1 -0
  10. package/dist/cjs/interaction/index.js +13 -0
  11. package/dist/cjs/interaction/index.js.map +1 -0
  12. package/dist/cjs/interaction/service.d.ts +83 -0
  13. package/dist/cjs/interaction/service.d.ts.map +1 -0
  14. package/dist/cjs/interaction/service.js +169 -0
  15. package/dist/cjs/interaction/service.js.map +1 -0
  16. package/dist/cjs/interaction/store.d.ts +10 -0
  17. package/dist/cjs/interaction/store.d.ts.map +1 -0
  18. package/dist/cjs/interaction/store.js +36 -0
  19. package/dist/cjs/interaction/store.js.map +1 -0
  20. package/dist/cjs/interaction/types.d.ts +97 -0
  21. package/dist/cjs/interaction/types.d.ts.map +1 -0
  22. package/dist/cjs/interaction/types.js +10 -0
  23. package/dist/cjs/interaction/types.js.map +1 -0
  24. package/dist/cjs/tool/ask-user.d.ts +26 -0
  25. package/dist/cjs/tool/ask-user.d.ts.map +1 -0
  26. package/dist/cjs/tool/ask-user.js +138 -0
  27. package/dist/cjs/tool/ask-user.js.map +1 -0
  28. package/dist/cjs/tool/types.d.ts +2 -0
  29. package/dist/cjs/tool/types.d.ts.map +1 -1
  30. package/dist/esm/agent/tool-executor.d.ts.map +1 -1
  31. package/dist/esm/agent/tool-executor.js +5 -1
  32. package/dist/esm/agent/tool-executor.js.map +1 -1
  33. package/dist/esm/index.d.ts +4 -0
  34. package/dist/esm/index.d.ts.map +1 -1
  35. package/dist/esm/index.js +2 -0
  36. package/dist/esm/index.js.map +1 -1
  37. package/dist/esm/interaction/index.d.ts +5 -0
  38. package/dist/esm/interaction/index.d.ts.map +1 -0
  39. package/dist/esm/interaction/index.js +7 -0
  40. package/dist/esm/interaction/index.js.map +1 -0
  41. package/dist/esm/interaction/service.d.ts +83 -0
  42. package/dist/esm/interaction/service.d.ts.map +1 -0
  43. package/dist/esm/interaction/service.js +165 -0
  44. package/dist/esm/interaction/service.js.map +1 -0
  45. package/dist/esm/interaction/store.d.ts +10 -0
  46. package/dist/esm/interaction/store.d.ts.map +1 -0
  47. package/dist/esm/interaction/store.js +32 -0
  48. package/dist/esm/interaction/store.js.map +1 -0
  49. package/dist/esm/interaction/types.d.ts +97 -0
  50. package/dist/esm/interaction/types.d.ts.map +1 -0
  51. package/dist/esm/interaction/types.js +7 -0
  52. package/dist/esm/interaction/types.js.map +1 -0
  53. package/dist/esm/tool/ask-user.d.ts +26 -0
  54. package/dist/esm/tool/ask-user.d.ts.map +1 -0
  55. package/dist/esm/tool/ask-user.js +134 -0
  56. package/dist/esm/tool/ask-user.js.map +1 -0
  57. package/dist/esm/tool/types.d.ts +2 -0
  58. package/dist/esm/tool/types.d.ts.map +1 -1
  59. package/package.json +2 -1
package/dist/esm/index.js CHANGED
@@ -30,6 +30,7 @@ export { InMemoryVectorIndex } from "./skill/vector-index.js";
30
30
  // ---- Tool ----
31
31
  export { ToolRegistry } from "./tool/registry.js";
32
32
  export { createDelegateTool } from "./tool/delegate.js";
33
+ export { createAskUserTool, ASK_USER_TOOL_DEFINITION } from "./tool/ask-user.js";
33
34
  export { createBuiltinTools, createFileSystemTools, createShellTools, createSkillLoaderTool, createToolDocTool } from "./tool/builtin-tools.js";
34
35
  // ---- MCP ----
35
36
  export { registerMCPTools, MCP_TOOL_PREFIX, buildMCPToolName, sanitizeForToolName } from "./mcp/client.js";
@@ -63,6 +64,7 @@ export { AuditLogMiddleware } from "./middleware/audit-log.js";
63
64
  export { WorkspaceNotesMiddleware } from "./middleware/workspace-notes.js";
64
65
  export { InMemoryKnowledgeBase } from "./kb/in-memory-kb.js";
65
66
  export { createRAGMiddleware } from "./kb/rag-middleware.js";
67
+ export { DEFAULT_INTERACTION_TIMEOUT_MS, InteractionService, InMemoryInteractionStore } from "./interaction/index.js";
66
68
  export { InMemoryMemoryStore } from "./memory/types.js";
67
69
  export { MemoryExtractor } from "./memory/extractor.js";
68
70
  export { SceneAggregator } from "./memory/scene.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ export type { InteractionType, InteractionSource, InteractionStatus, InteractionOption, InteractionRequest, InteractionAnswer, InteractionRequestEvent, InteractionAnswerEvent, InteractionStore, } from './types.js';
2
+ export { DEFAULT_INTERACTION_TIMEOUT_MS } from './types.js';
3
+ export { InteractionService } from './service.js';
4
+ export { InMemoryInteractionStore } from './store.js';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/interaction/index.ts"],"names":[],"mappings":"AAIA,YAAY,EACV,eAAe,EACf,iBAAiB,EACjB,iBAAiB,EACjB,iBAAiB,EACjB,kBAAkB,EAClB,iBAAiB,EACjB,uBAAuB,EACvB,sBAAsB,EACtB,gBAAgB,GACjB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,8BAA8B,EAAE,MAAM,YAAY,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC"}
@@ -0,0 +1,7 @@
1
+ // ============================================================
2
+ // Interaction 模块统一导出
3
+ // ============================================================
4
+ export { DEFAULT_INTERACTION_TIMEOUT_MS } from "./types.js";
5
+ export { InteractionService } from "./service.js";
6
+ export { InMemoryInteractionStore } from "./store.js";
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/interaction/index.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,qBAAqB;AACrB,+DAA+D;AAa/D,OAAO,EAAE,8BAA8B,EAAE,MAAM,YAAY,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC"}
@@ -0,0 +1,83 @@
1
+ import type { InteractionRequest, InteractionAnswer, InteractionStore, InteractionType, InteractionSource } from './types.js';
2
+ /**
3
+ * InteractionService — 管理用户交互请求的生命周期
4
+ *
5
+ * 用法:
6
+ * 1. Agent 工具调用 service.requestInteraction(...) 创建请求
7
+ * 2. 前端通过 SSE 收到 interaction-request 事件
8
+ * 3. 用户在前端选择后 POST 回答
9
+ * 4. service.answerInteraction(...) 解析等待的 Promise
10
+ * 5. Agent 工具拿到答案继续执行
11
+ */
12
+ export declare class InteractionService {
13
+ private store;
14
+ private waiters;
15
+ private defaultTimeoutMs;
16
+ constructor(store: InteractionStore, defaultTimeoutMs?: number);
17
+ /**
18
+ * 创建交互请求并返回 Promise,等待用户回答
19
+ */
20
+ requestInteraction(params: {
21
+ sessionId: string;
22
+ threadId?: string | number;
23
+ parentToolCallId?: string;
24
+ source: InteractionSource;
25
+ agentName?: string;
26
+ type: InteractionType;
27
+ title: string;
28
+ message: string;
29
+ options?: InteractionRequest['options'];
30
+ allowFreeText?: boolean;
31
+ required?: boolean;
32
+ timeoutMs?: number;
33
+ /** 创建请求后的回调(用于发送 SSE 事件通知前端) */
34
+ emit?: (request: InteractionRequest) => void;
35
+ /** 扩展字段(如 permissionId 用于权限审批联动) */
36
+ meta?: Record<string, unknown>;
37
+ }): Promise<InteractionAnswer>;
38
+ /**
39
+ * 创建交互请求(非阻塞,不等待用户回答)
40
+ * 用于权限审批等场景:创建后通过 SSE 通知前端,但当前执行流继续(通常配合 block 工具)
41
+ */
42
+ createInteraction(params: {
43
+ sessionId: string;
44
+ threadId?: string | number;
45
+ parentToolCallId?: string;
46
+ source: InteractionSource;
47
+ agentName?: string;
48
+ type: InteractionType;
49
+ title: string;
50
+ message: string;
51
+ options?: InteractionRequest['options'];
52
+ allowFreeText?: boolean;
53
+ required?: boolean;
54
+ timeoutMs?: number;
55
+ /** 扩展字段(如 permissionId 用于权限审批联动) */
56
+ meta?: Record<string, unknown>;
57
+ }): InteractionRequest;
58
+ /**
59
+ * 回答交互请求
60
+ */
61
+ answerInteraction(requestId: string, answer: InteractionAnswer): boolean;
62
+ /**
63
+ * 取消交互请求
64
+ */
65
+ cancelInteraction(requestId: string): boolean;
66
+ /**
67
+ * 获取 pending 请求列表
68
+ */
69
+ listPending(sessionId: string): InteractionRequest[];
70
+ /**
71
+ * 获取单个请求
72
+ */
73
+ getRequest(requestId: string): InteractionRequest | undefined;
74
+ /**
75
+ * 取消会话下所有 pending 请求
76
+ */
77
+ cancelAllForSession(sessionId: string): void;
78
+ /**
79
+ * 清理已完成/已过期/已取消的请求
80
+ */
81
+ cleanup(olderThanMs?: number): number;
82
+ }
83
+ //# sourceMappingURL=service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../../src/interaction/service.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,kBAAkB,EAClB,iBAAiB,EAEjB,gBAAgB,EAChB,eAAe,EACf,iBAAiB,EAClB,MAAM,YAAY,CAAC;AAepB;;;;;;;;;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,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,oCAAoC;QACpC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KAChC,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAsB9B;;;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;;OAEG;IACH,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,iBAAiB,GAAG,OAAO;IAqBxE;;OAEG;IACH,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAiB7C;;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,OAAO,CAAC,WAAW,GAAE,MAAuB,GAAG,MAAM;CA4BtD"}
@@ -0,0 +1,165 @@
1
+ // ============================================================
2
+ // InteractionService — 用户交互请求管理
3
+ // 管理 pending 交互请求,支持暂停/恢复 Agent 运行
4
+ // ============================================================
5
+ /**
6
+ * InteractionService — 管理用户交互请求的生命周期
7
+ *
8
+ * 用法:
9
+ * 1. Agent 工具调用 service.requestInteraction(...) 创建请求
10
+ * 2. 前端通过 SSE 收到 interaction-request 事件
11
+ * 3. 用户在前端选择后 POST 回答
12
+ * 4. service.answerInteraction(...) 解析等待的 Promise
13
+ * 5. Agent 工具拿到答案继续执行
14
+ */
15
+ export class InteractionService {
16
+ store;
17
+ waiters = new Map();
18
+ defaultTimeoutMs;
19
+ constructor(store, defaultTimeoutMs = 5 * 60 * 1000) {
20
+ this.store = store;
21
+ this.defaultTimeoutMs = defaultTimeoutMs;
22
+ }
23
+ /**
24
+ * 创建交互请求并返回 Promise,等待用户回答
25
+ */
26
+ requestInteraction(params) {
27
+ const request = this.createInteraction(params);
28
+ return new Promise((resolve, reject) => {
29
+ const timeout = setTimeout(() => {
30
+ this.waiters.delete(request.requestId);
31
+ request.status = 'expired';
32
+ this.store.update(request.requestId, { status: 'expired' });
33
+ reject(new Error(`Interaction request ${request.requestId} timed out after ${request.timeoutMs}ms`));
34
+ }, request.timeoutMs);
35
+ this.waiters.set(request.requestId, { resolve, reject, timeout });
36
+ // 通知前端:创建请求后立即触发 emit 回调,将 interaction-request 事件推送到 SSE,
37
+ // 否则前端永远收不到交互请求,用户无法作答,最终工具执行超时。
38
+ try {
39
+ params.emit?.(request);
40
+ }
41
+ catch (emitErr) {
42
+ console.warn(`[InteractionService] emit failed for ${request.requestId}:`, emitErr?.message);
43
+ }
44
+ });
45
+ }
46
+ /**
47
+ * 创建交互请求(非阻塞,不等待用户回答)
48
+ * 用于权限审批等场景:创建后通过 SSE 通知前端,但当前执行流继续(通常配合 block 工具)
49
+ */
50
+ createInteraction(params) {
51
+ const requestId = `ir_${Date.now()}_${Math.random().toString(36).slice(2, 8)}`;
52
+ const timeoutMs = params.timeoutMs ?? this.defaultTimeoutMs;
53
+ const request = {
54
+ requestId,
55
+ sessionId: params.sessionId,
56
+ threadId: params.threadId,
57
+ parentToolCallId: params.parentToolCallId,
58
+ source: params.source,
59
+ agentName: params.agentName,
60
+ type: params.type,
61
+ title: params.title,
62
+ message: params.message,
63
+ options: params.options,
64
+ allowFreeText: params.allowFreeText,
65
+ required: params.required ?? true,
66
+ timeoutMs,
67
+ status: 'pending',
68
+ createdAt: Date.now(),
69
+ meta: params.meta,
70
+ };
71
+ this.store.save(request);
72
+ return request;
73
+ }
74
+ /**
75
+ * 回答交互请求
76
+ */
77
+ answerInteraction(requestId, answer) {
78
+ const request = this.store.get(requestId);
79
+ if (!request || request.status !== 'pending')
80
+ return false;
81
+ const waiter = this.waiters.get(requestId);
82
+ if (!waiter)
83
+ return false;
84
+ // 清除超时
85
+ clearTimeout(waiter.timeout);
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);
93
+ return true;
94
+ }
95
+ /**
96
+ * 取消交互请求
97
+ */
98
+ cancelInteraction(requestId) {
99
+ const request = this.store.get(requestId);
100
+ if (!request || request.status !== 'pending')
101
+ return false;
102
+ const waiter = this.waiters.get(requestId);
103
+ if (!waiter)
104
+ return false;
105
+ clearTimeout(waiter.timeout);
106
+ this.waiters.delete(requestId);
107
+ request.status = 'cancelled';
108
+ this.store.update(requestId, { status: 'cancelled' });
109
+ waiter.reject(new Error(`Interaction request ${requestId} was cancelled`));
110
+ return true;
111
+ }
112
+ /**
113
+ * 获取 pending 请求列表
114
+ */
115
+ listPending(sessionId) {
116
+ return this.store.listPending(sessionId);
117
+ }
118
+ /**
119
+ * 获取单个请求
120
+ */
121
+ getRequest(requestId) {
122
+ return this.store.get(requestId);
123
+ }
124
+ /**
125
+ * 取消会话下所有 pending 请求
126
+ */
127
+ cancelAllForSession(sessionId) {
128
+ const pending = this.store.listPending(sessionId);
129
+ for (const req of pending) {
130
+ this.cancelInteraction(req.requestId);
131
+ }
132
+ }
133
+ /**
134
+ * 清理已完成/已过期/已取消的请求
135
+ */
136
+ cleanup(olderThanMs = 10 * 60 * 1000) {
137
+ let count = 0;
138
+ const now = Date.now();
139
+ // 遍历所有 waiter(它们对应的都是 pending 请求)
140
+ for (const [requestId, waiter] of this.waiters) {
141
+ const request = this.store.get(requestId);
142
+ if (!request) {
143
+ clearTimeout(waiter.timeout);
144
+ this.waiters.delete(requestId);
145
+ count++;
146
+ continue;
147
+ }
148
+ if (request.status !== 'pending') {
149
+ clearTimeout(waiter.timeout);
150
+ this.waiters.delete(requestId);
151
+ count++;
152
+ continue;
153
+ }
154
+ if (now - request.createdAt > olderThanMs) {
155
+ clearTimeout(waiter.timeout);
156
+ this.waiters.delete(requestId);
157
+ this.store.update(requestId, { status: 'expired' });
158
+ waiter.reject(new Error(`Interaction request ${requestId} expired during cleanup`));
159
+ count++;
160
+ }
161
+ }
162
+ return count;
163
+ }
164
+ }
165
+ //# sourceMappingURL=service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service.js","sourceRoot":"","sources":["../../../src/interaction/service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import type { InteractionRequest, InteractionStore } from './types.js';
2
+ export declare class InMemoryInteractionStore implements InteractionStore {
3
+ private requests;
4
+ save(request: InteractionRequest): void;
5
+ get(requestId: string): InteractionRequest | undefined;
6
+ listPending(sessionId: string): InteractionRequest[];
7
+ update(requestId: string, updates: Partial<InteractionRequest>): void;
8
+ delete(requestId: string): void;
9
+ }
10
+ //# sourceMappingURL=store.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,32 @@
1
+ // ============================================================
2
+ // InMemoryInteractionStore — 内存实现
3
+ // ============================================================
4
+ export class InMemoryInteractionStore {
5
+ requests = new Map();
6
+ save(request) {
7
+ this.requests.set(request.requestId, { ...request });
8
+ }
9
+ get(requestId) {
10
+ const r = this.requests.get(requestId);
11
+ return r ? { ...r } : undefined;
12
+ }
13
+ listPending(sessionId) {
14
+ const results = [];
15
+ for (const r of this.requests.values()) {
16
+ if (r.sessionId === sessionId && r.status === 'pending') {
17
+ results.push({ ...r });
18
+ }
19
+ }
20
+ return results.sort((a, b) => b.createdAt - a.createdAt);
21
+ }
22
+ update(requestId, updates) {
23
+ const existing = this.requests.get(requestId);
24
+ if (existing) {
25
+ this.requests.set(requestId, { ...existing, ...updates });
26
+ }
27
+ }
28
+ delete(requestId) {
29
+ this.requests.delete(requestId);
30
+ }
31
+ }
32
+ //# sourceMappingURL=store.js.map
@@ -0,0 +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"}
@@ -0,0 +1,97 @@
1
+ /** 交互请求类型 */
2
+ export type InteractionType = 'confirm' | 'choice' | 'multi-choice' | 'input' | 'approval';
3
+ /** 交互请求来源 */
4
+ export type InteractionSource = 'main-agent' | 'sub-agent' | 'tool';
5
+ /** 交互请求状态 */
6
+ export type InteractionStatus = 'pending' | 'answered' | 'cancelled' | 'expired';
7
+ /** 交互选项 */
8
+ export interface InteractionOption {
9
+ /** 选项唯一标识 */
10
+ id: string;
11
+ /** 显示标签 */
12
+ label: string;
13
+ /** 选项值 */
14
+ value?: unknown;
15
+ /** 是否为主要操作(高亮) */
16
+ primary?: boolean;
17
+ /** 是否为危险操作(红色) */
18
+ danger?: boolean;
19
+ }
20
+ /** 交互请求 */
21
+ export interface InteractionRequest {
22
+ /** 请求唯一 ID */
23
+ requestId: string;
24
+ /** 会话 ID */
25
+ sessionId: string;
26
+ /** 线程 ID */
27
+ threadId?: string | number;
28
+ /** 父工具调用 ID(子 Agent 场景) */
29
+ parentToolCallId?: string;
30
+ /** 来源 */
31
+ source: InteractionSource;
32
+ /** Agent 名称(子 Agent 场景) */
33
+ agentName?: string;
34
+ /** 交互类型 */
35
+ type: InteractionType;
36
+ /** 标题 */
37
+ title: string;
38
+ /** 说明文本 */
39
+ message: string;
40
+ /** 选项列表(choice / multi-choice / approval 类型) */
41
+ options?: InteractionOption[];
42
+ /** 是否允许自由文本输入(input 类型默认 true,其他类型可选) */
43
+ allowFreeText?: boolean;
44
+ /** 是否必须回答(默认 true) */
45
+ required?: boolean;
46
+ /** 超时时间(毫秒),默认 5 分钟 */
47
+ timeoutMs?: number;
48
+ /** 当前状态 */
49
+ status: InteractionStatus;
50
+ /** 创建时间(毫秒时间戳) */
51
+ createdAt: number;
52
+ /** 回答时间(毫秒时间戳) */
53
+ answeredAt?: number;
54
+ /** 扩展字段(上层可附加任意数据,如 permissionId 用于权限审批联动) */
55
+ meta?: Record<string, unknown>;
56
+ }
57
+ /** 交互回答 */
58
+ export interface InteractionAnswer {
59
+ /** 请求 ID */
60
+ requestId: string;
61
+ /** 选中的选项 ID 列表 */
62
+ selected?: string[];
63
+ /** 自由文本输入 */
64
+ text?: string;
65
+ /** 操作类型 */
66
+ action?: 'submit' | 'cancel';
67
+ }
68
+ /** 交互请求事件(SSE 发送给前端) */
69
+ export interface InteractionRequestEvent {
70
+ type: 'interaction-request';
71
+ data: Omit<InteractionRequest, 'status' | 'createdAt' | 'answeredAt'>;
72
+ }
73
+ /** 交互回答事件(SSE 发送给前端,通知前端该请求已处理) */
74
+ export interface InteractionAnswerEvent {
75
+ type: 'interaction-answer';
76
+ data: {
77
+ requestId: string;
78
+ status: InteractionStatus;
79
+ answer?: InteractionAnswer;
80
+ };
81
+ }
82
+ /** 交互请求存储接口 */
83
+ export interface InteractionStore {
84
+ /** 保存交互请求 */
85
+ save(request: InteractionRequest): void;
86
+ /** 获取交互请求 */
87
+ get(requestId: string): InteractionRequest | undefined;
88
+ /** 获取会话下所有 pending 请求 */
89
+ listPending(sessionId: string): InteractionRequest[];
90
+ /** 更新交互请求状态 */
91
+ update(requestId: string, updates: Partial<InteractionRequest>): void;
92
+ /** 删除交互请求 */
93
+ delete(requestId: string): void;
94
+ }
95
+ /** 默认超时时间:5 分钟 */
96
+ export declare const DEFAULT_INTERACTION_TIMEOUT_MS: number;
97
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/interaction/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ // ============================================================
2
+ // Interaction — 用户交互请求/回答类型
3
+ // 用于 Agent 运行中暂停等待用户确认/选择/输入
4
+ // ============================================================
5
+ /** 默认超时时间:5 分钟 */
6
+ export const DEFAULT_INTERACTION_TIMEOUT_MS = 5 * 60 * 1000;
7
+ //# sourceMappingURL=types.js.map
@@ -0,0 +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;AAyG/D,kBAAkB;AAClB,MAAM,CAAC,MAAM,8BAA8B,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC"}
@@ -0,0 +1,26 @@
1
+ import type { RegisteredTool, ToolDefinition } from './types.js';
2
+ import type { InteractionService } from '../interaction/service.js';
3
+ import type { InteractionType, InteractionOption } from '../interaction/types.js';
4
+ /** ask_user 工具的参数 */
5
+ export interface AskUserArgs {
6
+ /** 标题 */
7
+ title: string;
8
+ /** 说明文本 */
9
+ message: string;
10
+ /** 交互类型 */
11
+ type: InteractionType;
12
+ /** 选项列表(choice / multi-choice 类型) */
13
+ options?: InteractionOption[];
14
+ /** 是否允许自由文本输入 */
15
+ allowFreeText?: boolean;
16
+ }
17
+ /** ask_user 工具定义 */
18
+ export declare const ASK_USER_TOOL_DEFINITION: ToolDefinition;
19
+ /**
20
+ * 创建 ask_user 工具
21
+ *
22
+ * @param interactionService - InteractionService 实例
23
+ * @returns 注册的工具
24
+ */
25
+ export declare function createAskUserTool(interactionService: InteractionService): RegisteredTool;
26
+ //# sourceMappingURL=ask-user.d.ts.map
@@ -0,0 +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,CAuFxF"}