@xdevops/issue-auto-finish 1.0.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/bin/issue-auto-finish.js +2 -0
- package/dist/ai-runner/AIRunner.d.ts +27 -0
- package/dist/ai-runner/AIRunner.d.ts.map +1 -0
- package/dist/ai-runner/BaseAIRunner.d.ts +19 -0
- package/dist/ai-runner/BaseAIRunner.d.ts.map +1 -0
- package/dist/ai-runner/ClaudeInternalRunner.d.ts +13 -0
- package/dist/ai-runner/ClaudeInternalRunner.d.ts.map +1 -0
- package/dist/ai-runner/CodebuddyRunner.d.ts +13 -0
- package/dist/ai-runner/CodebuddyRunner.d.ts.map +1 -0
- package/dist/ai-runner/CursorAgentRunner.d.ts +13 -0
- package/dist/ai-runner/CursorAgentRunner.d.ts.map +1 -0
- package/dist/ai-runner/index.d.ts +15 -0
- package/dist/ai-runner/index.d.ts.map +1 -0
- package/dist/chunk-HCHEFK4Z.js +80 -0
- package/dist/chunk-HCHEFK4Z.js.map +1 -0
- package/dist/chunk-I3T573SU.js +153 -0
- package/dist/chunk-I3T573SU.js.map +1 -0
- package/dist/chunk-IDUKWCC2.js +1995 -0
- package/dist/chunk-IDUKWCC2.js.map +1 -0
- package/dist/chunk-OWVT3Z34.js +770 -0
- package/dist/chunk-OWVT3Z34.js.map +1 -0
- package/dist/chunk-RIUI4ROA.js +180 -0
- package/dist/chunk-RIUI4ROA.js.map +1 -0
- package/dist/chunk-TBIEB3JY.js +3295 -0
- package/dist/chunk-TBIEB3JY.js.map +1 -0
- package/dist/cli/commands/doctor.d.ts +2 -0
- package/dist/cli/commands/doctor.d.ts.map +1 -0
- package/dist/cli/commands/init.d.ts +6 -0
- package/dist/cli/commands/init.d.ts.map +1 -0
- package/dist/cli/commands/start.d.ts +5 -0
- package/dist/cli/commands/start.d.ts.map +1 -0
- package/dist/cli/index.d.ts +3 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/setup/ConfigGenerator.d.ts +44 -0
- package/dist/cli/setup/ConfigGenerator.d.ts.map +1 -0
- package/dist/cli/setup/DependencyChecker.d.ts +21 -0
- package/dist/cli/setup/DependencyChecker.d.ts.map +1 -0
- package/dist/cli.js +73 -0
- package/dist/cli.js.map +1 -0
- package/dist/clients/GongfengClient.d.ts +86 -0
- package/dist/clients/GongfengClient.d.ts.map +1 -0
- package/dist/config.d.ts +92 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/deploy/DevServerManager.d.ts +21 -0
- package/dist/deploy/DevServerManager.d.ts.map +1 -0
- package/dist/deploy/PortAllocator.d.ts +20 -0
- package/dist/deploy/PortAllocator.d.ts.map +1 -0
- package/dist/deploy/index.d.ts +3 -0
- package/dist/deploy/index.d.ts.map +1 -0
- package/dist/doctor-B26Q6JWI.js +33 -0
- package/dist/doctor-B26Q6JWI.js.map +1 -0
- package/dist/e2e/E2eSettings.d.ts +6 -0
- package/dist/e2e/E2eSettings.d.ts.map +1 -0
- package/dist/e2e/ScreenshotCollector.d.ts +11 -0
- package/dist/e2e/ScreenshotCollector.d.ts.map +1 -0
- package/dist/e2e/ScreenshotPublisher.d.ts +16 -0
- package/dist/e2e/ScreenshotPublisher.d.ts.map +1 -0
- package/dist/events/EventBus.d.ts +14 -0
- package/dist/events/EventBus.d.ts.map +1 -0
- package/dist/git/GitOperations.d.ts +30 -0
- package/dist/git/GitOperations.d.ts.map +1 -0
- package/dist/git/WorktreeContext.d.ts +9 -0
- package/dist/git/WorktreeContext.d.ts.map +1 -0
- package/dist/i18n/index.d.ts +8 -0
- package/dist/i18n/index.d.ts.map +1 -0
- package/dist/i18n/locales/en.d.ts +2 -0
- package/dist/i18n/locales/en.d.ts.map +1 -0
- package/dist/i18n/locales/zh-CN.d.ts +2 -0
- package/dist/i18n/locales/zh-CN.d.ts.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +12 -0
- package/dist/index.js.map +1 -0
- package/dist/init-L3VIWCOV.js +65 -0
- package/dist/init-L3VIWCOV.js.map +1 -0
- package/dist/lib.d.ts +26 -0
- package/dist/lib.d.ts.map +1 -0
- package/dist/lib.js +50 -0
- package/dist/lib.js.map +1 -0
- package/dist/logger.d.ts +15 -0
- package/dist/logger.d.ts.map +1 -0
- package/dist/notesync/NoteSyncSettings.d.ts +12 -0
- package/dist/notesync/NoteSyncSettings.d.ts.map +1 -0
- package/dist/orchestrator/PipelineOrchestrator.d.ts +53 -0
- package/dist/orchestrator/PipelineOrchestrator.d.ts.map +1 -0
- package/dist/persistence/PlanPersistence.d.ts +37 -0
- package/dist/persistence/PlanPersistence.d.ts.map +1 -0
- package/dist/phases/AnalysisPhase.d.ts +13 -0
- package/dist/phases/AnalysisPhase.d.ts.map +1 -0
- package/dist/phases/BasePhase.d.ts +44 -0
- package/dist/phases/BasePhase.d.ts.map +1 -0
- package/dist/phases/BuildPhase.d.ts +9 -0
- package/dist/phases/BuildPhase.d.ts.map +1 -0
- package/dist/phases/DesignPhase.d.ts +13 -0
- package/dist/phases/DesignPhase.d.ts.map +1 -0
- package/dist/phases/ImplementPhase.d.ts +9 -0
- package/dist/phases/ImplementPhase.d.ts.map +1 -0
- package/dist/phases/PhaseFactory.d.ts +13 -0
- package/dist/phases/PhaseFactory.d.ts.map +1 -0
- package/dist/phases/PlanPhase.d.ts +14 -0
- package/dist/phases/PlanPhase.d.ts.map +1 -0
- package/dist/phases/VerifyPhase.d.ts +13 -0
- package/dist/phases/VerifyPhase.d.ts.map +1 -0
- package/dist/pipeline/PipelineDefinition.d.ts +40 -0
- package/dist/pipeline/PipelineDefinition.d.ts.map +1 -0
- package/dist/poller/IssuePoller.d.ts +26 -0
- package/dist/poller/IssuePoller.d.ts.map +1 -0
- package/dist/prompts/brainstorm-templates.d.ts +4 -0
- package/dist/prompts/brainstorm-templates.d.ts.map +1 -0
- package/dist/prompts/templates.d.ts +27 -0
- package/dist/prompts/templates.d.ts.map +1 -0
- package/dist/rules/RuleResolver.d.ts +13 -0
- package/dist/rules/RuleResolver.d.ts.map +1 -0
- package/dist/rules/index.d.ts +3 -0
- package/dist/rules/index.d.ts.map +1 -0
- package/dist/run.d.ts +2 -0
- package/dist/run.d.ts.map +1 -0
- package/dist/run.js +15 -0
- package/dist/run.js.map +1 -0
- package/dist/services/BrainstormService.d.ts +39 -0
- package/dist/services/BrainstormService.d.ts.map +1 -0
- package/dist/start-TVN4SS6E.js +25 -0
- package/dist/start-TVN4SS6E.js.map +1 -0
- package/dist/supplement/SupplementStore.d.ts +21 -0
- package/dist/supplement/SupplementStore.d.ts.map +1 -0
- package/dist/tracker/IssueState.d.ts +63 -0
- package/dist/tracker/IssueState.d.ts.map +1 -0
- package/dist/tracker/IssueTracker.d.ts +29 -0
- package/dist/tracker/IssueTracker.d.ts.map +1 -0
- package/dist/utils/AsyncMutex.d.ts +14 -0
- package/dist/utils/AsyncMutex.d.ts.map +1 -0
- package/dist/utils/MergeRequestHelper.d.ts +10 -0
- package/dist/utils/MergeRequestHelper.d.ts.map +1 -0
- package/dist/web/AgentLogStore.d.ts +22 -0
- package/dist/web/AgentLogStore.d.ts.map +1 -0
- package/dist/web/WebServer.d.ts +26 -0
- package/dist/web/WebServer.d.ts.map +1 -0
- package/dist/web/routes/api.d.ts +20 -0
- package/dist/web/routes/api.d.ts.map +1 -0
- package/dist/web/routes/brainstorm.d.ts +9 -0
- package/dist/web/routes/brainstorm.d.ts.map +1 -0
- package/dist/web/routes/setup.d.ts +8 -0
- package/dist/web/routes/setup.d.ts.map +1 -0
- package/dist/webhook/CommandExecutor.d.ts +45 -0
- package/dist/webhook/CommandExecutor.d.ts.map +1 -0
- package/dist/webhook/CommandParser.d.ts +24 -0
- package/dist/webhook/CommandParser.d.ts.map +1 -0
- package/dist/webhook/IntentRecognizer.d.ts +35 -0
- package/dist/webhook/IntentRecognizer.d.ts.map +1 -0
- package/dist/webhook/NoteDeduplicator.d.ts +18 -0
- package/dist/webhook/NoteDeduplicator.d.ts.map +1 -0
- package/dist/webhook/WebhookHandler.d.ts +30 -0
- package/dist/webhook/WebhookHandler.d.ts.map +1 -0
- package/dist/webhook/WebhookServer.d.ts +21 -0
- package/dist/webhook/WebhookServer.d.ts.map +1 -0
- package/dist/webhook/index.d.ts +12 -0
- package/dist/webhook/index.d.ts.map +1 -0
- package/package.json +82 -0
- package/src/web/frontend/dist/assets/index-CQdlU9PE.js +65 -0
- package/src/web/frontend/dist/assets/index-CgMEkyZJ.css +1 -0
- package/src/web/frontend/dist/index.html +13 -0
|
@@ -0,0 +1,770 @@
|
|
|
1
|
+
// src/i18n/locales/zh-CN.ts
|
|
2
|
+
var zhCN = {
|
|
3
|
+
// Phase labels
|
|
4
|
+
"phase.analysis": "\u5206\u6790",
|
|
5
|
+
"phase.design": "\u8BBE\u8BA1",
|
|
6
|
+
"phase.implement": "\u5B9E\u73B0",
|
|
7
|
+
"phase.verify": "\u9A8C\u8BC1",
|
|
8
|
+
"phase.plan": "\u89C4\u5212",
|
|
9
|
+
"phase.build": "\u5B9E\u65BD",
|
|
10
|
+
"phase.review": "\u5BA1\u6838",
|
|
11
|
+
// Pipeline phase labels (used in PipelineDefinition)
|
|
12
|
+
"pipeline.phase.analysis": "\u5206\u6790",
|
|
13
|
+
"pipeline.phase.design": "\u8BBE\u8BA1",
|
|
14
|
+
"pipeline.phase.implement": "\u5B9E\u65BD",
|
|
15
|
+
"pipeline.phase.verify": "\u9A8C\u8BC1",
|
|
16
|
+
"pipeline.phase.plan": "\u89C4\u5212",
|
|
17
|
+
"pipeline.phase.review": "\u5BA1\u6838",
|
|
18
|
+
"pipeline.phase.build": "\u5B9E\u65BD",
|
|
19
|
+
// Plan file labels
|
|
20
|
+
"planFile.01-analysis.md": "\u9700\u6C42\u5206\u6790",
|
|
21
|
+
"planFile.02-design.md": "\u7CFB\u7EDF\u8BBE\u8BA1",
|
|
22
|
+
"planFile.03-todolist.md": "\u5B9E\u65BD\u6E05\u5355",
|
|
23
|
+
"planFile.04-verify-report.md": "\u9A8C\u8BC1\u62A5\u544A",
|
|
24
|
+
"planFile.01-plan.md": "\u5B9E\u65BD\u8BA1\u5212",
|
|
25
|
+
"planFile.02-verify-report.md": "\u9A8C\u8BC1\u62A5\u544A",
|
|
26
|
+
"planFile.review-feedback.md": "\u5BA1\u6838\u53CD\u9988",
|
|
27
|
+
"planFile.review-history.json": "\u5BA1\u6838\u5386\u53F2",
|
|
28
|
+
// State labels (from collectStateLabels)
|
|
29
|
+
"state.pending": "\u5F85\u5904\u7406",
|
|
30
|
+
"state.branchCreated": "\u5206\u652F\u5DF2\u521B\u5EFA",
|
|
31
|
+
"state.completed": "\u5DF2\u5B8C\u6210",
|
|
32
|
+
"state.failed": "\u5931\u8D25",
|
|
33
|
+
"state.phaseDoing": "{label}\u4E2D",
|
|
34
|
+
"state.phaseDone": "{label}\u5B8C\u6210",
|
|
35
|
+
"state.phaseApproved": "{label}\u901A\u8FC7",
|
|
36
|
+
// Orchestrator messages
|
|
37
|
+
"orchestrator.retryComment": "\u{1F504} **\u81EA\u52A8\u5904\u7406\u91CD\u8BD5\u4E2D**\n\n\u68C0\u6D4B\u5230\u4E4B\u524D\u5904\u7406\u5931\u8D25\uFF0C\u6B63\u5728\u91CD\u8BD5...",
|
|
38
|
+
"orchestrator.startComment": "\u{1F680} **\u81EA\u52A8\u5904\u7406\u5F00\u59CB**\n\n\u5DF2\u68C0\u6D4B\u5230 `auto-finish` \u6807\u7B7E\uFF0C\u5F00\u59CB\u81EA\u52A8\u5206\u6790\u548C\u5B9E\u65BD\u3002",
|
|
39
|
+
"orchestrator.fetchProgress": "\u6B63\u5728\u62C9\u53D6\u6700\u65B0\u4EE3\u7801...",
|
|
40
|
+
"orchestrator.worktreeProgress": "\u6B63\u5728\u51C6\u5907\u5DE5\u4F5C\u76EE\u5F55...",
|
|
41
|
+
"orchestrator.installProgress": "\u6B63\u5728\u5B89\u88C5\u9879\u76EE\u4F9D\u8D56 (pnpm install)...",
|
|
42
|
+
"orchestrator.initPlanProgress": "\u6B63\u5728\u521D\u59CB\u5316\u8BA1\u5212\u76EE\u5F55...",
|
|
43
|
+
"orchestrator.phaseStartProgress": "\u51C6\u5907\u5C31\u7EEA\uFF0C\u5F00\u59CB\u6267\u884C\u9636\u6BB5 (\u4ECE {phase} \u5F00\u59CB)...",
|
|
44
|
+
"orchestrator.autoApproveComment": "\u26A1 **\u5BA1\u6838\u81EA\u52A8\u901A\u8FC7**\n\n\u68C0\u6D4B\u5230\u6807\u7B7E\u5339\u914D `autoApproveLabels` \u914D\u7F6E\uFF0C\u5DF2\u81EA\u52A8\u8DF3\u8FC7\u5BA1\u6838\u8FDB\u5165\u5B9E\u65BD\u9636\u6BB5\u3002",
|
|
45
|
+
"orchestrator.createMrProgress": "\u6B63\u5728\u521B\u5EFA\u5408\u5E76\u8BF7\u6C42...",
|
|
46
|
+
"orchestrator.uploadScreenshotsProgress": "\u6B63\u5728\u4E0A\u4F20 E2E \u622A\u56FE...",
|
|
47
|
+
"orchestrator.mrSection": "\n\n\u{1F517} \u5408\u5E76\u8BF7\u6C42: {mrUrl}",
|
|
48
|
+
"orchestrator.mrFailSection": "\n\n\u26A0\uFE0F \u5408\u5E76\u8BF7\u6C42\u521B\u5EFA\u5931\u8D25\uFF0C\u8BF7\u624B\u52A8\u521B\u5EFA\u3002",
|
|
49
|
+
"orchestrator.completedComment": "\u2705 **\u81EA\u52A8\u5904\u7406\u5B8C\u6210**\n\n\u6240\u6709\u9636\u6BB5\u5DF2\u5B8C\u6210\u3002\u5206\u652F: `{branch}`{mrSection}{previewSection}",
|
|
50
|
+
"orchestrator.failedComment": "\u274C **\u81EA\u52A8\u5904\u7406\u5931\u8D25**\n\n{error}\n\n\u5C06\u5728\u4E0B\u6B21\u8F6E\u8BE2\u65F6\u91CD\u8BD5\uFF08\u5982\u679C\u672A\u8D85\u8FC7\u6700\u5927\u91CD\u8BD5\u6B21\u6570\uFF09\u3002",
|
|
51
|
+
"orchestrator.deployProgress": "\u6B63\u5728\u542F\u52A8 Preview \u73AF\u5883...",
|
|
52
|
+
"orchestrator.deployDoneProgress": "Preview \u73AF\u5883\u5DF2\u5C31\u7EEA: {url}",
|
|
53
|
+
"orchestrator.previewComment.title": "\u{1F310} **Preview Environment \u5DF2\u5C31\u7EEA**",
|
|
54
|
+
"orchestrator.previewComment.tableHeader": "| \u7EC4\u4EF6 | \u5730\u5740 |",
|
|
55
|
+
"orchestrator.previewComment.tableSep": "|------|------|",
|
|
56
|
+
"orchestrator.previewComment.frontend": "\u524D\u7AEF",
|
|
57
|
+
"orchestrator.previewComment.backendApi": "\u540E\u7AEF API",
|
|
58
|
+
"orchestrator.previewComment.hint": "\u53EF\u76F4\u63A5\u8BBF\u95EE\u524D\u7AEF\u94FE\u63A5\u4F53\u9A8C\u672C\u6B21\u53D8\u66F4\u3002",
|
|
59
|
+
"orchestrator.previewComment.expiry": "Preview \u5C06\u5728 MR \u5408\u5E76\u540E\u81EA\u52A8\u6E05\u7406\uFF0C\u6216 {hours}h \u540E\u8FC7\u671F\u3002",
|
|
60
|
+
// BasePhase messages
|
|
61
|
+
"basePhase.aiStarting": "\u6B63\u5728\u542F\u52A8 AI Agent ({label})...",
|
|
62
|
+
"basePhase.rulesSection": "## \u9879\u76EE\u5F00\u53D1\u89C4\u8303\u53C2\u8003\n\u4EE5\u4E0B\u662F\u4E0E\u672C\u6B21\u4EFB\u52A1\u76F8\u5173\u7684\u5F00\u53D1\u89C4\u8303\uFF0C\u8BF7\u5728\u7F16\u7801\u65F6\u4E25\u683C\u9075\u5FAA\uFF1A\n\n{rules}",
|
|
63
|
+
"basePhase.error": "\u9519\u8BEF: {message}",
|
|
64
|
+
// IssuePoller messages
|
|
65
|
+
"poller.autoApproveComment": "\u26A1 **\u5BA1\u6838\u81EA\u52A8\u901A\u8FC7**\n\n\u68C0\u6D4B\u5230\u6807\u7B7E\u5339\u914D `autoApproveLabels` \u914D\u7F6E\uFF08\u5339\u914D: {labels}\uFF09\uFF0C\u5DF2\u81EA\u52A8\u8DF3\u8FC7\u5BA1\u6838\u8FDB\u5165\u5B9E\u65BD\u9636\u6BB5\u3002",
|
|
66
|
+
// Progress comment
|
|
67
|
+
"progress.completed": "\u5DF2\u5B8C\u6210",
|
|
68
|
+
"progress.failed": "\u5931\u8D25",
|
|
69
|
+
"progress.inProgress": "\u8FDB\u884C\u4E2D",
|
|
70
|
+
"progress.comment": "{icon} **\u81EA\u52A8\u5904\u7406\u8FDB\u5EA6\u66F4\u65B0**\n\n\u9636\u6BB5: **{phase}** \u2014 {status}",
|
|
71
|
+
// NoteSync messages
|
|
72
|
+
"notesync.phaseCompleted": "{icon} **{label}\u9636\u6BB5\u5B8C\u6210**",
|
|
73
|
+
"notesync.viewDoc": "\u{1F4C4} [\u67E5\u770B\u5B8C\u6574{label}\u6587\u6863]({url})",
|
|
74
|
+
"notesync.viewDashboard": "\u{1F4CA} [\u5728\u7BA1\u7406\u9762\u677F\u4E2D\u67E5\u770B\u8BE6\u60C5]({url})",
|
|
75
|
+
// MergeRequest messages
|
|
76
|
+
"mr.relatedIssue": "## \u5173\u8054 Issue",
|
|
77
|
+
"mr.title": "\u6807\u9898",
|
|
78
|
+
"mr.branch": "\u5206\u652F",
|
|
79
|
+
"mr.issueDescription": "## Issue \u63CF\u8FF0",
|
|
80
|
+
"mr.noDescription": "\uFF08\u65E0\u63CF\u8FF0\uFF09",
|
|
81
|
+
"mr.summaryFiles.01-analysis.md": "\u9700\u6C42\u5206\u6790",
|
|
82
|
+
"mr.summaryFiles.01-plan.md": "\u5B9E\u65BD\u8BA1\u5212",
|
|
83
|
+
"mr.summaryFiles.02-design.md": "\u7CFB\u7EDF\u8BBE\u8BA1",
|
|
84
|
+
"mr.summaryFiles.04-verify-report.md": "\u9A8C\u8BC1\u62A5\u544A",
|
|
85
|
+
"mr.summaryFiles.02-verify-report.md": "\u9A8C\u8BC1\u62A5\u544A",
|
|
86
|
+
"mr.aiSummary": "## AI \u4EA7\u7269\u6458\u8981",
|
|
87
|
+
"mr.autoCreated": "*\u6B64 MR \u7531 Issue Auto-Finish \u7CFB\u7EDF\u81EA\u52A8\u521B\u5EFA*",
|
|
88
|
+
"mr.truncated": "...\uFF08\u5DF2\u622A\u65AD\uFF09",
|
|
89
|
+
// Screenshot messages
|
|
90
|
+
"screenshot.title": "\u{1F4F8} **E2E \u6D4B\u8BD5\u622A\u56FE**",
|
|
91
|
+
"screenshot.truncated": "> \u26A0\uFE0F \u622A\u56FE\u6570\u91CF\u8FC7\u591A\uFF0C\u4EC5\u5C55\u793A\u524D 20 \u5F20\u3002",
|
|
92
|
+
// Webhook handler
|
|
93
|
+
"webhook.helpText": [
|
|
94
|
+
"\u65E0\u6CD5\u8BC6\u522B\u6307\u4EE4\uFF0C\u652F\u6301\u4EE5\u4E0B\u547D\u4EE4\uFF1A",
|
|
95
|
+
"",
|
|
96
|
+
"| \u547D\u4EE4 | \u8BF4\u660E |",
|
|
97
|
+
"| --- | --- |",
|
|
98
|
+
"| `@issue-auto status` / `\u72B6\u6001` | \u67E5\u8BE2\u5F53\u524D\u5904\u7406\u72B6\u6001 |",
|
|
99
|
+
"| `@issue-auto retry` / `\u91CD\u8BD5` | \u4ECE\u5931\u8D25\u5904\u91CD\u8BD5 |",
|
|
100
|
+
"| `@issue-auto retry-from <\u9636\u6BB5>` | \u4ECE\u6307\u5B9A\u9636\u6BB5\u91CD\u8BD5 |",
|
|
101
|
+
"| `@issue-auto restart` / `\u91CD\u65B0\u5F00\u59CB` | \u5B8C\u5168\u91CD\u505A |",
|
|
102
|
+
"| `@issue-auto approve` / `\u901A\u8FC7` | \u6279\u51C6\u5F53\u524D\u65B9\u6848 |",
|
|
103
|
+
"| `@issue-auto reject <\u539F\u56E0>` / `\u9A73\u56DE\uFF1A<\u539F\u56E0>` | \u9A73\u56DE\u65B9\u6848 |",
|
|
104
|
+
"| `@issue-auto supplement <\u5185\u5BB9>` / `\u8865\u5145\uFF1A<\u5185\u5BB9>` | \u8865\u5145\u4E0A\u4E0B\u6587 |",
|
|
105
|
+
"| `@issue-auto clean-notes` / `\u6E05\u7406\u8BC4\u8BBA` | \u5220\u9664 Agent \u5386\u53F2\u8BC4\u8BBA |"
|
|
106
|
+
].join("\n"),
|
|
107
|
+
// Command executor
|
|
108
|
+
"cmd.previewNotStarted": "Issue #{iid} \u5C1A\u672A\u542F\u52A8 Preview \u73AF\u5883\u3002\nPreview \u4F1A\u5728\u4EE3\u7801\u5B9E\u73B0\u5B8C\u6210\u540E\u81EA\u52A8\u542F\u52A8\uFF08\u9700\u542F\u7528 E2E \u6216 Preview \u914D\u7F6E\uFF09\u3002",
|
|
109
|
+
"cmd.previewStopped": "\u23F9 \u5DF2\u505C\u6B62",
|
|
110
|
+
"cmd.previewRunning": "\u2705 \u8FD0\u884C\u4E2D",
|
|
111
|
+
"cmd.previewTable.component": "\u7EC4\u4EF6",
|
|
112
|
+
"cmd.previewTable.address": "\u5730\u5740",
|
|
113
|
+
"cmd.previewTable.frontend": "\u524D\u7AEF",
|
|
114
|
+
"cmd.previewTable.backendApi": "\u540E\u7AEF API",
|
|
115
|
+
"cmd.previewTable.status": "\u72B6\u6001",
|
|
116
|
+
"cmd.previewTable.startedAt": "\u542F\u52A8\u4E8E",
|
|
117
|
+
"cmd.noPreview": "Issue #{iid} \u6CA1\u6709\u6B63\u5728\u8FD0\u884C\u7684 Preview \u73AF\u5883\u3002",
|
|
118
|
+
"cmd.previewStoppedMsg": "Issue #{iid} \u7684 Preview \u73AF\u5883\u5DF2\u505C\u6B62\u3002",
|
|
119
|
+
"cmd.cleanNotesSuccess": "\u{1F9F9} \u5DF2\u6E05\u7406 {count} \u6761 Agent \u8BC4\u8BBA\u3002",
|
|
120
|
+
// Intent recognizer
|
|
121
|
+
"intent.systemPrompt": `\u4F60\u662F\u4E00\u4E2A\u6307\u4EE4\u89E3\u6790\u52A9\u624B\u3002\u7528\u6237\u4F1A\u5728\u5DE5\u8702(GitLab) Issue \u8BC4\u8BBA\u4E2D\u7528\u81EA\u7136\u8BED\u8A00\u63CF\u8FF0\u4ED6\u4EEC\u60F3\u8BA9\u81EA\u52A8\u5316\u7CFB\u7EDF\u505A\u4EC0\u4E48\u3002
|
|
122
|
+
\u4F60\u9700\u8981\u4ECE\u7528\u6237\u7684\u8BC4\u8BBA\u4E2D\u63D0\u53D6\u51FA\u7ED3\u6784\u5316\u7684\u6307\u4EE4\u3002
|
|
123
|
+
|
|
124
|
+
\u53EF\u7528\u7684 intent:
|
|
125
|
+
- retry: \u91CD\u8BD5\u5931\u8D25\u7684\u4EFB\u52A1\uFF08\u4ECE\u4E0A\u6B21\u5931\u8D25\u7684\u5730\u65B9\u7EE7\u7EED\uFF09
|
|
126
|
+
- retry-from: \u4ECE\u6307\u5B9A\u9636\u6BB5\u91CD\u65B0\u5F00\u59CB\uFF08\u9700\u8981\u63D0\u53D6 phase\uFF09
|
|
127
|
+
- supplement: \u8865\u5145\u989D\u5916\u7684\u9700\u6C42\u4FE1\u606F\u6216\u4E0A\u4E0B\u6587
|
|
128
|
+
- approve: \u6279\u51C6/\u901A\u8FC7\u5F53\u524D\u7684\u8BBE\u8BA1\u65B9\u6848
|
|
129
|
+
- reject: \u9A73\u56DE\u5F53\u524D\u65B9\u6848\uFF08\u9700\u8981\u63D0\u53D6 feedback\uFF09
|
|
130
|
+
- status: \u67E5\u8BE2\u5F53\u524D\u5904\u7406\u72B6\u6001
|
|
131
|
+
- restart: \u4ECE\u5934\u5F00\u59CB\uFF0C\u5B8C\u5168\u91CD\u505A
|
|
132
|
+
|
|
133
|
+
\u53EF\u7528\u7684 phase\uFF08\u4EC5 retry-from \u65F6\u9700\u8981\uFF09:
|
|
134
|
+
- analysis: \u9700\u6C42\u5206\u6790\u9636\u6BB5
|
|
135
|
+
- design: \u7CFB\u7EDF\u8BBE\u8BA1\u9636\u6BB5
|
|
136
|
+
- implement: \u4EE3\u7801\u5B9E\u65BD\u9636\u6BB5
|
|
137
|
+
- verify: \u9A8C\u8BC1\u6D4B\u8BD5\u9636\u6BB5
|
|
138
|
+
- plan: \u89C4\u5212\u9636\u6BB5
|
|
139
|
+
- build: \u6784\u5EFA\u9636\u6BB5
|
|
140
|
+
|
|
141
|
+
\u89C4\u5219:
|
|
142
|
+
1. \u5982\u679C\u7528\u6237\u540C\u65F6\u8868\u8FBE\u4E86"\u91CD\u8BD5"\u548C"\u8865\u5145\u4FE1\u606F"\uFF0C\u4F18\u5148\u4F7F\u7528 retry-from \u6216 retry \u4F5C\u4E3A intent\uFF0C\u628A\u8865\u5145\u4FE1\u606F\u653E\u5728 context \u5B57\u6BB5
|
|
143
|
+
2. \u5982\u679C\u7528\u6237\u53EA\u662F\u5728\u8865\u5145\u8BF4\u660E\u3001\u63D0\u4F9B\u989D\u5916\u4FE1\u606F\uFF0C\u4F7F\u7528 supplement
|
|
144
|
+
3. feedback \u5B57\u6BB5\u4EC5\u7528\u4E8E reject \u610F\u56FE
|
|
145
|
+
4. \u5982\u679C\u65E0\u6CD5\u5224\u65AD\u7528\u6237\u610F\u56FE\uFF0C\u8FD4\u56DE null
|
|
146
|
+
|
|
147
|
+
\u4E25\u683C\u6309\u4EE5\u4E0B JSON \u683C\u5F0F\u8FD4\u56DE\uFF0C\u4E0D\u8981\u6DFB\u52A0\u4EFB\u4F55\u5176\u4ED6\u6587\u5B57:
|
|
148
|
+
{"intent":"...","phase":"...\u6216null","context":"...\u6216null","feedback":"...\u6216null"}`,
|
|
149
|
+
// API routes
|
|
150
|
+
"api.invalidFilename": "\u65E0\u6548\u7684\u6587\u4EF6\u540D",
|
|
151
|
+
"api.docNotGenerated": "\u6587\u6863\u5C1A\u672A\u751F\u6210",
|
|
152
|
+
"api.viewInDashboard": "\u5728\u7BA1\u7406\u9762\u677F\u4E2D\u67E5\u770B",
|
|
153
|
+
"api.reviewFeedback": "\u{1F440} **\u65B9\u6848\u5BA1\u6838\u53CD\u9988\uFF08\u7B2C {round} \u8F6E\uFF09**",
|
|
154
|
+
"api.viewPlan": "\u{1F4C4} [\u67E5\u770B\u5B9E\u65BD\u8BA1\u5212]({url})",
|
|
155
|
+
"api.viewDetail": "\u{1F4CA} [\u5728\u7BA1\u7406\u9762\u677F\u4E2D\u67E5\u770B\u8BE6\u60C5]({url})",
|
|
156
|
+
// Doc labels for api routes
|
|
157
|
+
"docLabel.01-analysis.md": "\u9700\u6C42\u5206\u6790",
|
|
158
|
+
"docLabel.02-design.md": "\u7CFB\u7EDF\u8BBE\u8BA1",
|
|
159
|
+
"docLabel.03-todolist.md": "\u5B9E\u65BD\u6E05\u5355",
|
|
160
|
+
"docLabel.04-verify-report.md": "\u9A8C\u8BC1\u62A5\u544A",
|
|
161
|
+
"docLabel.01-plan.md": "\u5B9E\u65BD\u8BA1\u5212",
|
|
162
|
+
"docLabel.02-verify-report.md": "\u9A8C\u8BC1\u62A5\u544A",
|
|
163
|
+
"docLabel.review-feedback.md": "\u5BA1\u6838\u53CD\u9988",
|
|
164
|
+
// CLI DependencyChecker
|
|
165
|
+
"cli.nodeInstallHint": "\u901A\u8FC7 nvm \u5B89\u88C5: curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash && nvm install 20",
|
|
166
|
+
"cli.cursorInstallHint": "\u5B89\u88C5 Cursor IDE \u540E\uFF0CCLI \u81EA\u52A8\u53EF\u7528: https://www.cursor.com/",
|
|
167
|
+
"cli.unknownDep": "\u672A\u77E5\u4F9D\u8D56: {name}",
|
|
168
|
+
"cli.alreadyInstalled": "{name} \u5DF2\u5B89\u88C5 ({version})",
|
|
169
|
+
"cli.manualInstall": "{name} \u9700\u8981\u624B\u52A8\u5B89\u88C5: {hint}",
|
|
170
|
+
"cli.installing": "\u6B63\u5728\u5B89\u88C5 {name}...",
|
|
171
|
+
"cli.installSuccess": "{name} \u5B89\u88C5\u6210\u529F",
|
|
172
|
+
"cli.installFailed": "{name} \u5B89\u88C5\u5931\u8D25 (exit code: {code})",
|
|
173
|
+
// Prompt templates
|
|
174
|
+
"prompt.analysis": `\u4F60\u662F\u9700\u6C42\u5206\u6790\u5E08\u3002\u8BF7\u5206\u6790\u4EE5\u4E0B\u5DE5\u8702 Issue \u5E76\u8F93\u51FA\u9700\u6C42\u5206\u6790\u6587\u6863\u3002
|
|
175
|
+
|
|
176
|
+
## Issue \u4FE1\u606F
|
|
177
|
+
- IID: #{iid}
|
|
178
|
+
- \u6807\u9898: {title}
|
|
179
|
+
- \u63CF\u8FF0:
|
|
180
|
+
{description}{supplement}
|
|
181
|
+
|
|
182
|
+
## \u8F93\u51FA\u8981\u6C42
|
|
183
|
+
\u8BF7\u5C06\u5206\u6790\u7ED3\u679C\u5199\u5165 {planDir}/01-analysis.md\uFF0C\u5185\u5BB9\u5305\u62EC\uFF1A
|
|
184
|
+
1. **\u9700\u6C42\u6982\u8FF0** \u2014 \u7528\u7B80\u6D01\u7684\u8BED\u8A00\u603B\u7ED3\u9700\u6C42\u76EE\u6807
|
|
185
|
+
2. **\u529F\u80FD\u70B9\u62C6\u89E3** \u2014 \u5217\u51FA\u9700\u8981\u5B9E\u73B0\u7684\u5177\u4F53\u529F\u80FD\u70B9
|
|
186
|
+
3. **\u5F71\u54CD\u8303\u56F4\u5206\u6790** \u2014 \u54EA\u4E9B\u6A21\u5757/\u6587\u4EF6\u53EF\u80FD\u53D7\u5230\u5F71\u54CD
|
|
187
|
+
4. **\u975E\u529F\u80FD\u9700\u6C42** \u2014 \u6027\u80FD\u3001\u5B89\u5168\u3001\u517C\u5BB9\u6027\u7B49\u65B9\u9762\u7684\u8003\u91CF
|
|
188
|
+
5. **\u98CE\u9669\u548C\u4F9D\u8D56** \u2014 \u6F5C\u5728\u98CE\u9669\u548C\u5916\u90E8\u4F9D\u8D56
|
|
189
|
+
|
|
190
|
+
\u8BF7\u5148\u9605\u8BFB\u9879\u76EE\u6839\u76EE\u5F55\u7684 CLAUDE.md \u4E86\u89E3\u9879\u76EE\u67B6\u6784\uFF0C\u518D\u8FDB\u884C\u5206\u6790\u3002
|
|
191
|
+
\u53EA\u8F93\u51FA\u6587\u6863\u5185\u5BB9\uFF0C\u4E0D\u8981\u8F93\u51FA\u5176\u4ED6\u8BF4\u660E\u3002`,
|
|
192
|
+
"prompt.design": `\u4F60\u662F\u7CFB\u7EDF\u8BBE\u8BA1\u5E08\u3002\u57FA\u4E8E\u9700\u6C42\u5206\u6790\u6587\u6863\u8FDB\u884C\u7CFB\u7EDF\u8BBE\u8BA1\u3002
|
|
193
|
+
|
|
194
|
+
## Issue \u4FE1\u606F
|
|
195
|
+
- IID: #{iid}
|
|
196
|
+
- \u6807\u9898: {title}{supplement}
|
|
197
|
+
|
|
198
|
+
\u8BF7\u5148\u9605\u8BFB:
|
|
199
|
+
- {planDir}/01-analysis.md (\u9700\u6C42\u5206\u6790)
|
|
200
|
+
- CLAUDE.md (\u9879\u76EE\u67B6\u6784)
|
|
201
|
+
|
|
202
|
+
## \u8F93\u51FA\u8981\u6C42
|
|
203
|
+
\u8BF7\u5C06\u8BBE\u8BA1\u6587\u6863\u5199\u5165 {planDir}/02-design.md\uFF0C\u5185\u5BB9\u5305\u62EC\uFF1A
|
|
204
|
+
1. **\u65B9\u6848\u6982\u8FF0** \u2014 \u6574\u4F53\u8BBE\u8BA1\u601D\u8DEF
|
|
205
|
+
2. **\u6D89\u53CA\u7684\u6587\u4EF6\u548C\u6A21\u5757** \u2014 \u9700\u8981\u65B0\u5EFA/\u4FEE\u6539\u7684\u6587\u4EF6\u5217\u8868
|
|
206
|
+
3. **\u6570\u636E\u6A21\u578B\u53D8\u66F4** \u2014 \u6570\u636E\u5E93\u6216\u6A21\u578B\u5C42\u7684\u53D8\u66F4
|
|
207
|
+
4. **\u63A5\u53E3\u8BBE\u8BA1** \u2014 API \u63A5\u53E3\u5B9A\u4E49
|
|
208
|
+
5. **\u8BE6\u7EC6\u5B9E\u65BD\u6B65\u9AA4** \u2014 \u6309\u987A\u5E8F\u5217\u51FA\u5B9E\u65BD\u6B65\u9AA4
|
|
209
|
+
|
|
210
|
+
\u8BF7\u5C06\u5B9E\u65BD Todolist \u5199\u5165 {planDir}/03-todolist.md\uFF0C\u683C\u5F0F\uFF1A
|
|
211
|
+
- [ ] \u6B65\u9AA41: \u5177\u4F53\u63CF\u8FF0
|
|
212
|
+
- [ ] \u6B65\u9AA42: \u5177\u4F53\u63CF\u8FF0
|
|
213
|
+
...
|
|
214
|
+
|
|
215
|
+
\u8BF7\u786E\u4FDD Todolist \u8DB3\u591F\u8BE6\u7EC6\uFF0C\u6BCF\u4E2A\u6B65\u9AA4\u53EF\u72EC\u7ACB\u6267\u884C\u548C\u9A8C\u8BC1\u3002`,
|
|
216
|
+
"prompt.implement": `\u4F60\u662F\u5F00\u53D1\u5DE5\u7A0B\u5E08\u3002\u8BF7\u6309\u7167\u8BBE\u8BA1\u6587\u6863\u548C Todolist \u5B9E\u65BD\u4EE3\u7801\u53D8\u66F4\u3002
|
|
217
|
+
|
|
218
|
+
## Issue \u4FE1\u606F
|
|
219
|
+
- IID: #{iid}
|
|
220
|
+
- \u6807\u9898: {title}
|
|
221
|
+
|
|
222
|
+
\u8BF7\u5148\u9605\u8BFB:
|
|
223
|
+
- {planDir}/01-analysis.md (\u9700\u6C42\u5206\u6790)
|
|
224
|
+
- {planDir}/02-design.md (\u7CFB\u7EDF\u8BBE\u8BA1)
|
|
225
|
+
- {planDir}/03-todolist.md (\u5B9E\u65BD\u6B65\u9AA4)
|
|
226
|
+
- CLAUDE.md (\u9879\u76EE\u67B6\u6784\u548C\u4EE3\u7801\u89C4\u8303)
|
|
227
|
+
|
|
228
|
+
## \u5B9E\u65BD\u8981\u6C42
|
|
229
|
+
1. \u9010\u9879\u5B8C\u6210 03-todolist.md \u4E2D\u7684\u4EFB\u52A1
|
|
230
|
+
2. \u6BCF\u5B8C\u6210\u4E00\u9879\uFF0C\u66F4\u65B0 03-todolist.md \u4E2D\u5BF9\u5E94\u7684\u52FE\u9009\u72B6\u6001 (- [ ] \u2192 - [x])
|
|
231
|
+
3. \u4E25\u683C\u9075\u5FAA CLAUDE.md \u4E2D\u7684\u4EE3\u7801\u89C4\u8303\uFF082\u7A7A\u683C\u7F29\u8FDB\u3001120\u5B57\u7B26\u884C\u5BBD\u3001\u547D\u540D\u89C4\u8303\u7B49\uFF09
|
|
232
|
+
4. \u4E0D\u8981\u8FC7\u5EA6\u5DE5\u7A0B\u5316\uFF0C\u53EA\u5B9E\u73B0\u8BBE\u8BA1\u6587\u6863\u4E2D\u8981\u6C42\u7684\u5185\u5BB9
|
|
233
|
+
5. \u786E\u4FDD\u4EE3\u7801\u5B89\u5168\uFF0C\u907F\u514D OWASP Top 10 \u6F0F\u6D1E`,
|
|
234
|
+
"prompt.verify": `\u4F60\u662F\u6D4B\u8BD5\u5DE5\u7A0B\u5E08\u3002\u9A8C\u8BC1\u4EE3\u7801\u53D8\u66F4\u7684\u6B63\u786E\u6027\u3002
|
|
235
|
+
|
|
236
|
+
## Issue \u4FE1\u606F
|
|
237
|
+
- IID: #{iid}
|
|
238
|
+
- \u6807\u9898: {title}
|
|
239
|
+
|
|
240
|
+
## \u524D\u7F6E\u68C0\u67E5
|
|
241
|
+
\u5728\u6267\u884C\u9A8C\u8BC1\u524D\uFF0C\u5148\u786E\u8BA4\u4F9D\u8D56\u73AF\u5883:
|
|
242
|
+
1. \u68C0\u67E5 node_modules/.bin/eslint \u662F\u5426\u5B58\u5728
|
|
243
|
+
2. \u5982\u4E0D\u5B58\u5728\uFF0C\u8FD0\u884C pnpm install\uFF1B\u5982\u679C\u5931\u8D25\uFF0C\u5C1D\u8BD5 pnpm install --ignore-scripts
|
|
244
|
+
3. \u5982\u679C\u4F9D\u8D56\u59CB\u7EC8\u65E0\u6CD5\u5B89\u88C5\u5B8C\u6574\uFF0C\u5728\u62A5\u544A\u4E2D\u6807\u6CE8\u4E3A"\u73AF\u5883\u95EE\u9898"\u5E76\u7EE7\u7EED\u540E\u7EED\u68C0\u67E5
|
|
245
|
+
|
|
246
|
+
## \u9A8C\u8BC1\u6B65\u9AA4
|
|
247
|
+
1. \u8FD0\u884C pnpm run lint \u68C0\u67E5\u4EE3\u7801\u98CE\u683C
|
|
248
|
+
2. \u8FD0\u884C pnpm run build \u68C0\u67E5\u7F16\u8BD1
|
|
249
|
+
3. \u8FD0\u884C pnpm test4vscode --files <\u6D89\u53CA\u53D8\u66F4\u7684\u6D4B\u8BD5\u6587\u4EF6> \u8FD0\u884C\u76F8\u5173\u6D4B\u8BD5
|
|
250
|
+
4. \u68C0\u67E5\u4EE3\u7801\u53D8\u66F4\u4E0E {planDir}/02-design.md \u8BBE\u8BA1\u6587\u6863\u7684\u4E00\u81F4\u6027
|
|
251
|
+
5. \u68C0\u67E5 {planDir}/03-todolist.md \u662F\u5426\u6240\u6709\u9879\u90FD\u5DF2\u5B8C\u6210
|
|
252
|
+
|
|
253
|
+
## \u5DF2\u77E5\u7684\u9884\u5B58\u95EE\u9898\uFF08\u5FFD\u7565\u5373\u53EF\uFF09
|
|
254
|
+
- build \u9636\u6BB5 tests/ \u76EE\u5F55\u53EF\u80FD\u51FA\u73B0 TS2307: Cannot find module 'japa' \u6216 'sinon'\uFF0C\u8FD9\u662F\u6D4B\u8BD5\u6846\u67B6\u7C7B\u578B\u58F0\u660E\u7684\u5DF2\u77E5\u95EE\u9898
|
|
255
|
+
- \u5982\u679C\u67D0\u4E2A lint/build/test \u7684\u5931\u8D25**\u4E0D\u6D89\u53CA\u672C\u6B21\u53D8\u66F4\u7684\u6587\u4EF6**\uFF0C\u6807\u6CE8\u4E3A"\u9884\u5B58\u95EE\u9898"
|
|
256
|
+
|
|
257
|
+
\u5C06\u9A8C\u8BC1\u7ED3\u679C\u5199\u5165 {planDir}/04-verify-report.md\uFF0C\u5305\u62EC\uFF1A
|
|
258
|
+
- **Lint \u7ED3\u679C**: \u901A\u8FC7/\u5931\u8D25\u53CA\u8BE6\u60C5\uFF08\u533A\u5206\u672C\u6B21\u53D8\u66F4 vs \u9884\u5B58\u95EE\u9898\uFF09
|
|
259
|
+
- **Build \u7ED3\u679C**: \u901A\u8FC7/\u5931\u8D25\u53CA\u8BE6\u60C5\uFF08\u533A\u5206\u672C\u6B21\u53D8\u66F4 vs \u9884\u5B58\u95EE\u9898\uFF09
|
|
260
|
+
- **Test \u7ED3\u679C**: \u901A\u8FC7/\u5931\u8D25\u53CA\u8BE6\u60C5
|
|
261
|
+
- **\u8BBE\u8BA1\u4E00\u81F4\u6027\u68C0\u67E5**: \u662F\u5426\u7B26\u5408\u8BBE\u8BA1
|
|
262
|
+
- **\u603B\u7ED3**: \u6574\u4F53\u8BC4\u4F30\u548C\u5EFA\u8BAE`,
|
|
263
|
+
"prompt.planModeVerify": `\u4F60\u662F\u6D4B\u8BD5\u5DE5\u7A0B\u5E08\u3002\u9A8C\u8BC1\u4EE3\u7801\u53D8\u66F4\u7684\u6B63\u786E\u6027\u3002
|
|
264
|
+
|
|
265
|
+
## Issue \u4FE1\u606F
|
|
266
|
+
- IID: #{iid}
|
|
267
|
+
- \u6807\u9898: {title}
|
|
268
|
+
|
|
269
|
+
## \u524D\u7F6E\u68C0\u67E5
|
|
270
|
+
\u5728\u6267\u884C\u9A8C\u8BC1\u524D\uFF0C\u5148\u786E\u8BA4\u4F9D\u8D56\u73AF\u5883:
|
|
271
|
+
1. \u68C0\u67E5 node_modules/.bin/eslint \u662F\u5426\u5B58\u5728
|
|
272
|
+
2. \u5982\u4E0D\u5B58\u5728\uFF0C\u8FD0\u884C pnpm install\uFF1B\u5982\u679C\u5931\u8D25\uFF0C\u5C1D\u8BD5 pnpm install --ignore-scripts
|
|
273
|
+
3. \u5982\u679C\u4F9D\u8D56\u59CB\u7EC8\u65E0\u6CD5\u5B89\u88C5\u5B8C\u6574\uFF0C\u5728\u62A5\u544A\u4E2D\u6807\u6CE8\u4E3A"\u73AF\u5883\u95EE\u9898"\u5E76\u7EE7\u7EED\u540E\u7EED\u68C0\u67E5
|
|
274
|
+
|
|
275
|
+
## \u9A8C\u8BC1\u6B65\u9AA4
|
|
276
|
+
1. \u8FD0\u884C pnpm run lint \u68C0\u67E5\u4EE3\u7801\u98CE\u683C
|
|
277
|
+
2. \u8FD0\u884C pnpm run build \u68C0\u67E5\u7F16\u8BD1
|
|
278
|
+
3. \u8FD0\u884C pnpm test4vscode --files <\u6D89\u53CA\u53D8\u66F4\u7684\u6D4B\u8BD5\u6587\u4EF6> \u8FD0\u884C\u76F8\u5173\u6D4B\u8BD5
|
|
279
|
+
4. \u68C0\u67E5\u4EE3\u7801\u53D8\u66F4\u4E0E {planDir}/01-plan.md \u5B9E\u65BD\u8BA1\u5212\u7684\u4E00\u81F4\u6027
|
|
280
|
+
5. \u68C0\u67E5 {planDir}/01-plan.md \u4E2D Todolist \u662F\u5426\u6240\u6709\u9879\u90FD\u5DF2\u5B8C\u6210
|
|
281
|
+
|
|
282
|
+
## \u5DF2\u77E5\u7684\u9884\u5B58\u95EE\u9898\uFF08\u5FFD\u7565\u5373\u53EF\uFF09
|
|
283
|
+
- build \u9636\u6BB5 tests/ \u76EE\u5F55\u53EF\u80FD\u51FA\u73B0 TS2307: Cannot find module 'japa' \u6216 'sinon'\uFF0C\u8FD9\u662F\u6D4B\u8BD5\u6846\u67B6\u7C7B\u578B\u58F0\u660E\u7684\u5DF2\u77E5\u95EE\u9898
|
|
284
|
+
- \u5982\u679C\u67D0\u4E2A lint/build/test \u7684\u5931\u8D25**\u4E0D\u6D89\u53CA\u672C\u6B21\u53D8\u66F4\u7684\u6587\u4EF6**\uFF0C\u6807\u6CE8\u4E3A"\u9884\u5B58\u95EE\u9898"
|
|
285
|
+
|
|
286
|
+
\u5C06\u9A8C\u8BC1\u7ED3\u679C\u5199\u5165 {planDir}/02-verify-report.md\uFF0C\u5305\u62EC\uFF1A
|
|
287
|
+
- **Lint \u7ED3\u679C**: \u901A\u8FC7/\u5931\u8D25\u53CA\u8BE6\u60C5\uFF08\u533A\u5206\u672C\u6B21\u53D8\u66F4 vs \u9884\u5B58\u95EE\u9898\uFF09
|
|
288
|
+
- **Build \u7ED3\u679C**: \u901A\u8FC7/\u5931\u8D25\u53CA\u8BE6\u60C5\uFF08\u533A\u5206\u672C\u6B21\u53D8\u66F4 vs \u9884\u5B58\u95EE\u9898\uFF09
|
|
289
|
+
- **Test \u7ED3\u679C**: \u901A\u8FC7/\u5931\u8D25\u53CA\u8BE6\u60C5
|
|
290
|
+
- **\u8BA1\u5212\u4E00\u81F4\u6027\u68C0\u67E5**: \u662F\u5426\u7B26\u5408\u5B9E\u65BD\u8BA1\u5212
|
|
291
|
+
- **\u603B\u7ED3**: \u6574\u4F53\u8BC4\u4F30\u548C\u5EFA\u8BAE`,
|
|
292
|
+
"prompt.plan": `\u4F60\u662F\u8D44\u6DF1\u6280\u672F\u8D1F\u8D23\u4EBA\u3002\u8BF7\u4E00\u6B21\u6027\u5B8C\u6210\u9700\u6C42\u5206\u6790\u548C\u65B9\u6848\u8BBE\u8BA1\u3002
|
|
293
|
+
|
|
294
|
+
## Issue \u4FE1\u606F
|
|
295
|
+
- IID: #{iid}
|
|
296
|
+
- \u6807\u9898: {title}
|
|
297
|
+
- \u63CF\u8FF0:
|
|
298
|
+
{description}{supplement}
|
|
299
|
+
|
|
300
|
+
## \u8F93\u51FA\u8981\u6C42
|
|
301
|
+
\u8BF7\u5148\u9605\u8BFB\u9879\u76EE\u6839\u76EE\u5F55\u7684 CLAUDE.md \u4E86\u89E3\u9879\u76EE\u67B6\u6784\uFF0C\u518D\u8FDB\u884C\u5206\u6790\u548C\u8BBE\u8BA1\u3002
|
|
302
|
+
|
|
303
|
+
\u8BF7\u5C06\u5B8C\u6574\u7684\u5B9E\u65BD\u8BA1\u5212\u5199\u5165 {planDir}/01-plan.md\uFF0C\u5185\u5BB9\u5305\u62EC\uFF1A
|
|
304
|
+
|
|
305
|
+
### \u7B2C\u4E00\u90E8\u5206\uFF1A\u9700\u6C42\u5206\u6790
|
|
306
|
+
1. **\u9700\u6C42\u6982\u8FF0** \u2014 \u7528\u7B80\u6D01\u7684\u8BED\u8A00\u603B\u7ED3\u9700\u6C42\u76EE\u6807
|
|
307
|
+
2. **\u529F\u80FD\u70B9\u62C6\u89E3** \u2014 \u5217\u51FA\u9700\u8981\u5B9E\u73B0\u7684\u5177\u4F53\u529F\u80FD\u70B9
|
|
308
|
+
3. **\u5F71\u54CD\u8303\u56F4\u5206\u6790** \u2014 \u54EA\u4E9B\u6A21\u5757/\u6587\u4EF6\u53EF\u80FD\u53D7\u5230\u5F71\u54CD
|
|
309
|
+
4. **\u975E\u529F\u80FD\u9700\u6C42** \u2014 \u6027\u80FD\u3001\u5B89\u5168\u3001\u517C\u5BB9\u6027\u7B49\u65B9\u9762\u7684\u8003\u91CF
|
|
310
|
+
5. **\u98CE\u9669\u548C\u4F9D\u8D56** \u2014 \u6F5C\u5728\u98CE\u9669\u548C\u5916\u90E8\u4F9D\u8D56
|
|
311
|
+
|
|
312
|
+
### \u7B2C\u4E8C\u90E8\u5206\uFF1A\u7CFB\u7EDF\u8BBE\u8BA1
|
|
313
|
+
1. **\u65B9\u6848\u6982\u8FF0** \u2014 \u6574\u4F53\u8BBE\u8BA1\u601D\u8DEF
|
|
314
|
+
2. **\u6D89\u53CA\u7684\u6587\u4EF6\u548C\u6A21\u5757** \u2014 \u9700\u8981\u65B0\u5EFA/\u4FEE\u6539\u7684\u6587\u4EF6\u5217\u8868
|
|
315
|
+
3. **\u6570\u636E\u6A21\u578B\u53D8\u66F4** \u2014 \u6570\u636E\u5E93\u6216\u6A21\u578B\u5C42\u7684\u53D8\u66F4
|
|
316
|
+
4. **\u63A5\u53E3\u8BBE\u8BA1** \u2014 API \u63A5\u53E3\u5B9A\u4E49
|
|
317
|
+
5. **\u8BE6\u7EC6\u5B9E\u65BD\u6B65\u9AA4** \u2014 \u6309\u987A\u5E8F\u5217\u51FA\u5B9E\u65BD\u6B65\u9AA4
|
|
318
|
+
|
|
319
|
+
### \u7B2C\u4E09\u90E8\u5206\uFF1A\u5B9E\u65BD Todolist
|
|
320
|
+
- [ ] \u6B65\u9AA41: \u5177\u4F53\u63CF\u8FF0
|
|
321
|
+
- [ ] \u6B65\u9AA42: \u5177\u4F53\u63CF\u8FF0
|
|
322
|
+
...
|
|
323
|
+
|
|
324
|
+
\u8BF7\u786E\u4FDD Todolist \u8DB3\u591F\u8BE6\u7EC6\uFF0C\u6BCF\u4E2A\u6B65\u9AA4\u53EF\u72EC\u7ACB\u6267\u884C\u548C\u9A8C\u8BC1\u3002
|
|
325
|
+
\u53EA\u8F93\u51FA\u6587\u6863\u5185\u5BB9\uFF0C\u4E0D\u8981\u8F93\u51FA\u5176\u4ED6\u8BF4\u660E\u3002\u4E0D\u8981\u4FEE\u6539\u4EFB\u4F55\u4EE3\u7801\u6587\u4EF6\u3002`,
|
|
326
|
+
"prompt.build": `\u4F60\u662F\u5F00\u53D1\u5DE5\u7A0B\u5E08\u3002\u8BF7\u6309\u7167\u5B9E\u65BD\u8BA1\u5212\u5B8C\u6210\u4EE3\u7801\u53D8\u66F4\u3002
|
|
327
|
+
|
|
328
|
+
## Issue \u4FE1\u606F
|
|
329
|
+
- IID: #{iid}
|
|
330
|
+
- \u6807\u9898: {title}
|
|
331
|
+
|
|
332
|
+
\u8BF7\u5148\u9605\u8BFB:
|
|
333
|
+
- {planDir}/01-plan.md (\u5B8C\u6574\u5B9E\u65BD\u8BA1\u5212\uFF0C\u5305\u542B\u9700\u6C42\u5206\u6790\u3001\u7CFB\u7EDF\u8BBE\u8BA1\u548C Todolist)
|
|
334
|
+
- CLAUDE.md (\u9879\u76EE\u67B6\u6784\u548C\u4EE3\u7801\u89C4\u8303)
|
|
335
|
+
|
|
336
|
+
## \u5B9E\u65BD\u8981\u6C42
|
|
337
|
+
1. \u4E25\u683C\u6309\u7167 01-plan.md \u4E2D\u7684 Todolist \u9010\u9879\u5B8C\u6210
|
|
338
|
+
2. \u6BCF\u5B8C\u6210\u4E00\u9879\uFF0C\u66F4\u65B0 01-plan.md \u4E2D\u5BF9\u5E94\u7684\u52FE\u9009\u72B6\u6001 (- [ ] \u2192 - [x])
|
|
339
|
+
3. \u4E25\u683C\u9075\u5FAA CLAUDE.md \u4E2D\u7684\u4EE3\u7801\u89C4\u8303\uFF082\u7A7A\u683C\u7F29\u8FDB\u3001120\u5B57\u7B26\u884C\u5BBD\u3001\u547D\u540D\u89C4\u8303\u7B49\uFF09
|
|
340
|
+
4. \u4E0D\u8981\u8FC7\u5EA6\u5DE5\u7A0B\u5316\uFF0C\u53EA\u5B9E\u73B0\u8BA1\u5212\u4E2D\u8981\u6C42\u7684\u5185\u5BB9
|
|
341
|
+
5. \u786E\u4FDD\u4EE3\u7801\u5B89\u5168\uFF0C\u907F\u514D OWASP Top 10 \u6F0F\u6D1E`,
|
|
342
|
+
"prompt.rePlan": `\u4F60\u662F\u8D44\u6DF1\u6280\u672F\u8D1F\u8D23\u4EBA\u3002\u4E4B\u524D\u7684\u5B9E\u65BD\u8BA1\u5212\u672A\u901A\u8FC7\u5BA1\u6838\uFF0C\u8BF7\u6839\u636E\u5BA1\u6838\u53CD\u9988\u4FEE\u6539\u8BA1\u5212\u3002
|
|
343
|
+
|
|
344
|
+
## Issue \u4FE1\u606F
|
|
345
|
+
- IID: #{iid}
|
|
346
|
+
- \u6807\u9898: {title}
|
|
347
|
+
- \u63CF\u8FF0:
|
|
348
|
+
{description}{supplement}
|
|
349
|
+
|
|
350
|
+
## \u5BA1\u6838\u53CD\u9988\u5386\u53F2\uFF08\u5171 {historyCount} \u8F6E\uFF09
|
|
351
|
+
{feedbackLines}
|
|
352
|
+
|
|
353
|
+
\u8BF7\u5148\u9605\u8BFB:
|
|
354
|
+
- {planDir}/01-plan.md (\u5F53\u524D\u5B9E\u65BD\u8BA1\u5212)
|
|
355
|
+
- {planDir}/review-feedback.md (\u5BA1\u6838\u53CD\u9988\u5B8C\u6574\u5386\u53F2)
|
|
356
|
+
- CLAUDE.md (\u9879\u76EE\u67B6\u6784)
|
|
357
|
+
|
|
358
|
+
## \u8F93\u51FA\u8981\u6C42
|
|
359
|
+
\u8BF7\u7EFC\u5408\u6240\u6709\u8F6E\u6B21\u7684\u5BA1\u6838\u53CD\u9988\u4FEE\u6539 {planDir}/01-plan.md\uFF0C\u4FDD\u6301\u76F8\u540C\u7684\u6587\u6863\u7ED3\u6784\u3002
|
|
360
|
+
\u91CD\u70B9\u5173\u6CE8\u6700\u65B0\u4E00\u8F6E\u7684\u53CD\u9988\uFF0C\u540C\u65F6\u786E\u4FDD\u4E4B\u524D\u8F6E\u6B21\u63D0\u51FA\u7684\u95EE\u9898\u4E5F\u5DF2\u5F97\u5230\u89E3\u51B3\u3002
|
|
361
|
+
\u53EA\u8F93\u51FA\u6587\u6863\u5185\u5BB9\uFF0C\u4E0D\u8981\u8F93\u51FA\u5176\u4ED6\u8BF4\u660E\u3002\u4E0D\u8981\u4FEE\u6539\u4EFB\u4F55\u4EE3\u7801\u6587\u4EF6\u3002`,
|
|
362
|
+
"prompt.rePlanRound": "### \u7B2C {round} \u8F6E ({timestamp})\n{feedback}",
|
|
363
|
+
"prompt.e2eSuffix.title": "## E2E UI \u9A8C\u8BC1\uFF08\u5DF2\u542F\u7528\uFF09",
|
|
364
|
+
"prompt.e2eSuffix.intro": "\u672C\u6B21\u53D8\u66F4\u5DF2\u5F00\u542F E2E UI \u81EA\u52A8\u9A8C\u6536\uFF0C\u8BF7\u989D\u5916\u6267\u884C\u4EE5\u4E0B\u6B65\u9AA4\uFF1A",
|
|
365
|
+
"prompt.e2eSuffix.previewNote": "**Preview \u73AF\u5883\u5DF2\u542F\u52A8\uFF08\u7531\u7CFB\u7EDF\u7BA1\u7406\uFF0C\u65E0\u9700\u624B\u52A8\u542F\u52A8\uFF09\uFF1A**",
|
|
366
|
+
"prompt.e2eSuffix.backend": "\u540E\u7AEF",
|
|
367
|
+
"prompt.e2eSuffix.frontend": "\u524D\u7AEF"
|
|
368
|
+
};
|
|
369
|
+
|
|
370
|
+
// src/i18n/locales/en.ts
|
|
371
|
+
var en = {
|
|
372
|
+
// Phase labels
|
|
373
|
+
"phase.analysis": "Analysis",
|
|
374
|
+
"phase.design": "Design",
|
|
375
|
+
"phase.implement": "Implementation",
|
|
376
|
+
"phase.verify": "Verification",
|
|
377
|
+
"phase.plan": "Planning",
|
|
378
|
+
"phase.build": "Build",
|
|
379
|
+
"phase.review": "Review",
|
|
380
|
+
// Pipeline phase labels
|
|
381
|
+
"pipeline.phase.analysis": "Analysis",
|
|
382
|
+
"pipeline.phase.design": "Design",
|
|
383
|
+
"pipeline.phase.implement": "Implementation",
|
|
384
|
+
"pipeline.phase.verify": "Verification",
|
|
385
|
+
"pipeline.phase.plan": "Planning",
|
|
386
|
+
"pipeline.phase.review": "Review",
|
|
387
|
+
"pipeline.phase.build": "Build",
|
|
388
|
+
// Plan file labels
|
|
389
|
+
"planFile.01-analysis.md": "Requirements Analysis",
|
|
390
|
+
"planFile.02-design.md": "System Design",
|
|
391
|
+
"planFile.03-todolist.md": "Implementation Checklist",
|
|
392
|
+
"planFile.04-verify-report.md": "Verification Report",
|
|
393
|
+
"planFile.01-plan.md": "Implementation Plan",
|
|
394
|
+
"planFile.02-verify-report.md": "Verification Report",
|
|
395
|
+
"planFile.review-feedback.md": "Review Feedback",
|
|
396
|
+
"planFile.review-history.json": "Review History",
|
|
397
|
+
// State labels
|
|
398
|
+
"state.pending": "Pending",
|
|
399
|
+
"state.branchCreated": "Branch Created",
|
|
400
|
+
"state.completed": "Completed",
|
|
401
|
+
"state.failed": "Failed",
|
|
402
|
+
"state.phaseDoing": "{label} In Progress",
|
|
403
|
+
"state.phaseDone": "{label} Done",
|
|
404
|
+
"state.phaseApproved": "{label} Approved",
|
|
405
|
+
// Orchestrator messages
|
|
406
|
+
"orchestrator.retryComment": "\u{1F504} **Auto-processing Retry**\n\nPrevious processing failed, retrying...",
|
|
407
|
+
"orchestrator.startComment": "\u{1F680} **Auto-processing Started**\n\nDetected `auto-finish` label, starting automated analysis and implementation.",
|
|
408
|
+
"orchestrator.fetchProgress": "Fetching latest code...",
|
|
409
|
+
"orchestrator.worktreeProgress": "Preparing working directory...",
|
|
410
|
+
"orchestrator.installProgress": "Installing project dependencies (pnpm install)...",
|
|
411
|
+
"orchestrator.initPlanProgress": "Initializing plan directory...",
|
|
412
|
+
"orchestrator.phaseStartProgress": "Ready, starting phases (from {phase})...",
|
|
413
|
+
"orchestrator.autoApproveComment": "\u26A1 **Review Auto-approved**\n\nDetected label matching `autoApproveLabels` configuration, automatically skipping review and proceeding to implementation.",
|
|
414
|
+
"orchestrator.createMrProgress": "Creating merge request...",
|
|
415
|
+
"orchestrator.uploadScreenshotsProgress": "Uploading E2E screenshots...",
|
|
416
|
+
"orchestrator.mrSection": "\n\n\u{1F517} Merge Request: {mrUrl}",
|
|
417
|
+
"orchestrator.mrFailSection": "\n\n\u26A0\uFE0F Failed to create merge request, please create manually.",
|
|
418
|
+
"orchestrator.completedComment": "\u2705 **Auto-processing Completed**\n\nAll phases completed. Branch: `{branch}`{mrSection}{previewSection}",
|
|
419
|
+
"orchestrator.failedComment": "\u274C **Auto-processing Failed**\n\n{error}\n\nWill retry on next poll cycle (if max retries not exceeded).",
|
|
420
|
+
"orchestrator.deployProgress": "Starting Preview environment...",
|
|
421
|
+
"orchestrator.deployDoneProgress": "Preview environment ready: {url}",
|
|
422
|
+
"orchestrator.previewComment.title": "\u{1F310} **Preview Environment Ready**",
|
|
423
|
+
"orchestrator.previewComment.tableHeader": "| Component | Address |",
|
|
424
|
+
"orchestrator.previewComment.tableSep": "|-----------|---------|",
|
|
425
|
+
"orchestrator.previewComment.frontend": "Frontend",
|
|
426
|
+
"orchestrator.previewComment.backendApi": "Backend API",
|
|
427
|
+
"orchestrator.previewComment.hint": "Visit the frontend link to experience the changes.",
|
|
428
|
+
"orchestrator.previewComment.expiry": "Preview will be cleaned up after MR merge, or expires in {hours}h.",
|
|
429
|
+
// BasePhase messages
|
|
430
|
+
"basePhase.aiStarting": "Starting AI Agent ({label})...",
|
|
431
|
+
"basePhase.rulesSection": "## Project Development Guidelines\nThe following are development guidelines related to this task. Please strictly follow them when coding:\n\n{rules}",
|
|
432
|
+
"basePhase.error": "Error: {message}",
|
|
433
|
+
// IssuePoller messages
|
|
434
|
+
"poller.autoApproveComment": "\u26A1 **Review Auto-approved**\n\nDetected label matching `autoApproveLabels` configuration (matched: {labels}), automatically skipping review and proceeding to implementation.",
|
|
435
|
+
// Progress comment
|
|
436
|
+
"progress.completed": "Completed",
|
|
437
|
+
"progress.failed": "Failed",
|
|
438
|
+
"progress.inProgress": "In Progress",
|
|
439
|
+
"progress.comment": "{icon} **Auto-processing Progress Update**\n\nPhase: **{phase}** \u2014 {status}",
|
|
440
|
+
// NoteSync messages
|
|
441
|
+
"notesync.phaseCompleted": "{icon} **{label} Phase Completed**",
|
|
442
|
+
"notesync.viewDoc": "\u{1F4C4} [View full {label} document]({url})",
|
|
443
|
+
"notesync.viewDashboard": "\u{1F4CA} [View details in dashboard]({url})",
|
|
444
|
+
// MergeRequest messages
|
|
445
|
+
"mr.relatedIssue": "## Related Issue",
|
|
446
|
+
"mr.title": "Title",
|
|
447
|
+
"mr.branch": "Branch",
|
|
448
|
+
"mr.issueDescription": "## Issue Description",
|
|
449
|
+
"mr.noDescription": "(No description)",
|
|
450
|
+
"mr.summaryFiles.01-analysis.md": "Requirements Analysis",
|
|
451
|
+
"mr.summaryFiles.01-plan.md": "Implementation Plan",
|
|
452
|
+
"mr.summaryFiles.02-design.md": "System Design",
|
|
453
|
+
"mr.summaryFiles.04-verify-report.md": "Verification Report",
|
|
454
|
+
"mr.summaryFiles.02-verify-report.md": "Verification Report",
|
|
455
|
+
"mr.aiSummary": "## AI Artifacts Summary",
|
|
456
|
+
"mr.autoCreated": "*This MR was automatically created by Issue Auto-Finish system*",
|
|
457
|
+
"mr.truncated": "...(truncated)",
|
|
458
|
+
// Screenshot messages
|
|
459
|
+
"screenshot.title": "\u{1F4F8} **E2E Test Screenshots**",
|
|
460
|
+
"screenshot.truncated": "> \u26A0\uFE0F Too many screenshots, showing only the first 20.",
|
|
461
|
+
// Webhook handler
|
|
462
|
+
"webhook.helpText": [
|
|
463
|
+
"Unrecognized command. Available commands:",
|
|
464
|
+
"",
|
|
465
|
+
"| Command | Description |",
|
|
466
|
+
"| --- | --- |",
|
|
467
|
+
"| `@issue-auto status` | Check current processing status |",
|
|
468
|
+
"| `@issue-auto retry` | Retry from failure point |",
|
|
469
|
+
"| `@issue-auto retry-from <phase>` | Retry from specific phase |",
|
|
470
|
+
"| `@issue-auto restart` | Start over from scratch |",
|
|
471
|
+
"| `@issue-auto approve` | Approve current plan |",
|
|
472
|
+
"| `@issue-auto reject <reason>` | Reject plan with feedback |",
|
|
473
|
+
"| `@issue-auto supplement <content>` | Add supplementary context |",
|
|
474
|
+
"| `@issue-auto clean-notes` | Delete agent history notes |"
|
|
475
|
+
].join("\n"),
|
|
476
|
+
// Command executor
|
|
477
|
+
"cmd.previewNotStarted": "Issue #{iid} does not have a Preview environment yet.\nPreview starts automatically after code implementation is complete (requires E2E or Preview to be enabled).",
|
|
478
|
+
"cmd.previewStopped": "\u23F9 Stopped",
|
|
479
|
+
"cmd.previewRunning": "\u2705 Running",
|
|
480
|
+
"cmd.previewTable.component": "Component",
|
|
481
|
+
"cmd.previewTable.address": "Address",
|
|
482
|
+
"cmd.previewTable.frontend": "Frontend",
|
|
483
|
+
"cmd.previewTable.backendApi": "Backend API",
|
|
484
|
+
"cmd.previewTable.status": "Status",
|
|
485
|
+
"cmd.previewTable.startedAt": "Started at",
|
|
486
|
+
"cmd.noPreview": "Issue #{iid} does not have a running Preview environment.",
|
|
487
|
+
"cmd.previewStoppedMsg": "Preview environment for Issue #{iid} has been stopped.",
|
|
488
|
+
"cmd.cleanNotesSuccess": "\u{1F9F9} Cleaned up {count} agent note(s).",
|
|
489
|
+
// Intent recognizer
|
|
490
|
+
"intent.systemPrompt": `You are a command parsing assistant. Users will describe in natural language what they want the automation system to do in Gongfeng (GitLab) Issue comments.
|
|
491
|
+
You need to extract structured commands from user comments.
|
|
492
|
+
|
|
493
|
+
Available intents:
|
|
494
|
+
- retry: Retry failed task (continue from last failure point)
|
|
495
|
+
- retry-from: Restart from a specific phase (need to extract phase)
|
|
496
|
+
- supplement: Add additional requirement info or context
|
|
497
|
+
- approve: Approve/pass the current design plan
|
|
498
|
+
- reject: Reject current plan (need to extract feedback)
|
|
499
|
+
- status: Query current processing status
|
|
500
|
+
- restart: Start from scratch, redo everything
|
|
501
|
+
|
|
502
|
+
Available phases (only needed for retry-from):
|
|
503
|
+
- analysis: Requirements analysis phase
|
|
504
|
+
- design: System design phase
|
|
505
|
+
- implement: Code implementation phase
|
|
506
|
+
- verify: Verification testing phase
|
|
507
|
+
- plan: Planning phase
|
|
508
|
+
- build: Build phase
|
|
509
|
+
|
|
510
|
+
Rules:
|
|
511
|
+
1. If user expresses both "retry" and "supplement info", prioritize retry-from or retry as intent, put supplement info in context field
|
|
512
|
+
2. If user is only supplementing/providing additional info, use supplement
|
|
513
|
+
3. feedback field is only for reject intent
|
|
514
|
+
4. If unable to determine user intent, return null
|
|
515
|
+
|
|
516
|
+
Strictly return in the following JSON format, do not add any other text:
|
|
517
|
+
{"intent":"...","phase":"...or null","context":"...or null","feedback":"...or null"}`,
|
|
518
|
+
// API routes
|
|
519
|
+
"api.invalidFilename": "Invalid filename",
|
|
520
|
+
"api.docNotGenerated": "Document not yet generated",
|
|
521
|
+
"api.viewInDashboard": "View in dashboard",
|
|
522
|
+
"api.reviewFeedback": "\u{1F440} **Plan Review Feedback (Round {round})**",
|
|
523
|
+
"api.viewPlan": "\u{1F4C4} [View implementation plan]({url})",
|
|
524
|
+
"api.viewDetail": "\u{1F4CA} [View details in dashboard]({url})",
|
|
525
|
+
// Doc labels for api routes
|
|
526
|
+
"docLabel.01-analysis.md": "Requirements Analysis",
|
|
527
|
+
"docLabel.02-design.md": "System Design",
|
|
528
|
+
"docLabel.03-todolist.md": "Implementation Checklist",
|
|
529
|
+
"docLabel.04-verify-report.md": "Verification Report",
|
|
530
|
+
"docLabel.01-plan.md": "Implementation Plan",
|
|
531
|
+
"docLabel.02-verify-report.md": "Verification Report",
|
|
532
|
+
"docLabel.review-feedback.md": "Review Feedback",
|
|
533
|
+
// CLI DependencyChecker
|
|
534
|
+
"cli.nodeInstallHint": "Install via nvm: curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash && nvm install 20",
|
|
535
|
+
"cli.cursorInstallHint": "Install Cursor IDE, CLI will be available automatically: https://www.cursor.com/",
|
|
536
|
+
"cli.unknownDep": "Unknown dependency: {name}",
|
|
537
|
+
"cli.alreadyInstalled": "{name} already installed ({version})",
|
|
538
|
+
"cli.manualInstall": "{name} requires manual installation: {hint}",
|
|
539
|
+
"cli.installing": "Installing {name}...",
|
|
540
|
+
"cli.installSuccess": "{name} installed successfully",
|
|
541
|
+
"cli.installFailed": "{name} installation failed (exit code: {code})",
|
|
542
|
+
// Prompt templates
|
|
543
|
+
"prompt.analysis": `You are a requirements analyst. Please analyze the following Gongfeng Issue and output a requirements analysis document.
|
|
544
|
+
|
|
545
|
+
## Issue Information
|
|
546
|
+
- IID: #{iid}
|
|
547
|
+
- Title: {title}
|
|
548
|
+
- Description:
|
|
549
|
+
{description}{supplement}
|
|
550
|
+
|
|
551
|
+
## Output Requirements
|
|
552
|
+
Please write the analysis results to {planDir}/01-analysis.md, including:
|
|
553
|
+
1. **Requirements Overview** \u2014 Summarize the requirements goal concisely
|
|
554
|
+
2. **Feature Breakdown** \u2014 List specific features to implement
|
|
555
|
+
3. **Impact Analysis** \u2014 Which modules/files may be affected
|
|
556
|
+
4. **Non-functional Requirements** \u2014 Performance, security, compatibility considerations
|
|
557
|
+
5. **Risks and Dependencies** \u2014 Potential risks and external dependencies
|
|
558
|
+
|
|
559
|
+
Please read the project's CLAUDE.md first to understand the architecture, then proceed with analysis.
|
|
560
|
+
Only output document content, no other explanations.`,
|
|
561
|
+
"prompt.design": `You are a system designer. Design the system based on the requirements analysis document.
|
|
562
|
+
|
|
563
|
+
## Issue Information
|
|
564
|
+
- IID: #{iid}
|
|
565
|
+
- Title: {title}{supplement}
|
|
566
|
+
|
|
567
|
+
Please read first:
|
|
568
|
+
- {planDir}/01-analysis.md (Requirements Analysis)
|
|
569
|
+
- CLAUDE.md (Project Architecture)
|
|
570
|
+
|
|
571
|
+
## Output Requirements
|
|
572
|
+
Please write the design document to {planDir}/02-design.md, including:
|
|
573
|
+
1. **Solution Overview** \u2014 Overall design approach
|
|
574
|
+
2. **Files and Modules Involved** \u2014 List of files to create/modify
|
|
575
|
+
3. **Data Model Changes** \u2014 Database or model layer changes
|
|
576
|
+
4. **API Design** \u2014 API interface definitions
|
|
577
|
+
5. **Detailed Implementation Steps** \u2014 Step-by-step implementation plan
|
|
578
|
+
|
|
579
|
+
Please write the implementation Todolist to {planDir}/03-todolist.md, format:
|
|
580
|
+
- [ ] Step 1: Specific description
|
|
581
|
+
- [ ] Step 2: Specific description
|
|
582
|
+
...
|
|
583
|
+
|
|
584
|
+
Ensure the Todolist is detailed enough that each step can be independently executed and verified.`,
|
|
585
|
+
"prompt.implement": `You are a software engineer. Please implement code changes according to the design document and Todolist.
|
|
586
|
+
|
|
587
|
+
## Issue Information
|
|
588
|
+
- IID: #{iid}
|
|
589
|
+
- Title: {title}
|
|
590
|
+
|
|
591
|
+
Please read first:
|
|
592
|
+
- {planDir}/01-analysis.md (Requirements Analysis)
|
|
593
|
+
- {planDir}/02-design.md (System Design)
|
|
594
|
+
- {planDir}/03-todolist.md (Implementation Steps)
|
|
595
|
+
- CLAUDE.md (Project Architecture and Code Standards)
|
|
596
|
+
|
|
597
|
+
## Implementation Requirements
|
|
598
|
+
1. Complete tasks in 03-todolist.md one by one
|
|
599
|
+
2. After completing each item, update its checkbox status in 03-todolist.md (- [ ] \u2192 - [x])
|
|
600
|
+
3. Strictly follow code standards in CLAUDE.md (2-space indent, 120-char line width, naming conventions, etc.)
|
|
601
|
+
4. Don't over-engineer, only implement what's required in the design document
|
|
602
|
+
5. Ensure code security, avoid OWASP Top 10 vulnerabilities`,
|
|
603
|
+
"prompt.verify": `You are a test engineer. Verify the correctness of code changes.
|
|
604
|
+
|
|
605
|
+
## Issue Information
|
|
606
|
+
- IID: #{iid}
|
|
607
|
+
- Title: {title}
|
|
608
|
+
|
|
609
|
+
## Pre-checks
|
|
610
|
+
Before running verification, confirm the dependency environment:
|
|
611
|
+
1. Check if node_modules/.bin/eslint exists
|
|
612
|
+
2. If not, run pnpm install; if that fails, try pnpm install --ignore-scripts
|
|
613
|
+
3. If dependencies cannot be fully installed, mark as "environment issue" in the report and continue
|
|
614
|
+
|
|
615
|
+
## Verification Steps
|
|
616
|
+
1. Run pnpm run lint to check code style
|
|
617
|
+
2. Run pnpm run build to check compilation
|
|
618
|
+
3. Run pnpm test4vscode --files <test files related to changes> to run relevant tests
|
|
619
|
+
4. Check code changes against {planDir}/02-design.md design document consistency
|
|
620
|
+
5. Check if all items in {planDir}/03-todolist.md are completed
|
|
621
|
+
|
|
622
|
+
## Known Pre-existing Issues (can be ignored)
|
|
623
|
+
- During build, tests/ directory may show TS2307: Cannot find module 'japa' or 'sinon', these are known test framework type declaration issues
|
|
624
|
+
- If a lint/build/test failure **does not involve files changed in this PR**, mark as "pre-existing issue"
|
|
625
|
+
|
|
626
|
+
Write verification results to {planDir}/04-verify-report.md, including:
|
|
627
|
+
- **Lint Results**: Pass/fail with details (distinguish current changes vs pre-existing issues)
|
|
628
|
+
- **Build Results**: Pass/fail with details (distinguish current changes vs pre-existing issues)
|
|
629
|
+
- **Test Results**: Pass/fail with details
|
|
630
|
+
- **Design Consistency Check**: Whether it matches the design
|
|
631
|
+
- **Summary**: Overall assessment and recommendations`,
|
|
632
|
+
"prompt.planModeVerify": `You are a test engineer. Verify the correctness of code changes.
|
|
633
|
+
|
|
634
|
+
## Issue Information
|
|
635
|
+
- IID: #{iid}
|
|
636
|
+
- Title: {title}
|
|
637
|
+
|
|
638
|
+
## Pre-checks
|
|
639
|
+
Before running verification, confirm the dependency environment:
|
|
640
|
+
1. Check if node_modules/.bin/eslint exists
|
|
641
|
+
2. If not, run pnpm install; if that fails, try pnpm install --ignore-scripts
|
|
642
|
+
3. If dependencies cannot be fully installed, mark as "environment issue" in the report and continue
|
|
643
|
+
|
|
644
|
+
## Verification Steps
|
|
645
|
+
1. Run pnpm run lint to check code style
|
|
646
|
+
2. Run pnpm run build to check compilation
|
|
647
|
+
3. Run pnpm test4vscode --files <test files related to changes> to run relevant tests
|
|
648
|
+
4. Check code changes against {planDir}/01-plan.md implementation plan consistency
|
|
649
|
+
5. Check if all items in {planDir}/01-plan.md Todolist are completed
|
|
650
|
+
|
|
651
|
+
## Known Pre-existing Issues (can be ignored)
|
|
652
|
+
- During build, tests/ directory may show TS2307: Cannot find module 'japa' or 'sinon', these are known test framework type declaration issues
|
|
653
|
+
- If a lint/build/test failure **does not involve files changed in this PR**, mark as "pre-existing issue"
|
|
654
|
+
|
|
655
|
+
Write verification results to {planDir}/02-verify-report.md, including:
|
|
656
|
+
- **Lint Results**: Pass/fail with details (distinguish current changes vs pre-existing issues)
|
|
657
|
+
- **Build Results**: Pass/fail with details (distinguish current changes vs pre-existing issues)
|
|
658
|
+
- **Test Results**: Pass/fail with details
|
|
659
|
+
- **Plan Consistency Check**: Whether it matches the implementation plan
|
|
660
|
+
- **Summary**: Overall assessment and recommendations`,
|
|
661
|
+
"prompt.plan": `You are a senior technical lead. Please complete requirements analysis and solution design in one go.
|
|
662
|
+
|
|
663
|
+
## Issue Information
|
|
664
|
+
- IID: #{iid}
|
|
665
|
+
- Title: {title}
|
|
666
|
+
- Description:
|
|
667
|
+
{description}{supplement}
|
|
668
|
+
|
|
669
|
+
## Output Requirements
|
|
670
|
+
Please read the project's CLAUDE.md first to understand the architecture, then proceed with analysis and design.
|
|
671
|
+
|
|
672
|
+
Please write the complete implementation plan to {planDir}/01-plan.md, including:
|
|
673
|
+
|
|
674
|
+
### Part 1: Requirements Analysis
|
|
675
|
+
1. **Requirements Overview** \u2014 Summarize the requirements goal concisely
|
|
676
|
+
2. **Feature Breakdown** \u2014 List specific features to implement
|
|
677
|
+
3. **Impact Analysis** \u2014 Which modules/files may be affected
|
|
678
|
+
4. **Non-functional Requirements** \u2014 Performance, security, compatibility considerations
|
|
679
|
+
5. **Risks and Dependencies** \u2014 Potential risks and external dependencies
|
|
680
|
+
|
|
681
|
+
### Part 2: System Design
|
|
682
|
+
1. **Solution Overview** \u2014 Overall design approach
|
|
683
|
+
2. **Files and Modules Involved** \u2014 List of files to create/modify
|
|
684
|
+
3. **Data Model Changes** \u2014 Database or model layer changes
|
|
685
|
+
4. **API Design** \u2014 API interface definitions
|
|
686
|
+
5. **Detailed Implementation Steps** \u2014 Step-by-step implementation plan
|
|
687
|
+
|
|
688
|
+
### Part 3: Implementation Todolist
|
|
689
|
+
- [ ] Step 1: Specific description
|
|
690
|
+
- [ ] Step 2: Specific description
|
|
691
|
+
...
|
|
692
|
+
|
|
693
|
+
Ensure the Todolist is detailed enough that each step can be independently executed and verified.
|
|
694
|
+
Only output document content, no other explanations. Do not modify any code files.`,
|
|
695
|
+
"prompt.build": `You are a software engineer. Please complete code changes according to the implementation plan.
|
|
696
|
+
|
|
697
|
+
## Issue Information
|
|
698
|
+
- IID: #{iid}
|
|
699
|
+
- Title: {title}
|
|
700
|
+
|
|
701
|
+
Please read first:
|
|
702
|
+
- {planDir}/01-plan.md (Complete implementation plan including requirements analysis, system design and Todolist)
|
|
703
|
+
- CLAUDE.md (Project Architecture and Code Standards)
|
|
704
|
+
|
|
705
|
+
## Implementation Requirements
|
|
706
|
+
1. Strictly follow the Todolist in 01-plan.md, completing items one by one
|
|
707
|
+
2. After completing each item, update its checkbox status in 01-plan.md (- [ ] \u2192 - [x])
|
|
708
|
+
3. Strictly follow code standards in CLAUDE.md (2-space indent, 120-char line width, naming conventions, etc.)
|
|
709
|
+
4. Don't over-engineer, only implement what's required in the plan
|
|
710
|
+
5. Ensure code security, avoid OWASP Top 10 vulnerabilities`,
|
|
711
|
+
"prompt.rePlan": `You are a senior technical lead. The previous implementation plan was not approved. Please modify the plan based on review feedback.
|
|
712
|
+
|
|
713
|
+
## Issue Information
|
|
714
|
+
- IID: #{iid}
|
|
715
|
+
- Title: {title}
|
|
716
|
+
- Description:
|
|
717
|
+
{description}{supplement}
|
|
718
|
+
|
|
719
|
+
## Review Feedback History ({historyCount} rounds)
|
|
720
|
+
{feedbackLines}
|
|
721
|
+
|
|
722
|
+
Please read first:
|
|
723
|
+
- {planDir}/01-plan.md (Current implementation plan)
|
|
724
|
+
- {planDir}/review-feedback.md (Complete review feedback history)
|
|
725
|
+
- CLAUDE.md (Project Architecture)
|
|
726
|
+
|
|
727
|
+
## Output Requirements
|
|
728
|
+
Please modify {planDir}/01-plan.md incorporating all rounds of review feedback, maintaining the same document structure.
|
|
729
|
+
Focus on the latest round of feedback while ensuring issues raised in previous rounds are also resolved.
|
|
730
|
+
Only output document content, no other explanations. Do not modify any code files.`,
|
|
731
|
+
"prompt.rePlanRound": "### Round {round} ({timestamp})\n{feedback}",
|
|
732
|
+
"prompt.e2eSuffix.title": "## E2E UI Verification (Enabled)",
|
|
733
|
+
"prompt.e2eSuffix.intro": "E2E UI auto-verification is enabled for this change. Please perform the following additional steps:",
|
|
734
|
+
"prompt.e2eSuffix.previewNote": "**Preview environment is running (managed by the system, no manual startup needed):**",
|
|
735
|
+
"prompt.e2eSuffix.backend": "Backend",
|
|
736
|
+
"prompt.e2eSuffix.frontend": "Frontend"
|
|
737
|
+
};
|
|
738
|
+
|
|
739
|
+
// src/i18n/index.ts
|
|
740
|
+
var locales = /* @__PURE__ */ new Map();
|
|
741
|
+
var currentLocale = "zh-CN";
|
|
742
|
+
function setLocale(locale) {
|
|
743
|
+
currentLocale = locale;
|
|
744
|
+
}
|
|
745
|
+
function registerLocale(locale, messages) {
|
|
746
|
+
locales.set(locale, messages);
|
|
747
|
+
}
|
|
748
|
+
function t(key, params) {
|
|
749
|
+
const messages = locales.get(currentLocale) ?? locales.get("zh-CN");
|
|
750
|
+
if (!messages) return key;
|
|
751
|
+
let text = messages[key];
|
|
752
|
+
if (text === void 0) {
|
|
753
|
+
const fallback = locales.get("zh-CN");
|
|
754
|
+
text = fallback?.[key] ?? key;
|
|
755
|
+
}
|
|
756
|
+
if (params) {
|
|
757
|
+
for (const [k, v] of Object.entries(params)) {
|
|
758
|
+
text = text.replaceAll(`{${k}}`, String(v));
|
|
759
|
+
}
|
|
760
|
+
}
|
|
761
|
+
return text;
|
|
762
|
+
}
|
|
763
|
+
registerLocale("zh-CN", zhCN);
|
|
764
|
+
registerLocale("en", en);
|
|
765
|
+
|
|
766
|
+
export {
|
|
767
|
+
setLocale,
|
|
768
|
+
t
|
|
769
|
+
};
|
|
770
|
+
//# sourceMappingURL=chunk-OWVT3Z34.js.map
|