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
@@ -1,7 +1,9 @@
1
1
  import { FieldOption } from '../entities/Project';
2
2
  import { ProjectRepository } from './adapter-interfaces/ProjectRepository';
3
+ import { IssueRepository } from './adapter-interfaces/IssueRepository';
3
4
  import {
4
5
  IN_TMUX_STATUS_NAME,
6
+ LEGACY_AWAITING_TASK_BREAKDOWN_STATUS_NAME,
5
7
  LEGACY_IN_TMUX_STATUS_NAME,
6
8
  LEGACY_TODO_STATUS_NAME,
7
9
  PC_TODO_STATUS_NAME,
@@ -16,6 +18,10 @@ export class SetupTowerDefenceProjectUseCase {
16
18
  ProjectRepository,
17
19
  'getByUrl' | 'updateStatusList'
18
20
  >,
21
+ private readonly issueRepository: Pick<
22
+ IssueRepository,
23
+ 'getAllIssues' | 'updateStatus'
24
+ >,
19
25
  ) {}
20
26
 
21
27
  private static readonly LEGACY_STATUS_NAMES: Readonly<
@@ -29,12 +35,37 @@ export class SetupTowerDefenceProjectUseCase {
29
35
  LEGACY_TODO_STATUS_NAME,
30
36
  LEGACY_IN_TMUX_STATUS_NAME,
31
37
  PC_TODO_STATUS_NAME,
38
+ LEGACY_AWAITING_TASK_BREAKDOWN_STATUS_NAME,
32
39
  ]);
33
40
 
34
41
  run = async (params: { projectUrl: string }): Promise<void> => {
35
42
  const project = await this.projectRepository.getByUrl(params.projectUrl);
36
43
  const existing = project.status.statuses;
37
44
 
45
+ const awaitingTaskBreakdownStatus = existing.find(
46
+ (s) => s.name === LEGACY_AWAITING_TASK_BREAKDOWN_STATUS_NAME,
47
+ );
48
+ if (awaitingTaskBreakdownStatus) {
49
+ const todoStatus = existing.find((s) => s.name === TODO_STATUS_NAME);
50
+ if (todoStatus) {
51
+ const { issues } = await this.issueRepository.getAllIssues(
52
+ project.id,
53
+ 0,
54
+ );
55
+ const awaitingTaskBreakdownIssues = issues.filter(
56
+ (issue) =>
57
+ issue.status === LEGACY_AWAITING_TASK_BREAKDOWN_STATUS_NAME,
58
+ );
59
+ for (const issue of awaitingTaskBreakdownIssues) {
60
+ await this.issueRepository.updateStatus(
61
+ project,
62
+ issue,
63
+ todoStatus.id,
64
+ );
65
+ }
66
+ }
67
+ }
68
+
38
69
  const hasMigratedFromName = existing.some((s) =>
39
70
  SetupTowerDefenceProjectUseCase.MIGRATED_FROM_NAMES.has(s.name),
40
71
  );