github-issue-tower-defence-management 1.196.0 → 1.197.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 (33) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/README.md +1 -0
  3. package/bin/adapter/entry-points/cli/index.js +66 -0
  4. package/bin/adapter/entry-points/cli/index.js.map +1 -1
  5. package/bin/adapter/entry-points/cli/projectConfig.js +6 -0
  6. package/bin/adapter/entry-points/cli/projectConfig.js.map +1 -1
  7. package/bin/domain/usecases/CliErrorReportUseCase.js +50 -0
  8. package/bin/domain/usecases/CliErrorReportUseCase.js.map +1 -0
  9. package/bin/domain/usecases/NotifyFinishedIssuePreparationUseCase.js +3 -8
  10. package/bin/domain/usecases/NotifyFinishedIssuePreparationUseCase.js.map +1 -1
  11. package/bin/domain/usecases/RevertOrphanedPreparationUseCase.js +2 -3
  12. package/bin/domain/usecases/RevertOrphanedPreparationUseCase.js.map +1 -1
  13. package/bin/domain/usecases/awaitingOwnerApprovalMessage.js +1 -1
  14. package/bin/domain/usecases/awaitingOwnerApprovalMessage.js.map +1 -1
  15. package/package.json +1 -1
  16. package/src/adapter/entry-points/cli/index.ts +85 -0
  17. package/src/adapter/entry-points/cli/projectConfig.ts +14 -0
  18. package/src/domain/usecases/CliErrorReportUseCase.test.ts +151 -0
  19. package/src/domain/usecases/CliErrorReportUseCase.ts +72 -0
  20. package/src/domain/usecases/NotifyFinishedIssuePreparationUseCase.test.ts +11 -18
  21. package/src/domain/usecases/NotifyFinishedIssuePreparationUseCase.ts +3 -15
  22. package/src/domain/usecases/RevertOrphanedPreparationUseCase.test.ts +2 -2
  23. package/src/domain/usecases/RevertOrphanedPreparationUseCase.ts +2 -7
  24. package/src/domain/usecases/awaitingOwnerApprovalMessage.ts +1 -1
  25. package/types/adapter/entry-points/cli/index.d.ts.map +1 -1
  26. package/types/adapter/entry-points/cli/projectConfig.d.ts +1 -0
  27. package/types/adapter/entry-points/cli/projectConfig.d.ts.map +1 -1
  28. package/types/domain/usecases/CliErrorReportUseCase.d.ts +14 -0
  29. package/types/domain/usecases/CliErrorReportUseCase.d.ts.map +1 -0
  30. package/types/domain/usecases/NotifyFinishedIssuePreparationUseCase.d.ts.map +1 -1
  31. package/types/domain/usecases/RevertOrphanedPreparationUseCase.d.ts.map +1 -1
  32. package/types/domain/usecases/awaitingOwnerApprovalMessage.d.ts +1 -1
  33. package/types/domain/usecases/awaitingOwnerApprovalMessage.d.ts.map +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"RevertOrphanedPreparationUseCase.js","sourceRoot":"","sources":["../../../src/domain/usecases/RevertOrphanedPreparationUseCase.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"RevertOrphanedPreparationUseCase.js","sourceRoot":"","sources":["../../../src/domain/usecases/RevertOrphanedPreparationUseCase.ts"],"names":[],"mappings":"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"}
@@ -3,5 +3,5 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.AWAITING_OWNER_APPROVAL_MESSAGE = exports.AWAITING_OWNER_APPROVAL_MESSAGE_HEAD = void 0;
4
4
  exports.AWAITING_OWNER_APPROVAL_MESSAGE_HEAD = 'Auto Status Check: AWAITING_OWNER_APPROVAL';
5
5
  exports.AWAITING_OWNER_APPROVAL_MESSAGE = `${exports.AWAITING_OWNER_APPROVAL_MESSAGE_HEAD}
6
- The last report declared that this task is waiting for owner approval. Moving it to Todo by human so that it waits in the owner's queue instead of being dispatched again.`;
6
+ The last report declared that this task is waiting for owner approval. Moving it to Awaiting Quality Check so that it waits for the owner's judgement instead of being dispatched again.`;
7
7
  //# sourceMappingURL=awaitingOwnerApprovalMessage.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"awaitingOwnerApprovalMessage.js","sourceRoot":"","sources":["../../../src/domain/usecases/awaitingOwnerApprovalMessage.ts"],"names":[],"mappings":";;;AAAa,QAAA,oCAAoC,GAC/C,4CAA4C,CAAC;AAElC,QAAA,+BAA+B,GAAG,GAAG,4CAAoC;2KACqF,CAAC"}
1
+ {"version":3,"file":"awaitingOwnerApprovalMessage.js","sourceRoot":"","sources":["../../../src/domain/usecases/awaitingOwnerApprovalMessage.ts"],"names":[],"mappings":";;;AAAa,QAAA,oCAAoC,GAC/C,4CAA4C,CAAC;AAElC,QAAA,+BAA+B,GAAG,GAAG,4CAAoC;yLACmG,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "github-issue-tower-defence-management",
3
- "version": "1.196.0",
3
+ "version": "1.197.0",
4
4
  "description": "",
5
5
  "main": "bin/index.js",
6
6
  "scripts": {
@@ -13,6 +13,7 @@ export {
13
13
  import * as path from 'path';
14
14
  import type { IssueRepository } from '../../../domain/usecases/adapter-interfaces/IssueRepository';
15
15
  import { CheckIssueReviewReadinessUseCase } from '../../../domain/usecases/CheckIssueReviewReadinessUseCase';
16
+ import { CliErrorReportUseCase } from '../../../domain/usecases/CliErrorReportUseCase';
16
17
  import { assertDashboardDisplayLabelsUnique } from '../../../domain/usecases/dashboard/DashboardProjectCode';
17
18
  import { isOwnerCallCalledAtValid } from '../../../domain/usecases/intmux/OwnerCallFile';
18
19
  import { NotifyFinishedIssuePreparationUseCase } from '../../../domain/usecases/NotifyFinishedIssuePreparationUseCase';
@@ -362,6 +363,11 @@ program
362
363
  readmeOverrides,
363
364
  );
364
365
 
366
+ if (config.errorReportingRepository) {
367
+ process.env.TDPM_ERROR_REPORT_REPOSITORY =
368
+ config.errorReportingRepository;
369
+ }
370
+
365
371
  const projectUrl = config.projectUrl;
366
372
  const defaultAgentName = config.defaultAgentName;
367
373
  const manager = config.manager;
@@ -605,6 +611,11 @@ program
605
611
  readmeOverrides,
606
612
  );
607
613
 
614
+ if (config.errorReportingRepository) {
615
+ process.env.TDPM_ERROR_REPORT_REPOSITORY =
616
+ config.errorReportingRepository;
617
+ }
618
+
608
619
  const projectUrl = config.projectUrl;
609
620
 
610
621
  if (!projectUrl) {
@@ -750,6 +761,11 @@ program
750
761
  readmeOverrides,
751
762
  );
752
763
 
764
+ if (config.errorReportingRepository) {
765
+ process.env.TDPM_ERROR_REPORT_REPOSITORY =
766
+ config.errorReportingRepository;
767
+ }
768
+
753
769
  const projectName = config.projectName ?? 'default';
754
770
  const localStorageRepository = new LocalStorageRepository();
755
771
  const cachePath = projectCacheDirectory(projectName);
@@ -1350,13 +1366,82 @@ export const reportFatalErrorAndExit = (error: unknown): void => {
1350
1366
  process.exit(1);
1351
1367
  };
1352
1368
 
1369
+ const buildCliErrorReporter = (): {
1370
+ useCase: CliErrorReportUseCase;
1371
+ owner: string;
1372
+ repo: string;
1373
+ } | null => {
1374
+ const token = process.env.GH_TOKEN;
1375
+ const targetRepo = process.env.TDPM_ERROR_REPORT_REPOSITORY;
1376
+ if (!token || !targetRepo) {
1377
+ return null;
1378
+ }
1379
+ const slashIndex = targetRepo.indexOf('/');
1380
+ if (slashIndex <= 0 || slashIndex === targetRepo.length - 1) {
1381
+ return null;
1382
+ }
1383
+ const owner = targetRepo.slice(0, slashIndex);
1384
+ const repo = targetRepo.slice(slashIndex + 1);
1385
+ const localStorageRepository = new LocalStorageRepository();
1386
+ const githubRepositoryParams = buildGithubRepositoryParams(
1387
+ localStorageRepository,
1388
+ token,
1389
+ );
1390
+ const apiV3IssueRepository = new ApiV3IssueRepository(
1391
+ ...githubRepositoryParams,
1392
+ );
1393
+ const restIssueRepository = new RestIssueRepository(
1394
+ ...githubRepositoryParams,
1395
+ );
1396
+ const useCase = new CliErrorReportUseCase({
1397
+ searchIssue: apiV3IssueRepository.searchIssue.bind(apiV3IssueRepository),
1398
+ createNewIssue:
1399
+ restIssueRepository.createNewIssue.bind(restIssueRepository),
1400
+ createCommentByUrl: async (issueOrPrUrl: string, commentBody: string) => {
1401
+ await restIssueRepository.createComment(issueOrPrUrl, commentBody);
1402
+ },
1403
+ });
1404
+ return { useCase, owner, repo };
1405
+ };
1406
+
1353
1407
  export const runCliProgram = async (
1354
1408
  argv: string[],
1355
1409
  handleFatalError: (error: unknown) => void,
1356
1410
  ): Promise<void> => {
1411
+ let reported = false;
1412
+
1413
+ const safeReport = async (error: unknown): Promise<void> => {
1414
+ if (reported) {
1415
+ return;
1416
+ }
1417
+ reported = true;
1418
+ const reporter = buildCliErrorReporter();
1419
+ if (!reporter) {
1420
+ return;
1421
+ }
1422
+ await reporter.useCase.run({
1423
+ error,
1424
+ owner: reporter.owner,
1425
+ repo: reporter.repo,
1426
+ commandLine: argv.join(' '),
1427
+ });
1428
+ };
1429
+
1430
+ process.on('uncaughtException', (error: Error) => {
1431
+ void safeReport(error).then(() => {
1432
+ reportFatalErrorAndExit(error);
1433
+ });
1434
+ });
1435
+ process.on('unhandledRejection', (reason: unknown) => {
1436
+ void safeReport(reason).then(() => {
1437
+ reportFatalErrorAndExit(reason);
1438
+ });
1439
+ });
1440
+
1357
1441
  try {
1358
1442
  await program.parseAsync(argv);
1359
1443
  } catch (error) {
1444
+ await safeReport(error);
1360
1445
  handleFatalError(error);
1361
1446
  }
1362
1447
  };
@@ -33,6 +33,7 @@ export type ConfigFile = {
33
33
  consoleGithubTokenFileDir?: string;
34
34
  disks?: DiskConfig[];
35
35
  ownerApprovalTimeoutCycles?: number;
36
+ errorReportingRepository?: string;
36
37
  };
37
38
 
38
39
  export type DiskConfig = {
@@ -139,6 +140,7 @@ const knownProjectReadmeConfigKeys = [
139
140
  'labelsNotRequiringPullRequest',
140
141
  'changeTargetPathAliases',
141
142
  'consoleDataOutputDir',
143
+ 'errorReportingRepository',
142
144
  ] as const;
143
145
 
144
146
  export const loadConfigFile = (configFilePath: string): ConfigFile => {
@@ -211,6 +213,10 @@ export const loadConfigFile = (configFilePath: string): ConfigFile => {
211
213
  parsed,
212
214
  'ownerApprovalTimeoutCycles',
213
215
  ),
216
+ errorReportingRepository: getStringValue(
217
+ parsed,
218
+ 'errorReportingRepository',
219
+ ),
214
220
  };
215
221
  } catch (error) {
216
222
  const message = error instanceof Error ? error.message : String(error);
@@ -297,6 +303,10 @@ export const parseProjectReadmeConfig = (
297
303
  'changeTargetPathAliases',
298
304
  ),
299
305
  consoleDataOutputDir: getStringValue(parsed, 'consoleDataOutputDir'),
306
+ errorReportingRepository: getStringValue(
307
+ parsed,
308
+ 'errorReportingRepository',
309
+ ),
300
310
  };
301
311
  } catch {
302
312
  console.warn('Failed to parse YAML from project README config section');
@@ -403,6 +413,10 @@ export const mergeConfigs = (
403
413
  ownerApprovalTimeoutCycles:
404
414
  cliOverrides.ownerApprovalTimeoutCycles ??
405
415
  configFile.ownerApprovalTimeoutCycles,
416
+ errorReportingRepository:
417
+ readmeOverrides.errorReportingRepository ??
418
+ cliOverrides.errorReportingRepository ??
419
+ configFile.errorReportingRepository,
406
420
  });
407
421
 
408
422
  type GraphqlProjectV2ReadmeResponse = {
@@ -0,0 +1,151 @@
1
+ import { mock } from 'jest-mock-extended';
2
+ import { IssueRepository } from './adapter-interfaces/IssueRepository';
3
+ import { CliErrorReportUseCase } from './CliErrorReportUseCase';
4
+
5
+ describe('CliErrorReportUseCase', () => {
6
+ jest.setTimeout(30 * 1000);
7
+
8
+ const mockIssueRepository = mock<IssueRepository>();
9
+ const useCase = new CliErrorReportUseCase(mockIssueRepository);
10
+
11
+ beforeEach(() => {
12
+ jest.clearAllMocks();
13
+ });
14
+
15
+ const owner = 'test-owner';
16
+ const repo = 'test-repo';
17
+ const commandLine =
18
+ 'github-issue-tower-defence-management startDaemon --configFilePath config.yml';
19
+
20
+ describe('run', () => {
21
+ it('should call createNewIssue when searchIssue returns no matching open issue', async () => {
22
+ const error = new Error('something went wrong');
23
+ error.name = 'TypeError';
24
+ mockIssueRepository.searchIssue.mockResolvedValue([]);
25
+ mockIssueRepository.createNewIssue.mockResolvedValue(42);
26
+
27
+ await useCase.run({ error, owner, repo, commandLine });
28
+
29
+ expect(mockIssueRepository.searchIssue).toHaveBeenCalledWith({
30
+ owner,
31
+ repositoryName: repo,
32
+ type: 'issue',
33
+ state: 'open',
34
+ title: 'CLI error: TypeError: something went wrong',
35
+ });
36
+ expect(mockIssueRepository.createNewIssue).toHaveBeenCalledWith(
37
+ owner,
38
+ repo,
39
+ 'CLI error: TypeError: something went wrong',
40
+ expect.stringContaining('something went wrong'),
41
+ [],
42
+ [],
43
+ );
44
+ expect(mockIssueRepository.createCommentByUrl).not.toHaveBeenCalled();
45
+ });
46
+
47
+ it('should call createCommentByUrl when searchIssue returns a result whose title matches exactly', async () => {
48
+ const error = new Error('something went wrong');
49
+ error.name = 'TypeError';
50
+ const title = 'CLI error: TypeError: something went wrong';
51
+ const existingIssueUrl =
52
+ 'https://github.com/test-owner/test-repo/issues/10';
53
+ mockIssueRepository.searchIssue.mockResolvedValue([
54
+ { url: existingIssueUrl, title, number: '10' },
55
+ ]);
56
+ mockIssueRepository.createCommentByUrl.mockResolvedValue(undefined);
57
+
58
+ await useCase.run({ error, owner, repo, commandLine });
59
+
60
+ expect(mockIssueRepository.createCommentByUrl).toHaveBeenCalledWith(
61
+ existingIssueUrl,
62
+ expect.stringContaining('something went wrong'),
63
+ );
64
+ expect(mockIssueRepository.createNewIssue).not.toHaveBeenCalled();
65
+ });
66
+
67
+ it('should not call createCommentByUrl when searchIssue returns a result with a different title', async () => {
68
+ const error = new Error('something went wrong');
69
+ error.name = 'TypeError';
70
+ mockIssueRepository.searchIssue.mockResolvedValue([
71
+ {
72
+ url: 'https://github.com/test-owner/test-repo/issues/9',
73
+ title: 'CLI error: TypeError: something else entirely',
74
+ number: '9',
75
+ },
76
+ ]);
77
+ mockIssueRepository.createNewIssue.mockResolvedValue(11);
78
+
79
+ await useCase.run({ error, owner, repo, commandLine });
80
+
81
+ expect(mockIssueRepository.createNewIssue).toHaveBeenCalled();
82
+ expect(mockIssueRepository.createCommentByUrl).not.toHaveBeenCalled();
83
+ });
84
+
85
+ it('should truncate long messages to 80 characters in the title', async () => {
86
+ const longMessage = 'a'.repeat(120);
87
+ const error = new Error(longMessage);
88
+ mockIssueRepository.searchIssue.mockResolvedValue([]);
89
+ mockIssueRepository.createNewIssue.mockResolvedValue(1);
90
+
91
+ await useCase.run({ error, owner, repo, commandLine });
92
+
93
+ const expectedTitle = `CLI error: Error: ${'a'.repeat(80)}`;
94
+ expect(mockIssueRepository.searchIssue).toHaveBeenCalledWith(
95
+ expect.objectContaining({ title: expectedTitle }),
96
+ );
97
+ expect(mockIssueRepository.createNewIssue).toHaveBeenCalledWith(
98
+ owner,
99
+ repo,
100
+ expectedTitle,
101
+ expect.any(String),
102
+ [],
103
+ [],
104
+ );
105
+ });
106
+
107
+ it('should not throw when searchIssue rejects', async () => {
108
+ const error = new Error('some error');
109
+ mockIssueRepository.searchIssue.mockRejectedValue(
110
+ new Error('network error'),
111
+ );
112
+ const consoleSpy = jest
113
+ .spyOn(console, 'error')
114
+ .mockImplementation(() => undefined);
115
+
116
+ await expect(
117
+ useCase.run({ error, owner, repo, commandLine }),
118
+ ).resolves.toBeUndefined();
119
+ expect(consoleSpy).toHaveBeenCalled();
120
+ consoleSpy.mockRestore();
121
+ });
122
+
123
+ it('should include the command line in the issue body', async () => {
124
+ const error = new Error('cmd error');
125
+ mockIssueRepository.searchIssue.mockResolvedValue([]);
126
+ mockIssueRepository.createNewIssue.mockResolvedValue(2);
127
+
128
+ await useCase.run({ error, owner, repo, commandLine });
129
+
130
+ const bodyArg = mockIssueRepository.createNewIssue.mock.calls[0][3];
131
+ expect(bodyArg).toContain(commandLine);
132
+ });
133
+
134
+ it('should handle non-Error values', async () => {
135
+ const error = 'plain string error';
136
+ mockIssueRepository.searchIssue.mockResolvedValue([]);
137
+ mockIssueRepository.createNewIssue.mockResolvedValue(3);
138
+
139
+ await useCase.run({ error, owner, repo, commandLine });
140
+
141
+ expect(mockIssueRepository.createNewIssue).toHaveBeenCalledWith(
142
+ owner,
143
+ repo,
144
+ expect.stringContaining('CLI error: Error:'),
145
+ expect.any(String),
146
+ [],
147
+ [],
148
+ );
149
+ });
150
+ });
151
+ });
@@ -0,0 +1,72 @@
1
+ import type { IssueRepository } from './adapter-interfaces/IssueRepository';
2
+
3
+ type CliErrorReportRepository = Pick<
4
+ IssueRepository,
5
+ 'searchIssue' | 'createNewIssue' | 'createCommentByUrl'
6
+ >;
7
+
8
+ export class CliErrorReportUseCase {
9
+ constructor(private readonly issueRepository: CliErrorReportRepository) {}
10
+
11
+ run = async (params: {
12
+ error: unknown;
13
+ owner: string;
14
+ repo: string;
15
+ commandLine: string;
16
+ }): Promise<void> => {
17
+ const { error, owner, repo, commandLine } = params;
18
+ const errorName =
19
+ error instanceof Error ? (error.name ?? 'Error') : 'Error';
20
+ const message = error instanceof Error ? error.message : String(error);
21
+ const stack =
22
+ error instanceof Error && error.stack ? error.stack : String(error);
23
+ const title = `CLI error: ${errorName}: ${message.slice(0, 80)}`;
24
+ const occurredAt = new Date().toISOString();
25
+
26
+ const buildBody = (prefix: string): string =>
27
+ [
28
+ `${prefix}`,
29
+ ``,
30
+ `Error name: ${errorName}`,
31
+ `Message: ${message}`,
32
+ `Command: \`${commandLine}\``,
33
+ `Occurred at: ${occurredAt}`,
34
+ ``,
35
+ `Stack trace:`,
36
+ `\`\`\``,
37
+ stack,
38
+ `\`\`\``,
39
+ ].join('\n');
40
+
41
+ try {
42
+ const results = await this.issueRepository.searchIssue({
43
+ owner,
44
+ repositoryName: repo,
45
+ type: 'issue',
46
+ state: 'open',
47
+ title,
48
+ });
49
+ const existing = results.find((r) => r.title === title);
50
+ if (existing) {
51
+ await this.issueRepository.createCommentByUrl(
52
+ existing.url,
53
+ buildBody('CLI error recurrence'),
54
+ );
55
+ } else {
56
+ await this.issueRepository.createNewIssue(
57
+ owner,
58
+ repo,
59
+ title,
60
+ buildBody('CLI error report'),
61
+ [],
62
+ [],
63
+ );
64
+ }
65
+ } catch (reportError) {
66
+ console.error(
67
+ 'CliErrorReportUseCase: failed to report error:',
68
+ reportError,
69
+ );
70
+ }
71
+ };
72
+ }
@@ -4675,7 +4675,7 @@ describe('NotifyFinishedIssuePreparationUseCase', () => {
4675
4675
  describe('waitingForOwnerApproval', () => {
4676
4676
  const issueUrl = 'https://github.com/user/repo/issues/1';
4677
4677
 
4678
- it('moves to Todo by human and posts AWAITING_OWNER_APPROVAL message when last report declares waitingForOwnerApproval', async () => {
4678
+ it('moves to Awaiting Quality Check and posts AWAITING_OWNER_APPROVAL message when last report declares waitingForOwnerApproval', async () => {
4679
4679
  const issue = createMockIssue({ url: issueUrl, status: 'Preparation' });
4680
4680
  mockProjectRepository.getByUrl.mockResolvedValue(mockProject);
4681
4681
  mockIssueRepository.get.mockResolvedValue(issue);
@@ -4696,13 +4696,13 @@ describe('NotifyFinishedIssuePreparationUseCase', () => {
4696
4696
  });
4697
4697
 
4698
4698
  expect(mockIssueRepository.update).toHaveBeenCalledWith(
4699
- expect.objectContaining({ status: 'Todo by human' }),
4699
+ expect.objectContaining({ status: 'Awaiting Quality Check' }),
4700
4700
  mockProject,
4701
4701
  );
4702
4702
  expect(mockIssueRepository.updateStatus).toHaveBeenCalledWith(
4703
4703
  mockProject,
4704
- expect.objectContaining({ status: 'Todo by human' }),
4705
- 'todo-by-human-id',
4704
+ expect.objectContaining({ status: 'Awaiting Quality Check' }),
4705
+ 'awaiting-quality-check-id',
4706
4706
  );
4707
4707
  expect(mockIssueCommentRepository.createComment).toHaveBeenCalledWith(
4708
4708
  expect.objectContaining({ url: issueUrl }),
@@ -4742,18 +4742,20 @@ describe('NotifyFinishedIssuePreparationUseCase', () => {
4742
4742
  );
4743
4743
  });
4744
4744
 
4745
- it('escalates to Failed Preparation instead of the dispatch pool when the project has no Todo by human status', async () => {
4746
- const projectWithoutTodo = {
4745
+ it('writes no status at all when the project has no Awaiting Quality Check option', async () => {
4746
+ const projectWithoutQualityCheck = {
4747
4747
  ...mockProject,
4748
4748
  status: {
4749
4749
  ...mockProject.status,
4750
4750
  statuses: mockProject.status.statuses.filter(
4751
- (status) => status.name !== 'Todo by human',
4751
+ (status) => status.name !== 'Awaiting Quality Check',
4752
4752
  ),
4753
4753
  },
4754
4754
  };
4755
4755
  const issue = createMockIssue({ url: issueUrl, status: 'Preparation' });
4756
- mockProjectRepository.getByUrl.mockResolvedValue(projectWithoutTodo);
4756
+ mockProjectRepository.getByUrl.mockResolvedValue(
4757
+ projectWithoutQualityCheck,
4758
+ );
4757
4759
  mockIssueRepository.get.mockResolvedValue(issue);
4758
4760
  mockIssueCommentRepository.getCommentsFromIssue.mockResolvedValue([
4759
4761
  createMockComment({
@@ -4771,16 +4773,7 @@ describe('NotifyFinishedIssuePreparationUseCase', () => {
4771
4773
  allowedIssueAuthors: null,
4772
4774
  });
4773
4775
 
4774
- expect(mockIssueRepository.updateStatus).toHaveBeenCalledWith(
4775
- projectWithoutTodo,
4776
- expect.objectContaining({ status: 'Failed Preparation' }),
4777
- 'failed-preparation-id',
4778
- );
4779
- expect(mockIssueRepository.updateStatus).not.toHaveBeenCalledWith(
4780
- projectWithoutTodo,
4781
- expect.anything(),
4782
- 'awaiting-workspace-id',
4783
- );
4776
+ expect(mockIssueRepository.updateStatus.mock.calls).toHaveLength(0);
4784
4777
  });
4785
4778
 
4786
4779
  it('escalates to Failed Preparation after ownerApprovalTimeoutCycles AWAITING_OWNER_APPROVAL messages', async () => {
@@ -8,7 +8,6 @@ import {
8
8
  AWAITING_WORKSPACE_STATUS_NAME,
9
9
  FAILED_PREPARATION_STATUS_NAME,
10
10
  PREPARATION_STATUS_NAME,
11
- TODO_STATUS_NAME,
12
11
  } from '../entities/WorkflowStatus';
13
12
  import {
14
13
  IssueRejectionEvaluator,
@@ -158,9 +157,6 @@ export class NotifyFinishedIssuePreparationUseCase {
158
157
  );
159
158
  return;
160
159
  }
161
- const todoStatusOption = project.status.statuses.find(
162
- (s) => s.name === TODO_STATUS_NAME,
163
- );
164
160
 
165
161
  const issue = await this.issueRepository.get(params.issueUrl, project);
166
162
 
@@ -330,21 +326,13 @@ export class NotifyFinishedIssuePreparationUseCase {
330
326
  isTrustedAuthor(comment.author) &&
331
327
  comment.content.startsWith(AWAITING_OWNER_APPROVAL_MESSAGE_HEAD),
332
328
  ).length;
333
- if (!todoStatusOption) {
334
- console.error(
335
- `Todo status option '${TODO_STATUS_NAME}' not found in project; escalating to '${FAILED_PREPARATION_STATUS_NAME}' instead of returning the task to the dispatch pool.`,
336
- );
337
- }
338
- if (
339
- awaitingOwnerApprovalCount < ownerApprovalTimeoutCycles &&
340
- todoStatusOption
341
- ) {
342
- issue.status = TODO_STATUS_NAME;
329
+ if (awaitingOwnerApprovalCount < ownerApprovalTimeoutCycles) {
330
+ issue.status = AWAITING_QUALITY_CHECK_STATUS_NAME;
343
331
  await this.issueRepository.update(issue, project);
344
332
  await this.issueRepository.updateStatus(
345
333
  project,
346
334
  issue,
347
- todoStatusOption.id,
335
+ awaitingQualityCheckStatusOption.id,
348
336
  );
349
337
  await this.patchConsoleTab(issue);
350
338
  await this.issueCommentRepository.createComment(
@@ -2565,7 +2565,7 @@ describe('RevertOrphanedPreparationUseCase', () => {
2565
2565
  );
2566
2566
  });
2567
2567
 
2568
- it('should move an orphaned issue to Todo by human with AWAITING_OWNER_APPROVAL when last report declares waitingForOwnerApproval', async () => {
2568
+ it('should move an orphaned issue to Awaiting Quality Check with AWAITING_OWNER_APPROVAL when last report declares waitingForOwnerApproval', async () => {
2569
2569
  const stuckIssue = createMockIssue({
2570
2570
  url: 'https://github.com/user/repo/issues/10',
2571
2571
  status: 'Preparation',
@@ -2598,7 +2598,7 @@ describe('RevertOrphanedPreparationUseCase', () => {
2598
2598
  });
2599
2599
 
2600
2600
  expect(mockIssueRepository.updateStatus.mock.calls).toHaveLength(1);
2601
- expect(mockIssueRepository.updateStatus.mock.calls[0][2]).toBe('6');
2601
+ expect(mockIssueRepository.updateStatus.mock.calls[0][2]).toBe('4');
2602
2602
  expect(mockIssueCommentRepository.createComment.mock.calls).toHaveLength(1);
2603
2603
  expect(mockIssueCommentRepository.createComment.mock.calls[0][1]).toContain(
2604
2604
  'Auto Status Check: AWAITING_OWNER_APPROVAL',
@@ -13,7 +13,6 @@ import {
13
13
  AWAITING_WORKSPACE_STATUS_NAME,
14
14
  FAILED_PREPARATION_STATUS_NAME,
15
15
  PREPARATION_STATUS_NAME,
16
- TODO_STATUS_NAME,
17
16
  } from '../entities/WorkflowStatus';
18
17
  import { resolveLabelsNotRequiringPullRequest } from './resolveLabelsNotRequiringPullRequest';
19
18
  import { isPullRequestDeclaredUnnecessary } from './isPullRequestDeclaredUnnecessary';
@@ -122,10 +121,6 @@ export class RevertOrphanedPreparationUseCase {
122
121
  (s) => s.name === FAILED_PREPARATION_STATUS_NAME,
123
122
  );
124
123
 
125
- const todoStatusOption = project.status.statuses.find(
126
- (s) => s.name === TODO_STATUS_NAME,
127
- );
128
-
129
124
  for (const issue of preparationIssues) {
130
125
  const isOrphaned = await this.isOrphanedIssue(issue, params);
131
126
  if (!isOrphaned) {
@@ -221,12 +216,12 @@ export class RevertOrphanedPreparationUseCase {
221
216
  ).length;
222
217
  if (
223
218
  awaitingOwnerApprovalCount < ownerApprovalTimeoutCycles &&
224
- todoStatusOption
219
+ awaitingQualityCheckStatusOption
225
220
  ) {
226
221
  await this.issueRepository.updateStatus(
227
222
  project,
228
223
  issue,
229
- todoStatusOption.id,
224
+ awaitingQualityCheckStatusOption.id,
230
225
  );
231
226
  await this.issueCommentRepository.createComment(
232
227
  issue,
@@ -2,4 +2,4 @@ export const AWAITING_OWNER_APPROVAL_MESSAGE_HEAD =
2
2
  'Auto Status Check: AWAITING_OWNER_APPROVAL';
3
3
 
4
4
  export const AWAITING_OWNER_APPROVAL_MESSAGE = `${AWAITING_OWNER_APPROVAL_MESSAGE_HEAD}
5
- The last report declared that this task is waiting for owner approval. Moving it to Todo by human so that it waits in the owner's queue instead of being dispatched again.`;
5
+ The last report declared that this task is waiting for owner approval. Moving it to Awaiting Quality Check so that it waits for the owner's judgement instead of being dispatched again.`;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/adapter/entry-points/cli/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpC,OAAO,EACL,UAAU,EACV,kBAAkB,EAClB,cAAc,EACd,YAAY,EACZ,wBAAwB,GACzB,MAAM,iBAAiB,CAAC;AA8OzB,eAAO,MAAM,OAAO,SAAgB,CAAC;AA2kCrC,eAAO,MAAM,uBAAuB,GAAI,OAAO,OAAO,KAAG,IAGxD,CAAC;AAEF,eAAO,MAAM,aAAa,GACxB,MAAM,MAAM,EAAE,EACd,kBAAkB,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,KACzC,OAAO,CAAC,IAAI,CAMd,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/adapter/entry-points/cli/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpC,OAAO,EACL,UAAU,EACV,kBAAkB,EAClB,cAAc,EACd,YAAY,EACZ,wBAAwB,GACzB,MAAM,iBAAiB,CAAC;AA+OzB,eAAO,MAAM,OAAO,SAAgB,CAAC;AA0lCrC,eAAO,MAAM,uBAAuB,GAAI,OAAO,OAAO,KAAG,IAGxD,CAAC;AAwCF,eAAO,MAAM,aAAa,GACxB,MAAM,MAAM,EAAE,EACd,kBAAkB,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,KACzC,OAAO,CAAC,IAAI,CAqCd,CAAC"}
@@ -29,6 +29,7 @@ export type ConfigFile = {
29
29
  consoleGithubTokenFileDir?: string;
30
30
  disks?: DiskConfig[];
31
31
  ownerApprovalTimeoutCycles?: number;
32
+ errorReportingRepository?: string;
32
33
  };
33
34
  export type DiskConfig = {
34
35
  title: string;