yuangs 5.34.0 → 5.36.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 (41) hide show
  1. package/README.md +1 -0
  2. package/dist/commands/git/auto.d.ts +5 -0
  3. package/dist/commands/git/auto.js +472 -0
  4. package/dist/commands/git/auto.js.map +1 -0
  5. package/dist/commands/git/exec.d.ts +5 -0
  6. package/dist/commands/git/exec.js +197 -0
  7. package/dist/commands/git/exec.js.map +1 -0
  8. package/dist/commands/git/plan.js +39 -2
  9. package/dist/commands/git/plan.js.map +1 -1
  10. package/dist/commands/git/review.js +13 -0
  11. package/dist/commands/git/review.js.map +1 -1
  12. package/dist/commands/gitCommands.js +5 -1
  13. package/dist/commands/gitCommands.js.map +1 -1
  14. package/dist/core/git/CodeGenerator.d.ts +49 -0
  15. package/dist/core/git/CodeGenerator.js +215 -0
  16. package/dist/core/git/CodeGenerator.js.map +1 -0
  17. package/dist/core/git/ContextGatherer.d.ts +40 -0
  18. package/dist/core/git/ContextGatherer.js +131 -0
  19. package/dist/core/git/ContextGatherer.js.map +1 -0
  20. package/dist/core/git/ErrorHandler.d.ts +54 -0
  21. package/dist/core/git/ErrorHandler.js +189 -0
  22. package/dist/core/git/ErrorHandler.js.map +1 -0
  23. package/dist/core/git/GitConfigManager.d.ts +101 -0
  24. package/dist/core/git/GitConfigManager.js +244 -0
  25. package/dist/core/git/GitConfigManager.js.map +1 -0
  26. package/dist/core/git/GitService.d.ts +12 -0
  27. package/dist/core/git/GitService.js +35 -0
  28. package/dist/core/git/GitService.js.map +1 -1
  29. package/dist/core/git/ProgressManager.d.ts +67 -0
  30. package/dist/core/git/ProgressManager.js +176 -0
  31. package/dist/core/git/ProgressManager.js.map +1 -0
  32. package/dist/core/git/TodoManager.d.ts +59 -0
  33. package/dist/core/git/TodoManager.js +295 -0
  34. package/dist/core/git/TodoManager.js.map +1 -0
  35. package/dist/core/git/constants.d.ts +17 -0
  36. package/dist/core/git/constants.js +21 -0
  37. package/dist/core/git/constants.js.map +1 -0
  38. package/dist/utils/syntaxHandler.d.ts +28 -0
  39. package/dist/utils/syntaxHandler.js +347 -46
  40. package/dist/utils/syntaxHandler.js.map +1 -1
  41. package/package.json +1 -1
package/README.md CHANGED
@@ -739,3 +739,4 @@ yuangs diff-edit status <id> # Check action status
739
739
 
740
740
  diff-edit使本项目有了质的变化。^-^
741
741
 
742
+ // test change
@@ -0,0 +1,5 @@
1
+ import { Command } from 'commander';
2
+ /**
3
+ * 注册 git auto 命令
4
+ */
5
+ export declare function registerAutoCommand(gitCmd: Command): void;
@@ -0,0 +1,472 @@
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.registerAutoCommand = registerAutoCommand;
40
+ const chalk_1 = __importDefault(require("chalk"));
41
+ const ora_1 = __importDefault(require("ora"));
42
+ const fs_1 = __importDefault(require("fs"));
43
+ const path_1 = __importDefault(require("path"));
44
+ const GitService_1 = require("../../core/git/GitService");
45
+ const llm_1 = require("../../agent/llm");
46
+ const TodoManager_1 = require("../../core/git/TodoManager");
47
+ const CodeReviewer_1 = require("../../core/git/CodeReviewer");
48
+ const constants_1 = require("../../core/git/constants");
49
+ const CodeGenerator_1 = require("../../core/git/CodeGenerator");
50
+ const CommitMessageGenerator_1 = require("../../core/git/CommitMessageGenerator");
51
+ const ErrorHandler_1 = require("../../core/git/ErrorHandler");
52
+ const ProgressManager_1 = require("../../core/git/ProgressManager");
53
+ const ContextGatherer_1 = require("../../core/git/ContextGatherer");
54
+ /**
55
+ * 执行单个任务
56
+ */
57
+ async function executeTask(task, context, model, previousFeedback) {
58
+ const prompt = [
59
+ {
60
+ role: 'system',
61
+ content: `你是一个资深软件工程师。请根据任务描述生成完整的代码实现。
62
+
63
+ **重要输出格式要求:**
64
+ 对于每个需要创建或修改的文件,请使用以下格式之一:
65
+
66
+ ### 文件: src/path/to/file.ts
67
+ \`\`\`typescript
68
+ // 完整的文件代码
69
+ \`\`\`
70
+
71
+ \`\`\`filepath
72
+ 文件路径
73
+ \`\`\`
74
+ \`\`\`code
75
+ 代码内容
76
+ \`\`\`
77
+
78
+ **src/path/to/file.ts**
79
+ \`\`\`typescript
80
+ // 代码内容
81
+ \`\`\`
82
+
83
+ ## 📄 文件:\`filename.ext\`
84
+ \`\`\`code
85
+ 代码内容
86
+ \`\`\`
87
+
88
+ ### 📄 文件:\`filename.ext\`
89
+ \`\`\`html
90
+ 代码内容
91
+ \`\`\`
92
+
93
+ 要求:
94
+ 1. 明确指出每个文件的完整路径
95
+ 2. 提供完整的、可直接使用的代码
96
+ 3. 包含必要的注释
97
+ 4. 遵循最佳实践
98
+ 5. 确保文件路径格式正确
99
+ 6. 使用代码块标识符(如 \`\`\`typescript, \`\`\`code, \`\`\`html 等)`
100
+ },
101
+ {
102
+ role: 'user',
103
+ content: `
104
+ [项目上下文]
105
+ ${context}
106
+
107
+ [当前任务]
108
+ ${task.description}
109
+
110
+ ${previousFeedback ? `\n[上次实现的问题]\n${previousFeedback}\n\n请根据以上反馈重新实现。` : ''}
111
+
112
+ 请生成完整的实现代码,并明确标注每个文件的路径。
113
+ `
114
+ }
115
+ ];
116
+ try {
117
+ const response = await (0, ErrorHandler_1.withRetry)(() => (0, llm_1.runLLM)({
118
+ prompt: { messages: prompt },
119
+ model,
120
+ stream: false,
121
+ bypassRouter: true
122
+ }), {
123
+ maxAttempts: 3,
124
+ delay: 1000,
125
+ backoff: true,
126
+ shouldRetry: ErrorHandler_1.isRetryableError,
127
+ onRetry: (error, attempt) => {
128
+ console.log(chalk_1.default.yellow(`⚠️ AI 调用失败,第 ${attempt} 次重试...`));
129
+ }
130
+ });
131
+ return { code: response.rawText, success: true };
132
+ }
133
+ catch (e) {
134
+ return { code: '', success: false };
135
+ }
136
+ }
137
+ /**
138
+ * 执行代码审查
139
+ */
140
+ async function reviewCode(staged = true) {
141
+ try {
142
+ const { CodeReviewer } = await Promise.resolve().then(() => __importStar(require('../../core/git/CodeReviewer')));
143
+ const { getRouter } = await Promise.resolve().then(() => __importStar(require('../../core/modelRouter')));
144
+ const gitService = new GitService_1.GitService();
145
+ const router = getRouter();
146
+ const reviewer = new CodeReviewer(gitService, router);
147
+ const result = await (0, ErrorHandler_1.withRetry)(() => reviewer.review(CodeReviewer_1.ReviewLevel.STANDARD, staged), {
148
+ maxAttempts: 2,
149
+ delay: 500,
150
+ backoff: true,
151
+ shouldRetry: ErrorHandler_1.isRetryableError,
152
+ onRetry: (error, attempt) => {
153
+ console.log(chalk_1.default.yellow(`⚠️ 代码审查失败,第 ${attempt} 次重试...`));
154
+ }
155
+ });
156
+ return {
157
+ score: result.score,
158
+ issues: result.issues.map(i => `${i.severity}: ${i.message}`)
159
+ };
160
+ }
161
+ catch (e) {
162
+ const errorMsg = e instanceof Error ? e.message : '未知错误';
163
+ console.warn(chalk_1.default.yellow(`⚠️ 代码审查失败: ${errorMsg}`));
164
+ // 审查失败时返回低分,避免掩盖问题
165
+ return {
166
+ score: constants_1.REVIEW_FAILURE_SCORE,
167
+ issues: [`审查系统错误: ${errorMsg}`],
168
+ error: errorMsg
169
+ };
170
+ }
171
+ }
172
+ /**
173
+ * 注册 git auto 命令
174
+ */
175
+ function registerAutoCommand(gitCmd) {
176
+ gitCmd
177
+ .command('auto')
178
+ .description('全自动工作流:plan → exec → review 循环')
179
+ .option('--max-tasks <number>', '最大执行任务数', '5')
180
+ .option('--model <model>', '指定 AI 模型', 'Assistant')
181
+ .option('--min-score <score>', '最低审查分数', '85')
182
+ .option('--skip-review', '跳过代码审查')
183
+ .option('--save-only', '只保存代码,不写入文件系统')
184
+ .option('--commit', '所有任务完成后自动提交')
185
+ .option('--commit-message <msg>', '自定义提交信息(使用 --commit 时生效)')
186
+ .action(async (options) => {
187
+ const todoPath = path_1.default.join(process.cwd(), 'todo.md');
188
+ const maxTasks = parseInt(options.maxTasks) || 5;
189
+ const minScore = parseInt(options.minScore) || constants_1.MIN_REVIEW_SCORE;
190
+ const progressManager = new ProgressManager_1.ProgressManager();
191
+ console.log(chalk_1.default.bold.cyan('\n🤖 启动全自动 AI 开发工作流...\n'));
192
+ console.log(chalk_1.default.gray(`📋 最大任务数: ${maxTasks}`));
193
+ console.log(chalk_1.default.gray(`🎯 最低审查分数: ${minScore}`));
194
+ console.log(chalk_1.default.gray(`🤖 AI 模型: ${options.model}\n`));
195
+ const spinner = (0, ora_1.default)('正在初始化...').start();
196
+ try {
197
+ // 1. 检查 todo.md 是否存在
198
+ await fs_1.default.promises.access(todoPath, fs_1.default.constants.F_OK);
199
+ // 2. 解析任务
200
+ const { metadata, tasks, rawContent } = await (0, TodoManager_1.parseTodoFile)(todoPath);
201
+ if (tasks.length === 0) {
202
+ spinner.fail('未找到任何任务');
203
+ console.log(chalk_1.default.yellow('💡 提示:请先运行 yuangs git plan 生成任务'));
204
+ return;
205
+ }
206
+ spinner.succeed(`发现 ${tasks.length} 个任务`);
207
+ const progress = (0, TodoManager_1.calculateProgress)(tasks);
208
+ console.log(chalk_1.default.cyan(`📊 当前进度: ${progress.completed}/${progress.total}\n`));
209
+ // 初始化进度管理器
210
+ await progressManager.initialize({
211
+ minScore,
212
+ skipReview: options.skipReview,
213
+ saveOnly: options.saveOnly,
214
+ commit: options.commit,
215
+ commitMessage: options.commitMessage
216
+ });
217
+ let tasksExecuted = 0;
218
+ // 3. 循环执行任务
219
+ while (tasksExecuted < maxTasks) {
220
+ const nextTask = (0, TodoManager_1.getNextTask)(tasks);
221
+ if (!nextTask) {
222
+ console.log(chalk_1.default.green('\n🎉 所有任务已完成!'));
223
+ break;
224
+ }
225
+ console.log(chalk_1.default.bold.cyan(`\n━━━ 任务 #${nextTask.index + 1} ━━━`));
226
+ console.log(chalk_1.default.white(`📝 ${nextTask.description}\n`));
227
+ let attempts = nextTask.attempts || 0;
228
+ let taskCompleted = false;
229
+ while (attempts <= constants_1.MAX_RETRY_ATTEMPTS && !taskCompleted) {
230
+ attempts++;
231
+ // 3a. 执行任务
232
+ spinner.start(`[尝试 ${attempts}/${constants_1.MAX_RETRY_ATTEMPTS + 1}] 正在生成代码...`);
233
+ await (0, TodoManager_1.updateTaskStatus)(todoPath, nextTask.index, {
234
+ execStatus: 'in_progress',
235
+ attempts
236
+ });
237
+ const previousFeedback = attempts > 1 && nextTask.reviewIssues
238
+ ? nextTask.reviewIssues.join('\n')
239
+ : undefined;
240
+ // 采集真实上下文
241
+ spinner.text = `[尝试 ${attempts}] 正在采集项目上下文...`;
242
+ const gitService = new GitService_1.GitService();
243
+ const gatherer = new ContextGatherer_1.ContextGatherer(gitService);
244
+ const gathered = await gatherer.gather(nextTask.description);
245
+ spinner.text = `[尝试 ${attempts}/${constants_1.MAX_RETRY_ATTEMPTS + 1}] 正在生成实现方案...`;
246
+ const { code, success } = await executeTask(nextTask, gathered.summary, options.model, previousFeedback);
247
+ if (!success) {
248
+ spinner.fail('代码生成失败');
249
+ await (0, TodoManager_1.updateTaskStatus)(todoPath, nextTask.index, {
250
+ execStatus: 'failed'
251
+ });
252
+ break;
253
+ }
254
+ spinner.succeed('代码已生成');
255
+ // 3b. 保存原始输出
256
+ const savedPath = await (0, CodeGenerator_1.saveRawOutput)(code, nextTask.index);
257
+ console.log(chalk_1.default.gray(`📄 原始输出已保存: ${path_1.default.relative(process.cwd(), savedPath)}`));
258
+ // 3c. 解析并写入代码
259
+ const generated = (0, CodeGenerator_1.parseGeneratedCode)(code);
260
+ if (generated.files.length > 0) {
261
+ console.log(chalk_1.default.cyan(`\n📦 检测到 ${generated.files.length} 个文件:\n`));
262
+ if (!options.saveOnly) {
263
+ // 写入前备份
264
+ spinner.start('正在备份当前文件状态...');
265
+ let backupId;
266
+ try {
267
+ const backup = await (0, CodeGenerator_1.backupFiles)(generated.files);
268
+ backupId = backup.id;
269
+ spinner.succeed('文件状态已备份');
270
+ }
271
+ catch (e) {
272
+ spinner.warn('备份失败,继续执行');
273
+ }
274
+ const { written, skipped } = await (0, CodeGenerator_1.writeGeneratedCode)(generated);
275
+ if (written.length > 0) {
276
+ console.log(chalk_1.default.green(`\n✅ 成功写入 ${written.length} 个文件`));
277
+ }
278
+ if (skipped.length > 0) {
279
+ console.log(chalk_1.default.yellow(`⚠️ 跳过 ${skipped.length} 个文件`));
280
+ }
281
+ // 保存备份ID
282
+ await (0, TodoManager_1.updateTaskStatus)(todoPath, nextTask.index, {
283
+ backupId
284
+ });
285
+ nextTask.backupId = backupId;
286
+ }
287
+ else {
288
+ console.log(chalk_1.default.gray(' (--save-only 模式,未写入文件系统)'));
289
+ generated.files.forEach(f => {
290
+ console.log(chalk_1.default.gray(` - ${f.path}`));
291
+ });
292
+ }
293
+ }
294
+ else {
295
+ console.log(chalk_1.default.yellow('\n⚠️ 未检测到可解析的文件路径和代码'));
296
+ console.log(chalk_1.default.yellow('\n💡 可能的原因:'));
297
+ console.log(chalk_1.default.gray(' 1. AI 输出格式不符合要求'));
298
+ console.log(chalk_1.default.gray(' 2. 文件路径标识不正确'));
299
+ console.log(chalk_1.default.gray(' 3. 代码块格式错误'));
300
+ console.log(chalk_1.default.cyan(`\n📄 原始输出文件: ${path_1.default.relative(process.cwd(), savedPath)}`));
301
+ console.log(chalk_1.default.gray('\n💡 提示:请检查原始输出文件,确认格式是否正确'));
302
+ console.log(chalk_1.default.gray('\n支持的格式: ### 文件: path, **path**, ```filepath/path```, ## 📄 文件:`path``'));
303
+ }
304
+ // 3b. 代码审查(如果未跳过)
305
+ if (!options.skipReview) {
306
+ spinner.start('正在进行代码审查...');
307
+ // 审查刚刚写入但尚未暂存的文件 (staged: false)
308
+ const review = await reviewCode(false);
309
+ spinner.succeed(`审查完成 (评分: ${review.score}/100)`);
310
+ await (0, TodoManager_1.updateTaskStatus)(todoPath, nextTask.index, {
311
+ reviewScore: review.score,
312
+ reviewIssues: review.issues
313
+ });
314
+ // 3c. 判断是否通过
315
+ if (review.score >= minScore) {
316
+ console.log(chalk_1.default.green(`✅ 审查通过!(${review.score} >= ${minScore})\n`));
317
+ taskCompleted = true;
318
+ await (0, TodoManager_1.updateTaskStatus)(todoPath, nextTask.index, {
319
+ completed: true,
320
+ execStatus: 'done'
321
+ });
322
+ nextTask.completed = true;
323
+ }
324
+ else {
325
+ console.log(chalk_1.default.yellow(`⚠️ 审查未通过 (${review.score} < ${minScore})`));
326
+ if (review.issues.length > 0) {
327
+ console.log(chalk_1.default.yellow('问题列表:'));
328
+ review.issues.forEach(issue => {
329
+ console.log(chalk_1.default.yellow(` • ${issue}`));
330
+ });
331
+ }
332
+ if (attempts <= constants_1.MAX_RETRY_ATTEMPTS) {
333
+ console.log(chalk_1.default.cyan(`\n🔄 将根据反馈重新生成...\n`));
334
+ }
335
+ else {
336
+ console.log(chalk_1.default.red(`\n❌ 已达最大重试次数,跳过此任务\n`));
337
+ // 回滚代码
338
+ if (nextTask.backupId) {
339
+ spinner.start('正在回滚代码变更...');
340
+ try {
341
+ await (0, CodeGenerator_1.restoreFromBackup)(nextTask.backupId);
342
+ spinner.succeed('代码已回滚');
343
+ }
344
+ catch (e) {
345
+ const errorMsg = e instanceof Error ? e.message : '未知错误';
346
+ spinner.warn(`回滚失败: ${errorMsg}`);
347
+ }
348
+ }
349
+ await (0, TodoManager_1.updateTaskStatus)(todoPath, nextTask.index, {
350
+ execStatus: 'failed'
351
+ });
352
+ }
353
+ }
354
+ }
355
+ else {
356
+ // 跳过审查,直接标记完成
357
+ console.log(chalk_1.default.gray('⏭️ 已跳过代码审查\n'));
358
+ taskCompleted = true;
359
+ await (0, TodoManager_1.updateTaskStatus)(todoPath, nextTask.index, {
360
+ completed: true,
361
+ execStatus: 'done'
362
+ });
363
+ nextTask.completed = true;
364
+ }
365
+ }
366
+ tasksExecuted++;
367
+ // 更新进度管理器
368
+ await progressManager.incrementTaskExecuted();
369
+ await progressManager.updateCurrentTask(nextTask.index + 1);
370
+ // 更新总体进度
371
+ const newProgress = (0, TodoManager_1.calculateProgress)(tasks);
372
+ await (0, TodoManager_1.updateMetadata)(todoPath, {
373
+ progress: newProgress,
374
+ currentTask: nextTask.index + 1
375
+ });
376
+ }
377
+ // 4. 总结
378
+ const finalProgress = (0, TodoManager_1.calculateProgress)(tasks);
379
+ console.log(chalk_1.default.bold.cyan('\n━━━━━━━━━━━━━━━━━━━━━━━━━━━'));
380
+ console.log(chalk_1.default.bold.cyan('📊 工作流执行完成'));
381
+ console.log(chalk_1.default.bold.cyan('━━━━━━━━━━━━━━━━━━━━━━━━━━━\n'));
382
+ console.log(chalk_1.default.white(`✅ 已完成: ${finalProgress.completed}/${finalProgress.total}`));
383
+ console.log(chalk_1.default.white(`🔄 本次执行: ${tasksExecuted} 个任务\n`));
384
+ if (finalProgress.completed < finalProgress.total) {
385
+ console.log(chalk_1.default.yellow('💡 提示:还有未完成的任务,可以再次运行 yuangs git auto 继续'));
386
+ }
387
+ // 导出进度报告
388
+ const reportMetadata = {
389
+ ...metadata,
390
+ progress: finalProgress
391
+ };
392
+ const reportPath = await progressManager.exportReport(reportMetadata);
393
+ console.log(chalk_1.default.gray(`\n📊 进度报告已保存: ${path_1.default.relative(process.cwd(), reportPath)}`));
394
+ // 清理状态
395
+ if (finalProgress.completed === finalProgress.total) {
396
+ await progressManager.clear();
397
+ }
398
+ if (options.commit && finalProgress.completed === finalProgress.total) {
399
+ // 5. 自动提交
400
+ const gitService = new GitService_1.GitService();
401
+ const isClean = await gitService.isWorkingTreeClean();
402
+ if (!isClean) {
403
+ console.log(chalk_1.default.cyan('🚀 准备自动提交...\n'));
404
+ // 暂存所有变更
405
+ spinner.start('正在暂存所有变更...');
406
+ await gitService.stageAll();
407
+ spinner.succeed('已暂存所有变更');
408
+ // 生成提交信息
409
+ let commitMessage;
410
+ if (options.commitMessage) {
411
+ commitMessage = options.commitMessage;
412
+ spinner.succeed('使用自定义提交信息');
413
+ }
414
+ else {
415
+ spinner.start('正在生成提交信息...');
416
+ const router = await (await Promise.resolve().then(() => __importStar(require('../../core/modelRouter')))).getRouter();
417
+ const commitGen = new CommitMessageGenerator_1.CommitMessageGenerator(gitService, router);
418
+ const commit = await commitGen.generate({ detailed: false });
419
+ commitMessage = commit.full;
420
+ spinner.succeed('提交信息已生成');
421
+ }
422
+ console.log(chalk_1.default.gray(`\n📝 提交信息:\n ${commitMessage}\n`));
423
+ // 执行提交
424
+ spinner.start('正在提交...');
425
+ try {
426
+ await gitService.commit(commitMessage);
427
+ spinner.succeed('提交成功!');
428
+ console.log(chalk_1.default.green('✅ 代码已自动提交到 Git 仓库'));
429
+ }
430
+ catch (error) {
431
+ spinner.fail('提交失败');
432
+ console.log(chalk_1.default.red(`错误: ${error.message}`));
433
+ console.log(chalk_1.default.yellow('💡 请手动提交代码'));
434
+ }
435
+ }
436
+ else {
437
+ console.log(chalk_1.default.yellow('\n⚠️ 没有需要提交的变更'));
438
+ }
439
+ }
440
+ else if (finalProgress.completed === finalProgress.total) {
441
+ console.log(chalk_1.default.cyan('\n💡 提示:所有任务已完成'));
442
+ console.log(chalk_1.default.gray(' 使用 --commit 选项可以自动提交代码'));
443
+ }
444
+ }
445
+ catch (e) {
446
+ if (e instanceof Error && e.code === 'ENOENT') {
447
+ spinner.fail('未找到 todo.md 文件');
448
+ console.log(chalk_1.default.yellow('\n💡 建议流程:'));
449
+ console.log(chalk_1.default.gray(' 1. yuangs git plan "你的需求" # 生成任务清单'));
450
+ console.log(chalk_1.default.gray(' 2. yuangs git auto # 启动自动化工作流\n'));
451
+ }
452
+ else if (e instanceof llm_1.AIError) {
453
+ spinner.fail((0, ErrorHandler_1.formatError)(e, 'AI 调用失败'));
454
+ const suggestion = (0, ErrorHandler_1.getSuggestion)(e);
455
+ if (suggestion) {
456
+ console.log(chalk_1.default.yellow(`💡 ${suggestion}`));
457
+ }
458
+ }
459
+ else if (e instanceof Error) {
460
+ spinner.fail((0, ErrorHandler_1.formatError)(e, '执行失败'));
461
+ const suggestion = (0, ErrorHandler_1.getSuggestion)(e);
462
+ if (suggestion) {
463
+ console.log(chalk_1.default.yellow(`💡 ${suggestion}`));
464
+ }
465
+ }
466
+ else {
467
+ spinner.fail('未知错误');
468
+ }
469
+ }
470
+ });
471
+ }
472
+ //# sourceMappingURL=auto.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auto.js","sourceRoot":"","sources":["../../../src/commands/git/auto.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import { Command } from 'commander';
2
+ /**
3
+ * 注册 git exec 命令
4
+ */
5
+ export declare function registerExecCommand(gitCmd: Command): void;