github-issue-tower-defence-management 1.41.0 → 1.42.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 +7 -0
- package/README.md +6 -0
- package/bin/adapter/entry-points/cli/index.js +23 -0
- package/bin/adapter/entry-points/cli/index.js.map +1 -1
- package/bin/adapter/entry-points/handlers/HandleScheduledEventUseCaseHandler.js +18 -6
- package/bin/adapter/entry-points/handlers/HandleScheduledEventUseCaseHandler.js.map +1 -1
- package/bin/domain/usecases/HandleScheduledEventUseCase.js +1 -0
- package/bin/domain/usecases/HandleScheduledEventUseCase.js.map +1 -1
- package/bin/domain/usecases/StartPreparationUseCase.js +10 -2
- package/bin/domain/usecases/StartPreparationUseCase.js.map +1 -1
- package/package.json +1 -1
- package/src/adapter/entry-points/cli/index.test.ts +158 -0
- package/src/adapter/entry-points/cli/index.ts +31 -0
- package/src/domain/usecases/HandleScheduledEventUseCase.ts +2 -0
- package/src/domain/usecases/RevertOrphanedPreparationUseCase.test.ts +42 -0
- package/src/domain/usecases/StartPreparationUseCase.test.ts +277 -0
- package/src/domain/usecases/StartPreparationUseCase.ts +16 -2
- package/types/adapter/entry-points/cli/index.d.ts +1 -0
- package/types/adapter/entry-points/cli/index.d.ts.map +1 -1
- package/types/domain/usecases/HandleScheduledEventUseCase.d.ts +1 -0
- package/types/domain/usecases/HandleScheduledEventUseCase.d.ts.map +1 -1
- package/types/domain/usecases/StartPreparationUseCase.d.ts +1 -0
- package/types/domain/usecases/StartPreparationUseCase.d.ts.map +1 -1
|
@@ -147,6 +147,7 @@ describe('StartPreparationUseCase', () => {
|
|
|
147
147
|
maximumPreparingIssuesCount: null,
|
|
148
148
|
utilizationPercentageThreshold: 90,
|
|
149
149
|
allowedIssueAuthors: null,
|
|
150
|
+
codexHomeCandidates: null,
|
|
150
151
|
});
|
|
151
152
|
|
|
152
153
|
expect(mockProjectRepository.prepareStatus).toHaveBeenCalledTimes(2);
|
|
@@ -191,6 +192,7 @@ describe('StartPreparationUseCase', () => {
|
|
|
191
192
|
maximumPreparingIssuesCount: null,
|
|
192
193
|
utilizationPercentageThreshold: 90,
|
|
193
194
|
allowedIssueAuthors: null,
|
|
195
|
+
codexHomeCandidates: null,
|
|
194
196
|
});
|
|
195
197
|
expect(mockIssueRepository.update.mock.calls).toHaveLength(1);
|
|
196
198
|
expect(mockIssueRepository.update.mock.calls[0][0]).toMatchObject({
|
|
@@ -253,6 +255,7 @@ describe('StartPreparationUseCase', () => {
|
|
|
253
255
|
maximumPreparingIssuesCount: null,
|
|
254
256
|
utilizationPercentageThreshold: 90,
|
|
255
257
|
allowedIssueAuthors: null,
|
|
258
|
+
codexHomeCandidates: null,
|
|
256
259
|
});
|
|
257
260
|
expect(mockLocalCommandRunner.runCommand.mock.calls).toHaveLength(1);
|
|
258
261
|
expect(mockLocalCommandRunner.runCommand.mock.calls[0]).toEqual([
|
|
@@ -308,6 +311,7 @@ describe('StartPreparationUseCase', () => {
|
|
|
308
311
|
maximumPreparingIssuesCount: null,
|
|
309
312
|
utilizationPercentageThreshold: 90,
|
|
310
313
|
allowedIssueAuthors: null,
|
|
314
|
+
codexHomeCandidates: null,
|
|
311
315
|
});
|
|
312
316
|
expect(mockLocalCommandRunner.runCommand.mock.calls).toHaveLength(1);
|
|
313
317
|
expect(mockLocalCommandRunner.runCommand.mock.calls[0]).toEqual([
|
|
@@ -356,6 +360,7 @@ describe('StartPreparationUseCase', () => {
|
|
|
356
360
|
maximumPreparingIssuesCount: null,
|
|
357
361
|
utilizationPercentageThreshold: 90,
|
|
358
362
|
allowedIssueAuthors: null,
|
|
363
|
+
codexHomeCandidates: null,
|
|
359
364
|
});
|
|
360
365
|
expect(mockLocalCommandRunner.runCommand.mock.calls).toHaveLength(0);
|
|
361
366
|
expect(mockIssueRepository.update.mock.calls).toHaveLength(0);
|
|
@@ -403,6 +408,7 @@ describe('StartPreparationUseCase', () => {
|
|
|
403
408
|
maximumPreparingIssuesCount: null,
|
|
404
409
|
utilizationPercentageThreshold: 90,
|
|
405
410
|
allowedIssueAuthors: null,
|
|
411
|
+
codexHomeCandidates: null,
|
|
406
412
|
});
|
|
407
413
|
expect(mockLocalCommandRunner.runCommand.mock.calls).toHaveLength(0);
|
|
408
414
|
expect(mockIssueRepository.update.mock.calls).toHaveLength(0);
|
|
@@ -449,6 +455,7 @@ describe('StartPreparationUseCase', () => {
|
|
|
449
455
|
maximumPreparingIssuesCount: null,
|
|
450
456
|
utilizationPercentageThreshold: 90,
|
|
451
457
|
allowedIssueAuthors: null,
|
|
458
|
+
codexHomeCandidates: null,
|
|
452
459
|
});
|
|
453
460
|
expect(mockLocalCommandRunner.runCommand.mock.calls).toHaveLength(0);
|
|
454
461
|
expect(mockIssueRepository.update.mock.calls).toHaveLength(0);
|
|
@@ -506,6 +513,7 @@ describe('StartPreparationUseCase', () => {
|
|
|
506
513
|
maximumPreparingIssuesCount: null,
|
|
507
514
|
utilizationPercentageThreshold: 90,
|
|
508
515
|
allowedIssueAuthors: null,
|
|
516
|
+
codexHomeCandidates: null,
|
|
509
517
|
});
|
|
510
518
|
expect(mockLocalCommandRunner.runCommand.mock.calls).toHaveLength(0);
|
|
511
519
|
expect(mockIssueRepository.update.mock.calls).toHaveLength(0);
|
|
@@ -555,6 +563,7 @@ describe('StartPreparationUseCase', () => {
|
|
|
555
563
|
maximumPreparingIssuesCount: null,
|
|
556
564
|
utilizationPercentageThreshold: 90,
|
|
557
565
|
allowedIssueAuthors: null,
|
|
566
|
+
codexHomeCandidates: null,
|
|
558
567
|
});
|
|
559
568
|
expect(mockLocalCommandRunner.runCommand.mock.calls).toHaveLength(0);
|
|
560
569
|
expect(mockIssueRepository.update.mock.calls).toHaveLength(0);
|
|
@@ -599,6 +608,7 @@ describe('StartPreparationUseCase', () => {
|
|
|
599
608
|
maximumPreparingIssuesCount: null,
|
|
600
609
|
utilizationPercentageThreshold: 90,
|
|
601
610
|
allowedIssueAuthors: null,
|
|
611
|
+
codexHomeCandidates: null,
|
|
602
612
|
});
|
|
603
613
|
// Both awaiting issues should be updated (forward iteration: url1 first, then url2)
|
|
604
614
|
expect(mockIssueRepository.update.mock.calls).toHaveLength(2);
|
|
@@ -656,6 +666,7 @@ describe('StartPreparationUseCase', () => {
|
|
|
656
666
|
maximumPreparingIssuesCount: null,
|
|
657
667
|
utilizationPercentageThreshold: 90,
|
|
658
668
|
allowedIssueAuthors: null,
|
|
669
|
+
codexHomeCandidates: null,
|
|
659
670
|
});
|
|
660
671
|
// Loop doesn't run because we're already at max (6 >= 6)
|
|
661
672
|
expect(mockIssueRepository.update.mock.calls).toHaveLength(0);
|
|
@@ -691,6 +702,7 @@ describe('StartPreparationUseCase', () => {
|
|
|
691
702
|
maximumPreparingIssuesCount: null,
|
|
692
703
|
utilizationPercentageThreshold: 90,
|
|
693
704
|
allowedIssueAuthors: null,
|
|
705
|
+
codexHomeCandidates: null,
|
|
694
706
|
});
|
|
695
707
|
expect(mockLocalCommandRunner.runCommand.mock.calls).toHaveLength(1);
|
|
696
708
|
expect(mockLocalCommandRunner.runCommand.mock.calls[0]).toEqual([
|
|
@@ -736,6 +748,7 @@ describe('StartPreparationUseCase', () => {
|
|
|
736
748
|
maximumPreparingIssuesCount: null,
|
|
737
749
|
utilizationPercentageThreshold: 90,
|
|
738
750
|
allowedIssueAuthors: null,
|
|
751
|
+
codexHomeCandidates: null,
|
|
739
752
|
});
|
|
740
753
|
expect(mockLocalCommandRunner.runCommand.mock.calls).toHaveLength(1);
|
|
741
754
|
expect(mockLocalCommandRunner.runCommand.mock.calls[0]).toEqual([
|
|
@@ -781,6 +794,7 @@ describe('StartPreparationUseCase', () => {
|
|
|
781
794
|
maximumPreparingIssuesCount: null,
|
|
782
795
|
utilizationPercentageThreshold: 90,
|
|
783
796
|
allowedIssueAuthors: null,
|
|
797
|
+
codexHomeCandidates: null,
|
|
784
798
|
});
|
|
785
799
|
expect(mockLocalCommandRunner.runCommand.mock.calls).toHaveLength(1);
|
|
786
800
|
expect(mockLocalCommandRunner.runCommand.mock.calls[0]).toEqual([
|
|
@@ -826,6 +840,7 @@ describe('StartPreparationUseCase', () => {
|
|
|
826
840
|
maximumPreparingIssuesCount: null,
|
|
827
841
|
utilizationPercentageThreshold: 90,
|
|
828
842
|
allowedIssueAuthors: null,
|
|
843
|
+
codexHomeCandidates: null,
|
|
829
844
|
});
|
|
830
845
|
expect(mockLocalCommandRunner.runCommand.mock.calls).toHaveLength(1);
|
|
831
846
|
expect(mockLocalCommandRunner.runCommand.mock.calls[0]).toEqual([
|
|
@@ -871,6 +886,7 @@ describe('StartPreparationUseCase', () => {
|
|
|
871
886
|
maximumPreparingIssuesCount: null,
|
|
872
887
|
utilizationPercentageThreshold: 90,
|
|
873
888
|
allowedIssueAuthors: null,
|
|
889
|
+
codexHomeCandidates: null,
|
|
874
890
|
});
|
|
875
891
|
expect(mockLocalCommandRunner.runCommand.mock.calls).toHaveLength(1);
|
|
876
892
|
expect(mockLocalCommandRunner.runCommand.mock.calls[0]).toEqual([
|
|
@@ -916,6 +932,7 @@ describe('StartPreparationUseCase', () => {
|
|
|
916
932
|
maximumPreparingIssuesCount: null,
|
|
917
933
|
utilizationPercentageThreshold: 90,
|
|
918
934
|
allowedIssueAuthors: null,
|
|
935
|
+
codexHomeCandidates: null,
|
|
919
936
|
});
|
|
920
937
|
expect(mockLocalCommandRunner.runCommand.mock.calls).toHaveLength(1);
|
|
921
938
|
expect(mockLocalCommandRunner.runCommand.mock.calls[0]).toEqual([
|
|
@@ -964,6 +981,7 @@ describe('StartPreparationUseCase', () => {
|
|
|
964
981
|
maximumPreparingIssuesCount: null,
|
|
965
982
|
utilizationPercentageThreshold: 90,
|
|
966
983
|
allowedIssueAuthors: null,
|
|
984
|
+
codexHomeCandidates: null,
|
|
967
985
|
});
|
|
968
986
|
expect(consoleErrorSpy).toHaveBeenCalledWith(
|
|
969
987
|
'No LLM model configured for issue url1. Provide --defaultLlmModelName or add an llm-model: label.',
|
|
@@ -1012,6 +1030,7 @@ describe('StartPreparationUseCase', () => {
|
|
|
1012
1030
|
maximumPreparingIssuesCount: null,
|
|
1013
1031
|
utilizationPercentageThreshold: 90,
|
|
1014
1032
|
allowedIssueAuthors: null,
|
|
1033
|
+
codexHomeCandidates: null,
|
|
1015
1034
|
});
|
|
1016
1035
|
expect(consoleErrorSpy).toHaveBeenCalledWith(
|
|
1017
1036
|
'No LLM model configured for issue url1. Provide --defaultLlmModelName or add an llm-model: label.',
|
|
@@ -1062,6 +1081,7 @@ describe('StartPreparationUseCase', () => {
|
|
|
1062
1081
|
maximumPreparingIssuesCount: null,
|
|
1063
1082
|
utilizationPercentageThreshold: 90,
|
|
1064
1083
|
allowedIssueAuthors: null,
|
|
1084
|
+
codexHomeCandidates: null,
|
|
1065
1085
|
});
|
|
1066
1086
|
// No issues are in 'Awaiting Workspace' status, so no updates should happen
|
|
1067
1087
|
expect(mockIssueRepository.update.mock.calls).toHaveLength(0);
|
|
@@ -1097,6 +1117,7 @@ describe('StartPreparationUseCase', () => {
|
|
|
1097
1117
|
maximumPreparingIssuesCount: 3,
|
|
1098
1118
|
utilizationPercentageThreshold: 90,
|
|
1099
1119
|
allowedIssueAuthors: null,
|
|
1120
|
+
codexHomeCandidates: null,
|
|
1100
1121
|
});
|
|
1101
1122
|
expect(mockIssueRepository.update.mock.calls).toHaveLength(3);
|
|
1102
1123
|
expect(mockLocalCommandRunner.runCommand.mock.calls).toHaveLength(3);
|
|
@@ -1131,6 +1152,7 @@ describe('StartPreparationUseCase', () => {
|
|
|
1131
1152
|
maximumPreparingIssuesCount: null,
|
|
1132
1153
|
utilizationPercentageThreshold: 90,
|
|
1133
1154
|
allowedIssueAuthors: null,
|
|
1155
|
+
codexHomeCandidates: null,
|
|
1134
1156
|
});
|
|
1135
1157
|
expect(mockIssueRepository.update.mock.calls).toHaveLength(6);
|
|
1136
1158
|
expect(mockLocalCommandRunner.runCommand.mock.calls).toHaveLength(6);
|
|
@@ -1198,6 +1220,7 @@ describe('StartPreparationUseCase', () => {
|
|
|
1198
1220
|
maximumPreparingIssuesCount: null,
|
|
1199
1221
|
utilizationPercentageThreshold: 90,
|
|
1200
1222
|
allowedIssueAuthors: null,
|
|
1223
|
+
codexHomeCandidates: null,
|
|
1201
1224
|
});
|
|
1202
1225
|
|
|
1203
1226
|
expect(mockIssueRepository.update.mock.calls).toHaveLength(2);
|
|
@@ -1238,6 +1261,7 @@ describe('StartPreparationUseCase', () => {
|
|
|
1238
1261
|
maximumPreparingIssuesCount: null,
|
|
1239
1262
|
utilizationPercentageThreshold: 90,
|
|
1240
1263
|
allowedIssueAuthors: null,
|
|
1264
|
+
codexHomeCandidates: null,
|
|
1241
1265
|
});
|
|
1242
1266
|
|
|
1243
1267
|
expect(mockIssueRepository.update.mock.calls).toHaveLength(0);
|
|
@@ -1281,6 +1305,7 @@ describe('StartPreparationUseCase', () => {
|
|
|
1281
1305
|
maximumPreparingIssuesCount: null,
|
|
1282
1306
|
utilizationPercentageThreshold: 90,
|
|
1283
1307
|
allowedIssueAuthors: null,
|
|
1308
|
+
codexHomeCandidates: null,
|
|
1284
1309
|
});
|
|
1285
1310
|
|
|
1286
1311
|
expect(mockIssueRepository.update.mock.calls).toHaveLength(1);
|
|
@@ -1323,6 +1348,7 @@ describe('StartPreparationUseCase', () => {
|
|
|
1323
1348
|
maximumPreparingIssuesCount: null,
|
|
1324
1349
|
utilizationPercentageThreshold: 90,
|
|
1325
1350
|
allowedIssueAuthors: null,
|
|
1351
|
+
codexHomeCandidates: null,
|
|
1326
1352
|
});
|
|
1327
1353
|
|
|
1328
1354
|
const weeklyUtilization = 91;
|
|
@@ -1369,6 +1395,7 @@ describe('StartPreparationUseCase', () => {
|
|
|
1369
1395
|
maximumPreparingIssuesCount: null,
|
|
1370
1396
|
utilizationPercentageThreshold: 90,
|
|
1371
1397
|
allowedIssueAuthors: null,
|
|
1398
|
+
codexHomeCandidates: null,
|
|
1372
1399
|
});
|
|
1373
1400
|
|
|
1374
1401
|
expect(mockIssueRepository.update.mock.calls).toHaveLength(0);
|
|
@@ -1410,6 +1437,7 @@ describe('StartPreparationUseCase', () => {
|
|
|
1410
1437
|
maximumPreparingIssuesCount: null,
|
|
1411
1438
|
utilizationPercentageThreshold: 100,
|
|
1412
1439
|
allowedIssueAuthors: null,
|
|
1440
|
+
codexHomeCandidates: null,
|
|
1413
1441
|
});
|
|
1414
1442
|
|
|
1415
1443
|
expect(mockIssueRepository.update.mock.calls).toHaveLength(6);
|
|
@@ -1446,6 +1474,7 @@ describe('StartPreparationUseCase', () => {
|
|
|
1446
1474
|
maximumPreparingIssuesCount: null,
|
|
1447
1475
|
utilizationPercentageThreshold: 90,
|
|
1448
1476
|
allowedIssueAuthors: null,
|
|
1477
|
+
codexHomeCandidates: null,
|
|
1449
1478
|
});
|
|
1450
1479
|
|
|
1451
1480
|
expect(mockProjectRepository.getByUrl).not.toHaveBeenCalled();
|
|
@@ -1489,6 +1518,7 @@ describe('StartPreparationUseCase', () => {
|
|
|
1489
1518
|
maximumPreparingIssuesCount: null,
|
|
1490
1519
|
utilizationPercentageThreshold: 90,
|
|
1491
1520
|
allowedIssueAuthors: null,
|
|
1521
|
+
codexHomeCandidates: null,
|
|
1492
1522
|
});
|
|
1493
1523
|
|
|
1494
1524
|
const normalizedUtilizationBeyondThreshold = (95 - 90) / (100 - 90);
|
|
@@ -1518,6 +1548,7 @@ describe('StartPreparationUseCase', () => {
|
|
|
1518
1548
|
maximumPreparingIssuesCount: null,
|
|
1519
1549
|
utilizationPercentageThreshold: 90,
|
|
1520
1550
|
allowedIssueAuthors: null,
|
|
1551
|
+
codexHomeCandidates: null,
|
|
1521
1552
|
}),
|
|
1522
1553
|
).rejects.toThrow('Claude credentials file not found');
|
|
1523
1554
|
|
|
@@ -1555,6 +1586,7 @@ describe('StartPreparationUseCase', () => {
|
|
|
1555
1586
|
maximumPreparingIssuesCount: null,
|
|
1556
1587
|
utilizationPercentageThreshold: 70,
|
|
1557
1588
|
allowedIssueAuthors: null,
|
|
1589
|
+
codexHomeCandidates: null,
|
|
1558
1590
|
});
|
|
1559
1591
|
|
|
1560
1592
|
expect(mockIssueRepository.update.mock.calls).toHaveLength(0);
|
|
@@ -1597,6 +1629,7 @@ describe('StartPreparationUseCase', () => {
|
|
|
1597
1629
|
maximumPreparingIssuesCount: null,
|
|
1598
1630
|
utilizationPercentageThreshold: 80,
|
|
1599
1631
|
allowedIssueAuthors: null,
|
|
1632
|
+
codexHomeCandidates: null,
|
|
1600
1633
|
});
|
|
1601
1634
|
|
|
1602
1635
|
expect(mockIssueRepository.update.mock.calls).toHaveLength(1);
|
|
@@ -1644,6 +1677,7 @@ describe('StartPreparationUseCase', () => {
|
|
|
1644
1677
|
maximumPreparingIssuesCount: null,
|
|
1645
1678
|
utilizationPercentageThreshold: 90,
|
|
1646
1679
|
allowedIssueAuthors: null,
|
|
1680
|
+
codexHomeCandidates: null,
|
|
1647
1681
|
});
|
|
1648
1682
|
|
|
1649
1683
|
expect(mockIssueRepository.update.mock.calls).toHaveLength(1);
|
|
@@ -1702,6 +1736,7 @@ describe('StartPreparationUseCase', () => {
|
|
|
1702
1736
|
maximumPreparingIssuesCount: null,
|
|
1703
1737
|
utilizationPercentageThreshold: 90,
|
|
1704
1738
|
allowedIssueAuthors: null,
|
|
1739
|
+
codexHomeCandidates: null,
|
|
1705
1740
|
});
|
|
1706
1741
|
|
|
1707
1742
|
expect(mockIssueRepository.update.mock.calls).toHaveLength(1);
|
|
@@ -1763,6 +1798,7 @@ describe('StartPreparationUseCase', () => {
|
|
|
1763
1798
|
maximumPreparingIssuesCount: null,
|
|
1764
1799
|
utilizationPercentageThreshold: 90,
|
|
1765
1800
|
allowedIssueAuthors: null,
|
|
1801
|
+
codexHomeCandidates: null,
|
|
1766
1802
|
});
|
|
1767
1803
|
|
|
1768
1804
|
expect(mockIssueRepository.update.mock.calls).toHaveLength(1);
|
|
@@ -1813,6 +1849,7 @@ describe('StartPreparationUseCase', () => {
|
|
|
1813
1849
|
maximumPreparingIssuesCount: null,
|
|
1814
1850
|
utilizationPercentageThreshold: 90,
|
|
1815
1851
|
allowedIssueAuthors: null,
|
|
1852
|
+
codexHomeCandidates: null,
|
|
1816
1853
|
});
|
|
1817
1854
|
|
|
1818
1855
|
expect(mockIssueRepository.update.mock.calls).toHaveLength(1);
|
|
@@ -1863,6 +1900,7 @@ describe('StartPreparationUseCase', () => {
|
|
|
1863
1900
|
maximumPreparingIssuesCount: null,
|
|
1864
1901
|
utilizationPercentageThreshold: 90,
|
|
1865
1902
|
allowedIssueAuthors: null,
|
|
1903
|
+
codexHomeCandidates: null,
|
|
1866
1904
|
});
|
|
1867
1905
|
|
|
1868
1906
|
expect(mockIssueRepository.update.mock.calls).toHaveLength(1);
|
|
@@ -1913,6 +1951,7 @@ describe('StartPreparationUseCase', () => {
|
|
|
1913
1951
|
maximumPreparingIssuesCount: null,
|
|
1914
1952
|
utilizationPercentageThreshold: 90,
|
|
1915
1953
|
allowedIssueAuthors: null,
|
|
1954
|
+
codexHomeCandidates: null,
|
|
1916
1955
|
});
|
|
1917
1956
|
|
|
1918
1957
|
expect(mockIssueRepository.update.mock.calls).toHaveLength(1);
|
|
@@ -1970,6 +2009,7 @@ describe('StartPreparationUseCase', () => {
|
|
|
1970
2009
|
maximumPreparingIssuesCount: null,
|
|
1971
2010
|
utilizationPercentageThreshold: 90,
|
|
1972
2011
|
allowedIssueAuthors: ['user1', 'user2'],
|
|
2012
|
+
codexHomeCandidates: null,
|
|
1973
2013
|
});
|
|
1974
2014
|
|
|
1975
2015
|
expect(mockIssueRepository.update.mock.calls).toHaveLength(1);
|
|
@@ -2018,6 +2058,7 @@ describe('StartPreparationUseCase', () => {
|
|
|
2018
2058
|
maximumPreparingIssuesCount: null,
|
|
2019
2059
|
utilizationPercentageThreshold: 90,
|
|
2020
2060
|
allowedIssueAuthors: null,
|
|
2061
|
+
codexHomeCandidates: null,
|
|
2021
2062
|
});
|
|
2022
2063
|
|
|
2023
2064
|
expect(mockIssueRepository.update.mock.calls).toHaveLength(2);
|
|
@@ -2065,6 +2106,7 @@ describe('StartPreparationUseCase', () => {
|
|
|
2065
2106
|
maximumPreparingIssuesCount: null,
|
|
2066
2107
|
utilizationPercentageThreshold: 90,
|
|
2067
2108
|
allowedIssueAuthors: ['user1', 'user2'],
|
|
2109
|
+
codexHomeCandidates: null,
|
|
2068
2110
|
});
|
|
2069
2111
|
|
|
2070
2112
|
expect(mockIssueRepository.update.mock.calls).toHaveLength(2);
|
|
@@ -2114,9 +2156,244 @@ describe('StartPreparationUseCase', () => {
|
|
|
2114
2156
|
maximumPreparingIssuesCount: null,
|
|
2115
2157
|
utilizationPercentageThreshold: 90,
|
|
2116
2158
|
allowedIssueAuthors: ['user1'],
|
|
2159
|
+
codexHomeCandidates: null,
|
|
2117
2160
|
});
|
|
2118
2161
|
|
|
2119
2162
|
expect(mockIssueRepository.update.mock.calls).toHaveLength(1);
|
|
2120
2163
|
expect(mockLocalCommandRunner.runCommand.mock.calls).toHaveLength(1);
|
|
2121
2164
|
});
|
|
2165
|
+
|
|
2166
|
+
it('should not pass --codexHome when codexHomeCandidates is null', async () => {
|
|
2167
|
+
const awaitingIssues: Issue[] = [
|
|
2168
|
+
createMockIssue({
|
|
2169
|
+
url: 'url1',
|
|
2170
|
+
title: 'Issue 1',
|
|
2171
|
+
labels: ['category:impl'],
|
|
2172
|
+
status: 'Awaiting Workspace',
|
|
2173
|
+
}),
|
|
2174
|
+
];
|
|
2175
|
+
mockProjectRepository.getByUrl.mockResolvedValue(mockProject);
|
|
2176
|
+
mockIssueRepository.getStoryObjectMap.mockResolvedValue(
|
|
2177
|
+
createMockStoryObjectMap(awaitingIssues),
|
|
2178
|
+
);
|
|
2179
|
+
mockIssueRepository.getAllOpened.mockResolvedValueOnce(awaitingIssues);
|
|
2180
|
+
mockLocalCommandRunner.runCommand.mockResolvedValue({
|
|
2181
|
+
stdout: '',
|
|
2182
|
+
stderr: '',
|
|
2183
|
+
exitCode: 0,
|
|
2184
|
+
});
|
|
2185
|
+
|
|
2186
|
+
await useCase.run({
|
|
2187
|
+
projectUrl: 'https://github.com/user/repo',
|
|
2188
|
+
awaitingWorkspaceStatus: 'Awaiting Workspace',
|
|
2189
|
+
preparationStatus: 'Preparation',
|
|
2190
|
+
defaultAgentName: 'agent1',
|
|
2191
|
+
defaultLlmModelName: 'claude-opus',
|
|
2192
|
+
defaultLlmAgentName: null,
|
|
2193
|
+
configFilePath: '/path/to/config.yml',
|
|
2194
|
+
maximumPreparingIssuesCount: null,
|
|
2195
|
+
utilizationPercentageThreshold: 90,
|
|
2196
|
+
allowedIssueAuthors: null,
|
|
2197
|
+
codexHomeCandidates: null,
|
|
2198
|
+
});
|
|
2199
|
+
|
|
2200
|
+
expect(mockLocalCommandRunner.runCommand.mock.calls).toHaveLength(1);
|
|
2201
|
+
expect(mockLocalCommandRunner.runCommand.mock.calls[0]).toEqual([
|
|
2202
|
+
'aw',
|
|
2203
|
+
[
|
|
2204
|
+
'url1',
|
|
2205
|
+
'impl',
|
|
2206
|
+
'claude-opus',
|
|
2207
|
+
'--configFilePath',
|
|
2208
|
+
'/path/to/config.yml',
|
|
2209
|
+
'--branch',
|
|
2210
|
+
'i1',
|
|
2211
|
+
],
|
|
2212
|
+
]);
|
|
2213
|
+
});
|
|
2214
|
+
|
|
2215
|
+
it('should not pass --codexHome when codexHomeCandidates is empty array', async () => {
|
|
2216
|
+
const awaitingIssues: Issue[] = [
|
|
2217
|
+
createMockIssue({
|
|
2218
|
+
url: 'url1',
|
|
2219
|
+
title: 'Issue 1',
|
|
2220
|
+
labels: ['category:impl'],
|
|
2221
|
+
status: 'Awaiting Workspace',
|
|
2222
|
+
}),
|
|
2223
|
+
];
|
|
2224
|
+
mockProjectRepository.getByUrl.mockResolvedValue(mockProject);
|
|
2225
|
+
mockIssueRepository.getStoryObjectMap.mockResolvedValue(
|
|
2226
|
+
createMockStoryObjectMap(awaitingIssues),
|
|
2227
|
+
);
|
|
2228
|
+
mockIssueRepository.getAllOpened.mockResolvedValueOnce(awaitingIssues);
|
|
2229
|
+
mockLocalCommandRunner.runCommand.mockResolvedValue({
|
|
2230
|
+
stdout: '',
|
|
2231
|
+
stderr: '',
|
|
2232
|
+
exitCode: 0,
|
|
2233
|
+
});
|
|
2234
|
+
|
|
2235
|
+
await useCase.run({
|
|
2236
|
+
projectUrl: 'https://github.com/user/repo',
|
|
2237
|
+
awaitingWorkspaceStatus: 'Awaiting Workspace',
|
|
2238
|
+
preparationStatus: 'Preparation',
|
|
2239
|
+
defaultAgentName: 'agent1',
|
|
2240
|
+
defaultLlmModelName: 'claude-opus',
|
|
2241
|
+
defaultLlmAgentName: null,
|
|
2242
|
+
configFilePath: '/path/to/config.yml',
|
|
2243
|
+
maximumPreparingIssuesCount: null,
|
|
2244
|
+
utilizationPercentageThreshold: 90,
|
|
2245
|
+
allowedIssueAuthors: null,
|
|
2246
|
+
codexHomeCandidates: [],
|
|
2247
|
+
});
|
|
2248
|
+
|
|
2249
|
+
expect(mockLocalCommandRunner.runCommand.mock.calls).toHaveLength(1);
|
|
2250
|
+
expect(mockLocalCommandRunner.runCommand.mock.calls[0]).toEqual([
|
|
2251
|
+
'aw',
|
|
2252
|
+
[
|
|
2253
|
+
'url1',
|
|
2254
|
+
'impl',
|
|
2255
|
+
'claude-opus',
|
|
2256
|
+
'--configFilePath',
|
|
2257
|
+
'/path/to/config.yml',
|
|
2258
|
+
'--branch',
|
|
2259
|
+
'i1',
|
|
2260
|
+
],
|
|
2261
|
+
]);
|
|
2262
|
+
});
|
|
2263
|
+
|
|
2264
|
+
it('should pass --codexHome with the candidate when codexHomeCandidates has one entry', async () => {
|
|
2265
|
+
const awaitingIssues: Issue[] = [
|
|
2266
|
+
createMockIssue({
|
|
2267
|
+
url: 'url1',
|
|
2268
|
+
title: 'Issue 1',
|
|
2269
|
+
labels: ['category:impl'],
|
|
2270
|
+
status: 'Awaiting Workspace',
|
|
2271
|
+
}),
|
|
2272
|
+
];
|
|
2273
|
+
mockProjectRepository.getByUrl.mockResolvedValue(mockProject);
|
|
2274
|
+
mockIssueRepository.getStoryObjectMap.mockResolvedValue(
|
|
2275
|
+
createMockStoryObjectMap(awaitingIssues),
|
|
2276
|
+
);
|
|
2277
|
+
mockIssueRepository.getAllOpened.mockResolvedValueOnce(awaitingIssues);
|
|
2278
|
+
mockLocalCommandRunner.runCommand.mockResolvedValue({
|
|
2279
|
+
stdout: '',
|
|
2280
|
+
stderr: '',
|
|
2281
|
+
exitCode: 0,
|
|
2282
|
+
});
|
|
2283
|
+
|
|
2284
|
+
await useCase.run({
|
|
2285
|
+
projectUrl: 'https://github.com/user/repo',
|
|
2286
|
+
awaitingWorkspaceStatus: 'Awaiting Workspace',
|
|
2287
|
+
preparationStatus: 'Preparation',
|
|
2288
|
+
defaultAgentName: 'agent1',
|
|
2289
|
+
defaultLlmModelName: 'claude-opus',
|
|
2290
|
+
defaultLlmAgentName: null,
|
|
2291
|
+
configFilePath: '/path/to/config.yml',
|
|
2292
|
+
maximumPreparingIssuesCount: null,
|
|
2293
|
+
utilizationPercentageThreshold: 90,
|
|
2294
|
+
allowedIssueAuthors: null,
|
|
2295
|
+
codexHomeCandidates: ['.codex-dev1'],
|
|
2296
|
+
});
|
|
2297
|
+
|
|
2298
|
+
expect(mockLocalCommandRunner.runCommand.mock.calls).toHaveLength(1);
|
|
2299
|
+
expect(mockLocalCommandRunner.runCommand.mock.calls[0]).toEqual([
|
|
2300
|
+
'aw',
|
|
2301
|
+
[
|
|
2302
|
+
'url1',
|
|
2303
|
+
'impl',
|
|
2304
|
+
'claude-opus',
|
|
2305
|
+
'--configFilePath',
|
|
2306
|
+
'/path/to/config.yml',
|
|
2307
|
+
'--branch',
|
|
2308
|
+
'i1',
|
|
2309
|
+
'--codexHome',
|
|
2310
|
+
'.codex-dev1',
|
|
2311
|
+
],
|
|
2312
|
+
]);
|
|
2313
|
+
});
|
|
2314
|
+
|
|
2315
|
+
it('should cycle through codexHomeCandidates across multiple issues', async () => {
|
|
2316
|
+
const awaitingIssues: Issue[] = [
|
|
2317
|
+
createMockIssue({
|
|
2318
|
+
url: 'url1',
|
|
2319
|
+
title: 'Issue 1',
|
|
2320
|
+
labels: ['category:impl'],
|
|
2321
|
+
status: 'Awaiting Workspace',
|
|
2322
|
+
number: 1,
|
|
2323
|
+
itemId: 'item-1',
|
|
2324
|
+
}),
|
|
2325
|
+
createMockIssue({
|
|
2326
|
+
url: 'url2',
|
|
2327
|
+
title: 'Issue 2',
|
|
2328
|
+
labels: ['category:impl'],
|
|
2329
|
+
status: 'Awaiting Workspace',
|
|
2330
|
+
number: 2,
|
|
2331
|
+
itemId: 'item-2',
|
|
2332
|
+
}),
|
|
2333
|
+
createMockIssue({
|
|
2334
|
+
url: 'url3',
|
|
2335
|
+
title: 'Issue 3',
|
|
2336
|
+
labels: ['category:impl'],
|
|
2337
|
+
status: 'Awaiting Workspace',
|
|
2338
|
+
number: 3,
|
|
2339
|
+
itemId: 'item-3',
|
|
2340
|
+
}),
|
|
2341
|
+
];
|
|
2342
|
+
mockProjectRepository.getByUrl.mockResolvedValue(mockProject);
|
|
2343
|
+
mockIssueRepository.getStoryObjectMap.mockResolvedValue(
|
|
2344
|
+
createMockStoryObjectMap(awaitingIssues),
|
|
2345
|
+
);
|
|
2346
|
+
mockIssueRepository.getAllOpened.mockResolvedValueOnce(awaitingIssues);
|
|
2347
|
+
mockLocalCommandRunner.runCommand.mockResolvedValue({
|
|
2348
|
+
stdout: '',
|
|
2349
|
+
stderr: '',
|
|
2350
|
+
exitCode: 0,
|
|
2351
|
+
});
|
|
2352
|
+
|
|
2353
|
+
await useCase.run({
|
|
2354
|
+
projectUrl: 'https://github.com/user/repo',
|
|
2355
|
+
awaitingWorkspaceStatus: 'Awaiting Workspace',
|
|
2356
|
+
preparationStatus: 'Preparation',
|
|
2357
|
+
defaultAgentName: 'agent1',
|
|
2358
|
+
defaultLlmModelName: 'claude-opus',
|
|
2359
|
+
defaultLlmAgentName: null,
|
|
2360
|
+
configFilePath: '/path/to/config.yml',
|
|
2361
|
+
maximumPreparingIssuesCount: null,
|
|
2362
|
+
utilizationPercentageThreshold: 90,
|
|
2363
|
+
allowedIssueAuthors: null,
|
|
2364
|
+
codexHomeCandidates: ['.codex-dev1', '.codex-dev2'],
|
|
2365
|
+
});
|
|
2366
|
+
|
|
2367
|
+
expect(mockLocalCommandRunner.runCommand.mock.calls).toHaveLength(3);
|
|
2368
|
+
expect(mockLocalCommandRunner.runCommand.mock.calls[0][1]).toContain(
|
|
2369
|
+
'--codexHome',
|
|
2370
|
+
);
|
|
2371
|
+
expect(
|
|
2372
|
+
mockLocalCommandRunner.runCommand.mock.calls[0][1][
|
|
2373
|
+
mockLocalCommandRunner.runCommand.mock.calls[0][1].indexOf(
|
|
2374
|
+
'--codexHome',
|
|
2375
|
+
) + 1
|
|
2376
|
+
],
|
|
2377
|
+
).toBe('.codex-dev1');
|
|
2378
|
+
expect(mockLocalCommandRunner.runCommand.mock.calls[1][1]).toContain(
|
|
2379
|
+
'--codexHome',
|
|
2380
|
+
);
|
|
2381
|
+
expect(
|
|
2382
|
+
mockLocalCommandRunner.runCommand.mock.calls[1][1][
|
|
2383
|
+
mockLocalCommandRunner.runCommand.mock.calls[1][1].indexOf(
|
|
2384
|
+
'--codexHome',
|
|
2385
|
+
) + 1
|
|
2386
|
+
],
|
|
2387
|
+
).toBe('.codex-dev2');
|
|
2388
|
+
expect(mockLocalCommandRunner.runCommand.mock.calls[2][1]).toContain(
|
|
2389
|
+
'--codexHome',
|
|
2390
|
+
);
|
|
2391
|
+
expect(
|
|
2392
|
+
mockLocalCommandRunner.runCommand.mock.calls[2][1][
|
|
2393
|
+
mockLocalCommandRunner.runCommand.mock.calls[2][1].indexOf(
|
|
2394
|
+
'--codexHome',
|
|
2395
|
+
) + 1
|
|
2396
|
+
],
|
|
2397
|
+
).toBe('.codex-dev1');
|
|
2398
|
+
});
|
|
2122
2399
|
});
|
|
@@ -32,6 +32,7 @@ export class StartPreparationUseCase {
|
|
|
32
32
|
maximumPreparingIssuesCount: number | null;
|
|
33
33
|
utilizationPercentageThreshold: number;
|
|
34
34
|
allowedIssueAuthors: string[] | null;
|
|
35
|
+
codexHomeCandidates: string[] | null;
|
|
35
36
|
}): Promise<void> => {
|
|
36
37
|
const claudeUsages = await this.claudeRepository.getUsage();
|
|
37
38
|
const weeklyWindowHours = 168;
|
|
@@ -103,6 +104,7 @@ export class StartPreparationUseCase {
|
|
|
103
104
|
(issue) => issue.status === params.preparationStatus,
|
|
104
105
|
).length;
|
|
105
106
|
let updatedCurrentPreparationIssueCount = currentPreparationIssueCount;
|
|
107
|
+
let startedInThisRunCount = 0;
|
|
106
108
|
|
|
107
109
|
const now = new Date();
|
|
108
110
|
const currentHour = now.getHours();
|
|
@@ -212,7 +214,7 @@ export class StartPreparationUseCase {
|
|
|
212
214
|
issue.status = params.preparationStatus;
|
|
213
215
|
await this.issueRepository.update(issue, project);
|
|
214
216
|
|
|
215
|
-
|
|
217
|
+
const awArgs: string[] = [
|
|
216
218
|
issue.url,
|
|
217
219
|
agent,
|
|
218
220
|
model,
|
|
@@ -220,7 +222,19 @@ export class StartPreparationUseCase {
|
|
|
220
222
|
params.configFilePath,
|
|
221
223
|
'--branch',
|
|
222
224
|
branchName,
|
|
223
|
-
]
|
|
225
|
+
];
|
|
226
|
+
if (
|
|
227
|
+
params.codexHomeCandidates !== null &&
|
|
228
|
+
params.codexHomeCandidates.length > 0
|
|
229
|
+
) {
|
|
230
|
+
const codexHome =
|
|
231
|
+
params.codexHomeCandidates[
|
|
232
|
+
startedInThisRunCount % params.codexHomeCandidates.length
|
|
233
|
+
];
|
|
234
|
+
awArgs.push('--codexHome', codexHome);
|
|
235
|
+
}
|
|
236
|
+
await this.localCommandRunner.runCommand('aw', awArgs);
|
|
237
|
+
startedInThisRunCount++;
|
|
224
238
|
updatedCurrentPreparationIssueCount++;
|
|
225
239
|
}
|
|
226
240
|
};
|
|
@@ -16,6 +16,7 @@ type ConfigFile = {
|
|
|
16
16
|
workflowBlockerResolvedWebhookUrl?: string;
|
|
17
17
|
projectName?: string;
|
|
18
18
|
preparationProcessCheckCommand?: string;
|
|
19
|
+
codexHomeCandidates?: string[];
|
|
19
20
|
};
|
|
20
21
|
export declare const loadConfigFile: (configFilePath: string) => ConfigFile;
|
|
21
22
|
export declare const parseProjectReadmeConfig: (readme: string) => ConfigFile;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/adapter/entry-points/cli/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAqBpC,KAAK,UAAU,GAAG;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,2BAA2B,CAAC,EAAE,MAAM,CAAC;IACrC,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,8BAA8B,CAAC,EAAE,MAAM,CAAC;IACxC,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,0BAA0B,CAAC,EAAE,MAAM,CAAC;IACpC,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,iCAAiC,CAAC,EAAE,MAAM,CAAC;IAC3C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,8BAA8B,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/adapter/entry-points/cli/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAqBpC,KAAK,UAAU,GAAG;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,2BAA2B,CAAC,EAAE,MAAM,CAAC;IACrC,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,8BAA8B,CAAC,EAAE,MAAM,CAAC;IACxC,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,0BAA0B,CAAC,EAAE,MAAM,CAAC;IACpC,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,iCAAiC,CAAC,EAAE,MAAM,CAAC;IAC3C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,8BAA8B,CAAC,EAAE,MAAM,CAAC;IACxC,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;CAChC,CAAC;AAiEF,eAAO,MAAM,cAAc,GAAI,gBAAgB,MAAM,KAAG,UAkDvD,CAAC;AAEF,eAAO,MAAM,wBAAwB,GAAI,QAAQ,MAAM,KAAG,UAsDzD,CAAC;AAEF,eAAO,MAAM,YAAY,GACvB,YAAY,UAAU,EACtB,cAAc,UAAU,EACxB,iBAAiB,UAAU,KAC1B,UA2DD,CAAC;AAkBH,eAAO,MAAM,kBAAkB,GAC7B,YAAY,MAAM,EAClB,OAAO,MAAM,KACZ,OAAO,CAAC,MAAM,GAAG,IAAI,CAyDvB,CAAC;AAsBF,eAAO,MAAM,OAAO,SAAgB,CAAC"}
|
|
@@ -73,6 +73,7 @@ export declare class HandleScheduledEventUseCase {
|
|
|
73
73
|
utilizationPercentageThreshold?: number;
|
|
74
74
|
allowedIssueAuthors?: string[] | null;
|
|
75
75
|
preparationProcessCheckCommand?: string;
|
|
76
|
+
codexHomeCandidates?: string[] | null;
|
|
76
77
|
} | null;
|
|
77
78
|
notifyFinishedPreparation?: {
|
|
78
79
|
preparationStatus: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HandleScheduledEventUseCase.d.ts","sourceRoot":"","sources":["../../../src/domain/usecases/HandleScheduledEventUseCase.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"HandleScheduledEventUseCase.d.ts","sourceRoot":"","sources":["../../../src/domain/usecases/HandleScheduledEventUseCase.ts"],"names":[],"mappings":"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"}
|
|
@@ -19,6 +19,7 @@ export declare class StartPreparationUseCase {
|
|
|
19
19
|
maximumPreparingIssuesCount: number | null;
|
|
20
20
|
utilizationPercentageThreshold: number;
|
|
21
21
|
allowedIssueAuthors: string[] | null;
|
|
22
|
+
codexHomeCandidates: string[] | null;
|
|
22
23
|
}) => Promise<void>;
|
|
23
24
|
}
|
|
24
25
|
//# sourceMappingURL=StartPreparationUseCase.d.ts.map
|
|
@@ -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,gBAAgB,EAAE,MAAM,uCAAuC,CAAC;AAEzE,qBAAa,uBAAuB;IAEhC,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAIlC,OAAO,CAAC,QAAQ,CAAC,eAAe;IAQhC,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IACjC,OAAO,CAAC,QAAQ,CAAC,kBAAkB;gBAblB,iBAAiB,EAAE,IAAI,CACtC,iBAAiB,EACjB,UAAU,GAAG,eAAe,CAC7B,EACgB,eAAe,EAAE,IAAI,CACpC,eAAe,EACb,cAAc,GACd,mBAAmB,GACnB,QAAQ,GACR,oBAAoB,GACpB,oBAAoB,CACvB,EACgB,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,EAAE,UAAU,CAAC,EACpD,kBAAkB,EAAE,kBAAkB;IAGzD,GAAG,GAAU,QAAQ;QACnB,UAAU,EAAE,MAAM,CAAC;QACnB,uBAAuB,EAAE,MAAM,CAAC;QAChC,iBAAiB,EAAE,MAAM,CAAC;QAC1B,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;KACtC,KAAG,OAAO,CAAC,IAAI,CAAC,
|
|
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,gBAAgB,EAAE,MAAM,uCAAuC,CAAC;AAEzE,qBAAa,uBAAuB;IAEhC,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAIlC,OAAO,CAAC,QAAQ,CAAC,eAAe;IAQhC,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IACjC,OAAO,CAAC,QAAQ,CAAC,kBAAkB;gBAblB,iBAAiB,EAAE,IAAI,CACtC,iBAAiB,EACjB,UAAU,GAAG,eAAe,CAC7B,EACgB,eAAe,EAAE,IAAI,CACpC,eAAe,EACb,cAAc,GACd,mBAAmB,GACnB,QAAQ,GACR,oBAAoB,GACpB,oBAAoB,CACvB,EACgB,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,EAAE,UAAU,CAAC,EACpD,kBAAkB,EAAE,kBAAkB;IAGzD,GAAG,GAAU,QAAQ;QACnB,UAAU,EAAE,MAAM,CAAC;QACnB,uBAAuB,EAAE,MAAM,CAAC;QAChC,iBAAiB,EAAE,MAAM,CAAC;QAC1B,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;KACtC,KAAG,OAAO,CAAC,IAAI,CAAC,CA4Mf;CACH"}
|