yuangs 5.56.0 → 5.58.0
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/agent/AgentRuntime.js +68 -1
- package/dist/agent/AgentRuntime.js.map +1 -1
- package/dist/agent/errorTracker.d.ts +110 -0
- package/dist/agent/errorTracker.js +216 -0
- package/dist/agent/errorTracker.js.map +1 -0
- package/dist/agent/executor.d.ts +84 -1
- package/dist/agent/executor.js +656 -11
- package/dist/agent/executor.js.map +1 -1
- package/dist/agent/protocolV2_2.js +45 -21
- package/dist/agent/protocolV2_2.js.map +1 -1
- package/dist/agent/state.d.ts +2 -0
- package/dist/agent/toolCapability.d.ts +81 -0
- package/dist/agent/toolCapability.js +471 -0
- package/dist/agent/toolCapability.js.map +1 -0
- package/dist/utils/confirm.js +1 -0
- package/dist/utils/confirm.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,471 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* 工具能力规范 (Tool Capability Specification)
|
|
4
|
+
* -----------------------------------------
|
|
5
|
+
* 定义每个工具的元数据、能力要求和使用规范
|
|
6
|
+
*
|
|
7
|
+
* 目的:
|
|
8
|
+
* 1. 建立工具与能力等级的硬性依赖关系
|
|
9
|
+
* 2. 提供工具的 JSON Schema 定义用于 LLM 理解
|
|
10
|
+
* 3. 统一工具的错误处理和重试策略
|
|
11
|
+
*/
|
|
12
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
+
exports.TOOL_CAPABILITY_MAP = exports.ToolCategory = void 0;
|
|
14
|
+
exports.canExecuteTool = canExecuteTool;
|
|
15
|
+
exports.getToolCapabilityRequirement = getToolCapabilityRequirement;
|
|
16
|
+
exports.getAvailableToolsForCapability = getAvailableToolsForCapability;
|
|
17
|
+
exports.getToolJSONSchema = getToolJSONSchema;
|
|
18
|
+
exports.generateToolDefinitionsPrompt = generateToolDefinitionsPrompt;
|
|
19
|
+
const CapabilityLevel_1 = require("../core/capability/CapabilityLevel");
|
|
20
|
+
/**
|
|
21
|
+
* 工具类别枚举
|
|
22
|
+
*/
|
|
23
|
+
var ToolCategory;
|
|
24
|
+
(function (ToolCategory) {
|
|
25
|
+
ToolCategory["FILE_IO"] = "file_io";
|
|
26
|
+
ToolCategory["FILE_SEARCH"] = "file_search";
|
|
27
|
+
ToolCategory["CODE_ANALYSIS"] = "code_analysis";
|
|
28
|
+
ToolCategory["GIT_OPERATION"] = "git_operation";
|
|
29
|
+
ToolCategory["SYSTEM"] = "system";
|
|
30
|
+
ToolCategory["NETWORK"] = "network"; // 网络操作
|
|
31
|
+
})(ToolCategory || (exports.ToolCategory = ToolCategory = {}));
|
|
32
|
+
/**
|
|
33
|
+
* 工具能力映射表
|
|
34
|
+
* 定义每个工具所需的最小能力等级
|
|
35
|
+
*/
|
|
36
|
+
exports.TOOL_CAPABILITY_MAP = {
|
|
37
|
+
// ===== 基础文件操作 =====
|
|
38
|
+
read_file: {
|
|
39
|
+
name: 'read_file',
|
|
40
|
+
category: ToolCategory.FILE_IO,
|
|
41
|
+
description: '读取指定路径的文件内容',
|
|
42
|
+
minCapability: CapabilityLevel_1.CapabilityLevel.TEXT,
|
|
43
|
+
parameters: [
|
|
44
|
+
{ name: 'path', type: 'string', description: '文件路径(绝对路径或相对路径)', required: true },
|
|
45
|
+
{ name: 'encoding', type: 'string', description: '文件编码,默认 utf-8', required: false, default: 'utf-8' }
|
|
46
|
+
],
|
|
47
|
+
returns: '文件内容字符串',
|
|
48
|
+
examples: [
|
|
49
|
+
{
|
|
50
|
+
description: '读取配置文件',
|
|
51
|
+
parameters: { path: 'package.json' },
|
|
52
|
+
expectedResult: 'package.json 的内容'
|
|
53
|
+
}
|
|
54
|
+
],
|
|
55
|
+
riskLevel: 'low',
|
|
56
|
+
retryable: true,
|
|
57
|
+
maxRetries: 3
|
|
58
|
+
},
|
|
59
|
+
read_file_lines: {
|
|
60
|
+
name: 'read_file_lines',
|
|
61
|
+
category: ToolCategory.FILE_IO,
|
|
62
|
+
description: '读取文件的指定行范围,用于处理大文件',
|
|
63
|
+
minCapability: CapabilityLevel_1.CapabilityLevel.TEXT,
|
|
64
|
+
parameters: [
|
|
65
|
+
{ name: 'path', type: 'string', description: '文件路径', required: true },
|
|
66
|
+
{ name: 'start_line', type: 'number', description: '起始行号(从1开始)', required: true },
|
|
67
|
+
{ name: 'end_line', type: 'number', description: '结束行号(包含),可选,默认到文件末尾', required: false },
|
|
68
|
+
{ name: 'encoding', type: 'string', description: '文件编码,默认 utf-8', required: false, default: 'utf-8' }
|
|
69
|
+
],
|
|
70
|
+
returns: '指定行范围的内容,带行号',
|
|
71
|
+
examples: [
|
|
72
|
+
{
|
|
73
|
+
description: '读取文件前50行',
|
|
74
|
+
parameters: { path: 'large-file.log', start_line: 1, end_line: 50 },
|
|
75
|
+
expectedResult: '文件第1-50行的内容'
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
description: '读取文件第100到150行',
|
|
79
|
+
parameters: { path: 'src/agent/executor.ts', start_line: 100, end_line: 150 },
|
|
80
|
+
expectedResult: '文件第100-150行的内容'
|
|
81
|
+
}
|
|
82
|
+
],
|
|
83
|
+
riskLevel: 'low',
|
|
84
|
+
retryable: true,
|
|
85
|
+
maxRetries: 3
|
|
86
|
+
},
|
|
87
|
+
write_file: {
|
|
88
|
+
name: 'write_file',
|
|
89
|
+
category: ToolCategory.FILE_IO,
|
|
90
|
+
description: '创建或覆盖文件内容',
|
|
91
|
+
minCapability: CapabilityLevel_1.CapabilityLevel.TEXT,
|
|
92
|
+
parameters: [
|
|
93
|
+
{ name: 'path', type: 'string', description: '文件路径', required: true },
|
|
94
|
+
{ name: 'content', type: 'string', description: '文件内容', required: true },
|
|
95
|
+
{ name: 'encoding', type: 'string', description: '文件编码,默认 utf-8', required: false, default: 'utf-8' }
|
|
96
|
+
],
|
|
97
|
+
returns: '写入成功的确认信息',
|
|
98
|
+
examples: [
|
|
99
|
+
{
|
|
100
|
+
description: '创建新文件',
|
|
101
|
+
parameters: { path: 'output.txt', content: 'Hello World' },
|
|
102
|
+
expectedResult: 'Successfully wrote output.txt'
|
|
103
|
+
}
|
|
104
|
+
],
|
|
105
|
+
riskLevel: 'medium',
|
|
106
|
+
retryable: false,
|
|
107
|
+
maxRetries: 0
|
|
108
|
+
},
|
|
109
|
+
append_file: {
|
|
110
|
+
name: 'append_file',
|
|
111
|
+
category: ToolCategory.FILE_IO,
|
|
112
|
+
description: '向文件末尾追加内容',
|
|
113
|
+
minCapability: CapabilityLevel_1.CapabilityLevel.TEXT,
|
|
114
|
+
parameters: [
|
|
115
|
+
{ name: 'path', type: 'string', description: '文件路径', required: true },
|
|
116
|
+
{ name: 'content', type: 'string', description: '要追加的内容', required: true },
|
|
117
|
+
{ name: 'encoding', type: 'string', description: '文件编码,默认 utf-8', required: false, default: 'utf-8' }
|
|
118
|
+
],
|
|
119
|
+
returns: '追加成功的确认信息',
|
|
120
|
+
examples: [
|
|
121
|
+
{
|
|
122
|
+
description: '向日志文件追加内容',
|
|
123
|
+
parameters: { path: 'app.log', content: 'New log entry\n' },
|
|
124
|
+
expectedResult: 'Successfully appended to app.log'
|
|
125
|
+
}
|
|
126
|
+
],
|
|
127
|
+
riskLevel: 'medium',
|
|
128
|
+
retryable: true,
|
|
129
|
+
maxRetries: 2
|
|
130
|
+
},
|
|
131
|
+
// ===== 文件搜索和列表 =====
|
|
132
|
+
list_files: {
|
|
133
|
+
name: 'list_files',
|
|
134
|
+
category: ToolCategory.FILE_SEARCH,
|
|
135
|
+
description: '列出指定目录下的文件和子目录',
|
|
136
|
+
minCapability: CapabilityLevel_1.CapabilityLevel.TEXT,
|
|
137
|
+
parameters: [
|
|
138
|
+
{ name: 'path', type: 'string', description: '目录路径,默认当前目录', required: false, default: '.' },
|
|
139
|
+
{ name: 'recursive', type: 'boolean', description: '是否递归列出子目录,默认 false', required: false, default: false },
|
|
140
|
+
{ name: 'pattern', type: 'string', description: '文件名模式过滤(如 *.ts),默认不过滤', required: false },
|
|
141
|
+
{ name: 'exclude_dirs', type: 'array', description: '要排除的目录名列表(如 node_modules)', required: false, default: [] }
|
|
142
|
+
],
|
|
143
|
+
returns: '文件和目录列表的 JSON',
|
|
144
|
+
examples: [
|
|
145
|
+
{
|
|
146
|
+
description: '列出 src 目录下的 TypeScript 文件',
|
|
147
|
+
parameters: { path: 'src', recursive: true, pattern: '*.ts', exclude_dirs: ['node_modules'] },
|
|
148
|
+
expectedResult: 'src 目录下所有 .ts 文件的列表'
|
|
149
|
+
}
|
|
150
|
+
],
|
|
151
|
+
riskLevel: 'low',
|
|
152
|
+
retryable: true,
|
|
153
|
+
maxRetries: 3
|
|
154
|
+
},
|
|
155
|
+
list_directory_tree: {
|
|
156
|
+
name: 'list_directory_tree',
|
|
157
|
+
category: ToolCategory.FILE_SEARCH,
|
|
158
|
+
description: '生成目录结构的树形展示,便于理解项目结构',
|
|
159
|
+
minCapability: CapabilityLevel_1.CapabilityLevel.TEXT,
|
|
160
|
+
parameters: [
|
|
161
|
+
{ name: 'path', type: 'string', description: '目录路径,默认当前目录', required: false, default: '.' },
|
|
162
|
+
{ name: 'max_depth', type: 'number', description: '最大递归深度,默认 3', required: false, default: 3 },
|
|
163
|
+
{ name: 'include_files', type: 'boolean', description: '是否包含文件,默认 true', required: false, default: true },
|
|
164
|
+
{ name: 'exclude_patterns', type: 'array', description: '要排除的路径模式列表', required: false, default: ['node_modules', '.git', 'dist', 'build'] }
|
|
165
|
+
],
|
|
166
|
+
returns: '目录结构的树形文本',
|
|
167
|
+
examples: [
|
|
168
|
+
{
|
|
169
|
+
description: '生成项目目录树',
|
|
170
|
+
parameters: { path: '.', max_depth: 3 },
|
|
171
|
+
expectedResult: '项目的树形目录结构'
|
|
172
|
+
}
|
|
173
|
+
],
|
|
174
|
+
riskLevel: 'low',
|
|
175
|
+
retryable: true,
|
|
176
|
+
maxRetries: 3
|
|
177
|
+
},
|
|
178
|
+
search_in_files: {
|
|
179
|
+
name: 'search_in_files',
|
|
180
|
+
category: ToolCategory.FILE_SEARCH,
|
|
181
|
+
description: '在文件中搜索指定内容(类似 grep)',
|
|
182
|
+
minCapability: CapabilityLevel_1.CapabilityLevel.TEXT,
|
|
183
|
+
parameters: [
|
|
184
|
+
{ name: 'pattern', type: 'string', description: '搜索模式(支持正则表达式)', required: true },
|
|
185
|
+
{ name: 'path', type: 'string', description: '搜索路径,默认当前目录', required: false, default: '.' },
|
|
186
|
+
{ name: 'file_pattern', type: 'string', description: '文件名模式(如 *.ts),默认所有文件', required: false },
|
|
187
|
+
{ name: 'recursive', type: 'boolean', description: '是否递归搜索,默认 true', required: false, default: true },
|
|
188
|
+
{ name: 'ignore_case', type: 'boolean', description: '是否忽略大小写,默认 false', required: false, default: false },
|
|
189
|
+
{ name: 'context_lines', type: 'number', description: '显示匹配行的上下文行数,默认 0', required: false, default: 0 },
|
|
190
|
+
{ name: 'max_results', type: 'number', description: '最大结果数,默认 50', required: false, default: 50 }
|
|
191
|
+
],
|
|
192
|
+
returns: '匹配结果的列表,包含文件名、行号和匹配内容',
|
|
193
|
+
examples: [
|
|
194
|
+
{
|
|
195
|
+
description: '在 TypeScript 文件中搜索 "function"',
|
|
196
|
+
parameters: { pattern: 'function', file_pattern: '*.ts', recursive: true },
|
|
197
|
+
expectedResult: '所有包含 "function" 的 TypeScript 文件及其行号'
|
|
198
|
+
}
|
|
199
|
+
],
|
|
200
|
+
riskLevel: 'low',
|
|
201
|
+
retryable: true,
|
|
202
|
+
maxRetries: 3
|
|
203
|
+
},
|
|
204
|
+
// ===== 代码分析工具 =====
|
|
205
|
+
search_symbol: {
|
|
206
|
+
name: 'search_symbol',
|
|
207
|
+
category: ToolCategory.CODE_ANALYSIS,
|
|
208
|
+
description: '搜索代码符号(函数、类、变量等)的定义和引用',
|
|
209
|
+
minCapability: CapabilityLevel_1.CapabilityLevel.STRUCTURAL,
|
|
210
|
+
parameters: [
|
|
211
|
+
{ name: 'symbol', type: 'string', description: '符号名称', required: true },
|
|
212
|
+
{ name: 'symbol_type', type: 'string', description: '符号类型(function, class, variable, interface)', required: false },
|
|
213
|
+
{ name: 'path', type: 'string', description: '搜索路径,默认当前目录', required: false, default: '.' },
|
|
214
|
+
{ name: 'file_pattern', type: 'string', description: '文件名模式,默认所有文件', required: false }
|
|
215
|
+
],
|
|
216
|
+
returns: '符号的定义位置和引用位置列表',
|
|
217
|
+
examples: [
|
|
218
|
+
{
|
|
219
|
+
description: '搜索 ToolExecutor 类的定义',
|
|
220
|
+
parameters: { symbol: 'ToolExecutor', symbol_type: 'class' },
|
|
221
|
+
expectedResult: 'ToolExecutor 类的定义文件和行号'
|
|
222
|
+
}
|
|
223
|
+
],
|
|
224
|
+
riskLevel: 'low',
|
|
225
|
+
retryable: true,
|
|
226
|
+
maxRetries: 3
|
|
227
|
+
},
|
|
228
|
+
analyze_dependencies: {
|
|
229
|
+
name: 'analyze_dependencies',
|
|
230
|
+
category: ToolCategory.CODE_ANALYSIS,
|
|
231
|
+
description: '分析文件的依赖关系(import/require)',
|
|
232
|
+
minCapability: CapabilityLevel_1.CapabilityLevel.STRUCTURAL,
|
|
233
|
+
parameters: [
|
|
234
|
+
{ name: 'path', type: 'string', description: '文件路径或目录路径', required: true },
|
|
235
|
+
{ name: 'recursive', type: 'boolean', description: '是否递归分析依赖,默认 false', required: false, default: false }
|
|
236
|
+
],
|
|
237
|
+
returns: '依赖关系图或列表',
|
|
238
|
+
examples: [
|
|
239
|
+
{
|
|
240
|
+
description: '分析 executor.ts 的依赖',
|
|
241
|
+
parameters: { path: 'src/agent/executor.ts' },
|
|
242
|
+
expectedResult: 'executor.ts 导入的所有模块和它们的位置'
|
|
243
|
+
}
|
|
244
|
+
],
|
|
245
|
+
riskLevel: 'low',
|
|
246
|
+
retryable: true,
|
|
247
|
+
maxRetries: 3
|
|
248
|
+
},
|
|
249
|
+
// ===== Git 操作 =====
|
|
250
|
+
git_status: {
|
|
251
|
+
name: 'git_status',
|
|
252
|
+
category: ToolCategory.GIT_OPERATION,
|
|
253
|
+
description: '获取 Git 仓库状态',
|
|
254
|
+
minCapability: CapabilityLevel_1.CapabilityLevel.TEXT,
|
|
255
|
+
parameters: [
|
|
256
|
+
{ name: 'path', type: 'string', description: '仓库路径,默认当前目录', required: false, default: '.' }
|
|
257
|
+
],
|
|
258
|
+
returns: 'Git 状态信息(分支、修改的文件等)',
|
|
259
|
+
examples: [
|
|
260
|
+
{
|
|
261
|
+
description: '获取当前 Git 状态',
|
|
262
|
+
parameters: {},
|
|
263
|
+
expectedResult: '当前分支和修改的文件列表'
|
|
264
|
+
}
|
|
265
|
+
],
|
|
266
|
+
riskLevel: 'low',
|
|
267
|
+
retryable: true,
|
|
268
|
+
maxRetries: 2
|
|
269
|
+
},
|
|
270
|
+
git_diff: {
|
|
271
|
+
name: 'git_diff',
|
|
272
|
+
category: ToolCategory.GIT_OPERATION,
|
|
273
|
+
description: '查看文件或提交的差异',
|
|
274
|
+
minCapability: CapabilityLevel_1.CapabilityLevel.TEXT,
|
|
275
|
+
parameters: [
|
|
276
|
+
{ name: 'file', type: 'string', description: '指定文件路径,可选', required: false },
|
|
277
|
+
{ name: 'cached', type: 'boolean', description: '查看暂存区的差异,默认 false', required: false, default: false },
|
|
278
|
+
{ name: 'lines', type: 'number', description: '只显示前 N 行差异', required: false }
|
|
279
|
+
],
|
|
280
|
+
returns: 'Git diff 输出',
|
|
281
|
+
examples: [
|
|
282
|
+
{
|
|
283
|
+
description: '查看工作区的修改',
|
|
284
|
+
parameters: {},
|
|
285
|
+
expectedResult: '所有未暂存的修改'
|
|
286
|
+
}
|
|
287
|
+
],
|
|
288
|
+
riskLevel: 'low',
|
|
289
|
+
retryable: true,
|
|
290
|
+
maxRetries: 2
|
|
291
|
+
},
|
|
292
|
+
git_log: {
|
|
293
|
+
name: 'git_log',
|
|
294
|
+
category: ToolCategory.GIT_OPERATION,
|
|
295
|
+
description: '查看提交历史',
|
|
296
|
+
minCapability: CapabilityLevel_1.CapabilityLevel.TEXT,
|
|
297
|
+
parameters: [
|
|
298
|
+
{ name: 'max_count', type: 'number', description: '最多显示的提交数,默认 10', required: false, default: 10 },
|
|
299
|
+
{ name: 'file', type: 'string', description: '只显示指定文件的历史', required: false },
|
|
300
|
+
{ name: 'oneline', type: 'boolean', description: '单行格式,默认 true', required: false, default: true }
|
|
301
|
+
],
|
|
302
|
+
returns: '提交历史记录',
|
|
303
|
+
examples: [
|
|
304
|
+
{
|
|
305
|
+
description: '查看最近5条提交',
|
|
306
|
+
parameters: { max_count: 5 },
|
|
307
|
+
expectedResult: '最近5条提交记录'
|
|
308
|
+
}
|
|
309
|
+
],
|
|
310
|
+
riskLevel: 'low',
|
|
311
|
+
retryable: true,
|
|
312
|
+
maxRetries: 2
|
|
313
|
+
},
|
|
314
|
+
// ===== 系统操作 =====
|
|
315
|
+
shell_cmd: {
|
|
316
|
+
name: 'shell_cmd',
|
|
317
|
+
category: ToolCategory.SYSTEM,
|
|
318
|
+
description: '执行 Shell 命令',
|
|
319
|
+
minCapability: CapabilityLevel_1.CapabilityLevel.TEXT,
|
|
320
|
+
parameters: [
|
|
321
|
+
{ name: 'command', type: 'string', description: '要执行的命令', required: true },
|
|
322
|
+
{ name: 'timeout', type: 'number', description: '超时时间(秒),默认 30', required: false, default: 30 }
|
|
323
|
+
],
|
|
324
|
+
returns: '命令执行结果(stdout/stderr)',
|
|
325
|
+
examples: [
|
|
326
|
+
{
|
|
327
|
+
description: '列出当前目录',
|
|
328
|
+
parameters: { command: 'ls -la' },
|
|
329
|
+
expectedResult: '当前目录的文件列表'
|
|
330
|
+
}
|
|
331
|
+
],
|
|
332
|
+
riskLevel: 'high',
|
|
333
|
+
retryable: false,
|
|
334
|
+
maxRetries: 0
|
|
335
|
+
},
|
|
336
|
+
// ===== 上下文管理工具 =====
|
|
337
|
+
continue_reading: {
|
|
338
|
+
name: 'continue_reading',
|
|
339
|
+
category: ToolCategory.FILE_IO,
|
|
340
|
+
description: '继续读取之前被截断的文件内容',
|
|
341
|
+
minCapability: CapabilityLevel_1.CapabilityLevel.TEXT,
|
|
342
|
+
parameters: [
|
|
343
|
+
{ name: 'path', type: 'string', description: '文件路径', required: true },
|
|
344
|
+
{ name: 'from_position', type: 'number', description: '从哪个字符位置继续读取(默认之前读取的末尾)', required: false },
|
|
345
|
+
{ name: 'length', type: 'number', description: '读取长度,默认 2000', required: false, default: 2000 }
|
|
346
|
+
],
|
|
347
|
+
returns: '从指定位置开始的文件内容',
|
|
348
|
+
examples: [
|
|
349
|
+
{
|
|
350
|
+
description: '继续读取被截断的大文件',
|
|
351
|
+
parameters: { path: 'large-file.log', from_position: 2000, length: 2000 },
|
|
352
|
+
expectedResult: '从位置 2000 开始的 2000 个字符'
|
|
353
|
+
}
|
|
354
|
+
],
|
|
355
|
+
riskLevel: 'low',
|
|
356
|
+
retryable: true,
|
|
357
|
+
maxRetries: 3
|
|
358
|
+
},
|
|
359
|
+
file_info: {
|
|
360
|
+
name: 'file_info',
|
|
361
|
+
category: ToolCategory.FILE_IO,
|
|
362
|
+
description: '获取文件的元信息(大小、类型、修改时间等)',
|
|
363
|
+
minCapability: CapabilityLevel_1.CapabilityLevel.TEXT,
|
|
364
|
+
parameters: [
|
|
365
|
+
{ name: 'path', type: 'string', description: '文件路径', required: true }
|
|
366
|
+
],
|
|
367
|
+
returns: '文件元信息的 JSON',
|
|
368
|
+
examples: [
|
|
369
|
+
{
|
|
370
|
+
description: '获取文件信息',
|
|
371
|
+
parameters: { path: 'package.json' },
|
|
372
|
+
expectedResult: '{ size: 1234, modified: "2024-01-01", type: "file" }'
|
|
373
|
+
}
|
|
374
|
+
],
|
|
375
|
+
riskLevel: 'low',
|
|
376
|
+
retryable: true,
|
|
377
|
+
maxRetries: 3
|
|
378
|
+
}
|
|
379
|
+
};
|
|
380
|
+
/**
|
|
381
|
+
* 检查工具是否可以被当前能力等级执行
|
|
382
|
+
*/
|
|
383
|
+
function canExecuteTool(toolName, currentCapability) {
|
|
384
|
+
const metadata = exports.TOOL_CAPABILITY_MAP[toolName];
|
|
385
|
+
if (!metadata)
|
|
386
|
+
return false;
|
|
387
|
+
return currentCapability >= metadata.minCapability;
|
|
388
|
+
}
|
|
389
|
+
/**
|
|
390
|
+
* 获取工具的能力要求
|
|
391
|
+
*/
|
|
392
|
+
function getToolCapabilityRequirement(toolName) {
|
|
393
|
+
const metadata = exports.TOOL_CAPABILITY_MAP[toolName];
|
|
394
|
+
return metadata ? metadata.minCapability : null;
|
|
395
|
+
}
|
|
396
|
+
/**
|
|
397
|
+
* 根据 capability 级别获取可用的工具列表
|
|
398
|
+
*/
|
|
399
|
+
function getAvailableToolsForCapability(capability) {
|
|
400
|
+
return Object.entries(exports.TOOL_CAPABILITY_MAP)
|
|
401
|
+
.filter(([_, metadata]) => capability >= metadata.minCapability)
|
|
402
|
+
.map(([name, _]) => name);
|
|
403
|
+
}
|
|
404
|
+
/**
|
|
405
|
+
* 获取工具的 JSON Schema 定义
|
|
406
|
+
* 用于生成 LLM 的工具定义
|
|
407
|
+
*/
|
|
408
|
+
function getToolJSONSchema(toolName) {
|
|
409
|
+
const metadata = exports.TOOL_CAPABILITY_MAP[toolName];
|
|
410
|
+
if (!metadata)
|
|
411
|
+
return null;
|
|
412
|
+
const properties = {};
|
|
413
|
+
const required = [];
|
|
414
|
+
for (const param of metadata.parameters) {
|
|
415
|
+
properties[param.name] = {
|
|
416
|
+
type: param.type,
|
|
417
|
+
description: param.description
|
|
418
|
+
};
|
|
419
|
+
if (param.default !== undefined) {
|
|
420
|
+
properties[param.name].default = param.default;
|
|
421
|
+
}
|
|
422
|
+
if (param.required) {
|
|
423
|
+
required.push(param.name);
|
|
424
|
+
}
|
|
425
|
+
}
|
|
426
|
+
return {
|
|
427
|
+
type: 'object',
|
|
428
|
+
properties,
|
|
429
|
+
required
|
|
430
|
+
};
|
|
431
|
+
}
|
|
432
|
+
/**
|
|
433
|
+
* 生成完整的工具定义列表(用于 LLM System Prompt)
|
|
434
|
+
*/
|
|
435
|
+
function generateToolDefinitionsPrompt() {
|
|
436
|
+
let prompt = '=== 可用工具定义 (Available Tools) ===\n\n';
|
|
437
|
+
for (const [name, metadata] of Object.entries(exports.TOOL_CAPABILITY_MAP)) {
|
|
438
|
+
prompt += `## ${name}\n`;
|
|
439
|
+
prompt += `- **描述**: ${metadata.description}\n`;
|
|
440
|
+
prompt += `- **能力要求**: ${capabilityLevelToString(metadata.minCapability)}\n`;
|
|
441
|
+
prompt += `- **风险等级**: ${metadata.riskLevel}\n`;
|
|
442
|
+
prompt += `- **参数**:\n`;
|
|
443
|
+
for (const param of metadata.parameters) {
|
|
444
|
+
const required = param.required ? '必需' : '可选';
|
|
445
|
+
const defaultVal = param.default !== undefined ? ` (默认: ${param.default})` : '';
|
|
446
|
+
prompt += ` - \`${param.name}\` (${param.type}, ${required})${defaultVal}: ${param.description}\n`;
|
|
447
|
+
}
|
|
448
|
+
prompt += `- **示例**:\n`;
|
|
449
|
+
for (const example of metadata.examples) {
|
|
450
|
+
const paramsStr = JSON.stringify(example.parameters, null, 2);
|
|
451
|
+
prompt += ` ${example.description}\n`;
|
|
452
|
+
prompt += ` 参数: ${paramsStr}\n`;
|
|
453
|
+
}
|
|
454
|
+
prompt += '\n';
|
|
455
|
+
}
|
|
456
|
+
return prompt;
|
|
457
|
+
}
|
|
458
|
+
/**
|
|
459
|
+
* 辅助函数:能力等级转字符串
|
|
460
|
+
*/
|
|
461
|
+
function capabilityLevelToString(level) {
|
|
462
|
+
switch (level) {
|
|
463
|
+
case CapabilityLevel_1.CapabilityLevel.SEMANTIC: return 'SEMANTIC (极致语义)';
|
|
464
|
+
case CapabilityLevel_1.CapabilityLevel.STRUCTURAL: return 'STRUCTURAL (结构分析)';
|
|
465
|
+
case CapabilityLevel_1.CapabilityLevel.LINE: return 'LINE (行级分析)';
|
|
466
|
+
case CapabilityLevel_1.CapabilityLevel.TEXT: return 'TEXT (文本处理)';
|
|
467
|
+
case CapabilityLevel_1.CapabilityLevel.NONE: return 'NONE (无智能要求)';
|
|
468
|
+
default: return 'UNKNOWN';
|
|
469
|
+
}
|
|
470
|
+
}
|
|
471
|
+
//# sourceMappingURL=toolCapability.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"toolCapability.js","sourceRoot":"","sources":["../../src/agent/toolCapability.ts"],"names":[],"mappings":"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"}
|
package/dist/utils/confirm.js
CHANGED
|
@@ -43,6 +43,7 @@ async function confirm(message) {
|
|
|
43
43
|
const rl = readline.createInterface({
|
|
44
44
|
input: process.stdin,
|
|
45
45
|
output: process.stdout,
|
|
46
|
+
terminal: false, // 禁用终端特性以避免与外部 readline 接口冲突
|
|
46
47
|
});
|
|
47
48
|
try {
|
|
48
49
|
const answer = await rl.question(chalk_1.default.yellow(`\n⚠️ ${message} (y/N) `));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"confirm.js","sourceRoot":"","sources":["../../src/utils/confirm.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGA,
|
|
1
|
+
{"version":3,"file":"confirm.js","sourceRoot":"","sources":["../../src/utils/confirm.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGA,0BAaC;AAhBD,iEAAmD;AACnD,kDAA0B;AAEnB,KAAK,UAAU,OAAO,CAAC,OAAe;IACzC,MAAM,EAAE,GAAG,QAAQ,CAAC,eAAe,CAAC;QAChC,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,QAAQ,EAAE,KAAK,EAAE,6BAA6B;KACjD,CAAC,CAAC;IAEH,IAAI,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,eAAK,CAAC,MAAM,CAAC,SAAS,OAAO,SAAS,CAAC,CAAC,CAAC;QAC1E,OAAO,MAAM,CAAC,WAAW,EAAE,KAAK,GAAG,CAAC;IACxC,CAAC;YAAS,CAAC;QACP,EAAE,CAAC,KAAK,EAAE,CAAC;IACf,CAAC;AACL,CAAC"}
|