yuangs 5.50.0 → 5.52.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.
Files changed (60) hide show
  1. package/dist/agent/codeSummary.js +17 -1
  2. package/dist/agent/codeSummary.js.map +1 -1
  3. package/dist/agent/errorHandling.d.ts +4 -0
  4. package/dist/agent/errorHandling.js +39 -26
  5. package/dist/agent/errorHandling.js.map +1 -1
  6. package/dist/agent/llmAdapter.js +6 -3
  7. package/dist/agent/llmAdapter.js.map +1 -1
  8. package/dist/agent/prompt.js +4 -4
  9. package/dist/agent/prompt.js.map +1 -1
  10. package/dist/agent/protocolV2_2.d.ts +6 -7
  11. package/dist/agent/protocolV2_2.js +44 -154
  12. package/dist/agent/protocolV2_2.js.map +1 -1
  13. package/dist/agent/smartContextManager.d.ts +1 -0
  14. package/dist/agent/smartContextManager.js +20 -1
  15. package/dist/agent/smartContextManager.js.map +1 -1
  16. package/dist/cli.js +3 -3
  17. package/dist/cli.js.map +1 -1
  18. package/dist/commands/contextBuffer.d.ts +6 -0
  19. package/dist/commands/contextBuffer.js +12 -2
  20. package/dist/commands/contextBuffer.js.map +1 -1
  21. package/dist/commands/git/auto.js +171 -1
  22. package/dist/commands/git/auto.js.map +1 -1
  23. package/dist/commands/git/utils.js +6 -6
  24. package/dist/commands/git/utils.js.map +1 -1
  25. package/dist/commands/handleAIChat.js +23 -6
  26. package/dist/commands/handleAIChat.js.map +1 -1
  27. package/dist/core/capability/CapabilityLevel.d.ts +31 -0
  28. package/dist/core/capability/CapabilityLevel.js +80 -0
  29. package/dist/core/capability/CapabilityLevel.js.map +1 -1
  30. package/dist/core/fileReader.d.ts +6 -1
  31. package/dist/core/fileReader.js +54 -1
  32. package/dist/core/fileReader.js.map +1 -1
  33. package/dist/core/git/CodeReviewer.d.ts +1 -0
  34. package/dist/core/git/CodeReviewer.js +13 -1
  35. package/dist/core/git/CodeReviewer.js.map +1 -1
  36. package/dist/core/git/ConflictResolver.d.ts +15 -0
  37. package/dist/core/git/ConflictResolver.js +110 -54
  38. package/dist/core/git/ConflictResolver.js.map +1 -1
  39. package/dist/core/git/ContextGatherer.js +38 -16
  40. package/dist/core/git/ContextGatherer.js.map +1 -1
  41. package/dist/core/git/InteractiveReview.d.ts +33 -0
  42. package/dist/core/git/InteractiveReview.js +296 -0
  43. package/dist/core/git/InteractiveReview.js.map +1 -0
  44. package/dist/core/git/ReviewCache.d.ts +53 -0
  45. package/dist/core/git/ReviewCache.js +392 -0
  46. package/dist/core/git/ReviewCache.js.map +1 -0
  47. package/dist/core/git/semantic/SemanticDiffEngine.js +6 -6
  48. package/dist/core/git/semantic/SemanticDiffEngine.js.map +1 -1
  49. package/dist/core/workflows/AutoWorkflow.js +24 -8
  50. package/dist/core/workflows/AutoWorkflow.js.map +1 -1
  51. package/dist/core/workflows/GitWorkflowSession.d.ts +7 -0
  52. package/dist/core/workflows/GitWorkflowSession.js +16 -0
  53. package/dist/core/workflows/GitWorkflowSession.js.map +1 -1
  54. package/dist/core/workflows/PlanWorkflow.js +4 -0
  55. package/dist/core/workflows/PlanWorkflow.js.map +1 -1
  56. package/dist/utils/renderer.js +23 -21
  57. package/dist/utils/renderer.js.map +1 -1
  58. package/dist/utils/syntaxHandler.js +1 -1
  59. package/dist/utils/syntaxHandler.js.map +1 -1
  60. package/package.json +1 -1
@@ -0,0 +1,296 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.InteractiveReview = void 0;
40
+ exports.startInteractiveReview = startInteractiveReview;
41
+ const chalk_1 = __importDefault(require("chalk"));
42
+ const CodeReviewer_1 = require("./CodeReviewer");
43
+ const readline = __importStar(require("readline"));
44
+ class InteractiveReview {
45
+ gitService;
46
+ rl;
47
+ constructor(gitService) {
48
+ this.gitService = gitService;
49
+ this.rl = readline.createInterface({
50
+ input: process.stdin,
51
+ output: process.stdout
52
+ });
53
+ }
54
+ async startInteractiveFix(issues) {
55
+ try {
56
+ if (issues.length === 0) {
57
+ console.log(chalk_1.default.green('✅ 没有发现需要修复的问题'));
58
+ return { applied: 0, skipped: 0, edited: 0, batchApplied: 0 };
59
+ }
60
+ console.log(chalk_1.default.bold.cyan(`\n🔧 发现 ${issues.length} 个问题可以交互式修复\n`));
61
+ const result = {
62
+ applied: 0,
63
+ skipped: 0,
64
+ edited: 0,
65
+ batchApplied: 0
66
+ };
67
+ // 按严重程度分组
68
+ const criticalIssues = issues.filter(i => i.severity === CodeReviewer_1.IssueSeverity.CRITICAL);
69
+ const errorIssues = issues.filter(i => i.severity === CodeReviewer_1.IssueSeverity.ERROR);
70
+ const warningIssues = issues.filter(i => i.severity === CodeReviewer_1.IssueSeverity.WARNING);
71
+ const infoIssues = issues.filter(i => i.severity === CodeReviewer_1.IssueSeverity.INFO);
72
+ // 优先处理严重问题
73
+ const allIssues = [...criticalIssues, ...errorIssues, ...warningIssues, ...infoIssues];
74
+ // 批量处理选项
75
+ const batchChoice = await this.askBatchProcessing(allIssues);
76
+ if (batchChoice === 'batch') {
77
+ const batchResult = await this.processBatch(allIssues);
78
+ result.batchApplied = batchResult.applied;
79
+ return result;
80
+ }
81
+ // 逐个处理问题
82
+ for (const issue of allIssues) {
83
+ const action = await this.processSingleIssue(issue);
84
+ switch (action.type) {
85
+ case 'apply':
86
+ await this.applyFix(issue);
87
+ result.applied++;
88
+ break;
89
+ case 'edit':
90
+ if (action.customFix) {
91
+ await this.editAndApplyFix(issue, action.customFix);
92
+ result.edited++;
93
+ }
94
+ else {
95
+ console.log(chalk_1.default.yellow('⚠️ 未提供自定义修复方案,跳过'));
96
+ result.skipped++;
97
+ }
98
+ break;
99
+ case 'skip':
100
+ result.skipped++;
101
+ break;
102
+ }
103
+ // 显示进度
104
+ this.showProgress(result, allIssues.length);
105
+ }
106
+ this.printSummary(result);
107
+ return result;
108
+ }
109
+ finally {
110
+ // 确保无论成功或失败都清理 readline 资源
111
+ this.destroy();
112
+ }
113
+ }
114
+ async askBatchProcessing(issues) {
115
+ return new Promise((resolve) => {
116
+ console.log(chalk_1.default.yellow('💡 提示: 你可以批量处理相似的问题'));
117
+ console.log(chalk_1.default.gray(` 发现 ${issues.length} 个问题可以修复\n`));
118
+ this.rl.question(chalk_1.default.cyan('请选择处理方式:\n') +
119
+ chalk_1.default.white(' 1. 批量处理相似问题 (推荐)\n') +
120
+ chalk_1.default.white(' 2. 逐个处理问题\n\n') +
121
+ chalk_1.default.white('请选择 (1 或 2): '), (answer) => {
122
+ resolve(answer === '1' ? 'batch' : 'individual');
123
+ });
124
+ });
125
+ }
126
+ async processBatch(issues) {
127
+ console.log(chalk_1.default.bold.cyan('\n📦 批量处理问题\n'));
128
+ // 按问题类型分组
129
+ const groups = this.groupIssuesByType(issues);
130
+ let applied = 0;
131
+ for (const [type, groupIssues] of Object.entries(groups)) {
132
+ if (groupIssues.length < 2)
133
+ continue; // 跳过只有一个的问题
134
+ console.log(chalk_1.default.white(`\n发现 ${groupIssues.length} 个相似问题: ${type}`));
135
+ const sampleIssue = groupIssues[0];
136
+ this.displayIssue(sampleIssue, 1);
137
+ const action = await this.askBatchAction(type, groupIssues.length);
138
+ if (action === 'apply') {
139
+ for (const issue of groupIssues) {
140
+ await this.applyFix(issue);
141
+ applied++;
142
+ }
143
+ console.log(chalk_1.default.green(`✅ 已批量修复 ${groupIssues.length} 个问题`));
144
+ }
145
+ else if (action === 'edit') {
146
+ const customFix = await this.askCustomFix(sampleIssue);
147
+ for (const issue of groupIssues) {
148
+ await this.editAndApplyFix(issue, customFix);
149
+ applied++;
150
+ }
151
+ console.log(chalk_1.default.green(`✅ 已批量应用自定义修复`));
152
+ }
153
+ else {
154
+ console.log(chalk_1.default.gray(`⏭️ 跳过批量修复`));
155
+ }
156
+ }
157
+ return { applied };
158
+ }
159
+ groupIssuesByType(issues) {
160
+ const groups = {};
161
+ for (const issue of issues) {
162
+ // 使用问题消息的前几个单词作为分组键
163
+ const typeKey = issue.message.substring(0, 30).toLowerCase();
164
+ if (!groups[typeKey]) {
165
+ groups[typeKey] = [];
166
+ }
167
+ groups[typeKey].push(issue);
168
+ }
169
+ return groups;
170
+ }
171
+ async processSingleIssue(issue) {
172
+ console.log(chalk_1.default.bold.cyan('\n─────────────────────────────────────\n'));
173
+ this.displayIssue(issue);
174
+ const choices = [
175
+ { key: 'y', desc: '应用建议的修复', action: 'apply' },
176
+ { key: 'e', desc: '编辑后应用', action: 'edit' },
177
+ { key: 's', desc: '跳过', action: 'skip' },
178
+ { key: 'q', desc: '退出', action: 'skip' }
179
+ ];
180
+ const answer = await this.askQuestion(chalk_1.default.cyan('请选择操作: ') +
181
+ choices.map(c => chalk_1.default.white(`[${c.key}]${c.desc}`)).join(' '));
182
+ const choice = choices.find(c => c.key === answer.toLowerCase());
183
+ if (answer.toLowerCase() === 'q') {
184
+ return { type: 'skip' };
185
+ }
186
+ if (choice?.action === 'edit') {
187
+ const customFix = await this.askCustomFix(issue);
188
+ return { type: 'edit', issue, customFix };
189
+ }
190
+ return { type: (choice?.action || 'skip'), issue };
191
+ }
192
+ displayIssue(issue, index) {
193
+ if (index) {
194
+ console.log(chalk_1.default.bold.white(`${index}. [${issue.severity.toUpperCase()}] ${issue.file}${issue.line ? `:${issue.line}` : ''}`));
195
+ }
196
+ else {
197
+ console.log(chalk_1.default.bold.white(`[${issue.severity.toUpperCase()}] ${issue.file}${issue.line ? `:${issue.line}` : ''}`));
198
+ }
199
+ console.log(chalk_1.default.yellow(` ${issue.message}`));
200
+ if (issue.suggestion) {
201
+ console.log(chalk_1.default.gray(` 💡 建议: ${issue.suggestion}`));
202
+ }
203
+ if (issue.snippet) {
204
+ console.log(chalk_1.default.gray(` 📝 代码片段:`));
205
+ console.log(chalk_1.default.gray(` ${issue.snippet.split('\n').join('\n ')}`));
206
+ }
207
+ console.log('');
208
+ }
209
+ async askBatchAction(type, count) {
210
+ return new Promise((resolve) => {
211
+ this.rl.question(chalk_1.default.cyan(`批量处理这 ${count} 个问题? `) +
212
+ chalk_1.default.white('[a]应用建议修复 ') +
213
+ chalk_1.default.white('[e]编辑后应用 ') +
214
+ chalk_1.default.white('[s]跳过 ') +
215
+ chalk_1.default.white(': '), (answer) => {
216
+ const choice = answer.toLowerCase();
217
+ if (choice === 'a')
218
+ resolve('apply');
219
+ else if (choice === 'e')
220
+ resolve('edit');
221
+ else
222
+ resolve('skip');
223
+ });
224
+ });
225
+ }
226
+ async askCustomFix(issue) {
227
+ console.log(chalk_1.default.cyan('\n💭 请输入自定义修复方案:'));
228
+ console.log(chalk_1.default.gray(`当前问题: ${issue.message}\n`));
229
+ return new Promise((resolve) => {
230
+ this.rl.question(chalk_1.default.white('修复方案: '), (answer) => {
231
+ resolve(answer || issue.suggestion || '');
232
+ });
233
+ });
234
+ }
235
+ async applyFix(issue) {
236
+ try {
237
+ // 这里可以实现自动应用修复的逻辑
238
+ // 例如: 修改文件、添加注释、重构代码等
239
+ console.log(chalk_1.default.green(`✅ 已应用修复: ${issue.file}${issue.line ? `:${issue.line}` : ''}`));
240
+ }
241
+ catch (error) {
242
+ console.log(chalk_1.default.red(`❌ 应用修复失败: ${error}`));
243
+ throw error;
244
+ }
245
+ }
246
+ async editAndApplyFix(issue, customFix) {
247
+ try {
248
+ // 使用自定义修复方案
249
+ console.log(chalk_1.default.green(`✅ 已应用自定义修复: ${issue.file}${issue.line ? `:${issue.line}` : ''}`));
250
+ }
251
+ catch (error) {
252
+ console.log(chalk_1.default.red(`❌ 应用自定义修复失败: ${error}`));
253
+ throw error;
254
+ }
255
+ }
256
+ showProgress(result, total) {
257
+ const processed = result.applied + result.skipped + result.edited + result.batchApplied;
258
+ const percentage = Math.round((processed / total) * 100);
259
+ console.log(chalk_1.default.gray(`\n📊 进度: ${processed}/${total} (${percentage}%)`));
260
+ console.log(chalk_1.default.gray(`✅ 已修复: ${result.applied + result.batchApplied} | ✏️ 已编辑: ${result.edited} | ⏭️ 已跳过: ${result.skipped}`));
261
+ }
262
+ printSummary(result) {
263
+ console.log(chalk_1.default.bold.cyan('\n─────────────────────────────────────'));
264
+ console.log(chalk_1.default.bold.cyan('📋 交互式修复完成\n'));
265
+ const total = result.applied + result.skipped + result.edited + result.batchApplied;
266
+ console.log(chalk_1.default.white(`总计处理问题: ${total}`));
267
+ console.log(chalk_1.default.green(`✅ 自动修复: ${result.applied + result.batchApplied}`));
268
+ console.log(chalk_1.default.blue(`✏️ 自定义修复: ${result.edited}`));
269
+ console.log(chalk_1.default.gray(`⏭️ 跳过: ${result.skipped}`));
270
+ console.log(chalk_1.default.bold.cyan('\n─────────────────────────────────────\n'));
271
+ }
272
+ askQuestion(question) {
273
+ return new Promise((resolve) => {
274
+ this.rl.question(question + ' ', (answer) => {
275
+ resolve(answer.trim());
276
+ });
277
+ });
278
+ }
279
+ destroy() {
280
+ if (this.rl) {
281
+ this.rl.close();
282
+ }
283
+ }
284
+ }
285
+ exports.InteractiveReview = InteractiveReview;
286
+ // Helper function to start interactive review
287
+ async function startInteractiveReview(issues, gitService) {
288
+ const interactiveReview = new InteractiveReview(gitService);
289
+ try {
290
+ return await interactiveReview.startInteractiveFix(issues);
291
+ }
292
+ finally {
293
+ interactiveReview.destroy();
294
+ }
295
+ }
296
+ //# sourceMappingURL=InteractiveReview.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InteractiveReview.js","sourceRoot":"","sources":["../../../src/core/git/InteractiveReview.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,53 @@
1
+ export interface CacheKey {
2
+ filePath: string;
3
+ contentHash: string;
4
+ level: string;
5
+ timestamp: number;
6
+ }
7
+ export interface CacheEntry {
8
+ key: CacheKey;
9
+ result: any;
10
+ createdAt: number;
11
+ accessedAt: number;
12
+ accessCount: number;
13
+ }
14
+ export interface ReviewCacheConfig {
15
+ maxSize: number;
16
+ ttl: number;
17
+ cleanupInterval: number;
18
+ }
19
+ export declare class ReviewCache {
20
+ private cacheDir;
21
+ private config;
22
+ private memoryCache;
23
+ private cleanupTimer?;
24
+ private readyPromise;
25
+ private isCleaning;
26
+ private pathToKeyMap;
27
+ constructor(config?: Partial<ReviewCacheConfig>);
28
+ private init;
29
+ private hashContent;
30
+ private getCacheKey;
31
+ get(filePath: string, content: string, level: string, version?: string): Promise<any | null>;
32
+ set(filePath: string, content: string, level: string, result: any, version?: string): Promise<void>;
33
+ invalidate(filePath: string): Promise<void>;
34
+ clear(): Promise<void>;
35
+ getStats(): Promise<{
36
+ memorySize: number;
37
+ diskSize: number;
38
+ diskCount: number;
39
+ hitRate: number;
40
+ }>;
41
+ private isExpired;
42
+ private updateAccessStats;
43
+ private getFromDisk;
44
+ private saveToDisk;
45
+ private loadIndex;
46
+ private saveIndex;
47
+ private enforceSizeLimit;
48
+ private startCleanupTimer;
49
+ private cleanup;
50
+ destroy(): void;
51
+ }
52
+ export declare function getDefaultReviewCache(): ReviewCache;
53
+ export declare function destroyDefaultReviewCache(): void;