github-issue-tower-defence-management 1.65.0 → 1.67.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.
Files changed (32) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/README.md +7 -7
  3. package/bin/adapter/entry-points/handlers/HandleScheduledEventUseCaseHandler.js +1 -1
  4. package/bin/adapter/entry-points/handlers/HandleScheduledEventUseCaseHandler.js.map +1 -1
  5. package/bin/adapter/repositories/ProxyClaudeTokenUsageRepository.js +5 -0
  6. package/bin/adapter/repositories/ProxyClaudeTokenUsageRepository.js.map +1 -1
  7. package/bin/domain/entities/WorkflowStatus.js +2 -6
  8. package/bin/domain/entities/WorkflowStatus.js.map +1 -1
  9. package/bin/domain/usecases/SetupTowerDefenceProjectUseCase.js +14 -1
  10. package/bin/domain/usecases/SetupTowerDefenceProjectUseCase.js.map +1 -1
  11. package/bin/domain/usecases/StartPreparationUseCase.js +59 -121
  12. package/bin/domain/usecases/StartPreparationUseCase.js.map +1 -1
  13. package/package.json +1 -1
  14. package/src/adapter/entry-points/handlers/HandleScheduledEventUseCaseHandler.ts +1 -0
  15. package/src/adapter/repositories/ProxyClaudeTokenUsageRepository.test.ts +14 -0
  16. package/src/adapter/repositories/ProxyClaudeTokenUsageRepository.ts +5 -0
  17. package/src/domain/entities/ClaudeTokenUsage.ts +1 -0
  18. package/src/domain/entities/WorkflowStatus.ts +2 -5
  19. package/src/domain/usecases/SetupTowerDefenceProjectUseCase.test.ts +432 -36
  20. package/src/domain/usecases/SetupTowerDefenceProjectUseCase.ts +31 -0
  21. package/src/domain/usecases/StartPreparationUseCase.test.ts +87 -306
  22. package/src/domain/usecases/StartPreparationUseCase.ts +80 -175
  23. package/types/adapter/entry-points/handlers/HandleScheduledEventUseCaseHandler.d.ts.map +1 -1
  24. package/types/adapter/repositories/ProxyClaudeTokenUsageRepository.d.ts.map +1 -1
  25. package/types/domain/entities/ClaudeTokenUsage.d.ts +1 -0
  26. package/types/domain/entities/ClaudeTokenUsage.d.ts.map +1 -1
  27. package/types/domain/entities/WorkflowStatus.d.ts +1 -1
  28. package/types/domain/entities/WorkflowStatus.d.ts.map +1 -1
  29. package/types/domain/usecases/SetupTowerDefenceProjectUseCase.d.ts +3 -1
  30. package/types/domain/usecases/SetupTowerDefenceProjectUseCase.d.ts.map +1 -1
  31. package/types/domain/usecases/StartPreparationUseCase.d.ts +2 -6
  32. package/types/domain/usecases/StartPreparationUseCase.d.ts.map +1 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "github-issue-tower-defence-management",
3
- "version": "1.65.0",
3
+ "version": "1.67.0",
4
4
  "description": "",
5
5
  "main": "bin/index.js",
6
6
  "scripts": {
@@ -172,6 +172,7 @@ export class HandleScheduledEventUseCaseHandler {
172
172
  );
173
173
  const setupTowerDefenceProjectUseCase = new SetupTowerDefenceProjectUseCase(
174
174
  projectRepository,
175
+ issueRepository,
175
176
  );
176
177
  const actionAnnouncement = new ActionAnnouncementUseCase(issueRepository);
177
178
  const setWorkflowManagementIssueToStoryUseCase =
@@ -99,6 +99,7 @@ describe('ProxyClaudeTokenUsageRepository', () => {
99
99
  name: 'alice',
100
100
  token: 'token-a',
101
101
  fiveHourUtilization: 42,
102
+ sevenDayUtilization: 0,
102
103
  blocked: false,
103
104
  rejected: false,
104
105
  modelWeeklyLimits: {},
@@ -107,6 +108,7 @@ describe('ProxyClaudeTokenUsageRepository', () => {
107
108
  name: 'bob',
108
109
  token: 'token-b',
109
110
  fiveHourUtilization: 0,
111
+ sevenDayUtilization: 0,
110
112
  blocked: false,
111
113
  rejected: false,
112
114
  modelWeeklyLimits: {},
@@ -139,6 +141,7 @@ describe('ProxyClaudeTokenUsageRepository', () => {
139
141
  name: 'alice',
140
142
  token: 'token-a',
141
143
  fiveHourUtilization: 5,
144
+ sevenDayUtilization: 0,
142
145
  blocked: true,
143
146
  rejected: false,
144
147
  modelWeeklyLimits: {},
@@ -171,6 +174,7 @@ describe('ProxyClaudeTokenUsageRepository', () => {
171
174
  name: 'alice',
172
175
  token: 'token-a',
173
176
  fiveHourUtilization: 100,
177
+ sevenDayUtilization: 0,
174
178
  blocked: false,
175
179
  rejected: true,
176
180
  modelWeeklyLimits: {},
@@ -203,6 +207,7 @@ describe('ProxyClaudeTokenUsageRepository', () => {
203
207
  name: 'alice',
204
208
  token: 'token-a',
205
209
  fiveHourUtilization: 0,
210
+ sevenDayUtilization: 30,
206
211
  blocked: false,
207
212
  rejected: false,
208
213
  modelWeeklyLimits: {},
@@ -235,6 +240,7 @@ describe('ProxyClaudeTokenUsageRepository', () => {
235
240
  name: 'alice',
236
241
  token: 'token-a',
237
242
  fiveHourUtilization: 95,
243
+ sevenDayUtilization: 0,
238
244
  blocked: false,
239
245
  rejected: false,
240
246
  modelWeeklyLimits: {},
@@ -267,6 +273,7 @@ describe('ProxyClaudeTokenUsageRepository', () => {
267
273
  name: 'alice',
268
274
  token: 'token-a',
269
275
  fiveHourUtilization: 0,
276
+ sevenDayUtilization: 0,
270
277
  blocked: false,
271
278
  rejected: false,
272
279
  modelWeeklyLimits: {},
@@ -299,6 +306,7 @@ describe('ProxyClaudeTokenUsageRepository', () => {
299
306
  name: 'alice',
300
307
  token: 'token-a',
301
308
  fiveHourUtilization: 10,
309
+ sevenDayUtilization: 0,
302
310
  blocked: false,
303
311
  rejected: false,
304
312
  modelWeeklyLimits: {},
@@ -331,6 +339,7 @@ describe('ProxyClaudeTokenUsageRepository', () => {
331
339
  name: 'alice',
332
340
  token: 'token-a',
333
341
  fiveHourUtilization: 100,
342
+ sevenDayUtilization: 0,
334
343
  blocked: false,
335
344
  rejected: true,
336
345
  modelWeeklyLimits: {},
@@ -363,6 +372,7 @@ describe('ProxyClaudeTokenUsageRepository', () => {
363
372
  name: 'alice',
364
373
  token: 'token-a',
365
374
  fiveHourUtilization: 0,
375
+ sevenDayUtilization: 100,
366
376
  blocked: false,
367
377
  rejected: true,
368
378
  modelWeeklyLimits: {},
@@ -395,6 +405,7 @@ describe('ProxyClaudeTokenUsageRepository', () => {
395
405
  name: 'alice',
396
406
  token: 'token-a',
397
407
  fiveHourUtilization: 0,
408
+ sevenDayUtilization: 0,
398
409
  blocked: false,
399
410
  rejected: false,
400
411
  modelWeeklyLimits: {},
@@ -416,6 +427,7 @@ describe('ProxyClaudeTokenUsageRepository', () => {
416
427
  name: 'alice',
417
428
  token: 'token-a',
418
429
  fiveHourUtilization: 0,
430
+ sevenDayUtilization: 0,
419
431
  blocked: false,
420
432
  rejected: false,
421
433
  modelWeeklyLimits: {},
@@ -450,6 +462,7 @@ describe('ProxyClaudeTokenUsageRepository', () => {
450
462
  name: 'alice',
451
463
  token: 'token-a',
452
464
  fiveHourUtilization: 5,
465
+ sevenDayUtilization: 10,
453
466
  blocked: false,
454
467
  rejected: false,
455
468
  modelWeeklyLimits: {
@@ -486,6 +499,7 @@ describe('ProxyClaudeTokenUsageRepository', () => {
486
499
  name: 'alice',
487
500
  token: 'token-a',
488
501
  fiveHourUtilization: 5,
502
+ sevenDayUtilization: 10,
489
503
  blocked: false,
490
504
  rejected: false,
491
505
  modelWeeklyLimits: {
@@ -30,6 +30,7 @@ export class ProxyClaudeTokenUsageRepository implements ClaudeTokenUsageReposito
30
30
  name,
31
31
  token,
32
32
  fiveHourUtilization: 0,
33
+ sevenDayUtilization: 0,
33
34
  blocked: false,
34
35
  rejected: false,
35
36
  modelWeeklyLimits: {},
@@ -40,6 +41,9 @@ export class ProxyClaudeTokenUsageRepository implements ClaudeTokenUsageReposito
40
41
  const fiveHourUtilization = fiveHourExpired
41
42
  ? 0
42
43
  : snapshot.fiveHourUtilization;
44
+ const sevenDayUtilization = sevenDayExpired
45
+ ? 0
46
+ : snapshot.sevenDayUtilization;
43
47
  const fiveHourRejectionActive =
44
48
  snapshot.fiveHourRejected && !fiveHourExpired;
45
49
  const sevenDayRejectionActive =
@@ -67,6 +71,7 @@ export class ProxyClaudeTokenUsageRepository implements ClaudeTokenUsageReposito
67
71
  name,
68
72
  token,
69
73
  fiveHourUtilization,
74
+ sevenDayUtilization,
70
75
  blocked: snapshot.blocked,
71
76
  rejected,
72
77
  modelWeeklyLimits,
@@ -7,6 +7,7 @@ export type ClaudeTokenUsage = {
7
7
  name?: string;
8
8
  token: string;
9
9
  fiveHourUtilization: number;
10
+ sevenDayUtilization: number;
10
11
  blocked: boolean;
11
12
  rejected: boolean;
12
13
  modelWeeklyLimits: Record<string, ClaudeModelWeeklyLimit>;
@@ -1,7 +1,6 @@
1
1
  import { FieldOption } from './Project';
2
2
 
3
3
  export const DEFAULT_STATUS_NAME = 'Unread';
4
- export const AWAITING_TASK_BREAKDOWN_STATUS_NAME = 'Awaiting Task Breakdown';
5
4
  export const AWAITING_WORKSPACE_STATUS_NAME = 'Awaiting Workspace';
6
5
  export const PREPARATION_STATUS_NAME = 'Preparation';
7
6
  export const FAILED_PREPARATION_STATUS_NAME = 'Failed Preparation';
@@ -14,6 +13,8 @@ export const ICEBOX_STATUS_NAME = 'Icebox';
14
13
 
15
14
  export const LEGACY_TODO_STATUS_NAME = 'Todo';
16
15
  export const LEGACY_IN_TMUX_STATUS_NAME = 'In Tmux';
16
+ export const LEGACY_AWAITING_TASK_BREAKDOWN_STATUS_NAME =
17
+ 'Awaiting Task Breakdown';
17
18
 
18
19
  export type WorkflowStatusDefinition = {
19
20
  name: string;
@@ -25,10 +26,6 @@ export const REQUIRED_WORKFLOW_STATUSES: WorkflowStatusDefinition[] = [
25
26
  name: DEFAULT_STATUS_NAME,
26
27
  color: 'ORANGE',
27
28
  },
28
- {
29
- name: AWAITING_TASK_BREAKDOWN_STATUS_NAME,
30
- color: 'ORANGE',
31
- },
32
29
  {
33
30
  name: AWAITING_WORKSPACE_STATUS_NAME,
34
31
  color: 'BLUE',