lee-spec-kit 0.6.41 → 0.6.42

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -478,7 +478,7 @@ var koContext = {
478
478
  "context.commandDetail.codeReviewPushFix": "({scope}) \uB9AC\uBDF0 \uC218\uC815 \uCEE4\uBC0B\uC744 push\uD558\uC138\uC694",
479
479
  "context.commandDetail.prePrReviewRun": "({scope}) \uBCF4\uC870 \uC5D0\uC774\uC804\uD2B8(sub-agent)\uB85C PR \uC804 \uB9AC\uBDF0\uB97C \uC2E4\uD589\uD574 `review-trace.json`\uC744 \uC900\uBE44\uD558\uC138\uC694",
480
480
  "context.commandDetail.prePrReviewRecord": "({scope}) Pre-PR \uB9AC\uBDF0 evidence\uB97C decisions.md\uC640 tasks.md\uC5D0 \uAE30\uB85D\uD558\uC138\uC694",
481
- "context.commandDetail.codeReviewRun": "({scope}) \uBCF4\uC870 \uC5D0\uC774\uC804\uD2B8(sub-agent)\uB85C PR \uB9AC\uBDF0\uB97C \uC2E4\uD589\uD574 evidence/\uC218\uC815 \uC694\uC57D\uC744 \uC900\uBE44\uD558\uC138\uC694",
481
+ "context.commandDetail.codeReviewRun": "({scope}) \uB9AC\uBDF0 \uCF54\uBA58\uD2B8\uB97C \uD655\uC778\uD558\uACE0, \uBCF4\uC870 \uC5D0\uC774\uC804\uD2B8(sub-agent)\uB85C \uC218\uC815 \uC791\uC5C5/evidence \uC815\uB9AC\uB97C \uC9C4\uD589\uD558\uC138\uC694",
482
482
  "context.actionSummary.runDocsCommand": "\uBB38\uC11C \uC791\uC5C5 \uBA85\uB839\uC744 \uC2E4\uD589\uD558\uC138\uC694",
483
483
  "context.actionSummary.runProjectCommand": "\uD504\uB85C\uC81D\uD2B8 \uC791\uC5C5 \uBA85\uB839\uC744 \uC2E4\uD589\uD558\uC138\uC694",
484
484
  "context.actionDetail.featureFolder": "Feature \uD3F4\uB354\uC640 \uAE30\uBCF8 \uBB38\uC11C \uACE8\uACA9\uC744 \uC900\uBE44\uD558\uC138\uC694",
@@ -496,12 +496,12 @@ var koContext = {
496
496
  "context.actionDetail.issueCreatePrepareFromDoc": "issue.md \uCD08\uC548\uC744 \uBCF4\uC644\uD558\uACE0 \uC0C1\uD0DC\uB97C Ready\uB85C \uC124\uC815\uD558\uC138\uC694",
497
497
  "context.actionDetail.issueCreateFromDoc": "Ready \uC0C1\uD0DC issue.md\uB85C \uC774\uC288\uB97C \uC0DD\uC131\uD558\uACE0 \uBC88\uD638\uB97C \uB3D9\uAE30\uD654\uD558\uC138\uC694",
498
498
  "context.actionDetail.taskExecute": "\uD604\uC7AC \uD0DC\uC2A4\uD06C\uB97C \uC9C4\uD589\uD558\uC138\uC694",
499
- "context.actionDetail.taskExecuteRun": "\uBCF4\uC870 \uC5D0\uC774\uC804\uD2B8(sub-agent) \uC791\uC5C5 handoff\uB97C \uC900\uBE44\uD558\uACE0 \uD0DC\uC2A4\uD06C\uB97C \uC2DC\uC791\uD558\uC138\uC694. (TODO\uBA74 DOING\uC73C\uB85C \uBCC0\uACBD)",
500
- "context.actionDetail.taskExecuteContinue": "\uBCF4\uC870 \uC5D0\uC774\uC804\uD2B8(sub-agent) \uC791\uC5C5 handoff\uB97C \uC900\uBE44\uD574 \uC9C4\uD589 \uC911\uC778 \uD0DC\uC2A4\uD06C\uB97C \uC774\uC5B4\uAC00\uC138\uC694",
499
+ "context.actionDetail.taskExecuteRun": "\uBCF4\uC870 \uC5D0\uC774\uC804\uD2B8(sub-agent) \uC791\uC5C5 handoff\uB97C \uC900\uBE44\uD558\uACE0 \uD0DC\uC2A4\uD06C\uB97C \uC2DC\uC791\uD558\uC138\uC694: {task}. (TODO\uBA74 DOING\uC73C\uB85C \uBCC0\uACBD)",
500
+ "context.actionDetail.taskExecuteContinue": "\uBCF4\uC870 \uC5D0\uC774\uC804\uD2B8(sub-agent) \uC791\uC5C5 handoff\uB97C \uC900\uBE44\uD574 \uC9C4\uD589 \uC911\uC778 \uD0DC\uC2A4\uD06C\uB97C \uC774\uC5B4\uAC00\uC138\uC694: {task}",
501
501
  "context.actionDetail.reviewFixCommit": "\uD574\uACB0\uD55C \uB9AC\uBDF0 \uD56D\uBAA9 \uC694\uC57D\uC73C\uB85C \uB9AC\uBDF0 \uC218\uC815 \uCEE4\uBC0B\uC744 \uB9CC\uB4DC\uC138\uC694",
502
502
  "context.actionDetail.prePrReviewRun": "\uBCF4\uC870 \uC5D0\uC774\uC804\uD2B8(sub-agent)\uB85C PR \uC804 \uB9AC\uBDF0\uB97C \uC2E4\uD589\uD574 `review-trace.json`\uC744 \uC900\uBE44\uD558\uC138\uC694",
503
503
  "context.actionDetail.prePrReviewRecord": "PR \uC804 \uB9AC\uBDF0 evidence\uB97C decisions.md\uC640 tasks.md\uC5D0 \uAE30\uB85D\uD558\uC138\uC694",
504
- "context.actionDetail.codeReviewRun": "\uBCF4\uC870 \uC5D0\uC774\uC804\uD2B8(sub-agent)\uB85C PR \uB9AC\uBDF0\uB97C \uC2E4\uD589\uD574 evidence/\uC218\uC815 \uC694\uC57D\uC744 \uC900\uBE44\uD558\uC138\uC694",
504
+ "context.actionDetail.codeReviewRun": "\uB9AC\uBDF0 \uCF54\uBA58\uD2B8\uB97C \uD655\uC778\uD558\uACE0, \uBCF4\uC870 \uC5D0\uC774\uC804\uD2B8(sub-agent)\uB85C \uC218\uC815 \uC791\uC5C5/evidence \uC815\uB9AC\uB97C \uC9C4\uD589\uD558\uC138\uC694",
505
505
  "context.actionDetail.prCreate": "PR\uC744 \uC0DD\uC131\uD558\uACE0 tasks \uAE30.md\uC758 PR \uC815\uBCF4\uB97C \uB9DE\uCD94\uC138\uC694",
506
506
  "context.actionDetail.prCreateRequiredSequence": "PR 2\uB2E8\uACC4(\uCD08\uC548/\uC2B9\uC778 \uD6C4 \uC0DD\uC131/\uB3D9\uAE30\uD654)\uB97C \uC21C\uC11C\uB300\uB85C \uC644\uB8CC\uD558\uC138\uC694",
507
507
  "context.actionDetail.prCreatePrepareFromDoc": "pr.md \uCD08\uC548\uC744 \uBCF4\uC644\uD558\uACE0 \uC0C1\uD0DC\uB97C Ready\uB85C \uC124\uC815\uD558\uC138\uC694",
@@ -1030,7 +1030,7 @@ var enContext = {
1030
1030
  "context.commandDetail.codeReviewPushFix": "({scope}) push review-fix commits",
1031
1031
  "context.commandDetail.prePrReviewRun": "({scope}) run the pre-PR review via a helper agent/sub-agent and prepare `review-trace.json`",
1032
1032
  "context.commandDetail.prePrReviewRecord": "({scope}) record pre-PR review evidence into decisions.md + tasks.md",
1033
- "context.commandDetail.codeReviewRun": "({scope}) run the PR review via a helper agent/sub-agent and prepare evidence/fix summary",
1033
+ "context.commandDetail.codeReviewRun": "({scope}) check PR review comments, then use a helper agent/sub-agent for the follow-up fixes and evidence summary",
1034
1034
  "context.actionSummary.runDocsCommand": "Run docs command",
1035
1035
  "context.actionSummary.runProjectCommand": "Run project command",
1036
1036
  "context.actionDetail.featureFolder": "Prepare feature folder and baseline docs",
@@ -1048,12 +1048,12 @@ var enContext = {
1048
1048
  "context.actionDetail.issueCreatePrepareFromDoc": "Refine issue.md draft and set Status to Ready",
1049
1049
  "context.actionDetail.issueCreateFromDoc": "Create GitHub Issue from ready issue.md and sync Issue",
1050
1050
  "context.actionDetail.taskExecute": "Proceed with the current task",
1051
- "context.actionDetail.taskExecuteRun": "Prepare helper agent/sub-agent task handoff and start the task. (TODO becomes DOING)",
1052
- "context.actionDetail.taskExecuteContinue": "Prepare helper agent/sub-agent handoff and continue the in-progress task",
1051
+ "context.actionDetail.taskExecuteRun": "Prepare helper agent/sub-agent task handoff and start the task: {task}. (TODO becomes DOING)",
1052
+ "context.actionDetail.taskExecuteContinue": "Prepare helper agent/sub-agent handoff and continue the in-progress task: {task}",
1053
1053
  "context.actionDetail.reviewFixCommit": "Create a review-fix commit with resolved feedback summary",
1054
1054
  "context.actionDetail.prePrReviewRun": "Run the pre-PR review via a helper agent/sub-agent and prepare `review-trace.json`",
1055
1055
  "context.actionDetail.prePrReviewRecord": "Record pre-PR review evidence into decisions.md and tasks.md",
1056
- "context.actionDetail.codeReviewRun": "Run the PR review via a helper agent/sub-agent and prepare evidence/fix summary",
1056
+ "context.actionDetail.codeReviewRun": "Check PR review comments, then use a helper agent/sub-agent for the follow-up fixes and evidence summary",
1057
1057
  "context.actionDetail.prCreate": "Create PR and sync PR fields in tasks.md",
1058
1058
  "context.actionDetail.prCreateRequiredSequence": "Complete PR 2-step flow: prepare draft + OK, then create and sync",
1059
1059
  "context.actionDetail.prCreatePrepareFromDoc": "Refine pr.md draft and set Status to Ready",
@@ -3769,6 +3769,14 @@ function resolveProjectCommitTopic(feature) {
3769
3769
  const topic = withoutTaskId || normalizeCommitTopicText(feature.folderName);
3770
3770
  return toShellSafeCommitTopic(topic);
3771
3771
  }
3772
+ function resolveTaskUiLabel(task) {
3773
+ if (!task) return "T-unknown task";
3774
+ const id = task.id?.trim();
3775
+ const title = task.title.trim();
3776
+ const normalizedTitle = id ? title.replace(new RegExp(`^${id.replace(/[.*+?^${}()|[\]\\]/g, "\\$&")}\\s+`), "") : title;
3777
+ if (id) return `${id} - ${normalizedTitle || title}`;
3778
+ return title || "T-unknown task";
3779
+ }
3772
3780
  function getReviewFixCommitGuidance(feature, lang, options) {
3773
3781
  const prePr = !!options?.prePr;
3774
3782
  if (prePr) {
@@ -4066,6 +4074,9 @@ function getStepDefinitions(ctx) {
4066
4074
  requiresUserCheck: true,
4067
4075
  taskExecutePhase: "complete",
4068
4076
  uiDetailKey: "context.actionDetail.taskExecuteContinue",
4077
+ uiDetailParams: {
4078
+ task: resolveTaskUiLabel(f.activeTask)
4079
+ },
4069
4080
  scope: "docs",
4070
4081
  cwd: f.git.docsGitCwd,
4071
4082
  cmd: buildSelfCliCommand(
@@ -4188,6 +4199,9 @@ ${tr(lang, "messages", "taskCommitGateWarnProceed", {
4188
4199
  requiresUserCheck: true,
4189
4200
  taskExecutePhase: "start",
4190
4201
  uiDetailKey: "context.actionDetail.taskExecuteRun",
4202
+ uiDetailParams: {
4203
+ task: resolveTaskUiLabel(f.nextTodoTask)
4204
+ },
4191
4205
  scope: "docs",
4192
4206
  cwd: f.git.docsGitCwd,
4193
4207
  cmd: buildSelfCliCommand(
@@ -4348,7 +4362,7 @@ ${tr(lang, "messages", "prePrReviewDecisionReconfirm", {
4348
4362
  const isCodeReviewNeedEvidence = (f) => isCodeReviewCurrent(f) && f.pr.status === "Review" && workflowPolicy.requireReview && !isCodeReviewNeedEvidenceField(f) && !f.prReview.evidenceProvided;
4349
4363
  const isCodeReviewNeedDecisionField = (f) => isCodeReviewCurrent(f) && f.pr.status === "Review" && workflowPolicy.requireReview && !isCodeReviewNeedEvidenceField(f) && f.prReview.evidenceProvided && !f.docs.prReviewDecisionFieldExists;
4350
4364
  const isCodeReviewNeedDecision = (f) => isCodeReviewCurrent(f) && f.pr.status === "Review" && workflowPolicy.requireReview && !isCodeReviewNeedEvidenceField(f) && f.prReview.evidenceProvided && !isCodeReviewNeedDecisionField(f) && !f.prReview.decisionProvided;
4351
- const isCodeReviewRun = (f) => isCodeReviewCurrent(f) && f.pr.status === "Review" && workflowPolicy.requireReview && !isCodeReviewNeedEvidenceField(f) && !f.prReview.evidenceProvided && !f.prReview.decisionProvided;
4365
+ const isCodeReviewRun = (f) => isCodeReviewCurrent(f) && f.pr.status === "Review" && workflowPolicy.requireReview && (f.git.projectBranchAhead || 0) === 0 && !isCodeReviewNeedEvidenceField(f) && !f.prReview.evidenceProvided && !f.prReview.decisionProvided;
4352
4366
  const isCodeReviewFinalize = (f) => isCodeReviewCurrent(f) && !isCodeReviewSyncApproved(f) && (!workflowPolicy.requireReview || f.pr.status === "Review" && !isCodeReviewNeedEvidenceField(f) && !isCodeReviewNeedEvidence(f) && !isCodeReviewNeedDecisionField(f) && !isCodeReviewNeedDecision(f) && f.prReview.evidenceProvided && f.prReview.decisionProvided);
4353
4367
  const isCodeReviewRequestReview = (f) => isCodeReviewCurrent(f) && !!f.pr.status && f.pr.status !== "Review";
4354
4368
  const getCodeReviewRunActions = (f) => [
@@ -8130,11 +8144,11 @@ function annotateActions(actions) {
8130
8144
  }
8131
8145
  function getActionSummary(action, lang) {
8132
8146
  if (action.uiSummaryKey) {
8133
- const localized = tr(lang, "cli", action.uiSummaryKey);
8147
+ const localized = tr(lang, "cli", action.uiSummaryKey, action.uiDetailParams);
8134
8148
  if (localized !== `cli.${action.uiSummaryKey}`) return localized;
8135
8149
  }
8136
8150
  if (action.uiDetailKey) {
8137
- const localized = tr(lang, "cli", action.uiDetailKey);
8151
+ const localized = tr(lang, "cli", action.uiDetailKey, action.uiDetailParams);
8138
8152
  if (localized !== `cli.${action.uiDetailKey}`) return localized;
8139
8153
  }
8140
8154
  const detailKey = action.category ? ACTION_DETAIL_KEY_BY_CATEGORY[action.category] : void 0;
@@ -8159,7 +8173,7 @@ function toOneLine(text) {
8159
8173
  }
8160
8174
  function buildActionDetail(action, lang) {
8161
8175
  if (action.uiDetailKey) {
8162
- const localized = tr(lang, "cli", action.uiDetailKey);
8176
+ const localized = tr(lang, "cli", action.uiDetailKey, action.uiDetailParams);
8163
8177
  if (localized !== `cli.${action.uiDetailKey}`) return localized;
8164
8178
  }
8165
8179
  const formatBranchCreateDetail = (command) => {
@@ -8282,7 +8296,8 @@ function buildActionSnapshot(actionOptions) {
8282
8296
  operationType: action.operationType,
8283
8297
  requiresUserCheck: !!action.requiresUserCheck,
8284
8298
  uiSummaryKey: action.uiSummaryKey,
8285
- uiDetailKey: action.uiDetailKey
8299
+ uiDetailKey: action.uiDetailKey,
8300
+ uiDetailParams: action.uiDetailParams ? JSON.stringify(action.uiDetailParams) : void 0
8286
8301
  };
8287
8302
  }
8288
8303
  return {
@@ -8293,7 +8308,8 @@ function buildActionSnapshot(actionOptions) {
8293
8308
  operationType: action.operationType,
8294
8309
  requiresUserCheck: !!action.requiresUserCheck,
8295
8310
  uiSummaryKey: action.uiSummaryKey,
8296
- uiDetailKey: action.uiDetailKey
8311
+ uiDetailKey: action.uiDetailKey,
8312
+ uiDetailParams: action.uiDetailParams ? JSON.stringify(action.uiDetailParams) : void 0
8297
8313
  };
8298
8314
  });
8299
8315
  }
@@ -8915,6 +8931,9 @@ function toCompactActionOption(option) {
8915
8931
  if (option.action.taskExecutePhase) {
8916
8932
  base.taskExecutePhase = option.action.taskExecutePhase;
8917
8933
  }
8934
+ if (option.action.uiDetailParams) {
8935
+ base.uiDetailParams = option.action.uiDetailParams;
8936
+ }
8918
8937
  if (option.action.type === "command") {
8919
8938
  base.scope = option.action.scope;
8920
8939
  base.cwd = option.action.cwd;
@@ -9205,7 +9224,11 @@ async function runApprovedOption(state, config, lang, featureName, selectionOpti
9205
9224
  approval,
9206
9225
  state.actionOptions.map((o) => o.label)
9207
9226
  );
9208
- parsedLabel = parsedApproval?.label ?? null;
9227
+ const replanOptions = state.actionOptions.filter(
9228
+ (option) => option.action.category === "user_request_replan"
9229
+ );
9230
+ const implicitReplanRequest = approval.trim();
9231
+ parsedLabel = parsedApproval?.label ?? (replanOptions.length > 0 && implicitReplanRequest ? replanOptions[0].label : null);
9209
9232
  if (!parsedLabel) {
9210
9233
  throw createCliError(
9211
9234
  "INVALID_APPROVAL",
@@ -9249,7 +9272,7 @@ async function runApprovedOption(state, config, lang, featureName, selectionOpti
9249
9272
  }
9250
9273
  const selectedAction = freshSelected.action;
9251
9274
  if (selectedAction.category === "user_request_replan") {
9252
- const requestText = parsedApproval?.requestText?.trim();
9275
+ const requestText = (parsedApproval?.requestText?.trim() || (parsedApproval ? "" : implicitReplanRequest)).trim();
9253
9276
  if (!requestText) {
9254
9277
  throw createCliError(
9255
9278
  "INVALID_APPROVAL",
@@ -12409,6 +12432,12 @@ function sanitizeDraftMetadataValue(raw) {
12409
12432
  if (/^\(.+\)$/.test(value)) return void 0;
12410
12433
  return value;
12411
12434
  }
12435
+ function sanitizeDraftTitleValue(raw) {
12436
+ const value = sanitizeDraftMetadataValue(raw);
12437
+ if (!value) return void 0;
12438
+ const normalized = value.replace(/`/g, "").replace(/\*\*(.*?)\*\*/g, "$1").replace(/\[(.*?)\]\((.*?)\)/g, "$1").replace(/\s+/g, " ").trim();
12439
+ return normalized || void 0;
12440
+ }
12412
12441
  function parseWorkflowDraftStatus(raw) {
12413
12442
  const value = (raw || "").trim();
12414
12443
  if (!value) return void 0;
@@ -12420,7 +12449,7 @@ function parseWorkflowDraftMetadata(content) {
12420
12449
  const status = parseWorkflowDraftStatus(
12421
12450
  extractDraftMetadataValue(content, ["Status", "\uC0C1\uD0DC"])
12422
12451
  );
12423
- const title = sanitizeDraftMetadataValue(
12452
+ const title = sanitizeDraftTitleValue(
12424
12453
  extractDraftMetadataValue(content, ["Title", "\uC81C\uBAA9", "PR Title", "PR \uC81C\uBAA9"])
12425
12454
  );
12426
12455
  const labels = sanitizeDraftMetadataValue(
@@ -16103,18 +16132,20 @@ async function runPrePrReview(featureName, options) {
16103
16132
  function buildCodeReviewRunPrompt(input) {
16104
16133
  if (input.lang === "ko") {
16105
16134
  return [
16106
- "PR \uB9AC\uBDF0 \uC2E4\uD589\uC744 \uC2DC\uC791\uD558\uC138\uC694.",
16135
+ "PR \uB9AC\uBDF0 \uCF54\uBA58\uD2B8\uB97C \uD655\uC778\uD558\uACE0 \uBCF4\uC870 \uC5D0\uC774\uC804\uD2B8\uB85C \uC218\uC815 \uC791\uC5C5\uC744 \uC9C4\uD589\uD558\uC138\uC694.",
16107
16136
  `- Feature: ${input.featureRef}`,
16108
16137
  `- ${input.basePrompt}`,
16109
- "- \uB9AC\uBDF0 \uCF54\uBA58\uD2B8 \uBC18\uC601 \uD6C4 `tasks.md`\uC758 `PR \uC804 \uB9AC\uBDF0 Evidence/Decision`\uC774 \uC544\uB2C8\uB77C `PR Review Evidence/Decision`\uC744 \uCD5C\uC2E0\uC73C\uB85C \uAE30\uB85D\uD558\uC138\uC694.",
16138
+ "- \uC0AC\uB78C/CodeRabbit\uC774 \uB0A8\uAE34 \uB9AC\uBDF0 \uCF54\uBA58\uD2B8\uB97C \uAC80\uD1A0\uD558\uACE0 \uD544\uC694\uD55C \uCF54\uB4DC/\uBB38\uC11C \uC218\uC815\uC744 \uC9C4\uD589\uD558\uC138\uC694.",
16139
+ "- \uC218\uC815 \uB0B4\uC6A9\uACFC \uAC80\uD1A0 \uACB0\uACFC\uB97C \uBC18\uC601\uD55C \uB4A4 `tasks.md`\uC758 `PR Review Evidence/Decision`\uC744 \uCD5C\uC2E0\uC73C\uB85C \uAE30\uB85D\uD558\uC138\uC694.",
16110
16140
  "- \uAD00\uB828 \uC218\uC815\uC774 \uC0DD\uAE30\uBA74 \uCF54\uB4DC/\uBB38\uC11C \uBCC0\uACBD\uC744 \uC815\uB9AC\uD558\uACE0, push/merge\uB294 \uBA54\uC778 \uC5D0\uC774\uC804\uD2B8 \uCD5C\uC885 \uC0C1\uD0DC\uC5D0\uC11C\uB9CC \uC9C4\uD589\uD558\uC138\uC694."
16111
16141
  ].join("\n");
16112
16142
  }
16113
16143
  return [
16114
- "Start the PR review execution.",
16144
+ "Review PR comments and use a helper agent/sub-agent for the follow-up fixes.",
16115
16145
  `- Feature: ${input.featureRef}`,
16116
16146
  `- ${input.basePrompt}`,
16117
- "- Update `PR Review Evidence` and `PR Review Decision` in `tasks.md` after reviewing comments and applying fixes.",
16147
+ "- Check human/CodeRabbit review comments and make the required code/docs changes.",
16148
+ "- Update `PR Review Evidence` and `PR Review Decision` in `tasks.md` after applying the fixes and summarizing the outcome.",
16118
16149
  "- If review fixes are needed, keep code/docs changes ready for the main-agent finalize state. Push/merge stays in the main agent."
16119
16150
  ].join("\n");
16120
16151
  }
@@ -16164,7 +16195,7 @@ async function runCodeReviewRun(featureName, options) {
16164
16195
  console.log();
16165
16196
  console.log(
16166
16197
  chalk8.yellow(
16167
- config.lang === "ko" ? "\uC774 \uBA85\uB839\uC740 PR \uB9AC\uBDF0 handoff\uB9CC \uC900\uBE44\uD569\uB2C8\uB2E4. \uB9AC\uBDF0 evidence/decision\uC744 \uC9C1\uC811 \uAE30\uB85D\uD558\uAC70\uB098 \uC6CC\uD06C\uD50C\uB85C\uC6B0 \uC0C1\uD0DC\uB97C \uBC14\uB85C \uB118\uAE30\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4." : "This command only prepares the PR review handoff. It does not record review evidence/decision or advance workflow state by itself."
16198
+ config.lang === "ko" ? "\uC774 \uBA85\uB839\uC740 PR \uB9AC\uBDF0 \uCF54\uBA58\uD2B8 \uB300\uC751\uC6A9 handoff\uB9CC \uC900\uBE44\uD569\uB2C8\uB2E4. \uCF54\uBA58\uD2B8\uB97C \uC9C1\uC811 \uC77D\uC5B4\uC624\uAC70\uB098 evidence/decision\uC744 \uC790\uB3D9 \uAE30\uB85D\uD558\uC9C0 \uC54A\uC73C\uBA70, \uC0C1\uD0DC\uB3C4 \uBC14\uB85C \uB118\uAE30\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4." : "This command only prepares a handoff for addressing PR review comments. It does not fetch comments automatically, record review evidence/decision, or advance workflow state by itself."
16168
16199
  )
16169
16200
  );
16170
16201
  console.log(chalk8.gray(`- substate: ${payload.substateId}`));