github-issue-tower-defence-management 1.104.0 → 1.104.2

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 (36) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/bin/adapter/entry-points/handlers/HandleScheduledEventUseCaseHandler.js +83 -58
  3. package/bin/adapter/entry-points/handlers/HandleScheduledEventUseCaseHandler.js.map +1 -1
  4. package/bin/domain/usecases/HandleScheduledEventUseCase.js +7 -2
  5. package/bin/domain/usecases/HandleScheduledEventUseCase.js.map +1 -1
  6. package/bin/domain/usecases/IssueRejectionEvaluator.js +21 -2
  7. package/bin/domain/usecases/IssueRejectionEvaluator.js.map +1 -1
  8. package/bin/domain/usecases/RevertNotReadyReviewQueueIssueUseCase.js +36 -6
  9. package/bin/domain/usecases/RevertNotReadyReviewQueueIssueUseCase.js.map +1 -1
  10. package/bin/domain/usecases/StartPreparationUseCase.js +2 -1
  11. package/bin/domain/usecases/StartPreparationUseCase.js.map +1 -1
  12. package/bin/domain/usecases/resolveAllowedIssueAuthors.js +8 -0
  13. package/bin/domain/usecases/resolveAllowedIssueAuthors.js.map +1 -0
  14. package/package.json +1 -1
  15. package/src/adapter/entry-points/handlers/HandleScheduledEventUseCaseHandler.test.ts +36 -0
  16. package/src/adapter/entry-points/handlers/HandleScheduledEventUseCaseHandler.ts +23 -1
  17. package/src/domain/usecases/HandleScheduledEventUseCase.test.ts +109 -0
  18. package/src/domain/usecases/HandleScheduledEventUseCase.ts +8 -2
  19. package/src/domain/usecases/IssueRejectionEvaluator.test.ts +182 -0
  20. package/src/domain/usecases/IssueRejectionEvaluator.ts +35 -1
  21. package/src/domain/usecases/RevertNotReadyReviewQueueIssueUseCase.test.ts +303 -75
  22. package/src/domain/usecases/RevertNotReadyReviewQueueIssueUseCase.ts +42 -7
  23. package/src/domain/usecases/StartPreparationUseCase.test.ts +202 -88
  24. package/src/domain/usecases/StartPreparationUseCase.ts +2 -1
  25. package/src/domain/usecases/resolveAllowedIssueAuthors.test.ts +51 -0
  26. package/src/domain/usecases/resolveAllowedIssueAuthors.ts +6 -0
  27. package/types/adapter/entry-points/handlers/HandleScheduledEventUseCaseHandler.d.ts.map +1 -1
  28. package/types/domain/usecases/HandleScheduledEventUseCase.d.ts +1 -0
  29. package/types/domain/usecases/HandleScheduledEventUseCase.d.ts.map +1 -1
  30. package/types/domain/usecases/IssueRejectionEvaluator.d.ts +5 -1
  31. package/types/domain/usecases/IssueRejectionEvaluator.d.ts.map +1 -1
  32. package/types/domain/usecases/RevertNotReadyReviewQueueIssueUseCase.d.ts +1 -0
  33. package/types/domain/usecases/RevertNotReadyReviewQueueIssueUseCase.d.ts.map +1 -1
  34. package/types/domain/usecases/StartPreparationUseCase.d.ts.map +1 -1
  35. package/types/domain/usecases/resolveAllowedIssueAuthors.d.ts +5 -0
  36. package/types/domain/usecases/resolveAllowedIssueAuthors.d.ts.map +1 -0
@@ -153,7 +153,7 @@ describe('StartPreparationUseCase', () => {
153
153
  configFilePath: '/path/to/config.yml',
154
154
  maximumPreparingIssuesCount: null,
155
155
  utilizationPercentageThreshold: 90,
156
- allowedIssueAuthors: null,
156
+ allowedIssueAuthors: ['testuser'],
157
157
  codexHomeCandidates: null,
158
158
  allowIssueCacheMinutes: 0,
159
159
  labelsAsLlmAgentName: null,
@@ -219,7 +219,7 @@ describe('StartPreparationUseCase', () => {
219
219
  configFilePath: '/path/to/config.yml',
220
220
  maximumPreparingIssuesCount: null,
221
221
  utilizationPercentageThreshold: 90,
222
- allowedIssueAuthors: null,
222
+ allowedIssueAuthors: ['testuser'],
223
223
  codexHomeCandidates: null,
224
224
  allowIssueCacheMinutes: 0,
225
225
  labelsAsLlmAgentName: null,
@@ -277,7 +277,7 @@ describe('StartPreparationUseCase', () => {
277
277
  configFilePath: '/path/to/config.yml',
278
278
  maximumPreparingIssuesCount: null,
279
279
  utilizationPercentageThreshold: 90,
280
- allowedIssueAuthors: null,
280
+ allowedIssueAuthors: ['testuser'],
281
281
  codexHomeCandidates: null,
282
282
  allowIssueCacheMinutes: 0,
283
283
  labelsAsLlmAgentName: null,
@@ -326,7 +326,7 @@ describe('StartPreparationUseCase', () => {
326
326
  configFilePath: '/path/to/config.yml',
327
327
  maximumPreparingIssuesCount: null,
328
328
  utilizationPercentageThreshold: 90,
329
- allowedIssueAuthors: null,
329
+ allowedIssueAuthors: ['testuser'],
330
330
  codexHomeCandidates: null,
331
331
  allowIssueCacheMinutes: 0,
332
332
  labelsAsLlmAgentName: null,
@@ -376,7 +376,7 @@ describe('StartPreparationUseCase', () => {
376
376
  configFilePath: '/path/to/config.yml',
377
377
  maximumPreparingIssuesCount: null,
378
378
  utilizationPercentageThreshold: 90,
379
- allowedIssueAuthors: null,
379
+ allowedIssueAuthors: ['testuser'],
380
380
  codexHomeCandidates: null,
381
381
  allowIssueCacheMinutes: 0,
382
382
  labelsAsLlmAgentName: null,
@@ -425,7 +425,7 @@ describe('StartPreparationUseCase', () => {
425
425
  configFilePath: '/path/to/config.yml',
426
426
  maximumPreparingIssuesCount: null,
427
427
  utilizationPercentageThreshold: 90,
428
- allowedIssueAuthors: null,
428
+ allowedIssueAuthors: ['testuser'],
429
429
  codexHomeCandidates: null,
430
430
  allowIssueCacheMinutes: 0,
431
431
  labelsAsLlmAgentName: null,
@@ -492,7 +492,7 @@ describe('StartPreparationUseCase', () => {
492
492
  configFilePath: '/path/to/config.yml',
493
493
  maximumPreparingIssuesCount: null,
494
494
  utilizationPercentageThreshold: 90,
495
- allowedIssueAuthors: null,
495
+ allowedIssueAuthors: ['testuser'],
496
496
  codexHomeCandidates: null,
497
497
  allowIssueCacheMinutes: 0,
498
498
  labelsAsLlmAgentName: null,
@@ -582,7 +582,7 @@ describe('StartPreparationUseCase', () => {
582
582
  configFilePath: '/path/to/config.yml',
583
583
  maximumPreparingIssuesCount: null,
584
584
  utilizationPercentageThreshold: 90,
585
- allowedIssueAuthors: null,
585
+ allowedIssueAuthors: ['testuser'],
586
586
  codexHomeCandidates: null,
587
587
  allowIssueCacheMinutes: 0,
588
588
  labelsAsLlmAgentName: null,
@@ -646,7 +646,7 @@ describe('StartPreparationUseCase', () => {
646
646
  configFilePath: '/path/to/config.yml',
647
647
  maximumPreparingIssuesCount: null,
648
648
  utilizationPercentageThreshold: 90,
649
- allowedIssueAuthors: null,
649
+ allowedIssueAuthors: ['testuser'],
650
650
  codexHomeCandidates: null,
651
651
  allowIssueCacheMinutes: 0,
652
652
  labelsAsLlmAgentName: null,
@@ -691,7 +691,7 @@ describe('StartPreparationUseCase', () => {
691
691
  configFilePath: '/path/to/config.yml',
692
692
  maximumPreparingIssuesCount: null,
693
693
  utilizationPercentageThreshold: 90,
694
- allowedIssueAuthors: null,
694
+ allowedIssueAuthors: ['testuser'],
695
695
  codexHomeCandidates: null,
696
696
  allowIssueCacheMinutes: 0,
697
697
  labelsAsLlmAgentName: null,
@@ -749,7 +749,7 @@ describe('StartPreparationUseCase', () => {
749
749
  configFilePath: '/path/to/config.yml',
750
750
  maximumPreparingIssuesCount: null,
751
751
  utilizationPercentageThreshold: 90,
752
- allowedIssueAuthors: null,
752
+ allowedIssueAuthors: ['testuser'],
753
753
  codexHomeCandidates: null,
754
754
  allowIssueCacheMinutes: 0,
755
755
  labelsAsLlmAgentName: null,
@@ -785,7 +785,7 @@ describe('StartPreparationUseCase', () => {
785
785
  configFilePath: '/path/to/config.yml',
786
786
  maximumPreparingIssuesCount: null,
787
787
  utilizationPercentageThreshold: 90,
788
- allowedIssueAuthors: null,
788
+ allowedIssueAuthors: ['testuser'],
789
789
  codexHomeCandidates: null,
790
790
  allowIssueCacheMinutes: 0,
791
791
  labelsAsLlmAgentName: null,
@@ -831,7 +831,7 @@ describe('StartPreparationUseCase', () => {
831
831
  configFilePath: '/path/to/config.yml',
832
832
  maximumPreparingIssuesCount: null,
833
833
  utilizationPercentageThreshold: 90,
834
- allowedIssueAuthors: null,
834
+ allowedIssueAuthors: ['testuser'],
835
835
  codexHomeCandidates: null,
836
836
  allowIssueCacheMinutes: 0,
837
837
  labelsAsLlmAgentName: null,
@@ -877,7 +877,7 @@ describe('StartPreparationUseCase', () => {
877
877
  configFilePath: '/path/to/config.yml',
878
878
  maximumPreparingIssuesCount: null,
879
879
  utilizationPercentageThreshold: 90,
880
- allowedIssueAuthors: null,
880
+ allowedIssueAuthors: ['testuser'],
881
881
  codexHomeCandidates: null,
882
882
  allowIssueCacheMinutes: 0,
883
883
  labelsAsLlmAgentName: null,
@@ -923,7 +923,7 @@ describe('StartPreparationUseCase', () => {
923
923
  configFilePath: '/path/to/config.yml',
924
924
  maximumPreparingIssuesCount: null,
925
925
  utilizationPercentageThreshold: 90,
926
- allowedIssueAuthors: null,
926
+ allowedIssueAuthors: ['testuser'],
927
927
  codexHomeCandidates: null,
928
928
  allowIssueCacheMinutes: 0,
929
929
  labelsAsLlmAgentName: null,
@@ -969,7 +969,7 @@ describe('StartPreparationUseCase', () => {
969
969
  configFilePath: '/path/to/config.yml',
970
970
  maximumPreparingIssuesCount: null,
971
971
  utilizationPercentageThreshold: 90,
972
- allowedIssueAuthors: null,
972
+ allowedIssueAuthors: ['testuser'],
973
973
  codexHomeCandidates: null,
974
974
  allowIssueCacheMinutes: 0,
975
975
  labelsAsLlmAgentName: null,
@@ -1015,7 +1015,7 @@ describe('StartPreparationUseCase', () => {
1015
1015
  configFilePath: '/path/to/config.yml',
1016
1016
  maximumPreparingIssuesCount: null,
1017
1017
  utilizationPercentageThreshold: 90,
1018
- allowedIssueAuthors: null,
1018
+ allowedIssueAuthors: ['testuser'],
1019
1019
  codexHomeCandidates: null,
1020
1020
  allowIssueCacheMinutes: 0,
1021
1021
  labelsAsLlmAgentName: null,
@@ -1064,7 +1064,7 @@ describe('StartPreparationUseCase', () => {
1064
1064
  configFilePath: '/path/to/config.yml',
1065
1065
  maximumPreparingIssuesCount: null,
1066
1066
  utilizationPercentageThreshold: 90,
1067
- allowedIssueAuthors: null,
1067
+ allowedIssueAuthors: ['testuser'],
1068
1068
  codexHomeCandidates: null,
1069
1069
  allowIssueCacheMinutes: 0,
1070
1070
  labelsAsLlmAgentName: null,
@@ -1113,7 +1113,7 @@ describe('StartPreparationUseCase', () => {
1113
1113
  configFilePath: '/path/to/config.yml',
1114
1114
  maximumPreparingIssuesCount: null,
1115
1115
  utilizationPercentageThreshold: 90,
1116
- allowedIssueAuthors: null,
1116
+ allowedIssueAuthors: ['testuser'],
1117
1117
  codexHomeCandidates: null,
1118
1118
  allowIssueCacheMinutes: 0,
1119
1119
  labelsAsLlmAgentName: null,
@@ -1164,7 +1164,7 @@ describe('StartPreparationUseCase', () => {
1164
1164
  configFilePath: '/path/to/config.yml',
1165
1165
  maximumPreparingIssuesCount: null,
1166
1166
  utilizationPercentageThreshold: 90,
1167
- allowedIssueAuthors: null,
1167
+ allowedIssueAuthors: ['testuser'],
1168
1168
  codexHomeCandidates: null,
1169
1169
  allowIssueCacheMinutes: 0,
1170
1170
  labelsAsLlmAgentName: null,
@@ -1200,7 +1200,7 @@ describe('StartPreparationUseCase', () => {
1200
1200
  configFilePath: '/path/to/config.yml',
1201
1201
  maximumPreparingIssuesCount: 3,
1202
1202
  utilizationPercentageThreshold: 90,
1203
- allowedIssueAuthors: null,
1203
+ allowedIssueAuthors: ['testuser'],
1204
1204
  codexHomeCandidates: null,
1205
1205
  allowIssueCacheMinutes: 0,
1206
1206
  labelsAsLlmAgentName: null,
@@ -1235,7 +1235,7 @@ describe('StartPreparationUseCase', () => {
1235
1235
  configFilePath: '/path/to/config.yml',
1236
1236
  maximumPreparingIssuesCount: null,
1237
1237
  utilizationPercentageThreshold: 90,
1238
- allowedIssueAuthors: null,
1238
+ allowedIssueAuthors: ['testuser'],
1239
1239
  codexHomeCandidates: null,
1240
1240
  allowIssueCacheMinutes: 0,
1241
1241
  labelsAsLlmAgentName: null,
@@ -1297,7 +1297,7 @@ describe('StartPreparationUseCase', () => {
1297
1297
  configFilePath: '/path/to/config.yml',
1298
1298
  maximumPreparingIssuesCount: 12,
1299
1299
  utilizationPercentageThreshold: 90,
1300
- allowedIssueAuthors: null,
1300
+ allowedIssueAuthors: ['testuser'],
1301
1301
  codexHomeCandidates: null,
1302
1302
  allowIssueCacheMinutes: 0,
1303
1303
  labelsAsLlmAgentName: null,
@@ -1368,7 +1368,7 @@ describe('StartPreparationUseCase', () => {
1368
1368
  configFilePath: '/path/to/config.yml',
1369
1369
  maximumPreparingIssuesCount: 20,
1370
1370
  utilizationPercentageThreshold: 90,
1371
- allowedIssueAuthors: null,
1371
+ allowedIssueAuthors: ['testuser'],
1372
1372
  codexHomeCandidates: null,
1373
1373
  allowIssueCacheMinutes: 0,
1374
1374
  labelsAsLlmAgentName: null,
@@ -1433,7 +1433,7 @@ describe('StartPreparationUseCase', () => {
1433
1433
  configFilePath: '/path/to/config.yml',
1434
1434
  maximumPreparingIssuesCount: null,
1435
1435
  utilizationPercentageThreshold: 90,
1436
- allowedIssueAuthors: null,
1436
+ allowedIssueAuthors: ['testuser'],
1437
1437
  codexHomeCandidates: null,
1438
1438
  allowIssueCacheMinutes: 0,
1439
1439
  labelsAsLlmAgentName: null,
@@ -1482,7 +1482,7 @@ describe('StartPreparationUseCase', () => {
1482
1482
  configFilePath: '/path/to/config.yml',
1483
1483
  maximumPreparingIssuesCount: null,
1484
1484
  utilizationPercentageThreshold: 90,
1485
- allowedIssueAuthors: null,
1485
+ allowedIssueAuthors: ['testuser'],
1486
1486
  codexHomeCandidates: null,
1487
1487
  allowIssueCacheMinutes: 0,
1488
1488
  labelsAsLlmAgentName: null,
@@ -1538,7 +1538,7 @@ describe('StartPreparationUseCase', () => {
1538
1538
  configFilePath: '/path/to/config.yml',
1539
1539
  maximumPreparingIssuesCount: null,
1540
1540
  utilizationPercentageThreshold: 90,
1541
- allowedIssueAuthors: null,
1541
+ allowedIssueAuthors: ['testuser'],
1542
1542
  codexHomeCandidates: null,
1543
1543
  allowIssueCacheMinutes: 0,
1544
1544
  labelsAsLlmAgentName: null,
@@ -1597,7 +1597,7 @@ describe('StartPreparationUseCase', () => {
1597
1597
  configFilePath: '/path/to/config.yml',
1598
1598
  maximumPreparingIssuesCount: null,
1599
1599
  utilizationPercentageThreshold: 90,
1600
- allowedIssueAuthors: null,
1600
+ allowedIssueAuthors: ['testuser'],
1601
1601
  codexHomeCandidates: null,
1602
1602
  allowIssueCacheMinutes: 0,
1603
1603
  labelsAsLlmAgentName: null,
@@ -1646,7 +1646,7 @@ describe('StartPreparationUseCase', () => {
1646
1646
  configFilePath: '/path/to/config.yml',
1647
1647
  maximumPreparingIssuesCount: null,
1648
1648
  utilizationPercentageThreshold: 90,
1649
- allowedIssueAuthors: null,
1649
+ allowedIssueAuthors: ['testuser'],
1650
1650
  codexHomeCandidates: null,
1651
1651
  allowIssueCacheMinutes: 0,
1652
1652
  labelsAsLlmAgentName: null,
@@ -1695,7 +1695,7 @@ describe('StartPreparationUseCase', () => {
1695
1695
  configFilePath: '/path/to/config.yml',
1696
1696
  maximumPreparingIssuesCount: null,
1697
1697
  utilizationPercentageThreshold: 90,
1698
- allowedIssueAuthors: null,
1698
+ allowedIssueAuthors: ['testuser'],
1699
1699
  codexHomeCandidates: null,
1700
1700
  allowIssueCacheMinutes: 0,
1701
1701
  labelsAsLlmAgentName: null,
@@ -1744,7 +1744,7 @@ describe('StartPreparationUseCase', () => {
1744
1744
  configFilePath: '/path/to/config.yml',
1745
1745
  maximumPreparingIssuesCount: null,
1746
1746
  utilizationPercentageThreshold: 90,
1747
- allowedIssueAuthors: null,
1747
+ allowedIssueAuthors: ['testuser'],
1748
1748
  codexHomeCandidates: null,
1749
1749
  allowIssueCacheMinutes: 0,
1750
1750
  labelsAsLlmAgentName: null,
@@ -1813,7 +1813,7 @@ describe('StartPreparationUseCase', () => {
1813
1813
  expect(mockLocalCommandRunner.runCommand.mock.calls).toHaveLength(1);
1814
1814
  });
1815
1815
 
1816
- it('should process all issues when allowedIssueAuthors is null', async () => {
1816
+ it('should process no issues when allowedIssueAuthors is null (fail-closed)', async () => {
1817
1817
  const issue1 = createMockIssue({
1818
1818
  url: 'https://github.com/user/repo/issues/1',
1819
1819
  title: 'Issue 1',
@@ -1854,8 +1854,122 @@ describe('StartPreparationUseCase', () => {
1854
1854
  labelsAsLlmAgentName: null,
1855
1855
  });
1856
1856
 
1857
- expect(mockIssueRepository.updateStatus.mock.calls).toHaveLength(2);
1858
- expect(mockLocalCommandRunner.runCommand.mock.calls).toHaveLength(2);
1857
+ expect(mockIssueRepository.updateStatus.mock.calls).toHaveLength(0);
1858
+ expect(mockLocalCommandRunner.runCommand.mock.calls).toHaveLength(0);
1859
+ });
1860
+
1861
+ it('should process no issues when allowedIssueAuthors is an empty list (fail-closed)', async () => {
1862
+ const issue1 = createMockIssue({
1863
+ url: 'https://github.com/user/repo/issues/1',
1864
+ title: 'Issue 1',
1865
+ labels: [],
1866
+ status: 'Awaiting Workspace',
1867
+ author: 'user1',
1868
+ });
1869
+
1870
+ mockProjectRepository.getByUrl.mockResolvedValue(mockProject);
1871
+ mockIssueRepository.getStoryObjectMap.mockResolvedValue(
1872
+ createMockStoryObjectMap([issue1]),
1873
+ );
1874
+ mockLocalCommandRunner.runCommand.mockResolvedValue({
1875
+ stdout: '',
1876
+ stderr: '',
1877
+ exitCode: 0,
1878
+ });
1879
+
1880
+ await useCase.run({
1881
+ projectUrl: 'https://github.com/user/repo',
1882
+ defaultAgentName: 'agent1',
1883
+ defaultLlmModelName: 'claude-sonnet-4-6',
1884
+ fallbackLlmModelName: null,
1885
+ defaultLlmAgentName: null,
1886
+ configFilePath: '/path/to/config.yml',
1887
+ maximumPreparingIssuesCount: null,
1888
+ utilizationPercentageThreshold: 90,
1889
+ allowedIssueAuthors: [],
1890
+ codexHomeCandidates: null,
1891
+ allowIssueCacheMinutes: 0,
1892
+ labelsAsLlmAgentName: null,
1893
+ });
1894
+
1895
+ expect(mockIssueRepository.updateStatus.mock.calls).toHaveLength(0);
1896
+ expect(mockLocalCommandRunner.runCommand.mock.calls).toHaveLength(0);
1897
+ });
1898
+
1899
+ it('should process a previously bot-bypassed author only when explicitly listed', async () => {
1900
+ const botIssue = createMockIssue({
1901
+ url: 'https://github.com/user/repo/issues/1',
1902
+ title: 'Bot issue',
1903
+ labels: [],
1904
+ status: 'Awaiting Workspace',
1905
+ author: 'dependabot[bot]',
1906
+ });
1907
+
1908
+ mockProjectRepository.getByUrl.mockResolvedValue(mockProject);
1909
+ mockIssueRepository.getStoryObjectMap.mockResolvedValue(
1910
+ createMockStoryObjectMap([botIssue]),
1911
+ );
1912
+ mockLocalCommandRunner.runCommand.mockResolvedValue({
1913
+ stdout: '',
1914
+ stderr: '',
1915
+ exitCode: 0,
1916
+ });
1917
+
1918
+ await useCase.run({
1919
+ projectUrl: 'https://github.com/user/repo',
1920
+ defaultAgentName: 'agent1',
1921
+ defaultLlmModelName: 'claude-sonnet-4-6',
1922
+ fallbackLlmModelName: null,
1923
+ defaultLlmAgentName: null,
1924
+ configFilePath: '/path/to/config.yml',
1925
+ maximumPreparingIssuesCount: null,
1926
+ utilizationPercentageThreshold: 90,
1927
+ allowedIssueAuthors: ['dependabot[bot]'],
1928
+ codexHomeCandidates: null,
1929
+ allowIssueCacheMinutes: 0,
1930
+ labelsAsLlmAgentName: null,
1931
+ });
1932
+
1933
+ expect(mockIssueRepository.updateStatus.mock.calls).toHaveLength(1);
1934
+ expect(mockLocalCommandRunner.runCommand.mock.calls).toHaveLength(1);
1935
+ });
1936
+
1937
+ it('should not process a previously bot-bypassed author when not listed', async () => {
1938
+ const botIssue = createMockIssue({
1939
+ url: 'https://github.com/user/repo/issues/1',
1940
+ title: 'Bot issue',
1941
+ labels: [],
1942
+ status: 'Awaiting Workspace',
1943
+ author: 'dependabot[bot]',
1944
+ });
1945
+
1946
+ mockProjectRepository.getByUrl.mockResolvedValue(mockProject);
1947
+ mockIssueRepository.getStoryObjectMap.mockResolvedValue(
1948
+ createMockStoryObjectMap([botIssue]),
1949
+ );
1950
+ mockLocalCommandRunner.runCommand.mockResolvedValue({
1951
+ stdout: '',
1952
+ stderr: '',
1953
+ exitCode: 0,
1954
+ });
1955
+
1956
+ await useCase.run({
1957
+ projectUrl: 'https://github.com/user/repo',
1958
+ defaultAgentName: 'agent1',
1959
+ defaultLlmModelName: 'claude-sonnet-4-6',
1960
+ fallbackLlmModelName: null,
1961
+ defaultLlmAgentName: null,
1962
+ configFilePath: '/path/to/config.yml',
1963
+ maximumPreparingIssuesCount: null,
1964
+ utilizationPercentageThreshold: 90,
1965
+ allowedIssueAuthors: ['owner'],
1966
+ codexHomeCandidates: null,
1967
+ allowIssueCacheMinutes: 0,
1968
+ labelsAsLlmAgentName: null,
1969
+ });
1970
+
1971
+ expect(mockIssueRepository.updateStatus.mock.calls).toHaveLength(0);
1972
+ expect(mockLocalCommandRunner.runCommand.mock.calls).toHaveLength(0);
1859
1973
  });
1860
1974
 
1861
1975
  it('should skip issues with empty author when allowedIssueAuthors is configured (deny-by-default)', async () => {
@@ -1974,7 +2088,7 @@ describe('StartPreparationUseCase', () => {
1974
2088
  configFilePath: '/path/to/config.yml',
1975
2089
  maximumPreparingIssuesCount: null,
1976
2090
  utilizationPercentageThreshold: 90,
1977
- allowedIssueAuthors: null,
2091
+ allowedIssueAuthors: ['testuser'],
1978
2092
  codexHomeCandidates: null,
1979
2093
  allowIssueCacheMinutes: 0,
1980
2094
  labelsAsLlmAgentName: null,
@@ -2023,7 +2137,7 @@ describe('StartPreparationUseCase', () => {
2023
2137
  configFilePath: '/path/to/config.yml',
2024
2138
  maximumPreparingIssuesCount: null,
2025
2139
  utilizationPercentageThreshold: 90,
2026
- allowedIssueAuthors: null,
2140
+ allowedIssueAuthors: ['testuser'],
2027
2141
  codexHomeCandidates: [],
2028
2142
  allowIssueCacheMinutes: 0,
2029
2143
  labelsAsLlmAgentName: null,
@@ -2072,7 +2186,7 @@ describe('StartPreparationUseCase', () => {
2072
2186
  configFilePath: '/path/to/config.yml',
2073
2187
  maximumPreparingIssuesCount: null,
2074
2188
  utilizationPercentageThreshold: 90,
2075
- allowedIssueAuthors: null,
2189
+ allowedIssueAuthors: ['testuser'],
2076
2190
  codexHomeCandidates: ['.codex-dev1'],
2077
2191
  allowIssueCacheMinutes: 0,
2078
2192
  labelsAsLlmAgentName: null,
@@ -2141,7 +2255,7 @@ describe('StartPreparationUseCase', () => {
2141
2255
  configFilePath: '/path/to/config.yml',
2142
2256
  maximumPreparingIssuesCount: null,
2143
2257
  utilizationPercentageThreshold: 90,
2144
- allowedIssueAuthors: null,
2258
+ allowedIssueAuthors: ['testuser'],
2145
2259
  codexHomeCandidates: ['.codex-dev1', '.codex-dev2'],
2146
2260
  allowIssueCacheMinutes: 0,
2147
2261
  labelsAsLlmAgentName: null,
@@ -2207,7 +2321,7 @@ describe('StartPreparationUseCase', () => {
2207
2321
  configFilePath: '/path/to/config.yml',
2208
2322
  maximumPreparingIssuesCount: null,
2209
2323
  utilizationPercentageThreshold: 90,
2210
- allowedIssueAuthors: null,
2324
+ allowedIssueAuthors: ['testuser'],
2211
2325
  codexHomeCandidates: null,
2212
2326
  allowIssueCacheMinutes: 0,
2213
2327
  labelsAsLlmAgentName: null,
@@ -2267,7 +2381,7 @@ describe('StartPreparationUseCase', () => {
2267
2381
  configFilePath: '/path/to/config.yml',
2268
2382
  maximumPreparingIssuesCount: null,
2269
2383
  utilizationPercentageThreshold: 90,
2270
- allowedIssueAuthors: null,
2384
+ allowedIssueAuthors: ['testuser'],
2271
2385
  codexHomeCandidates: null,
2272
2386
  allowIssueCacheMinutes: 0,
2273
2387
  labelsAsLlmAgentName: null,
@@ -2296,7 +2410,7 @@ describe('StartPreparationUseCase', () => {
2296
2410
  configFilePath: '/path/to/config.yml',
2297
2411
  maximumPreparingIssuesCount: null,
2298
2412
  utilizationPercentageThreshold: 90,
2299
- allowedIssueAuthors: null,
2413
+ allowedIssueAuthors: ['testuser'],
2300
2414
  codexHomeCandidates: null,
2301
2415
  allowIssueCacheMinutes: 5,
2302
2416
  labelsAsLlmAgentName: null,
@@ -2344,7 +2458,7 @@ describe('StartPreparationUseCase', () => {
2344
2458
  configFilePath: '/path/to/config.yml',
2345
2459
  maximumPreparingIssuesCount: null,
2346
2460
  utilizationPercentageThreshold: 90,
2347
- allowedIssueAuthors: null,
2461
+ allowedIssueAuthors: ['testuser'],
2348
2462
  codexHomeCandidates: null,
2349
2463
  allowIssueCacheMinutes: 0,
2350
2464
  labelsAsLlmAgentName: null,
@@ -2397,7 +2511,7 @@ describe('StartPreparationUseCase', () => {
2397
2511
  configFilePath: '/path/to/config.yml',
2398
2512
  maximumPreparingIssuesCount: null,
2399
2513
  utilizationPercentageThreshold: 90,
2400
- allowedIssueAuthors: null,
2514
+ allowedIssueAuthors: ['testuser'],
2401
2515
  codexHomeCandidates: null,
2402
2516
  allowIssueCacheMinutes: 0,
2403
2517
  labelsAsLlmAgentName: null,
@@ -2488,7 +2602,7 @@ describe('StartPreparationUseCase', () => {
2488
2602
  configFilePath: '/path/to/config.yml',
2489
2603
  maximumPreparingIssuesCount: null,
2490
2604
  utilizationPercentageThreshold: 90,
2491
- allowedIssueAuthors: null,
2605
+ allowedIssueAuthors: ['testuser'],
2492
2606
  codexHomeCandidates: null,
2493
2607
  allowIssueCacheMinutes: 0,
2494
2608
  labelsAsLlmAgentName: null,
@@ -2546,7 +2660,7 @@ describe('StartPreparationUseCase', () => {
2546
2660
  configFilePath: '/path/to/config.yml',
2547
2661
  maximumPreparingIssuesCount: null,
2548
2662
  utilizationPercentageThreshold: 90,
2549
- allowedIssueAuthors: null,
2663
+ allowedIssueAuthors: ['testuser'],
2550
2664
  codexHomeCandidates: null,
2551
2665
  allowIssueCacheMinutes: 0,
2552
2666
  labelsAsLlmAgentName: null,
@@ -2622,7 +2736,7 @@ describe('StartPreparationUseCase', () => {
2622
2736
  configFilePath: '/path/to/config.yml',
2623
2737
  maximumPreparingIssuesCount: null,
2624
2738
  utilizationPercentageThreshold: 90,
2625
- allowedIssueAuthors: null,
2739
+ allowedIssueAuthors: ['testuser'],
2626
2740
  codexHomeCandidates: null,
2627
2741
  allowIssueCacheMinutes: 0,
2628
2742
  labelsAsLlmAgentName: null,
@@ -2701,7 +2815,7 @@ describe('StartPreparationUseCase', () => {
2701
2815
  configFilePath: '/path/to/config.yml',
2702
2816
  maximumPreparingIssuesCount: null,
2703
2817
  utilizationPercentageThreshold: 90,
2704
- allowedIssueAuthors: null,
2818
+ allowedIssueAuthors: ['testuser'],
2705
2819
  codexHomeCandidates: null,
2706
2820
  allowIssueCacheMinutes: 0,
2707
2821
  labelsAsLlmAgentName: null,
@@ -2779,7 +2893,7 @@ describe('StartPreparationUseCase', () => {
2779
2893
  configFilePath: '/path/to/config.yml',
2780
2894
  maximumPreparingIssuesCount: null,
2781
2895
  utilizationPercentageThreshold: 90,
2782
- allowedIssueAuthors: null,
2896
+ allowedIssueAuthors: ['testuser'],
2783
2897
  codexHomeCandidates: null,
2784
2898
  allowIssueCacheMinutes: 0,
2785
2899
  labelsAsLlmAgentName: null,
@@ -2854,7 +2968,7 @@ describe('StartPreparationUseCase', () => {
2854
2968
  configFilePath: '/path/to/config.yml',
2855
2969
  maximumPreparingIssuesCount: null,
2856
2970
  utilizationPercentageThreshold: 90,
2857
- allowedIssueAuthors: null,
2971
+ allowedIssueAuthors: ['testuser'],
2858
2972
  codexHomeCandidates: null,
2859
2973
  allowIssueCacheMinutes: 0,
2860
2974
  labelsAsLlmAgentName: null,
@@ -2942,7 +3056,7 @@ describe('StartPreparationUseCase', () => {
2942
3056
  configFilePath: '/path/to/config.yml',
2943
3057
  maximumPreparingIssuesCount: null,
2944
3058
  utilizationPercentageThreshold: 90,
2945
- allowedIssueAuthors: null,
3059
+ allowedIssueAuthors: ['testuser'],
2946
3060
  codexHomeCandidates: null,
2947
3061
  allowIssueCacheMinutes: 0,
2948
3062
  labelsAsLlmAgentName: null,
@@ -3009,7 +3123,7 @@ describe('StartPreparationUseCase', () => {
3009
3123
  configFilePath: '/path/to/config.yml',
3010
3124
  maximumPreparingIssuesCount: null,
3011
3125
  utilizationPercentageThreshold: 90,
3012
- allowedIssueAuthors: null,
3126
+ allowedIssueAuthors: ['testuser'],
3013
3127
  codexHomeCandidates: null,
3014
3128
  allowIssueCacheMinutes: 0,
3015
3129
  labelsAsLlmAgentName: null,
@@ -3077,7 +3191,7 @@ describe('StartPreparationUseCase', () => {
3077
3191
  configFilePath: '/path/to/config.yml',
3078
3192
  maximumPreparingIssuesCount: null,
3079
3193
  utilizationPercentageThreshold: 90,
3080
- allowedIssueAuthors: null,
3194
+ allowedIssueAuthors: ['testuser'],
3081
3195
  codexHomeCandidates: null,
3082
3196
  allowIssueCacheMinutes: 0,
3083
3197
  labelsAsLlmAgentName: null,
@@ -3147,7 +3261,7 @@ describe('StartPreparationUseCase', () => {
3147
3261
  configFilePath: '/path/to/config.yml',
3148
3262
  maximumPreparingIssuesCount: null,
3149
3263
  utilizationPercentageThreshold: 90,
3150
- allowedIssueAuthors: null,
3264
+ allowedIssueAuthors: ['testuser'],
3151
3265
  codexHomeCandidates: null,
3152
3266
  allowIssueCacheMinutes: 0,
3153
3267
  labelsAsLlmAgentName: null,
@@ -3220,7 +3334,7 @@ describe('StartPreparationUseCase', () => {
3220
3334
  configFilePath: '/path/to/config.yml',
3221
3335
  maximumPreparingIssuesCount: null,
3222
3336
  utilizationPercentageThreshold: 90,
3223
- allowedIssueAuthors: null,
3337
+ allowedIssueAuthors: ['testuser'],
3224
3338
  codexHomeCandidates: null,
3225
3339
  allowIssueCacheMinutes: 0,
3226
3340
  labelsAsLlmAgentName: null,
@@ -3335,7 +3449,7 @@ describe('StartPreparationUseCase', () => {
3335
3449
  configFilePath: '/path/to/config.yml',
3336
3450
  maximumPreparingIssuesCount: null,
3337
3451
  utilizationPercentageThreshold: 90,
3338
- allowedIssueAuthors: null,
3452
+ allowedIssueAuthors: ['testuser'],
3339
3453
  codexHomeCandidates: null,
3340
3454
  allowIssueCacheMinutes: 0,
3341
3455
  labelsAsLlmAgentName: null,
@@ -3421,7 +3535,7 @@ describe('StartPreparationUseCase', () => {
3421
3535
  configFilePath: '/path/to/config.yml',
3422
3536
  maximumPreparingIssuesCount: null,
3423
3537
  utilizationPercentageThreshold: 90,
3424
- allowedIssueAuthors: null,
3538
+ allowedIssueAuthors: ['testuser'],
3425
3539
  codexHomeCandidates: null,
3426
3540
  allowIssueCacheMinutes: 0,
3427
3541
  labelsAsLlmAgentName: null,
@@ -3482,7 +3596,7 @@ describe('StartPreparationUseCase', () => {
3482
3596
  configFilePath: '/path/to/config.yml',
3483
3597
  maximumPreparingIssuesCount: null,
3484
3598
  utilizationPercentageThreshold: 90,
3485
- allowedIssueAuthors: null,
3599
+ allowedIssueAuthors: ['testuser'],
3486
3600
  codexHomeCandidates: null,
3487
3601
  allowIssueCacheMinutes: 0,
3488
3602
  labelsAsLlmAgentName: null,
@@ -3549,7 +3663,7 @@ describe('StartPreparationUseCase', () => {
3549
3663
  configFilePath: '/path/to/config.yml',
3550
3664
  maximumPreparingIssuesCount: null,
3551
3665
  utilizationPercentageThreshold: 90,
3552
- allowedIssueAuthors: null,
3666
+ allowedIssueAuthors: ['testuser'],
3553
3667
  codexHomeCandidates: null,
3554
3668
  allowIssueCacheMinutes: 0,
3555
3669
  labelsAsLlmAgentName: null,
@@ -3616,7 +3730,7 @@ describe('StartPreparationUseCase', () => {
3616
3730
  configFilePath: '/path/to/config.yml',
3617
3731
  maximumPreparingIssuesCount: null,
3618
3732
  utilizationPercentageThreshold: 90,
3619
- allowedIssueAuthors: null,
3733
+ allowedIssueAuthors: ['testuser'],
3620
3734
  codexHomeCandidates: null,
3621
3735
  allowIssueCacheMinutes: 0,
3622
3736
  labelsAsLlmAgentName: null,
@@ -3683,7 +3797,7 @@ describe('StartPreparationUseCase', () => {
3683
3797
  configFilePath: '/path/to/config.yml',
3684
3798
  maximumPreparingIssuesCount: null,
3685
3799
  utilizationPercentageThreshold: 90,
3686
- allowedIssueAuthors: null,
3800
+ allowedIssueAuthors: ['testuser'],
3687
3801
  codexHomeCandidates: null,
3688
3802
  allowIssueCacheMinutes: 0,
3689
3803
  labelsAsLlmAgentName: null,
@@ -3753,7 +3867,7 @@ describe('StartPreparationUseCase', () => {
3753
3867
  configFilePath: '/path/to/config.yml',
3754
3868
  maximumPreparingIssuesCount: null,
3755
3869
  utilizationPercentageThreshold: 90,
3756
- allowedIssueAuthors: null,
3870
+ allowedIssueAuthors: ['testuser'],
3757
3871
  codexHomeCandidates: null,
3758
3872
  allowIssueCacheMinutes: 0,
3759
3873
  labelsAsLlmAgentName: null,
@@ -3801,7 +3915,7 @@ describe('StartPreparationUseCase', () => {
3801
3915
  configFilePath: '/path/to/config.yml',
3802
3916
  maximumPreparingIssuesCount: null,
3803
3917
  utilizationPercentageThreshold: 90,
3804
- allowedIssueAuthors: null,
3918
+ allowedIssueAuthors: ['testuser'],
3805
3919
  codexHomeCandidates: null,
3806
3920
  allowIssueCacheMinutes: 0,
3807
3921
  labelsAsLlmAgentName: null,
@@ -3871,7 +3985,7 @@ describe('StartPreparationUseCase', () => {
3871
3985
  configFilePath: '/path/to/config.yml',
3872
3986
  maximumPreparingIssuesCount: null,
3873
3987
  utilizationPercentageThreshold: 90,
3874
- allowedIssueAuthors: null,
3988
+ allowedIssueAuthors: ['testuser'],
3875
3989
  codexHomeCandidates: null,
3876
3990
  allowIssueCacheMinutes: 0,
3877
3991
  labelsAsLlmAgentName: null,
@@ -3941,7 +4055,7 @@ describe('StartPreparationUseCase', () => {
3941
4055
  configFilePath: '/path/to/config.yml',
3942
4056
  maximumPreparingIssuesCount: null,
3943
4057
  utilizationPercentageThreshold: 90,
3944
- allowedIssueAuthors: null,
4058
+ allowedIssueAuthors: ['testuser'],
3945
4059
  codexHomeCandidates: null,
3946
4060
  allowIssueCacheMinutes: 0,
3947
4061
  labelsAsLlmAgentName: null,
@@ -4011,7 +4125,7 @@ describe('StartPreparationUseCase', () => {
4011
4125
  configFilePath: '/path/to/config.yml',
4012
4126
  maximumPreparingIssuesCount: null,
4013
4127
  utilizationPercentageThreshold: 90,
4014
- allowedIssueAuthors: null,
4128
+ allowedIssueAuthors: ['testuser'],
4015
4129
  codexHomeCandidates: null,
4016
4130
  allowIssueCacheMinutes: 0,
4017
4131
  labelsAsLlmAgentName: null,
@@ -4089,7 +4203,7 @@ describe('StartPreparationUseCase', () => {
4089
4203
  configFilePath: '/path/to/config.yml',
4090
4204
  maximumPreparingIssuesCount: null,
4091
4205
  utilizationPercentageThreshold: 90,
4092
- allowedIssueAuthors: null,
4206
+ allowedIssueAuthors: ['testuser'],
4093
4207
  codexHomeCandidates: null,
4094
4208
  allowIssueCacheMinutes: 0,
4095
4209
  labelsAsLlmAgentName: null,
@@ -4167,7 +4281,7 @@ describe('StartPreparationUseCase', () => {
4167
4281
  configFilePath: '/path/to/config.yml',
4168
4282
  maximumPreparingIssuesCount: null,
4169
4283
  utilizationPercentageThreshold: 90,
4170
- allowedIssueAuthors: null,
4284
+ allowedIssueAuthors: ['testuser'],
4171
4285
  codexHomeCandidates: null,
4172
4286
  allowIssueCacheMinutes: 0,
4173
4287
  labelsAsLlmAgentName: null,
@@ -4250,7 +4364,7 @@ describe('StartPreparationUseCase', () => {
4250
4364
  configFilePath: '/path/to/config.yml',
4251
4365
  maximumPreparingIssuesCount: null,
4252
4366
  utilizationPercentageThreshold: 90,
4253
- allowedIssueAuthors: null,
4367
+ allowedIssueAuthors: ['testuser'],
4254
4368
  codexHomeCandidates: null,
4255
4369
  allowIssueCacheMinutes: 0,
4256
4370
  labelsAsLlmAgentName: null,
@@ -4362,7 +4476,7 @@ describe('StartPreparationUseCase', () => {
4362
4476
  configFilePath: '/path/to/config.yml',
4363
4477
  maximumPreparingIssuesCount: null,
4364
4478
  utilizationPercentageThreshold: 90,
4365
- allowedIssueAuthors: null,
4479
+ allowedIssueAuthors: ['testuser'],
4366
4480
  codexHomeCandidates: null,
4367
4481
  allowIssueCacheMinutes: 0,
4368
4482
  labelsAsLlmAgentName: null,
@@ -4438,7 +4552,7 @@ describe('StartPreparationUseCase', () => {
4438
4552
  configFilePath: '/path/to/config.yml',
4439
4553
  maximumPreparingIssuesCount: null,
4440
4554
  utilizationPercentageThreshold: 90,
4441
- allowedIssueAuthors: null,
4555
+ allowedIssueAuthors: ['testuser'],
4442
4556
  codexHomeCandidates: null,
4443
4557
  allowIssueCacheMinutes: 0,
4444
4558
  labelsAsLlmAgentName: null,
@@ -4511,7 +4625,7 @@ describe('StartPreparationUseCase', () => {
4511
4625
  configFilePath: '/path/to/config.yml',
4512
4626
  maximumPreparingIssuesCount: null,
4513
4627
  utilizationPercentageThreshold: 90,
4514
- allowedIssueAuthors: null,
4628
+ allowedIssueAuthors: ['testuser'],
4515
4629
  codexHomeCandidates: null,
4516
4630
  allowIssueCacheMinutes: 0,
4517
4631
  labelsAsLlmAgentName: null,
@@ -4559,7 +4673,7 @@ describe('StartPreparationUseCase', () => {
4559
4673
  configFilePath: '/path/to/config.yml',
4560
4674
  maximumPreparingIssuesCount: null,
4561
4675
  utilizationPercentageThreshold: 90,
4562
- allowedIssueAuthors: null,
4676
+ allowedIssueAuthors: ['testuser'],
4563
4677
  codexHomeCandidates: null,
4564
4678
  allowIssueCacheMinutes: 0,
4565
4679
  labelsAsLlmAgentName: params.labelsAsLlmAgentName,
@@ -4706,7 +4820,7 @@ describe('StartPreparationUseCase', () => {
4706
4820
  configFilePath: '/path/to/config.yml',
4707
4821
  maximumPreparingIssuesCount: null,
4708
4822
  utilizationPercentageThreshold: 90,
4709
- allowedIssueAuthors: null,
4823
+ allowedIssueAuthors: ['testuser'],
4710
4824
  codexHomeCandidates: null,
4711
4825
  allowIssueCacheMinutes: 0,
4712
4826
  labelsAsLlmAgentName: null,
@@ -4773,7 +4887,7 @@ describe('StartPreparationUseCase', () => {
4773
4887
  configFilePath: '/path/to/config.yml',
4774
4888
  maximumPreparingIssuesCount: null,
4775
4889
  utilizationPercentageThreshold: 90,
4776
- allowedIssueAuthors: null,
4890
+ allowedIssueAuthors: ['testuser'],
4777
4891
  codexHomeCandidates: null,
4778
4892
  allowIssueCacheMinutes: 0,
4779
4893
  labelsAsLlmAgentName: null,
@@ -4832,7 +4946,7 @@ describe('StartPreparationUseCase', () => {
4832
4946
  configFilePath: '/path/to/config.yml',
4833
4947
  maximumPreparingIssuesCount: null,
4834
4948
  utilizationPercentageThreshold: 90,
4835
- allowedIssueAuthors: null,
4949
+ allowedIssueAuthors: ['testuser'],
4836
4950
  codexHomeCandidates: null,
4837
4951
  allowIssueCacheMinutes: 0,
4838
4952
  labelsAsLlmAgentName: null,
@@ -4887,7 +5001,7 @@ describe('StartPreparationUseCase', () => {
4887
5001
  configFilePath: '/path/to/config.yml',
4888
5002
  maximumPreparingIssuesCount: null,
4889
5003
  utilizationPercentageThreshold: 90,
4890
- allowedIssueAuthors: null,
5004
+ allowedIssueAuthors: ['testuser'],
4891
5005
  codexHomeCandidates: null,
4892
5006
  allowIssueCacheMinutes: 0,
4893
5007
  labelsAsLlmAgentName: null,
@@ -4942,7 +5056,7 @@ describe('StartPreparationUseCase', () => {
4942
5056
  configFilePath: '/path/to/config.yml',
4943
5057
  maximumPreparingIssuesCount: null,
4944
5058
  utilizationPercentageThreshold: 90,
4945
- allowedIssueAuthors: null,
5059
+ allowedIssueAuthors: ['testuser'],
4946
5060
  codexHomeCandidates: null,
4947
5061
  allowIssueCacheMinutes: 0,
4948
5062
  labelsAsLlmAgentName: null,
@@ -4998,7 +5112,7 @@ describe('StartPreparationUseCase', () => {
4998
5112
  configFilePath: '/path/to/config.yml',
4999
5113
  maximumPreparingIssuesCount: null,
5000
5114
  utilizationPercentageThreshold: 90,
5001
- allowedIssueAuthors: null,
5115
+ allowedIssueAuthors: ['testuser'],
5002
5116
  codexHomeCandidates: null,
5003
5117
  allowIssueCacheMinutes: 0,
5004
5118
  labelsAsLlmAgentName: null,
@@ -5079,7 +5193,7 @@ describe('StartPreparationUseCase', () => {
5079
5193
  configFilePath: '/path/to/config.yml',
5080
5194
  maximumPreparingIssuesCount: null,
5081
5195
  utilizationPercentageThreshold: 90,
5082
- allowedIssueAuthors: null,
5196
+ allowedIssueAuthors: ['testuser'],
5083
5197
  codexHomeCandidates: null,
5084
5198
  allowIssueCacheMinutes: 0,
5085
5199
  labelsAsLlmAgentName: null,
@@ -5147,7 +5261,7 @@ describe('StartPreparationUseCase', () => {
5147
5261
  configFilePath: '/path/to/config.yml',
5148
5262
  maximumPreparingIssuesCount: null,
5149
5263
  utilizationPercentageThreshold: 90,
5150
- allowedIssueAuthors: null,
5264
+ allowedIssueAuthors: ['testuser'],
5151
5265
  codexHomeCandidates: null,
5152
5266
  allowIssueCacheMinutes: 0,
5153
5267
  labelsAsLlmAgentName: null,
@@ -5207,7 +5321,7 @@ describe('StartPreparationUseCase', () => {
5207
5321
  configFilePath: '/path/to/config.yml',
5208
5322
  maximumPreparingIssuesCount: null,
5209
5323
  utilizationPercentageThreshold: 90,
5210
- allowedIssueAuthors: null,
5324
+ allowedIssueAuthors: ['testuser'],
5211
5325
  codexHomeCandidates: null,
5212
5326
  allowIssueCacheMinutes: 0,
5213
5327
  labelsAsLlmAgentName: null,
@@ -5263,7 +5377,7 @@ describe('StartPreparationUseCase', () => {
5263
5377
  configFilePath: '/path/to/config.yml',
5264
5378
  maximumPreparingIssuesCount: null,
5265
5379
  utilizationPercentageThreshold: 90,
5266
- allowedIssueAuthors: null,
5380
+ allowedIssueAuthors: ['testuser'],
5267
5381
  codexHomeCandidates: null,
5268
5382
  allowIssueCacheMinutes: 0,
5269
5383
  labelsAsLlmAgentName: null,
@@ -5325,7 +5439,7 @@ describe('StartPreparationUseCase', () => {
5325
5439
  configFilePath: '/path/to/config.yml',
5326
5440
  maximumPreparingIssuesCount: null,
5327
5441
  utilizationPercentageThreshold: 90,
5328
- allowedIssueAuthors: null,
5442
+ allowedIssueAuthors: ['testuser'],
5329
5443
  codexHomeCandidates: null,
5330
5444
  allowIssueCacheMinutes: 0,
5331
5445
  labelsAsLlmAgentName: null,
@@ -5387,7 +5501,7 @@ describe('StartPreparationUseCase', () => {
5387
5501
  configFilePath: '/path/to/config.yml',
5388
5502
  maximumPreparingIssuesCount: null,
5389
5503
  utilizationPercentageThreshold: 90,
5390
- allowedIssueAuthors: null,
5504
+ allowedIssueAuthors: ['testuser'],
5391
5505
  codexHomeCandidates: null,
5392
5506
  allowIssueCacheMinutes: 0,
5393
5507
  labelsAsLlmAgentName: null,
@@ -5448,7 +5562,7 @@ describe('StartPreparationUseCase', () => {
5448
5562
  configFilePath: '/path/to/config.yml',
5449
5563
  maximumPreparingIssuesCount: null,
5450
5564
  utilizationPercentageThreshold: 90,
5451
- allowedIssueAuthors: null,
5565
+ allowedIssueAuthors: ['testuser'],
5452
5566
  codexHomeCandidates: null,
5453
5567
  allowIssueCacheMinutes: 0,
5454
5568
  labelsAsLlmAgentName: null,
@@ -5509,7 +5623,7 @@ describe('StartPreparationUseCase', () => {
5509
5623
  configFilePath: '/path/to/config.yml',
5510
5624
  maximumPreparingIssuesCount: null,
5511
5625
  utilizationPercentageThreshold: 90,
5512
- allowedIssueAuthors: null,
5626
+ allowedIssueAuthors: ['testuser'],
5513
5627
  codexHomeCandidates: null,
5514
5628
  allowIssueCacheMinutes: 0,
5515
5629
  labelsAsLlmAgentName: null,
@@ -5564,7 +5678,7 @@ describe('StartPreparationUseCase', () => {
5564
5678
  configFilePath: '/path/to/config.yml',
5565
5679
  maximumPreparingIssuesCount: null,
5566
5680
  utilizationPercentageThreshold: 90,
5567
- allowedIssueAuthors: null,
5681
+ allowedIssueAuthors: ['testuser'],
5568
5682
  codexHomeCandidates: null,
5569
5683
  allowIssueCacheMinutes: 0,
5570
5684
  labelsAsLlmAgentName: null,
@@ -5631,7 +5745,7 @@ describe('StartPreparationUseCase', () => {
5631
5745
  configFilePath: '/path/to/config.yml',
5632
5746
  maximumPreparingIssuesCount: null,
5633
5747
  utilizationPercentageThreshold: 90,
5634
- allowedIssueAuthors: null,
5748
+ allowedIssueAuthors: ['testuser'],
5635
5749
  codexHomeCandidates: null,
5636
5750
  allowIssueCacheMinutes: 0,
5637
5751
  labelsAsLlmAgentName: null,