github-issue-tower-defence-management 1.63.1 → 1.64.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.64.0](https://github.com/HiromiShikata/npm-cli-github-issue-tower-defence-management/compare/v1.63.1...v1.64.0) (2026-05-26)
2
+
3
+
4
+ ### Features
5
+
6
+ * **core:** route spawn to a usable model per token using per-model 7d availability ([f3bdf07](https://github.com/HiromiShikata/npm-cli-github-issue-tower-defence-management/commit/f3bdf07dea62cf01b62647942cc8175604d6d826)), closes [#672](https://github.com/HiromiShikata/npm-cli-github-issue-tower-defence-management/issues/672)
7
+
1
8
  ## [1.63.1](https://github.com/HiromiShikata/npm-cli-github-issue-tower-defence-management/compare/v1.63.0...v1.63.1) (2026-05-25)
2
9
 
3
10
 
package/README.md CHANGED
@@ -213,7 +213,7 @@ When `claudeCodeOauthTokenListJsonPath` is set, `startDaemon` distributes prepar
213
213
 
214
214
  2. Local reverse proxy (`127.0.0.1:8787`): on each `startDaemon` run, the daemon TCP-probes the port. If nothing responds, it spawns a detached child running `bin/adapter/proxy/proxyEntry.js`. The proxy forwards every request to `api.anthropic.com`, observes the `anthropic-ratelimit-unified-*` response headers, and writes them to a per-token cache file at `${XDG_CACHE_HOME:-~/.cache}/tdpm/ratelimit/<sha256-of-token>.json`. The cache file stores the latest 5-hour and 7-day utilization, reset epochs, and the unified, 5-hour, and 7-day statuses (used to detect `blocked` and `rejected` state per window). In addition to the unified headers, the proxy inspects the streamed response body for `rate_limit` events (objects carrying `rateLimitType`, `status`, and `resetsAt`) and records the model-specific weekly limits — at minimum `seven_day_sonnet` and `seven_day` — per token. These model-specific weekly limits are exposed only in the response body, never in the unified headers, so a token can appear healthy on `anthropic-ratelimit-unified-7d-*` while its Sonnet weekly limit is exhausted.
215
215
 
216
- 3. Selection: before spawning each `aw` job, the daemon reads every token's cache file. A cached observation is treated as expired once its reset epoch has passed: when the current time is past the 5-hour reset, that token's 5-hour utilization is treated as `0` and any 5-hour-window rejection is cleared; a 7-day-window rejection is cleared once the 7-day reset has passed; a model-specific weekly limit rejection is cleared once that limit's `resetsAt` has passed. This stale-reset expiry prevents a token that has actually recovered from being locked out of rotation forever (an excluded token receives no new requests, so the proxy never re-observes it). After expiry normalization, tokens whose status is `blocked`, whose remaining (non-expired) rejection is still active, or whose weekly limit for the model that will be used is rejected are excluded. The model name maps to a limit type: a model name containing `sonnet` maps to `seven_day_sonnet`, one containing `opus` maps to `seven_day_opus`, otherwise `seven_day`; the generic `seven_day` rejection also excludes regardless of model. The remaining tokens are sorted by 5-hour utilization ascending. Each available token receives up to six concurrent preparation slots through 80% 5-hour utilization; above 80%, its slot count decays exponentially; at 95% or higher, its slot count is 0. The first token (lowest utilization) is selected for the next spawn, then the next, weighted round-robin by remaining slots, for the duration of the run. The effective preparation limit is the sum of available token slots; a lower explicit `maximumPreparingIssuesCount` remains honored. When a token list is configured but no token has remaining slots, preparation is skipped for that run. The selected token and the proxy URL (`http://127.0.0.1:8787`) are passed to the child `aw` process as `CLAUDE_CODE_OAUTH_TOKEN` and `ANTHROPIC_BASE_URL` environment variables. The child inherits the parent process's environment, so no further wiring is required inside `aw`.
216
+ 3. Selection: before spawning each `aw` job, the daemon reads every token's cache file. A cached observation is treated as expired once its reset epoch has passed: when the current time is past the 5-hour reset, that token's 5-hour utilization is treated as `0` and any 5-hour-window rejection is cleared; a 7-day-window rejection is cleared once the 7-day reset has passed; a model-specific weekly limit rejection is cleared once that limit's `resetsAt` has passed. This stale-reset expiry prevents a token that has actually recovered from being locked out of rotation forever (an excluded token receives no new requests, so the proxy never re-observes it). After expiry normalization, tokens whose status is `blocked` or whose remaining (non-expired) rejection is still active are excluded. Tokens are also excluded when all candidate model-specific weekly limits are exhausted or the general `seven_day` limit is rejected; however, when only the default model's weekly limit is rejected (e.g., `seven_day_sonnet`), the token remains in rotation and is spawned with a fallback model whose limit is still available (e.g., `seven_day_opus`). The model name maps to a limit type: a model name containing `sonnet` maps to `seven_day_sonnet`, one containing `opus` maps to `seven_day_opus`, otherwise `seven_day`; the generic `seven_day` rejection also excludes regardless of model. The remaining tokens are sorted by 5-hour utilization ascending. Each available token receives up to six concurrent preparation slots through 80% 5-hour utilization; above 80%, its slot count decays exponentially; at 95% or higher, its slot count is 0. The first token (lowest utilization) is selected for the next spawn, then the next, weighted round-robin by remaining slots, for the duration of the run. The effective preparation limit is the sum of available token slots; a lower explicit `maximumPreparingIssuesCount` remains honored. When a token list is configured but no token has remaining slots, preparation is skipped for that run. The selected token, the selected model (which may differ from the default when a fallback model was chosen), and the proxy URL (`http://127.0.0.1:8787`) are passed to the child `aw` process as `CLAUDE_CODE_OAUTH_TOKEN`, the model argument, and `ANTHROPIC_BASE_URL` environment variables. The child inherits the parent process's environment, so no further wiring is required inside `aw`.
217
217
 
218
218
  When `claudeCodeOauthTokenListJsonPath` is unset, no proxy is started and `aw` runs with whatever `CLAUDE_CODE_OAUTH_TOKEN` and `ANTHROPIC_BASE_URL` are already in the environment.
219
219
 
@@ -12,6 +12,10 @@ class StartPreparationUseCase {
12
12
  this.issueRepository = issueRepository;
13
13
  this.localCommandRunner = localCommandRunner;
14
14
  this.claudeTokenUsageRepository = claudeTokenUsageRepository;
15
+ this.KNOWN_MODEL_SPECIFIC_LIMIT_TYPES = [
16
+ 'seven_day_sonnet',
17
+ 'seven_day_opus',
18
+ ];
15
19
  this.weeklyLimitTypeForModel = (modelName) => {
16
20
  const normalized = (modelName ?? '').toLowerCase();
17
21
  if (normalized.includes('sonnet'))
@@ -20,12 +24,38 @@ class StartPreparationUseCase {
20
24
  return 'seven_day_opus';
21
25
  return 'seven_day';
22
26
  };
23
- this.isModelWeeklyLimitRejected = (usage, weeklyLimitType) => {
24
- const specific = usage.modelWeeklyLimits[weeklyLimitType];
25
- if (specific !== undefined && specific.rejected)
26
- return true;
27
- const general = usage.modelWeeklyLimits['seven_day'];
28
- return general !== undefined && general.rejected;
27
+ this.deriveFallbackModelName = (limitType, defaultModelName) => {
28
+ if (limitType === this.weeklyLimitTypeForModel(defaultModelName)) {
29
+ return defaultModelName;
30
+ }
31
+ if (limitType === 'seven_day_opus' &&
32
+ defaultModelName.toLowerCase().includes('sonnet')) {
33
+ return defaultModelName.replace(/sonnet/gi, 'opus');
34
+ }
35
+ if (limitType === 'seven_day_sonnet' &&
36
+ defaultModelName.toLowerCase().includes('opus')) {
37
+ return defaultModelName.replace(/opus/gi, 'sonnet');
38
+ }
39
+ return defaultModelName;
40
+ };
41
+ this.selectModelForToken = (usage, defaultModelName) => {
42
+ const generalLimit = usage.modelWeeklyLimits['seven_day'];
43
+ if (generalLimit !== undefined && generalLimit.rejected)
44
+ return null;
45
+ if (defaultModelName === null)
46
+ return null;
47
+ const defaultLimitType = this.weeklyLimitTypeForModel(defaultModelName);
48
+ const candidateLimitTypes = [
49
+ defaultLimitType,
50
+ ...this.KNOWN_MODEL_SPECIFIC_LIMIT_TYPES.filter((t) => t !== defaultLimitType),
51
+ ];
52
+ for (const limitType of candidateLimitTypes) {
53
+ const limit = usage.modelWeeklyLimits[limitType];
54
+ if (limit === undefined || !limit.rejected) {
55
+ return this.deriveFallbackModelName(limitType, defaultModelName);
56
+ }
57
+ }
58
+ return null;
29
59
  };
30
60
  this.maximumPreparingProcessCountForToken = (fiveHourUtilization) => {
31
61
  if (fiveHourUtilization <= PROCESS_COUNT_DECAY_START_UTILIZATION) {
@@ -43,20 +73,27 @@ class StartPreparationUseCase {
43
73
  return Math.max(1, Math.floor(MAXIMUM_PREPARING_PROCESS_COUNT_PER_TOKEN * remainingRatio));
44
74
  };
45
75
  this.selectRotationTokens = (tokenUsages, modelName) => {
46
- const weeklyLimitType = this.weeklyLimitTypeForModel(modelName);
47
76
  return tokenUsages
48
77
  .filter((usage) => !usage.blocked)
49
78
  .filter((usage) => !usage.rejected)
50
- .filter((usage) => !this.isModelWeeklyLimitRejected(usage, weeklyLimitType))
51
- .map((usage) => ({
52
- token: usage.token,
53
- fiveHourUtilization: usage.fiveHourUtilization,
54
- maximumPreparingProcessCount: this.maximumPreparingProcessCountForToken(usage.fiveHourUtilization),
55
- }))
79
+ .flatMap((usage) => {
80
+ const selectedModel = this.selectModelForToken(usage, modelName);
81
+ if (selectedModel === null)
82
+ return [];
83
+ return [
84
+ {
85
+ token: usage.token,
86
+ model: selectedModel,
87
+ fiveHourUtilization: usage.fiveHourUtilization,
88
+ maximumPreparingProcessCount: this.maximumPreparingProcessCountForToken(usage.fiveHourUtilization),
89
+ },
90
+ ];
91
+ })
56
92
  .filter((usage) => usage.maximumPreparingProcessCount > 0)
57
93
  .sort((a, b) => a.fiveHourUtilization - b.fiveHourUtilization)
58
94
  .map((usage) => ({
59
95
  token: usage.token,
96
+ model: usage.model,
60
97
  maximumPreparingProcessCount: usage.maximumPreparingProcessCount,
61
98
  }));
62
99
  };
@@ -66,7 +103,7 @@ class StartPreparationUseCase {
66
103
  for (let i = 0; i < slotCount; i++) {
67
104
  tokenSlots.push(...rotationTokens
68
105
  .filter((token) => i < token.maximumPreparingProcessCount)
69
- .map((token) => token.token));
106
+ .map((token) => ({ token: token.token, model: token.model })));
70
107
  }
71
108
  return tokenSlots;
72
109
  };
@@ -78,10 +115,12 @@ class StartPreparationUseCase {
78
115
  };
79
116
  this.buildRotationOrder = (tokenUsages, utilizationPercentageThreshold, modelName) => {
80
117
  const weeklyLimitType = this.weeklyLimitTypeForModel(modelName);
118
+ const isWeeklyLimitRejected = (usage) => usage.modelWeeklyLimits[weeklyLimitType]?.rejected === true ||
119
+ usage.modelWeeklyLimits['seven_day']?.rejected === true;
81
120
  const selectedTokens = tokenUsages
82
121
  .filter((usage) => !usage.blocked)
83
122
  .filter((usage) => !usage.rejected)
84
- .filter((usage) => !this.isModelWeeklyLimitRejected(usage, weeklyLimitType))
123
+ .filter((usage) => !isWeeklyLimitRejected(usage))
85
124
  .filter((usage) => this.maximumPreparingProcessCountForToken(usage.fiveHourUtilization) >
86
125
  0)
87
126
  .sort((a, b) => a.fiveHourUtilization - b.fiveHourUtilization);
@@ -95,7 +134,7 @@ class StartPreparationUseCase {
95
134
  rejected: usage.rejected,
96
135
  thresholdExcluded: !usage.blocked &&
97
136
  !usage.rejected &&
98
- !this.isModelWeeklyLimitRejected(usage, weeklyLimitType) &&
137
+ !isWeeklyLimitRejected(usage) &&
99
138
  this.maximumPreparingProcessCountForToken(usage.fiveHourUtilization) === 0,
100
139
  }));
101
140
  const selectedEntries = selectedTokens.map((usage) => ({
@@ -117,7 +156,7 @@ class StartPreparationUseCase {
117
156
  if (tokenUsages.length > 0) {
118
157
  const ranked = this.selectRotationTokens(tokenUsages, params.defaultLlmModelName);
119
158
  if (ranked.length === 0) {
120
- console.warn(`All ${tokenUsages.length} configured Claude OAuth token(s) are unavailable (blocked, rejected, weekly limit for ${this.weeklyLimitTypeForModel(params.defaultLlmModelName)} exhausted, or 5h utilization >= 95%). Skipping starting preparation.`);
159
+ console.warn(`All ${tokenUsages.length} configured Claude OAuth token(s) are unavailable (blocked, rejected, all model weekly limits exhausted, or 5h utilization >= 95%). Skipping starting preparation.`);
121
160
  return { rotationOrder };
122
161
  }
123
162
  await this.claudeTokenUsageRepository.ensureObservable();
@@ -174,7 +213,7 @@ class StartPreparationUseCase {
174
213
  .find((label) => label.startsWith('llm-model:'))
175
214
  ?.replace('llm-model:', '')
176
215
  .trim() || params.defaultLlmModelName;
177
- if (!model) {
216
+ if (!model && rotationTokenSlots === null) {
178
217
  console.error(`No LLM model configured for issue ${issue.url}. Provide --defaultLlmModelName or add an llm-model: label.`);
179
218
  continue;
180
219
  }
@@ -230,10 +269,21 @@ class StartPreparationUseCase {
230
269
  }
231
270
  await this.issueRepository.updateStatus(project, issue, preparationStatusOption.id);
232
271
  issue.status = WorkflowStatus_1.PREPARATION_STATUS_NAME;
272
+ let spawnEnv;
273
+ let spawnModel = model ?? '';
274
+ if (rotationTokenSlots !== null && proxyBaseUrl !== null) {
275
+ const selected = rotationTokenSlots[(currentPreparationIssueCount + startedInThisRunCount) %
276
+ rotationTokenSlots.length];
277
+ spawnModel = selected.model;
278
+ spawnEnv = {
279
+ CLAUDE_CODE_OAUTH_TOKEN: selected.token,
280
+ ANTHROPIC_BASE_URL: proxyBaseUrl,
281
+ };
282
+ }
233
283
  const awArgs = [
234
284
  issue.url,
235
285
  agent,
236
- model,
286
+ spawnModel,
237
287
  '--configFilePath',
238
288
  params.configFilePath,
239
289
  '--branch',
@@ -244,15 +294,6 @@ class StartPreparationUseCase {
244
294
  const codexHome = params.codexHomeCandidates[startedInThisRunCount % params.codexHomeCandidates.length];
245
295
  awArgs.push('--codexHome', codexHome);
246
296
  }
247
- let spawnEnv;
248
- if (rotationTokenSlots !== null && proxyBaseUrl !== null) {
249
- const selected = rotationTokenSlots[(currentPreparationIssueCount + startedInThisRunCount) %
250
- rotationTokenSlots.length];
251
- spawnEnv = {
252
- CLAUDE_CODE_OAUTH_TOKEN: selected,
253
- ANTHROPIC_BASE_URL: proxyBaseUrl,
254
- };
255
- }
256
297
  await this.localCommandRunner.runCommand('aw', awArgs, spawnEnv ? { env: spawnEnv } : undefined);
257
298
  startedInThisRunCount++;
258
299
  updatedCurrentPreparationIssueCount++;
@@ -1 +1 @@
1
- {"version":3,"file":"StartPreparationUseCase.js","sourceRoot":"","sources":["../../../src/domain/usecases/StartPreparationUseCase.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"StartPreparationUseCase.js","sourceRoot":"","sources":["../../../src/domain/usecases/StartPreparationUseCase.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "github-issue-tower-defence-management",
3
- "version": "1.63.1",
3
+ "version": "1.64.0",
4
4
  "description": "",
5
5
  "main": "bin/index.js",
6
6
  "scripts": {
@@ -3148,7 +3148,7 @@ describe('StartPreparationUseCase', () => {
3148
3148
  expect(mockLocalCommandRunner.runCommand.mock.calls[0][2]).toBeUndefined();
3149
3149
  });
3150
3150
 
3151
- it('should exclude a token whose seven_day_sonnet weekly limit is rejected when the model is sonnet', async () => {
3151
+ it('should keep a token in rotation with opus model when seven_day_sonnet is rejected and seven_day_opus is available', async () => {
3152
3152
  const awaitingIssue = createMockIssue({
3153
3153
  url: 'url1',
3154
3154
  title: 'Issue 1',
@@ -3204,10 +3204,13 @@ describe('StartPreparationUseCase', () => {
3204
3204
  expect(mockLocalCommandRunner.runCommand.mock.calls).toHaveLength(1);
3205
3205
  expect(mockLocalCommandRunner.runCommand.mock.calls[0][2]).toEqual({
3206
3206
  env: {
3207
- CLAUDE_CODE_OAUTH_TOKEN: 'token-ok',
3207
+ CLAUDE_CODE_OAUTH_TOKEN: 'token-sonnet-exhausted',
3208
3208
  ANTHROPIC_BASE_URL: 'http://127.0.0.1:8787',
3209
3209
  },
3210
3210
  });
3211
+ expect(mockLocalCommandRunner.runCommand.mock.calls[0][1][2]).toBe(
3212
+ 'claude-opus-4-6',
3213
+ );
3211
3214
  });
3212
3215
 
3213
3216
  it('should re-admit a token whose seven_day_sonnet rejection has been cleared by stale-reset expiry', async () => {
@@ -3395,6 +3398,211 @@ describe('StartPreparationUseCase', () => {
3395
3398
  },
3396
3399
  });
3397
3400
  });
3401
+
3402
+ it('should include a token in rotation with opus model when seven_day_sonnet is rejected but seven_day_opus is available', async () => {
3403
+ const awaitingIssue = createMockIssue({
3404
+ url: 'url1',
3405
+ title: 'Issue 1',
3406
+ labels: ['category:impl'],
3407
+ status: 'Awaiting Workspace',
3408
+ number: 1,
3409
+ itemId: 'item-1',
3410
+ });
3411
+ mockProjectRepository.getByUrl.mockResolvedValue(mockProject);
3412
+ mockIssueRepository.getStoryObjectMap.mockResolvedValue(
3413
+ createMockStoryObjectMap([awaitingIssue]),
3414
+ );
3415
+ mockLocalCommandRunner.runCommand.mockResolvedValue({
3416
+ stdout: '',
3417
+ stderr: '',
3418
+ exitCode: 0,
3419
+ });
3420
+ const futureReset = Math.floor(Date.now() / 1000) + 3600;
3421
+ mockClaudeTokenUsageRepository.getAvailableTokenUsages.mockResolvedValue([
3422
+ {
3423
+ token: 'token-sonnet-exhausted',
3424
+ fiveHourUtilization: 0.1,
3425
+ blocked: false,
3426
+ rejected: false,
3427
+ modelWeeklyLimits: {
3428
+ seven_day_sonnet: { rejected: true, resetsAt: futureReset },
3429
+ },
3430
+ },
3431
+ ]);
3432
+
3433
+ await useCase.run({
3434
+ projectUrl: 'https://github.com/user/repo',
3435
+ defaultAgentName: 'agent1',
3436
+ defaultLlmModelName: 'claude-sonnet-4-6',
3437
+ defaultLlmAgentName: null,
3438
+ configFilePath: '/path/to/config.yml',
3439
+ maximumPreparingIssuesCount: null,
3440
+ utilizationPercentageThreshold: 90,
3441
+ allowedIssueAuthors: null,
3442
+ codexHomeCandidates: null,
3443
+ allowIssueCacheMinutes: 0,
3444
+ });
3445
+
3446
+ expect(mockLocalCommandRunner.runCommand.mock.calls).toHaveLength(1);
3447
+ expect(mockLocalCommandRunner.runCommand.mock.calls[0][1][2]).toBe(
3448
+ 'claude-opus-4-6',
3449
+ );
3450
+ expect(mockLocalCommandRunner.runCommand.mock.calls[0][2]).toEqual({
3451
+ env: {
3452
+ CLAUDE_CODE_OAUTH_TOKEN: 'token-sonnet-exhausted',
3453
+ ANTHROPIC_BASE_URL: 'http://127.0.0.1:8787',
3454
+ },
3455
+ });
3456
+ });
3457
+
3458
+ it('should exclude a token from rotation when both seven_day_sonnet and seven_day_opus weekly limits are rejected', async () => {
3459
+ const awaitingIssue = createMockIssue({
3460
+ url: 'url1',
3461
+ title: 'Issue 1',
3462
+ labels: ['category:impl'],
3463
+ status: 'Awaiting Workspace',
3464
+ number: 1,
3465
+ itemId: 'item-1',
3466
+ });
3467
+ mockProjectRepository.getByUrl.mockResolvedValue(mockProject);
3468
+ mockIssueRepository.getStoryObjectMap.mockResolvedValue(
3469
+ createMockStoryObjectMap([awaitingIssue]),
3470
+ );
3471
+ mockLocalCommandRunner.runCommand.mockResolvedValue({
3472
+ stdout: '',
3473
+ stderr: '',
3474
+ exitCode: 0,
3475
+ });
3476
+ const futureReset = Math.floor(Date.now() / 1000) + 3600;
3477
+ mockClaudeTokenUsageRepository.getAvailableTokenUsages.mockResolvedValue([
3478
+ {
3479
+ token: 'token-all-exhausted',
3480
+ fiveHourUtilization: 0.1,
3481
+ blocked: false,
3482
+ rejected: false,
3483
+ modelWeeklyLimits: {
3484
+ seven_day_sonnet: { rejected: true, resetsAt: futureReset },
3485
+ seven_day_opus: { rejected: true, resetsAt: futureReset },
3486
+ },
3487
+ },
3488
+ ]);
3489
+
3490
+ await useCase.run({
3491
+ projectUrl: 'https://github.com/user/repo',
3492
+ defaultAgentName: 'agent1',
3493
+ defaultLlmModelName: 'claude-sonnet-4-6',
3494
+ defaultLlmAgentName: null,
3495
+ configFilePath: '/path/to/config.yml',
3496
+ maximumPreparingIssuesCount: null,
3497
+ utilizationPercentageThreshold: 90,
3498
+ allowedIssueAuthors: null,
3499
+ codexHomeCandidates: null,
3500
+ allowIssueCacheMinutes: 0,
3501
+ });
3502
+
3503
+ expect(mockLocalCommandRunner.runCommand.mock.calls).toHaveLength(0);
3504
+ });
3505
+
3506
+ it('should use default model for a token with no modelWeeklyLimits entries', async () => {
3507
+ const awaitingIssue = createMockIssue({
3508
+ url: 'url1',
3509
+ title: 'Issue 1',
3510
+ labels: ['category:impl'],
3511
+ status: 'Awaiting Workspace',
3512
+ number: 1,
3513
+ itemId: 'item-1',
3514
+ });
3515
+ mockProjectRepository.getByUrl.mockResolvedValue(mockProject);
3516
+ mockIssueRepository.getStoryObjectMap.mockResolvedValue(
3517
+ createMockStoryObjectMap([awaitingIssue]),
3518
+ );
3519
+ mockLocalCommandRunner.runCommand.mockResolvedValue({
3520
+ stdout: '',
3521
+ stderr: '',
3522
+ exitCode: 0,
3523
+ });
3524
+ mockClaudeTokenUsageRepository.getAvailableTokenUsages.mockResolvedValue([
3525
+ {
3526
+ token: 'token-no-limits',
3527
+ fiveHourUtilization: 0.1,
3528
+ blocked: false,
3529
+ rejected: false,
3530
+ modelWeeklyLimits: {},
3531
+ },
3532
+ ]);
3533
+
3534
+ await useCase.run({
3535
+ projectUrl: 'https://github.com/user/repo',
3536
+ defaultAgentName: 'agent1',
3537
+ defaultLlmModelName: 'claude-sonnet-4-6',
3538
+ defaultLlmAgentName: null,
3539
+ configFilePath: '/path/to/config.yml',
3540
+ maximumPreparingIssuesCount: null,
3541
+ utilizationPercentageThreshold: 90,
3542
+ allowedIssueAuthors: null,
3543
+ codexHomeCandidates: null,
3544
+ allowIssueCacheMinutes: 0,
3545
+ });
3546
+
3547
+ expect(mockLocalCommandRunner.runCommand.mock.calls).toHaveLength(1);
3548
+ expect(mockLocalCommandRunner.runCommand.mock.calls[0][1][2]).toBe(
3549
+ 'claude-sonnet-4-6',
3550
+ );
3551
+ expect(mockLocalCommandRunner.runCommand.mock.calls[0][2]).toEqual({
3552
+ env: {
3553
+ CLAUDE_CODE_OAUTH_TOKEN: 'token-no-limits',
3554
+ ANTHROPIC_BASE_URL: 'http://127.0.0.1:8787',
3555
+ },
3556
+ });
3557
+ });
3558
+
3559
+ it('should exclude a token when seven_day general limit is rejected even if per-model limits are available', async () => {
3560
+ const awaitingIssue = createMockIssue({
3561
+ url: 'url1',
3562
+ title: 'Issue 1',
3563
+ labels: ['category:impl'],
3564
+ status: 'Awaiting Workspace',
3565
+ number: 1,
3566
+ itemId: 'item-1',
3567
+ });
3568
+ mockProjectRepository.getByUrl.mockResolvedValue(mockProject);
3569
+ mockIssueRepository.getStoryObjectMap.mockResolvedValue(
3570
+ createMockStoryObjectMap([awaitingIssue]),
3571
+ );
3572
+ mockLocalCommandRunner.runCommand.mockResolvedValue({
3573
+ stdout: '',
3574
+ stderr: '',
3575
+ exitCode: 0,
3576
+ });
3577
+ const futureReset = Math.floor(Date.now() / 1000) + 3600;
3578
+ mockClaudeTokenUsageRepository.getAvailableTokenUsages.mockResolvedValue([
3579
+ {
3580
+ token: 'token-general-limit-rejected',
3581
+ fiveHourUtilization: 0.1,
3582
+ blocked: false,
3583
+ rejected: false,
3584
+ modelWeeklyLimits: {
3585
+ seven_day: { rejected: true, resetsAt: futureReset },
3586
+ seven_day_sonnet: { rejected: false, resetsAt: futureReset },
3587
+ },
3588
+ },
3589
+ ]);
3590
+
3591
+ await useCase.run({
3592
+ projectUrl: 'https://github.com/user/repo',
3593
+ defaultAgentName: 'agent1',
3594
+ defaultLlmModelName: 'claude-sonnet-4-6',
3595
+ defaultLlmAgentName: null,
3596
+ configFilePath: '/path/to/config.yml',
3597
+ maximumPreparingIssuesCount: null,
3598
+ utilizationPercentageThreshold: 90,
3599
+ allowedIssueAuthors: null,
3600
+ codexHomeCandidates: null,
3601
+ allowIssueCacheMinutes: 0,
3602
+ });
3603
+
3604
+ expect(mockLocalCommandRunner.runCommand.mock.calls).toHaveLength(0);
3605
+ });
3398
3606
  });
3399
3607
 
3400
3608
  describe('StartPreparationUseCase.buildRotationOrder', () => {
@@ -15,6 +15,7 @@ const PROCESS_COUNT_DECAY_STEEPNESS = 2;
15
15
 
16
16
  type RotationToken = {
17
17
  token: string;
18
+ model: string;
18
19
  maximumPreparingProcessCount: number;
19
20
  };
20
21
 
@@ -43,6 +44,11 @@ export class StartPreparationUseCase {
43
44
  private readonly claudeTokenUsageRepository: ClaudeTokenUsageRepository,
44
45
  ) {}
45
46
 
47
+ private readonly KNOWN_MODEL_SPECIFIC_LIMIT_TYPES = [
48
+ 'seven_day_sonnet',
49
+ 'seven_day_opus',
50
+ ];
51
+
46
52
  private weeklyLimitTypeForModel = (modelName: string | null): string => {
47
53
  const normalized = (modelName ?? '').toLowerCase();
48
54
  if (normalized.includes('sonnet')) return 'seven_day_sonnet';
@@ -50,14 +56,53 @@ export class StartPreparationUseCase {
50
56
  return 'seven_day';
51
57
  };
52
58
 
53
- private isModelWeeklyLimitRejected = (
59
+ private deriveFallbackModelName = (
60
+ limitType: string,
61
+ defaultModelName: string,
62
+ ): string => {
63
+ if (limitType === this.weeklyLimitTypeForModel(defaultModelName)) {
64
+ return defaultModelName;
65
+ }
66
+ if (
67
+ limitType === 'seven_day_opus' &&
68
+ defaultModelName.toLowerCase().includes('sonnet')
69
+ ) {
70
+ return defaultModelName.replace(/sonnet/gi, 'opus');
71
+ }
72
+ if (
73
+ limitType === 'seven_day_sonnet' &&
74
+ defaultModelName.toLowerCase().includes('opus')
75
+ ) {
76
+ return defaultModelName.replace(/opus/gi, 'sonnet');
77
+ }
78
+ return defaultModelName;
79
+ };
80
+
81
+ private selectModelForToken = (
54
82
  usage: ClaudeTokenUsage,
55
- weeklyLimitType: string,
56
- ): boolean => {
57
- const specific = usage.modelWeeklyLimits[weeklyLimitType];
58
- if (specific !== undefined && specific.rejected) return true;
59
- const general = usage.modelWeeklyLimits['seven_day'];
60
- return general !== undefined && general.rejected;
83
+ defaultModelName: string | null,
84
+ ): string | null => {
85
+ const generalLimit = usage.modelWeeklyLimits['seven_day'];
86
+ if (generalLimit !== undefined && generalLimit.rejected) return null;
87
+
88
+ if (defaultModelName === null) return null;
89
+
90
+ const defaultLimitType = this.weeklyLimitTypeForModel(defaultModelName);
91
+ const candidateLimitTypes = [
92
+ defaultLimitType,
93
+ ...this.KNOWN_MODEL_SPECIFIC_LIMIT_TYPES.filter(
94
+ (t) => t !== defaultLimitType,
95
+ ),
96
+ ];
97
+
98
+ for (const limitType of candidateLimitTypes) {
99
+ const limit = usage.modelWeeklyLimits[limitType];
100
+ if (limit === undefined || !limit.rejected) {
101
+ return this.deriveFallbackModelName(limitType, defaultModelName);
102
+ }
103
+ }
104
+
105
+ return null;
61
106
  };
62
107
 
63
108
  private maximumPreparingProcessCountForToken = (
@@ -87,40 +132,45 @@ export class StartPreparationUseCase {
87
132
  tokenUsages: ClaudeTokenUsage[],
88
133
  modelName: string | null,
89
134
  ): RotationToken[] => {
90
- const weeklyLimitType = this.weeklyLimitTypeForModel(modelName);
91
135
  return tokenUsages
92
136
  .filter((usage) => !usage.blocked)
93
137
  .filter((usage) => !usage.rejected)
94
- .filter(
95
- (usage) => !this.isModelWeeklyLimitRejected(usage, weeklyLimitType),
96
- )
97
- .map((usage) => ({
98
- token: usage.token,
99
- fiveHourUtilization: usage.fiveHourUtilization,
100
- maximumPreparingProcessCount: this.maximumPreparingProcessCountForToken(
101
- usage.fiveHourUtilization,
102
- ),
103
- }))
138
+ .flatMap((usage) => {
139
+ const selectedModel = this.selectModelForToken(usage, modelName);
140
+ if (selectedModel === null) return [];
141
+ return [
142
+ {
143
+ token: usage.token,
144
+ model: selectedModel,
145
+ fiveHourUtilization: usage.fiveHourUtilization,
146
+ maximumPreparingProcessCount:
147
+ this.maximumPreparingProcessCountForToken(
148
+ usage.fiveHourUtilization,
149
+ ),
150
+ },
151
+ ];
152
+ })
104
153
  .filter((usage) => usage.maximumPreparingProcessCount > 0)
105
154
  .sort((a, b) => a.fiveHourUtilization - b.fiveHourUtilization)
106
155
  .map((usage) => ({
107
156
  token: usage.token,
157
+ model: usage.model,
108
158
  maximumPreparingProcessCount: usage.maximumPreparingProcessCount,
109
159
  }));
110
160
  };
111
161
 
112
162
  private createRotationTokenSlots = (
113
163
  rotationTokens: RotationToken[],
114
- ): string[] => {
164
+ ): Array<{ token: string; model: string }> => {
115
165
  const slotCount = Math.max(
116
166
  ...rotationTokens.map((token) => token.maximumPreparingProcessCount),
117
167
  );
118
- const tokenSlots: string[] = [];
168
+ const tokenSlots: Array<{ token: string; model: string }> = [];
119
169
  for (let i = 0; i < slotCount; i++) {
120
170
  tokenSlots.push(
121
171
  ...rotationTokens
122
172
  .filter((token) => i < token.maximumPreparingProcessCount)
123
- .map((token) => token.token),
173
+ .map((token) => ({ token: token.token, model: token.model })),
124
174
  );
125
175
  }
126
176
  return tokenSlots;
@@ -128,7 +178,7 @@ export class StartPreparationUseCase {
128
178
 
129
179
  private resolveMaximumPreparingIssuesCount = (
130
180
  configuredMaximumPreparingIssuesCount: number | null,
131
- rotationTokenSlots: string[] | null,
181
+ rotationTokenSlots: Array<{ token: string; model: string }> | null,
132
182
  ): number => {
133
183
  if (rotationTokenSlots === null) {
134
184
  return configuredMaximumPreparingIssuesCount ?? 6;
@@ -145,12 +195,13 @@ export class StartPreparationUseCase {
145
195
  modelName: string | null,
146
196
  ): RotationOrderEntry[] => {
147
197
  const weeklyLimitType = this.weeklyLimitTypeForModel(modelName);
198
+ const isWeeklyLimitRejected = (usage: ClaudeTokenUsage): boolean =>
199
+ usage.modelWeeklyLimits[weeklyLimitType]?.rejected === true ||
200
+ usage.modelWeeklyLimits['seven_day']?.rejected === true;
148
201
  const selectedTokens = tokenUsages
149
202
  .filter((usage) => !usage.blocked)
150
203
  .filter((usage) => !usage.rejected)
151
- .filter(
152
- (usage) => !this.isModelWeeklyLimitRejected(usage, weeklyLimitType),
153
- )
204
+ .filter((usage) => !isWeeklyLimitRejected(usage))
154
205
  .filter(
155
206
  (usage) =>
156
207
  this.maximumPreparingProcessCountForToken(usage.fiveHourUtilization) >
@@ -168,7 +219,7 @@ export class StartPreparationUseCase {
168
219
  thresholdExcluded:
169
220
  !usage.blocked &&
170
221
  !usage.rejected &&
171
- !this.isModelWeeklyLimitRejected(usage, weeklyLimitType) &&
222
+ !isWeeklyLimitRejected(usage) &&
172
223
  this.maximumPreparingProcessCountForToken(
173
224
  usage.fiveHourUtilization,
174
225
  ) === 0,
@@ -199,7 +250,8 @@ export class StartPreparationUseCase {
199
250
  }): Promise<{ rotationOrder: RotationOrderEntry[] | null }> => {
200
251
  const tokenUsages =
201
252
  await this.claudeTokenUsageRepository.getAvailableTokenUsages();
202
- let rotationTokenSlots: string[] | null = null;
253
+ let rotationTokenSlots: Array<{ token: string; model: string }> | null =
254
+ null;
203
255
  let proxyBaseUrl: string | null = null;
204
256
  const rotationOrder: RotationOrderEntry[] | null =
205
257
  tokenUsages.length > 0
@@ -216,7 +268,7 @@ export class StartPreparationUseCase {
216
268
  );
217
269
  if (ranked.length === 0) {
218
270
  console.warn(
219
- `All ${tokenUsages.length} configured Claude OAuth token(s) are unavailable (blocked, rejected, weekly limit for ${this.weeklyLimitTypeForModel(params.defaultLlmModelName)} exhausted, or 5h utilization >= 95%). Skipping starting preparation.`,
271
+ `All ${tokenUsages.length} configured Claude OAuth token(s) are unavailable (blocked, rejected, all model weekly limits exhausted, or 5h utilization >= 95%). Skipping starting preparation.`,
220
272
  );
221
273
  return { rotationOrder };
222
274
  }
@@ -314,7 +366,7 @@ export class StartPreparationUseCase {
314
366
  .find((label: string) => label.startsWith('llm-model:'))
315
367
  ?.replace('llm-model:', '')
316
368
  .trim() || params.defaultLlmModelName;
317
- if (!model) {
369
+ if (!model && rotationTokenSlots === null) {
318
370
  console.error(
319
371
  `No LLM model configured for issue ${issue.url}. Provide --defaultLlmModelName or add an llm-model: label.`,
320
372
  );
@@ -397,10 +449,25 @@ export class StartPreparationUseCase {
397
449
  );
398
450
  issue.status = PREPARATION_STATUS_NAME;
399
451
 
452
+ let spawnEnv: Record<string, string> | undefined;
453
+ let spawnModel = model ?? '';
454
+ if (rotationTokenSlots !== null && proxyBaseUrl !== null) {
455
+ const selected =
456
+ rotationTokenSlots[
457
+ (currentPreparationIssueCount + startedInThisRunCount) %
458
+ rotationTokenSlots.length
459
+ ];
460
+ spawnModel = selected.model;
461
+ spawnEnv = {
462
+ CLAUDE_CODE_OAUTH_TOKEN: selected.token,
463
+ ANTHROPIC_BASE_URL: proxyBaseUrl,
464
+ };
465
+ }
466
+
400
467
  const awArgs: string[] = [
401
468
  issue.url,
402
469
  agent,
403
- model,
470
+ spawnModel,
404
471
  '--configFilePath',
405
472
  params.configFilePath,
406
473
  '--branch',
@@ -416,18 +483,6 @@ export class StartPreparationUseCase {
416
483
  ];
417
484
  awArgs.push('--codexHome', codexHome);
418
485
  }
419
- let spawnEnv: Record<string, string> | undefined;
420
- if (rotationTokenSlots !== null && proxyBaseUrl !== null) {
421
- const selected =
422
- rotationTokenSlots[
423
- (currentPreparationIssueCount + startedInThisRunCount) %
424
- rotationTokenSlots.length
425
- ];
426
- spawnEnv = {
427
- CLAUDE_CODE_OAUTH_TOKEN: selected,
428
- ANTHROPIC_BASE_URL: proxyBaseUrl,
429
- };
430
- }
431
486
  await this.localCommandRunner.runCommand(
432
487
  'aw',
433
488
  awArgs,
@@ -16,8 +16,10 @@ export declare class StartPreparationUseCase {
16
16
  private readonly localCommandRunner;
17
17
  private readonly claudeTokenUsageRepository;
18
18
  constructor(projectRepository: Pick<ProjectRepository, 'getByUrl'>, issueRepository: Pick<IssueRepository, 'getStoryObjectMap' | 'updateStatus' | 'findRelatedOpenPRs' | 'getOpenPullRequest' | 'closePullRequest' | 'deletePullRequestBranch' | 'createCommentByUrl'>, localCommandRunner: LocalCommandRunner, claudeTokenUsageRepository: ClaudeTokenUsageRepository);
19
+ private readonly KNOWN_MODEL_SPECIFIC_LIMIT_TYPES;
19
20
  private weeklyLimitTypeForModel;
20
- private isModelWeeklyLimitRejected;
21
+ private deriveFallbackModelName;
22
+ private selectModelForToken;
21
23
  private maximumPreparingProcessCountForToken;
22
24
  private selectRotationTokens;
23
25
  private createRotationTokenSlots;
@@ -1 +1 @@
1
- {"version":3,"file":"StartPreparationUseCase.d.ts","sourceRoot":"","sources":["../../../src/domain/usecases/StartPreparationUseCase.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AACvE,OAAO,EAAE,iBAAiB,EAAE,MAAM,wCAAwC,CAAC;AAC3E,OAAO,EAAE,kBAAkB,EAAE,MAAM,yCAAyC,CAAC;AAC7E,OAAO,EAAE,0BAA0B,EAAE,MAAM,iDAAiD,CAAC;AAC7F,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAgBhE,MAAM,MAAM,kBAAkB,GAAG;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,mBAAmB,EAAE,MAAM,CAAC;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;IAClB,iBAAiB,EAAE,OAAO,CAAC;CAC5B,CAAC;AAEF,qBAAa,uBAAuB;IAEhC,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAClC,OAAO,CAAC,QAAQ,CAAC,eAAe;IAUhC,OAAO,CAAC,QAAQ,CAAC,kBAAkB;IACnC,OAAO,CAAC,QAAQ,CAAC,0BAA0B;gBAZ1B,iBAAiB,EAAE,IAAI,CAAC,iBAAiB,EAAE,UAAU,CAAC,EACtD,eAAe,EAAE,IAAI,CACpC,eAAe,EACb,mBAAmB,GACnB,cAAc,GACd,oBAAoB,GACpB,oBAAoB,GACpB,kBAAkB,GAClB,yBAAyB,GACzB,oBAAoB,CACvB,EACgB,kBAAkB,EAAE,kBAAkB,EACtC,0BAA0B,EAAE,0BAA0B;IAGzE,OAAO,CAAC,uBAAuB,CAK7B;IAEF,OAAO,CAAC,0BAA0B,CAQhC;IAEF,OAAO,CAAC,oCAAoC,CAqB1C;IAEF,OAAO,CAAC,oBAAoB,CAwB1B;IAEF,OAAO,CAAC,wBAAwB,CAe9B;IAEF,OAAO,CAAC,kCAAkC,CAWxC;IAEF,kBAAkB,GAChB,aAAa,gBAAgB,EAAE,EAC/B,gCAAgC,MAAM,EACtC,WAAW,MAAM,GAAG,IAAI,KACvB,kBAAkB,EAAE,CAwCrB;IAEF,GAAG,GAAU,QAAQ;QACnB,UAAU,EAAE,MAAM,CAAC;QACnB,gBAAgB,EAAE,MAAM,CAAC;QACzB,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAC;QACnC,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAC;QACnC,cAAc,EAAE,MAAM,CAAC;QACvB,2BAA2B,EAAE,MAAM,GAAG,IAAI,CAAC;QAC3C,8BAA8B,EAAE,MAAM,CAAC;QACvC,mBAAmB,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;QACrC,mBAAmB,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;QACrC,sBAAsB,EAAE,MAAM,CAAC;KAChC,KAAG,OAAO,CAAC;QAAE,aAAa,EAAE,kBAAkB,EAAE,GAAG,IAAI,CAAA;KAAE,CAAC,CAiPzD;CACH"}
1
+ {"version":3,"file":"StartPreparationUseCase.d.ts","sourceRoot":"","sources":["../../../src/domain/usecases/StartPreparationUseCase.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AACvE,OAAO,EAAE,iBAAiB,EAAE,MAAM,wCAAwC,CAAC;AAC3E,OAAO,EAAE,kBAAkB,EAAE,MAAM,yCAAyC,CAAC;AAC7E,OAAO,EAAE,0BAA0B,EAAE,MAAM,iDAAiD,CAAC;AAC7F,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAiBhE,MAAM,MAAM,kBAAkB,GAAG;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,mBAAmB,EAAE,MAAM,CAAC;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;IAClB,iBAAiB,EAAE,OAAO,CAAC;CAC5B,CAAC;AAEF,qBAAa,uBAAuB;IAEhC,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAClC,OAAO,CAAC,QAAQ,CAAC,eAAe;IAUhC,OAAO,CAAC,QAAQ,CAAC,kBAAkB;IACnC,OAAO,CAAC,QAAQ,CAAC,0BAA0B;gBAZ1B,iBAAiB,EAAE,IAAI,CAAC,iBAAiB,EAAE,UAAU,CAAC,EACtD,eAAe,EAAE,IAAI,CACpC,eAAe,EACb,mBAAmB,GACnB,cAAc,GACd,oBAAoB,GACpB,oBAAoB,GACpB,kBAAkB,GAClB,yBAAyB,GACzB,oBAAoB,CACvB,EACgB,kBAAkB,EAAE,kBAAkB,EACtC,0BAA0B,EAAE,0BAA0B;IAGzE,OAAO,CAAC,QAAQ,CAAC,gCAAgC,CAG/C;IAEF,OAAO,CAAC,uBAAuB,CAK7B;IAEF,OAAO,CAAC,uBAAuB,CAoB7B;IAEF,OAAO,CAAC,mBAAmB,CAyBzB;IAEF,OAAO,CAAC,oCAAoC,CAqB1C;IAEF,OAAO,CAAC,oBAAoB,CA6B1B;IAEF,OAAO,CAAC,wBAAwB,CAe9B;IAEF,OAAO,CAAC,kCAAkC,CAWxC;IAEF,kBAAkB,GAChB,aAAa,gBAAgB,EAAE,EAC/B,gCAAgC,MAAM,EACtC,WAAW,MAAM,GAAG,IAAI,KACvB,kBAAkB,EAAE,CAyCrB;IAEF,GAAG,GAAU,QAAQ;QACnB,UAAU,EAAE,MAAM,CAAC;QACnB,gBAAgB,EAAE,MAAM,CAAC;QACzB,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAC;QACnC,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAC;QACnC,cAAc,EAAE,MAAM,CAAC;QACvB,2BAA2B,EAAE,MAAM,GAAG,IAAI,CAAC;QAC3C,8BAA8B,EAAE,MAAM,CAAC;QACvC,mBAAmB,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;QACrC,mBAAmB,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;QACrC,sBAAsB,EAAE,MAAM,CAAC;KAChC,KAAG,OAAO,CAAC;QAAE,aAAa,EAAE,kBAAkB,EAAE,GAAG,IAAI,CAAA;KAAE,CAAC,CAqPzD;CACH"}