github-issue-tower-defence-management 1.44.4 → 1.44.6
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/.github/workflows/api-created_issue_pr.yml +8 -1
- package/.github/workflows/umino-project.yml +55 -18
- package/CHANGELOG.md +15 -0
- package/README.md +2 -2
- package/bin/adapter/entry-points/cli/index.js +4 -1
- package/bin/adapter/entry-points/cli/index.js.map +1 -1
- package/bin/adapter/entry-points/handlers/HandleScheduledEventUseCaseHandler.js +1 -1
- package/bin/adapter/entry-points/handlers/HandleScheduledEventUseCaseHandler.js.map +1 -1
- package/bin/adapter/repositories/issue/ApiV3CheerioRestIssueRepository.js +2 -2
- package/bin/adapter/repositories/issue/ApiV3CheerioRestIssueRepository.js.map +1 -1
- package/bin/domain/usecases/HandleScheduledEventUseCase.js +2 -0
- package/bin/domain/usecases/HandleScheduledEventUseCase.js.map +1 -1
- package/bin/domain/usecases/NotifyFinishedIssuePreparationUseCase.js +2 -2
- package/bin/domain/usecases/NotifyFinishedIssuePreparationUseCase.js.map +1 -1
- package/bin/domain/usecases/RevertOrphanedPreparationUseCase.js +65 -3
- package/bin/domain/usecases/RevertOrphanedPreparationUseCase.js.map +1 -1
- package/bin/domain/usecases/StartPreparationUseCase.js +4 -6
- package/bin/domain/usecases/StartPreparationUseCase.js.map +1 -1
- package/package.json +1 -1
- package/src/adapter/entry-points/cli/index.test.ts +2 -0
- package/src/adapter/entry-points/cli/index.ts +6 -0
- package/src/adapter/entry-points/handlers/HandleScheduledEventUseCaseHandler.ts +1 -0
- package/src/adapter/repositories/issue/ApiV3CheerioRestIssueRepository.ts +5 -2
- package/src/domain/usecases/HandleScheduledEventUseCase.ts +3 -0
- package/src/domain/usecases/NotifyFinishedIssuePreparationUseCase.ts +8 -4
- package/src/domain/usecases/RevertOrphanedPreparationUseCase.test.ts +316 -11
- package/src/domain/usecases/RevertOrphanedPreparationUseCase.ts +107 -11
- package/src/domain/usecases/StartPreparationUseCase.test.ts +76 -79
- package/src/domain/usecases/StartPreparationUseCase.ts +10 -8
- package/src/domain/usecases/adapter-interfaces/IssueRepository.ts +4 -1
- package/types/adapter/entry-points/handlers/HandleScheduledEventUseCaseHandler.d.ts.map +1 -1
- package/types/adapter/repositories/issue/ApiV3CheerioRestIssueRepository.d.ts +1 -1
- package/types/adapter/repositories/issue/ApiV3CheerioRestIssueRepository.d.ts.map +1 -1
- package/types/domain/usecases/HandleScheduledEventUseCase.d.ts.map +1 -1
- package/types/domain/usecases/NotifyFinishedIssuePreparationUseCase.d.ts.map +1 -1
- package/types/domain/usecases/RevertOrphanedPreparationUseCase.d.ts +8 -2
- package/types/domain/usecases/RevertOrphanedPreparationUseCase.d.ts.map +1 -1
- package/types/domain/usecases/StartPreparationUseCase.d.ts +2 -1
- package/types/domain/usecases/StartPreparationUseCase.d.ts.map +1 -1
- package/types/domain/usecases/adapter-interfaces/IssueRepository.d.ts +1 -1
- package/types/domain/usecases/adapter-interfaces/IssueRepository.d.ts.map +1 -1
|
@@ -2,9 +2,10 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.RevertOrphanedPreparationUseCase = void 0;
|
|
4
4
|
class RevertOrphanedPreparationUseCase {
|
|
5
|
-
constructor(projectRepository, issueRepository, localCommandRunner) {
|
|
5
|
+
constructor(projectRepository, issueRepository, issueCommentRepository, localCommandRunner) {
|
|
6
6
|
this.projectRepository = projectRepository;
|
|
7
7
|
this.issueRepository = issueRepository;
|
|
8
|
+
this.issueCommentRepository = issueCommentRepository;
|
|
8
9
|
this.localCommandRunner = localCommandRunner;
|
|
9
10
|
this.run = async (params) => {
|
|
10
11
|
const projectId = await this.projectRepository.findProjectIdByUrl(params.projectUrl);
|
|
@@ -21,14 +22,75 @@ class RevertOrphanedPreparationUseCase {
|
|
|
21
22
|
if (!awaitingWorkspaceStatusOption) {
|
|
22
23
|
return;
|
|
23
24
|
}
|
|
25
|
+
const awaitingQualityCheckStatusOption = params.awaitingQualityCheckStatus
|
|
26
|
+
? project.status.statuses.find((s) => s.name === params.awaitingQualityCheckStatus)
|
|
27
|
+
: null;
|
|
24
28
|
for (const issue of preparationIssues) {
|
|
25
29
|
const isOrphaned = await this.isOrphanedIssue(issue, params);
|
|
26
30
|
if (isOrphaned) {
|
|
27
|
-
await this.
|
|
28
|
-
|
|
31
|
+
const hasRejections = await this.evaluateHasRejections(issue);
|
|
32
|
+
if (!hasRejections && awaitingQualityCheckStatusOption) {
|
|
33
|
+
await this.issueRepository.updateStatus(project, issue, awaitingQualityCheckStatusOption.id);
|
|
34
|
+
}
|
|
35
|
+
else {
|
|
36
|
+
await this.issueRepository.updateStatus(project, issue, awaitingWorkspaceStatusOption.id);
|
|
37
|
+
}
|
|
29
38
|
}
|
|
30
39
|
}
|
|
31
40
|
};
|
|
41
|
+
this.evaluateHasRejections = async (issue) => {
|
|
42
|
+
const comments = await this.issueCommentRepository.getCommentsFromIssue(issue);
|
|
43
|
+
const lastComment = comments[comments.length - 1];
|
|
44
|
+
if (!lastComment || !lastComment.content.startsWith('From:')) {
|
|
45
|
+
return true;
|
|
46
|
+
}
|
|
47
|
+
if (this.reportBodyHasNextStep(lastComment.content)) {
|
|
48
|
+
return true;
|
|
49
|
+
}
|
|
50
|
+
const categoryLabels = issue.labels.filter((label) => label.startsWith('category:'));
|
|
51
|
+
const hasLlmAgentLabel = issue.labels.some((l) => l === 'llm-agent' || l.startsWith('llm-agent:'));
|
|
52
|
+
if (hasLlmAgentLabel ||
|
|
53
|
+
(categoryLabels.length > 0 && !categoryLabels.includes('category:e2e'))) {
|
|
54
|
+
return false;
|
|
55
|
+
}
|
|
56
|
+
const prsToCheck = issue.isPr
|
|
57
|
+
? await this.resolveOpenPrsForPrItem(issue.url)
|
|
58
|
+
: await this.issueRepository.findRelatedOpenPRs(issue.url);
|
|
59
|
+
if (prsToCheck.length !== 1) {
|
|
60
|
+
return true;
|
|
61
|
+
}
|
|
62
|
+
const pr = prsToCheck[0];
|
|
63
|
+
return (pr.isConflicted || !pr.isPassedAllCiJob || !pr.isResolvedAllReviewComments);
|
|
64
|
+
};
|
|
65
|
+
this.resolveOpenPrsForPrItem = async (prUrl) => {
|
|
66
|
+
const pr = await this.issueRepository.getOpenPullRequest(prUrl);
|
|
67
|
+
if (pr === null) {
|
|
68
|
+
return [];
|
|
69
|
+
}
|
|
70
|
+
return [pr];
|
|
71
|
+
};
|
|
72
|
+
this.reportBodyHasNextStep = (body) => {
|
|
73
|
+
const reportMatch = body.match(/```json\n([\s\S]*?)\n```/);
|
|
74
|
+
if (!reportMatch || reportMatch.length < 2) {
|
|
75
|
+
return false;
|
|
76
|
+
}
|
|
77
|
+
let reportJson;
|
|
78
|
+
try {
|
|
79
|
+
reportJson = JSON.parse(reportMatch[1]);
|
|
80
|
+
}
|
|
81
|
+
catch (error) {
|
|
82
|
+
console.warn('Invalid JSON in report body while checking nextStep:', error);
|
|
83
|
+
return false;
|
|
84
|
+
}
|
|
85
|
+
if (typeof reportJson !== 'object' || reportJson === null) {
|
|
86
|
+
return false;
|
|
87
|
+
}
|
|
88
|
+
if (!('nextStep' in reportJson)) {
|
|
89
|
+
return false;
|
|
90
|
+
}
|
|
91
|
+
const nextStepValue = Reflect.get(reportJson, 'nextStep');
|
|
92
|
+
return nextStepValue !== null && nextStepValue !== undefined;
|
|
93
|
+
};
|
|
32
94
|
this.isOrphanedIssue = async (issue, params) => {
|
|
33
95
|
const commandTemplate = params.preparationProcessCheckCommand.replace('{URL}', '$1');
|
|
34
96
|
const { exitCode } = await this.localCommandRunner.runCommand('sh', [
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RevertOrphanedPreparationUseCase.js","sourceRoot":"","sources":["../../../src/domain/usecases/RevertOrphanedPreparationUseCase.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"RevertOrphanedPreparationUseCase.js","sourceRoot":"","sources":["../../../src/domain/usecases/RevertOrphanedPreparationUseCase.ts"],"names":[],"mappings":"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"}
|
|
@@ -35,19 +35,17 @@ class StartPreparationUseCase {
|
|
|
35
35
|
let project = await this.projectRepository.getByUrl(params.projectUrl);
|
|
36
36
|
project = await this.projectRepository.prepareStatus(params.awaitingWorkspaceStatus, project);
|
|
37
37
|
project = await this.projectRepository.prepareStatus(params.preparationStatus, project);
|
|
38
|
-
const storyObjectMap = await this.issueRepository.getStoryObjectMap(project);
|
|
39
|
-
const
|
|
38
|
+
const storyObjectMap = await this.issueRepository.getStoryObjectMap(project, params.allowIssueCacheMinutes);
|
|
39
|
+
const allOpenedIssues = Array.from(storyObjectMap.values()).flatMap((storyObject) => storyObject.issues);
|
|
40
40
|
const preparationStatusOption = project.status.statuses.find((s) => s.name === params.preparationStatus);
|
|
41
41
|
if (!preparationStatusOption) {
|
|
42
42
|
console.error(`Preparation status option '${params.preparationStatus}' not found in project.`);
|
|
43
43
|
return;
|
|
44
44
|
}
|
|
45
|
-
const awaitingWorkspaceIssues =
|
|
46
|
-
.map((storyObject) => storyObject.issues)
|
|
47
|
-
.flat()
|
|
45
|
+
const awaitingWorkspaceIssues = allOpenedIssues
|
|
48
46
|
.filter((issue) => issue.status === params.awaitingWorkspaceStatus)
|
|
49
47
|
.map((issue) => ({ ...issue }));
|
|
50
|
-
const currentPreparationIssueCount =
|
|
48
|
+
const currentPreparationIssueCount = allOpenedIssues.filter((issue) => issue.status === params.preparationStatus).length;
|
|
51
49
|
let updatedCurrentPreparationIssueCount = currentPreparationIssueCount;
|
|
52
50
|
let startedInThisRunCount = 0;
|
|
53
51
|
const now = new Date();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StartPreparationUseCase.js","sourceRoot":"","sources":["../../../src/domain/usecases/StartPreparationUseCase.ts"],"names":[],"mappings":";;;AAKA,MAAa,uBAAuB;IAClC,YACmB,iBAGhB,EACgB,
|
|
1
|
+
{"version":3,"file":"StartPreparationUseCase.js","sourceRoot":"","sources":["../../../src/domain/usecases/StartPreparationUseCase.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -519,6 +519,7 @@ codexHomeCandidates:
|
|
|
519
519
|
utilizationPercentageThreshold: 90,
|
|
520
520
|
allowedIssueAuthors: null,
|
|
521
521
|
codexHomeCandidates: null,
|
|
522
|
+
allowIssueCacheMinutes: 0,
|
|
522
523
|
});
|
|
523
524
|
});
|
|
524
525
|
|
|
@@ -560,6 +561,7 @@ codexHomeCandidates:
|
|
|
560
561
|
utilizationPercentageThreshold: 90,
|
|
561
562
|
allowedIssueAuthors: null,
|
|
562
563
|
codexHomeCandidates: null,
|
|
564
|
+
allowIssueCacheMinutes: 0,
|
|
563
565
|
});
|
|
564
566
|
});
|
|
565
567
|
|
|
@@ -287,15 +287,20 @@ program
|
|
|
287
287
|
const preparationProcessCheckCommand =
|
|
288
288
|
config.preparationProcessCheckCommand;
|
|
289
289
|
if (preparationProcessCheckCommand) {
|
|
290
|
+
const revertIssueCommentRepository = new GitHubIssueCommentRepository(
|
|
291
|
+
token,
|
|
292
|
+
);
|
|
290
293
|
const revertUseCase = new RevertOrphanedPreparationUseCase(
|
|
291
294
|
projectRepository,
|
|
292
295
|
issueRepository,
|
|
296
|
+
revertIssueCommentRepository,
|
|
293
297
|
localCommandRunner,
|
|
294
298
|
);
|
|
295
299
|
await revertUseCase.run({
|
|
296
300
|
projectUrl,
|
|
297
301
|
preparationStatus,
|
|
298
302
|
awaitingWorkspaceStatus,
|
|
303
|
+
awaitingQualityCheckStatus: config.awaitingQualityCheckStatus,
|
|
299
304
|
allowIssueCacheMinutes,
|
|
300
305
|
preparationProcessCheckCommand,
|
|
301
306
|
awLogDirectoryPath: config.awLogDirectoryPath,
|
|
@@ -336,6 +341,7 @@ program
|
|
|
336
341
|
config.utilizationPercentageThreshold ?? 90,
|
|
337
342
|
allowedIssueAuthors,
|
|
338
343
|
codexHomeCandidates,
|
|
344
|
+
allowIssueCacheMinutes,
|
|
339
345
|
});
|
|
340
346
|
|
|
341
347
|
const projectId = await projectRepository.findProjectIdByUrl(projectUrl);
|
|
@@ -874,8 +874,11 @@ export class ApiV3CheerioRestIssueRepository
|
|
|
874
874
|
return issues.filter((issue) => !issue.isClosed);
|
|
875
875
|
};
|
|
876
876
|
|
|
877
|
-
getStoryObjectMap = async (
|
|
878
|
-
|
|
877
|
+
getStoryObjectMap = async (
|
|
878
|
+
project: Project,
|
|
879
|
+
allowCacheMinutes: number,
|
|
880
|
+
): Promise<StoryObjectMap> => {
|
|
881
|
+
const { issues } = await this.getAllIssues(project.id, allowCacheMinutes);
|
|
879
882
|
const storyObjectMap: StoryObjectMap = new Map();
|
|
880
883
|
const targetStories = project.story?.stories || [];
|
|
881
884
|
for (const story of targetStories) {
|
|
@@ -341,6 +341,8 @@ ${JSON.stringify(e)}
|
|
|
341
341
|
preparationStatus: input.startPreparation.preparationStatus,
|
|
342
342
|
awaitingWorkspaceStatus:
|
|
343
343
|
input.startPreparation.awaitingWorkspaceStatus,
|
|
344
|
+
awaitingQualityCheckStatus:
|
|
345
|
+
input.notifyFinishedPreparation?.awaitingQualityCheckStatus,
|
|
344
346
|
allowIssueCacheMinutes: input.allowIssueCacheMinutes,
|
|
345
347
|
preparationProcessCheckCommand:
|
|
346
348
|
input.startPreparation.preparationProcessCheckCommand,
|
|
@@ -363,6 +365,7 @@ ${JSON.stringify(e)}
|
|
|
363
365
|
input.startPreparation.utilizationPercentageThreshold ?? 90,
|
|
364
366
|
allowedIssueAuthors: input.startPreparation.allowedIssueAuthors ?? null,
|
|
365
367
|
codexHomeCandidates: input.startPreparation.codexHomeCandidates ?? null,
|
|
368
|
+
allowIssueCacheMinutes: input.allowIssueCacheMinutes,
|
|
366
369
|
});
|
|
367
370
|
}
|
|
368
371
|
if (input.notifyFinishedPreparation) {
|
|
@@ -96,8 +96,10 @@ export class NotifyFinishedIssuePreparationUseCase {
|
|
|
96
96
|
|
|
97
97
|
if (issue.dependedIssueUrls.length === 0) {
|
|
98
98
|
try {
|
|
99
|
-
const storyObjectMap =
|
|
100
|
-
|
|
99
|
+
const storyObjectMap = await this.issueRepository.getStoryObjectMap(
|
|
100
|
+
project,
|
|
101
|
+
0,
|
|
102
|
+
);
|
|
101
103
|
for (const storyObject of storyObjectMap.values()) {
|
|
102
104
|
const towerDefenceIssue = storyObject.issues.find(
|
|
103
105
|
(i) => i.url === issue.url,
|
|
@@ -354,8 +356,10 @@ export class NotifyFinishedIssuePreparationUseCase {
|
|
|
354
356
|
}
|
|
355
357
|
|
|
356
358
|
try {
|
|
357
|
-
const storyObjectMap =
|
|
358
|
-
|
|
359
|
+
const storyObjectMap = await this.issueRepository.getStoryObjectMap(
|
|
360
|
+
project,
|
|
361
|
+
0,
|
|
362
|
+
);
|
|
359
363
|
|
|
360
364
|
const isWorkflowBlocker = Array.from(storyObjectMap.entries()).some(
|
|
361
365
|
([storyName, storyObject]) =>
|