npm-cli-gh-issue-preparator 1.16.1 → 1.17.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/CHANGELOG.md CHANGED
@@ -1,3 +1,10 @@
1
+ # [1.17.0](https://github.com/HiromiShikata/npm-cli-gh-issue-preparator/compare/v1.16.1...v1.17.0) (2026-02-26)
2
+
3
+
4
+ ### Features
5
+
6
+ * **cli:** move all CLI parameters to config YAML file ([bf4672c](https://github.com/HiromiShikata/npm-cli-gh-issue-preparator/commit/bf4672cb1aca8c5003ac23c456d0c400ce0147f8))
7
+
1
8
  ## [1.16.1](https://github.com/HiromiShikata/npm-cli-gh-issue-preparator/compare/v1.16.0...v1.16.1) (2026-02-25)
2
9
 
3
10
 
package/README.md CHANGED
@@ -24,20 +24,30 @@ Commands:
24
24
  help [command] display help for command
25
25
  ```
26
26
 
27
+ ## Configuration
28
+
29
+ All parameters can be specified in a YAML config file. See [config.example.yml](./config.example.yml) for a complete example. CLI options override config file values.
30
+
27
31
  ## Example 📖
28
32
 
29
33
  Here's a quick example to illustrate its usage:
30
34
 
31
- ### Start preparation
35
+ ### Using config file
36
+
37
+ ```
38
+ npx npm-cli-gh-issue-preparator startDaemon --configFilePath ./config.yml
39
+ ```
40
+
41
+ ### Start preparation (with CLI overrides)
32
42
 
33
43
  ```
34
- npx npm-cli-gh-issue-preparator startDaemon --projectUrl <projectUrl> --awaitingWorkspaceStatus "Awaiting workspace" --preparationStatus "Preparation" --defaultAgentName "impl"
44
+ npx npm-cli-gh-issue-preparator startDaemon --configFilePath ./config.yml --projectUrl <projectUrl> --awaitingWorkspaceStatus "Awaiting workspace" --preparationStatus "Preparation" --defaultAgentName "impl"
35
45
  ```
36
46
 
37
47
  ### Notify finished issue preparation
38
48
 
39
49
  ```
40
- npx npm-cli-gh-issue-preparator notifyFinishedIssuePreparation --projectUrl <projectUrl> --issueUrl <issueUrl> --preparationStatus "Preparation" --awaitingQualityCheckStatus "Awaiting quality check"
50
+ npx npm-cli-gh-issue-preparator notifyFinishedIssuePreparation --configFilePath ./config.yml --issueUrl <issueUrl>
41
51
  ```
42
52
 
43
53
  ## Contributing
@@ -1,12 +1,47 @@
1
1
  #!/usr/bin/env node
2
2
  "use strict";
3
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
4
+ if (k2 === undefined) k2 = k;
5
+ var desc = Object.getOwnPropertyDescriptor(m, k);
6
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
7
+ desc = { enumerable: true, get: function() { return m[k]; } };
8
+ }
9
+ Object.defineProperty(o, k2, desc);
10
+ }) : (function(o, m, k, k2) {
11
+ if (k2 === undefined) k2 = k;
12
+ o[k2] = m[k];
13
+ }));
14
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
15
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
16
+ }) : function(o, v) {
17
+ o["default"] = v;
18
+ });
19
+ var __importStar = (this && this.__importStar) || (function () {
20
+ var ownKeys = function(o) {
21
+ ownKeys = Object.getOwnPropertyNames || function (o) {
22
+ var ar = [];
23
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
24
+ return ar;
25
+ };
26
+ return ownKeys(o);
27
+ };
28
+ return function (mod) {
29
+ if (mod && mod.__esModule) return mod;
30
+ var result = {};
31
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
32
+ __setModuleDefault(result, mod);
33
+ return result;
34
+ };
35
+ })();
3
36
  var __importDefault = (this && this.__importDefault) || function (mod) {
4
37
  return (mod && mod.__esModule) ? mod : { "default": mod };
5
38
  };
6
39
  Object.defineProperty(exports, "__esModule", { value: true });
7
- exports.program = void 0;
40
+ exports.loadConfigFile = exports.program = void 0;
8
41
  const dotenv_1 = __importDefault(require("dotenv"));
9
42
  dotenv_1.default.config();
43
+ const fs = __importStar(require("fs"));
44
+ const yaml = __importStar(require("js-yaml"));
10
45
  const commander_1 = require("commander");
11
46
  const StartPreparationUseCase_1 = require("../../../domain/usecases/StartPreparationUseCase");
12
47
  const NotifyFinishedIssuePreparationUseCase_1 = require("../../../domain/usecases/NotifyFinishedIssuePreparationUseCase");
@@ -16,6 +51,41 @@ const TowerDefenceProjectRepository_1 = require("../../repositories/TowerDefence
16
51
  const GitHubIssueCommentRepository_1 = require("../../repositories/GitHubIssueCommentRepository");
17
52
  const NodeLocalCommandRunner_1 = require("../../repositories/NodeLocalCommandRunner");
18
53
  const OauthAPIClaudeRepository_1 = require("../../repositories/OauthAPIClaudeRepository");
54
+ const getStringValue = (obj, key) => {
55
+ const value = obj[key];
56
+ return typeof value === 'string' ? value : undefined;
57
+ };
58
+ const getNumberValue = (obj, key) => {
59
+ const value = obj[key];
60
+ return typeof value === 'number' ? value : undefined;
61
+ };
62
+ const isRecord = (value) => typeof value === 'object' && value !== null && !Array.isArray(value);
63
+ const loadConfigFile = (configFilePath) => {
64
+ try {
65
+ const content = fs.readFileSync(configFilePath, 'utf-8');
66
+ const parsed = yaml.load(content);
67
+ if (!isRecord(parsed)) {
68
+ return {};
69
+ }
70
+ return {
71
+ projectUrl: getStringValue(parsed, 'projectUrl'),
72
+ awaitingWorkspaceStatus: getStringValue(parsed, 'awaitingWorkspaceStatus'),
73
+ preparationStatus: getStringValue(parsed, 'preparationStatus'),
74
+ defaultAgentName: getStringValue(parsed, 'defaultAgentName'),
75
+ logFilePath: getStringValue(parsed, 'logFilePath'),
76
+ maximumPreparingIssuesCount: getNumberValue(parsed, 'maximumPreparingIssuesCount'),
77
+ utilizationPercentageThreshold: getNumberValue(parsed, 'utilizationPercentageThreshold'),
78
+ awaitingQualityCheckStatus: getStringValue(parsed, 'awaitingQualityCheckStatus'),
79
+ thresholdForAutoReject: getNumberValue(parsed, 'thresholdForAutoReject'),
80
+ };
81
+ }
82
+ catch (error) {
83
+ const message = error instanceof Error ? error.message : String(error);
84
+ console.error(`Failed to load configuration file "${configFilePath}": ${message}`);
85
+ process.exit(1);
86
+ }
87
+ };
88
+ exports.loadConfigFile = loadConfigFile;
19
89
  const program = new commander_1.Command();
20
90
  exports.program = program;
21
91
  program
@@ -24,11 +94,11 @@ program
24
94
  program
25
95
  .command('startDaemon')
26
96
  .description('Start daemon to prepare GitHub issues')
27
- .requiredOption('--projectUrl <url>', 'GitHub project URL')
28
- .requiredOption('--awaitingWorkspaceStatus <status>', 'Status for issues awaiting workspace')
29
- .requiredOption('--preparationStatus <status>', 'Status for issues in preparation')
30
- .requiredOption('--defaultAgentName <name>', 'Default agent name')
31
97
  .requiredOption('--configFilePath <path>', 'Path to config file for tower defence management')
98
+ .option('--projectUrl <url>', 'GitHub project URL')
99
+ .option('--awaitingWorkspaceStatus <status>', 'Status for issues awaiting workspace')
100
+ .option('--preparationStatus <status>', 'Status for issues in preparation')
101
+ .option('--defaultAgentName <name>', 'Default agent name')
32
102
  .option('--logFilePath <path>', 'Path to log file')
33
103
  .option('--maximumPreparingIssuesCount <count>', 'Maximum number of issues in preparation status (default: 6)')
34
104
  .option('--utilizationPercentageThreshold <percentage>', 'Claude usage percentage threshold for skipping preparation (default: 90)')
@@ -38,6 +108,28 @@ program
38
108
  console.error('GH_TOKEN environment variable is required');
39
109
  process.exit(1);
40
110
  }
111
+ const config = loadConfigFile(options.configFilePath);
112
+ const projectUrl = options.projectUrl ?? config.projectUrl;
113
+ const awaitingWorkspaceStatus = options.awaitingWorkspaceStatus ?? config.awaitingWorkspaceStatus;
114
+ const preparationStatus = options.preparationStatus ?? config.preparationStatus;
115
+ const defaultAgentName = options.defaultAgentName ?? config.defaultAgentName;
116
+ const logFilePath = options.logFilePath ?? config.logFilePath;
117
+ if (!projectUrl) {
118
+ console.error('projectUrl is required. Provide via --projectUrl or config file.');
119
+ process.exit(1);
120
+ }
121
+ if (!awaitingWorkspaceStatus) {
122
+ console.error('awaitingWorkspaceStatus is required. Provide via --awaitingWorkspaceStatus or config file.');
123
+ process.exit(1);
124
+ }
125
+ if (!preparationStatus) {
126
+ console.error('preparationStatus is required. Provide via --preparationStatus or config file.');
127
+ process.exit(1);
128
+ }
129
+ if (!defaultAgentName) {
130
+ console.error('defaultAgentName is required. Provide via --defaultAgentName or config file.');
131
+ process.exit(1);
132
+ }
41
133
  const projectRepository = new TowerDefenceProjectRepository_1.TowerDefenceProjectRepository(options.configFilePath, token);
42
134
  const towerDefenceIssueRepository = new TowerDefenceIssueRepository_1.TowerDefenceIssueRepository(options.configFilePath, token);
43
135
  const graphqlIssueRepository = new GraphqlIssueRepository_1.GraphqlIssueRepository(token);
@@ -49,8 +141,9 @@ program
49
141
  update: graphqlIssueRepository.update.bind(graphqlIssueRepository),
50
142
  }, claudeRepository, localCommandRunner);
51
143
  let maximumPreparingIssuesCount = null;
52
- if (options.maximumPreparingIssuesCount !== undefined) {
53
- const parsedCount = Number(options.maximumPreparingIssuesCount);
144
+ const rawMaxCount = options.maximumPreparingIssuesCount ?? config.maximumPreparingIssuesCount;
145
+ if (rawMaxCount !== undefined) {
146
+ const parsedCount = Number(rawMaxCount);
54
147
  if (!Number.isFinite(parsedCount) ||
55
148
  !Number.isInteger(parsedCount) ||
56
149
  parsedCount <= 0) {
@@ -60,8 +153,10 @@ program
60
153
  maximumPreparingIssuesCount = parsedCount;
61
154
  }
62
155
  let utilizationPercentageThreshold = 90;
63
- if (options.utilizationPercentageThreshold !== undefined) {
64
- const parsedThreshold = Number(options.utilizationPercentageThreshold);
156
+ const rawThreshold = options.utilizationPercentageThreshold ??
157
+ config.utilizationPercentageThreshold;
158
+ if (rawThreshold !== undefined) {
159
+ const parsedThreshold = Number(rawThreshold);
65
160
  if (!Number.isFinite(parsedThreshold) ||
66
161
  parsedThreshold < 0 ||
67
162
  parsedThreshold > 100) {
@@ -71,11 +166,11 @@ program
71
166
  utilizationPercentageThreshold = parsedThreshold;
72
167
  }
73
168
  await useCase.run({
74
- projectUrl: options.projectUrl,
75
- awaitingWorkspaceStatus: options.awaitingWorkspaceStatus,
76
- preparationStatus: options.preparationStatus,
77
- defaultAgentName: options.defaultAgentName,
78
- logFilePath: options.logFilePath,
169
+ projectUrl,
170
+ awaitingWorkspaceStatus,
171
+ preparationStatus,
172
+ defaultAgentName,
173
+ logFilePath,
79
174
  maximumPreparingIssuesCount,
80
175
  utilizationPercentageThreshold,
81
176
  });
@@ -83,12 +178,12 @@ program
83
178
  program
84
179
  .command('notifyFinishedIssuePreparation')
85
180
  .description('Notify that issue preparation is finished')
86
- .requiredOption('--projectUrl <url>', 'GitHub project URL')
87
- .requiredOption('--issueUrl <url>', 'GitHub issue URL')
88
- .requiredOption('--preparationStatus <status>', 'Status for issues in preparation')
89
- .requiredOption('--awaitingWorkspaceStatus <status>', 'Status for issues awaiting workspace')
90
- .requiredOption('--awaitingQualityCheckStatus <status>', 'Status for issues awaiting quality check')
91
181
  .requiredOption('--configFilePath <path>', 'Path to config file for tower defence management')
182
+ .requiredOption('--issueUrl <url>', 'GitHub issue URL')
183
+ .option('--projectUrl <url>', 'GitHub project URL')
184
+ .option('--preparationStatus <status>', 'Status for issues in preparation')
185
+ .option('--awaitingWorkspaceStatus <status>', 'Status for issues awaiting workspace')
186
+ .option('--awaitingQualityCheckStatus <status>', 'Status for issues awaiting quality check')
92
187
  .option('--thresholdForAutoReject <count>', 'Threshold for auto-escalation after consecutive rejections (default: 3)')
93
188
  .action(async (options) => {
94
189
  const token = process.env.GH_TOKEN;
@@ -96,13 +191,35 @@ program
96
191
  console.error('GH_TOKEN environment variable is required');
97
192
  process.exit(1);
98
193
  }
194
+ const config = loadConfigFile(options.configFilePath);
195
+ const projectUrl = options.projectUrl ?? config.projectUrl;
196
+ const preparationStatus = options.preparationStatus ?? config.preparationStatus;
197
+ const awaitingWorkspaceStatus = options.awaitingWorkspaceStatus ?? config.awaitingWorkspaceStatus;
198
+ const awaitingQualityCheckStatus = options.awaitingQualityCheckStatus ?? config.awaitingQualityCheckStatus;
199
+ if (!projectUrl) {
200
+ console.error('projectUrl is required. Provide via --projectUrl or config file.');
201
+ process.exit(1);
202
+ }
203
+ if (!preparationStatus) {
204
+ console.error('preparationStatus is required. Provide via --preparationStatus or config file.');
205
+ process.exit(1);
206
+ }
207
+ if (!awaitingWorkspaceStatus) {
208
+ console.error('awaitingWorkspaceStatus is required. Provide via --awaitingWorkspaceStatus or config file.');
209
+ process.exit(1);
210
+ }
211
+ if (!awaitingQualityCheckStatus) {
212
+ console.error('awaitingQualityCheckStatus is required. Provide via --awaitingQualityCheckStatus or config file.');
213
+ process.exit(1);
214
+ }
99
215
  const projectRepository = new TowerDefenceProjectRepository_1.TowerDefenceProjectRepository(options.configFilePath, token);
100
216
  const graphqlIssueRepository = new GraphqlIssueRepository_1.GraphqlIssueRepository(token);
101
217
  const issueCommentRepository = new GitHubIssueCommentRepository_1.GitHubIssueCommentRepository(token);
102
218
  const useCase = new NotifyFinishedIssuePreparationUseCase_1.NotifyFinishedIssuePreparationUseCase(projectRepository, graphqlIssueRepository, issueCommentRepository);
103
219
  let thresholdForAutoReject = 3;
104
- if (options.thresholdForAutoReject !== undefined) {
105
- const parsed = Number(options.thresholdForAutoReject);
220
+ const rawThreshold = options.thresholdForAutoReject ?? config.thresholdForAutoReject;
221
+ if (rawThreshold !== undefined) {
222
+ const parsed = Number(rawThreshold);
106
223
  if (!Number.isFinite(parsed) ||
107
224
  !Number.isInteger(parsed) ||
108
225
  parsed <= 0) {
@@ -112,11 +229,11 @@ program
112
229
  thresholdForAutoReject = parsed;
113
230
  }
114
231
  await useCase.run({
115
- projectUrl: options.projectUrl,
232
+ projectUrl,
116
233
  issueUrl: options.issueUrl,
117
- preparationStatus: options.preparationStatus,
118
- awaitingWorkspaceStatus: options.awaitingWorkspaceStatus,
119
- awaitingQualityCheckStatus: options.awaitingQualityCheckStatus,
234
+ preparationStatus,
235
+ awaitingWorkspaceStatus,
236
+ awaitingQualityCheckStatus,
120
237
  thresholdForAutoReject,
121
238
  });
122
239
  });
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/adapter/entry-points/cli/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/adapter/entry-points/cli/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ org: HiromiShikata
2
+ projectUrl: https://github.com/users/HiromiShikata/projects/49
3
+ projectName: test-project
4
+ manager: HiromiShikata
5
+ allowIssueCacheMinutes: 0
6
+ credentials:
7
+ ghToken: your_gh_token_here
8
+ bot:
9
+ github:
10
+ token: your_gh_token_here
11
+ workingReport:
12
+ repo: test-repository
13
+ members:
14
+ - HiromiShikata
15
+ spreadsheetUrl: https://docs.google.com/spreadsheets/d/your-sheet-id
16
+ reportIssueLabels:
17
+ - report
18
+ awaitingWorkspaceStatus: 'Awaiting workspace'
19
+ preparationStatus: 'Preparation'
20
+ defaultAgentName: 'impl'
21
+ awaitingQualityCheckStatus: 'Awaiting quality check'
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "npm-cli-gh-issue-preparator",
3
- "version": "1.16.1",
3
+ "version": "1.17.0",
4
4
  "description": "",
5
5
  "main": "bin/index.js",
6
6
  "scripts": {
@@ -48,6 +48,7 @@
48
48
  "@semantic-release/changelog": "^6.0.3",
49
49
  "@semantic-release/commit-analyzer": "^13.0.0",
50
50
  "@types/jest": "^30.0.0",
51
+ "@types/js-yaml": "^4.0.9",
51
52
  "@typescript-eslint/eslint-plugin": "^7.2.0",
52
53
  "@typescript-eslint/parser": "^7.2.0",
53
54
  "check-node-version": "^4.2.1",
@@ -71,6 +72,7 @@
71
72
  "@semantic-release/npm": "^13.0.0",
72
73
  "commander": "^14.0.0",
73
74
  "dotenv": "^16.4.5",
74
- "github-issue-tower-defence-management": "^1.21.2"
75
+ "github-issue-tower-defence-management": "^1.21.2",
76
+ "js-yaml": "^4.1.1"
75
77
  }
76
78
  }
@@ -41,6 +41,10 @@ workingReport:
41
41
  spreadsheetUrl: https://docs.google.com/spreadsheets/d/test
42
42
  reportIssueLabels:
43
43
  - report
44
+ awaitingWorkspaceStatus: "Awaiting workspace"
45
+ preparationStatus: "Preparation"
46
+ defaultAgentName: "impl"
47
+ awaitingQualityCheckStatus: "Awaiting quality check"
44
48
  `;
45
49
  fs.writeFileSync(configFilePath, configContent);
46
50
  });
@@ -54,7 +58,7 @@ workingReport:
54
58
  describe('startDaemon', () => {
55
59
  it('executes without error', () => {
56
60
  const result = execSync(
57
- `npx ts-node ./src/adapter/entry-points/cli/index.ts startDaemon --projectUrl ${projectUrl} --awaitingWorkspaceStatus "Awaiting workspace" --preparationStatus "Preparation" --defaultAgentName "impl" --configFilePath ${configFilePath}`,
61
+ `npx ts-node ./src/adapter/entry-points/cli/index.ts startDaemon --configFilePath ${configFilePath}`,
58
62
  { encoding: 'utf-8', timeout: 600000 },
59
63
  );
60
64
  expect(result).toBeDefined();
@@ -67,7 +71,7 @@ workingReport:
67
71
 
68
72
  try {
69
73
  execSync(
70
- `npx ts-node ./src/adapter/entry-points/cli/index.ts notifyFinishedIssuePreparation --projectUrl ${projectUrl} --issueUrl ${notifyFinishedIssueUrl} --preparationStatus "Preparation" --awaitingWorkspaceStatus "Awaiting workspace" --awaitingQualityCheckStatus "Awaiting quality check" --configFilePath ${configFilePath} 2>&1`,
74
+ `npx ts-node ./src/adapter/entry-points/cli/index.ts notifyFinishedIssuePreparation --issueUrl ${notifyFinishedIssueUrl} --configFilePath ${configFilePath} 2>&1`,
71
75
  { encoding: 'utf-8', timeout: 600000 },
72
76
  );
73
77
  } catch (err) {