ai-git-tools 2.0.9 → 2.0.10

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/README.md CHANGED
@@ -223,7 +223,7 @@ export default {
223
223
 
224
224
  // Reviewer 設定
225
225
  reviewers: {
226
- autoSelect: false, // 啟用 reviewer 選擇
226
+ interactiveReviewers: false, // 啟用 reviewer 選擇
227
227
  maxSuggested: 5, // 最多建議人數
228
228
  gitHistoryDepth: 20, // Git 歷史分析深度
229
229
  excludeAuthors: [], // 排除特定作者
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ai-git-tools",
3
- "version": "2.0.9",
3
+ "version": "2.0.10",
4
4
  "description": "AI-powered Git automation tools for commit messages and PR generation",
5
5
  "main": "src/index.js",
6
6
  "type": "module",
@@ -30,7 +30,7 @@ export default {
30
30
 
31
31
  // Reviewers 相關配置
32
32
  reviewers: {
33
- autoSelect: true, // 啟用互動式 reviewer 選擇(true: 顯示選單,false: 跳過,創建 PR 後手動添加)
33
+ interactiveReviewers: true, // 啟用互動式 reviewer 選擇(true: 顯示選單,false: 跳過,創建 PR 後手動添加)
34
34
  maxSuggested: 5, // 最多建議幾位 reviewers(基於 Git 歷史分析)
35
35
  gitHistoryDepth: 20, // 分析 Git 歷史的深度(最近 N 筆 commits)
36
36
  excludeAuthors: [], // 排除的作者列表(例如:['bot@example.com', 'ci-user'])
@@ -13,7 +13,7 @@ export function parseCliArgs() {
13
13
  draft: false,
14
14
  preview: false,
15
15
  noConfirm: false,
16
- autoReviewers: false,
16
+ interactiveReviewers: undefined,
17
17
  autoLabels: null,
18
18
  orgName: null,
19
19
  };
@@ -41,8 +41,8 @@ export function parseCliArgs() {
41
41
  case '--no-confirm':
42
42
  config.noConfirm = true;
43
43
  break;
44
- case '--auto-reviewers':
45
- config.autoReviewers = true;
44
+ case '--interactive-reviewers':
45
+ config.interactiveReviewers = true;
46
46
  break;
47
47
  case '--auto-labels':
48
48
  config.autoLabels = true;
@@ -78,8 +78,8 @@ export async function loadConfig() {
78
78
  // 使用內建預設值
79
79
  config = {
80
80
  ai: { model: 'gpt-4.1', maxDiffLength: 8000, maxRetries: 3 },
81
- github: { orgName: 'kingsinfo-project', defaultBase: 'release', autoLabels: true },
82
- reviewers: { autoSelect: false, maxSuggested: 5, gitHistoryDepth: 20, excludeAuthors: [] },
81
+ github: { orgName: '', defaultBase: 'release', autoLabels: true },
82
+ reviewers: { interactiveReviewers: true, maxSuggested: 5, gitHistoryDepth: 20, excludeAuthors: [] },
83
83
  output: { verbose: false, saveHistory: false },
84
84
  };
85
85
  }
@@ -90,8 +90,8 @@ export async function loadConfig() {
90
90
  // 合併配置(CLI 參數優先)
91
91
  if (cliConfig.model) config.ai.model = cliConfig.model;
92
92
  if (cliConfig.orgName) config.github.orgName = cliConfig.orgName;
93
- if (cliConfig.autoReviewers) config.reviewers.autoSelect = cliConfig.autoReviewers;
94
- if (cliConfig.autoLabels) config.github.autoLabels = cliConfig.autoLabels;
93
+ if (cliConfig.interactiveReviewers !== undefined) config.reviewers.interactiveReviewers = cliConfig.interactiveReviewers;
94
+ if (cliConfig.autoLabels !== undefined) config.github.autoLabels = cliConfig.autoLabels;
95
95
 
96
96
  // 其他 CLI 參數直接加入 config
97
97
  config.baseBranch = cliConfig.baseBranch;
@@ -119,14 +119,14 @@ function showHelp() {
119
119
  --draft 創建草稿 PR
120
120
  --preview 僅預覽 PR 內容,不實際創建
121
121
  --no-confirm 跳過確認直接創建
122
- --auto-reviewers 自動選擇 reviewers(不互動)
123
- --auto-labels 自動添加 Labels(預設啟用)
122
+ --interactive-reviewers 啟用互動式 reviewer 選擇(預設啟用)
123
+ --auto-labels 自動添加 Labels(預設啟用)
124
124
  --no-labels 不添加 Labels
125
125
  --help 顯示此說明
126
126
 
127
127
  範例:
128
128
  node scripts/ai-auto-pr.mjs
129
129
  node scripts/ai-auto-pr.mjs --base main --draft
130
- node scripts/ai-auto-pr.mjs --auto-reviewers --auto-labels
130
+ node scripts/ai-auto-pr.mjs --interactive-reviewers --auto-labels
131
131
  `);
132
132
  }
@@ -8,7 +8,7 @@ import { InteractiveSelect } from '../ui/interactive-select.js';
8
8
  */
9
9
  export class ReviewerSelector {
10
10
  constructor(config = {}) {
11
- this.autoSelect = config.autoReviewers || false;
11
+ this.interactiveReviewers = config.interactiveReviewers !== undefined ? config.interactiveReviewers : true;
12
12
  this.maxSuggested = config.maxSuggested || 5;
13
13
  this.gitHistoryDepth = config.gitHistoryDepth || 20;
14
14
  this.excludeAuthors = config.excludeAuthors || [];
@@ -220,13 +220,13 @@ export class ReviewerSelector {
220
220
  * 選擇 Reviewers(根據模式)
221
221
  */
222
222
  async select(teamsData, suggestedReviewers, currentUser) {
223
- if (this.autoSelect) {
224
- // autoSelect: true 表示啟用 reviewer 選擇功能(互動模式)
223
+ if (this.interactiveReviewers) {
224
+ // interactiveReviewers: true 表示啟用互動式選擇(手動選擇)
225
225
  return this.selectInteractive(teamsData, suggestedReviewers, currentUser);
226
226
  } else {
227
- // autoSelect: false 表示不選擇 reviewers(跳過此步驟)
228
- console.log('⏭️ 已跳過 reviewer 選擇(可在創建 PR 後手動添加)\n');
229
- return { teams: [], individuals: [] };
227
+ // interactiveReviewers: false 表示自動選擇(基於 Git 歷史)
228
+ console.log('🤖 自動選擇 reviewers(基於 Git 歷史)\n');
229
+ return this.autoSelectReviewers(suggestedReviewers, currentUser);
230
230
  }
231
231
  }
232
232
  }
@@ -24,7 +24,7 @@ export default {
24
24
 
25
25
  // Reviewer 設定(用於 PR 工具)
26
26
  reviewers: {
27
- autoSelect: true, // 是否啟用 reviewer 選擇功能(true: 啟用互動選擇 | false: 跳過選擇)
27
+ interactiveReviewers: true, // 是否啟用 reviewer 選擇功能(true: 啟用互動選擇 | false: 跳過選擇)
28
28
  maxSuggested: 5, // 最多建議的 reviewers 數量(基於 Git 歷史分析)
29
29
  gitHistoryDepth: 20, // Git 歷史分析深度(查看最近 N 筆 commit)
30
30
  excludeAuthors: [], // 排除特定作者(email 或 username),例如: ['bot@', 'ci-user']