github-issue-tower-defence-management 1.146.9 → 1.146.11
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 +14 -0
- package/bin/adapter/entry-points/console/consoleOperationApi.js +38 -1
- package/bin/adapter/entry-points/console/consoleOperationApi.js.map +1 -1
- package/bin/adapter/entry-points/console/ui-dist/assets/{index-CPY6wV8C.js → index-D868xHqH.js} +1 -1
- package/bin/adapter/entry-points/console/ui-dist/index.html +1 -1
- package/bin/adapter/repositories/issue/GraphqlProjectItemRepository.js +1 -0
- package/bin/adapter/repositories/issue/GraphqlProjectItemRepository.js.map +1 -1
- package/bin/domain/usecases/RevertNotReadyReviewQueueIssueUseCase.js +1 -1
- package/bin/domain/usecases/RevertNotReadyReviewQueueIssueUseCase.js.map +1 -1
- package/package.json +1 -1
- package/src/adapter/entry-points/console/consoleOperationApi.test.ts +86 -0
- package/src/adapter/entry-points/console/consoleOperationApi.ts +51 -0
- package/src/adapter/entry-points/console/ui/src/features/console/hooks/useConsoleOperations.test.ts +3 -2
- package/src/adapter/entry-points/console/ui/src/features/console/hooks/useConsoleOperations.ts +2 -1
- package/src/adapter/entry-points/console/ui/src/features/console/lib/consoleApi.ts +1 -0
- package/src/adapter/entry-points/console/ui-dist/assets/{index-CPY6wV8C.js → index-D868xHqH.js} +1 -1
- package/src/adapter/entry-points/console/ui-dist/index.html +1 -1
- package/src/adapter/repositories/issue/GraphqlProjectItemRepository.test.ts +43 -0
- package/src/adapter/repositories/issue/GraphqlProjectItemRepository.ts +3 -0
- package/src/domain/usecases/RevertNotReadyReviewQueueIssueUseCase.test.ts +40 -0
- package/src/domain/usecases/RevertNotReadyReviewQueueIssueUseCase.ts +1 -1
- package/types/adapter/entry-points/console/consoleOperationApi.d.ts +1 -0
- package/types/adapter/entry-points/console/consoleOperationApi.d.ts.map +1 -1
- package/types/adapter/repositories/issue/GraphqlProjectItemRepository.d.ts.map +1 -1
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
<meta charset="UTF-8" />
|
|
5
5
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
6
6
|
<title>TDPM Console</title>
|
|
7
|
-
<script type="module" crossorigin src="/assets/index-
|
|
7
|
+
<script type="module" crossorigin src="/assets/index-D868xHqH.js"></script>
|
|
8
8
|
<link rel="stylesheet" crossorigin href="/assets/index-CKX2ny-z.css">
|
|
9
9
|
</head>
|
|
10
10
|
<body>
|
|
@@ -664,6 +664,49 @@ describe('GraphqlProjectItemRepository', () => {
|
|
|
664
664
|
);
|
|
665
665
|
expect(requestedFirstSeries.every((first) => first === 100)).toBe(true);
|
|
666
666
|
}, 30000);
|
|
667
|
+
|
|
668
|
+
it('should emit a console.warn and skip items whose content or repository is null', async () => {
|
|
669
|
+
const warnSpy = jest.spyOn(console, 'warn').mockImplementation(() => {});
|
|
670
|
+
const localStorageRepository = new LocalStorageRepository();
|
|
671
|
+
const repository = new GraphqlProjectItemRepository(
|
|
672
|
+
localStorageRepository,
|
|
673
|
+
'dummy-token',
|
|
674
|
+
);
|
|
675
|
+
|
|
676
|
+
mockPost.mockReturnValueOnce(
|
|
677
|
+
mockJsonResponse({
|
|
678
|
+
data: {
|
|
679
|
+
node: {
|
|
680
|
+
items: {
|
|
681
|
+
totalCount: 1,
|
|
682
|
+
pageInfo: {
|
|
683
|
+
endCursor: 'cursor-1',
|
|
684
|
+
startCursor: 'cursor-start',
|
|
685
|
+
hasNextPage: false,
|
|
686
|
+
},
|
|
687
|
+
nodes: [
|
|
688
|
+
{
|
|
689
|
+
id: 'PVTI_null_content',
|
|
690
|
+
fieldValues: { nodes: [] },
|
|
691
|
+
content: null,
|
|
692
|
+
},
|
|
693
|
+
],
|
|
694
|
+
},
|
|
695
|
+
},
|
|
696
|
+
},
|
|
697
|
+
}),
|
|
698
|
+
);
|
|
699
|
+
|
|
700
|
+
const result = await repository.fetchProjectItems('test-project-id');
|
|
701
|
+
|
|
702
|
+
expect(result).toHaveLength(0);
|
|
703
|
+
expect(warnSpy).toHaveBeenCalledWith(
|
|
704
|
+
expect.stringContaining(
|
|
705
|
+
'fetchProjectItems: skipping item with null content or repository. itemId: PVTI_null_content',
|
|
706
|
+
),
|
|
707
|
+
);
|
|
708
|
+
warnSpy.mockRestore();
|
|
709
|
+
});
|
|
667
710
|
});
|
|
668
711
|
|
|
669
712
|
const extractRequestedVariablesFromMockCall = (
|
|
@@ -600,6 +600,9 @@ query GetProjectItems($projectId: ID!, $after: String, $first: Int!, $query: Str
|
|
|
600
600
|
item: ProjectV2ItemNode | null,
|
|
601
601
|
): ProjectItem | null => {
|
|
602
602
|
if (!item || !item.content || !item.content.repository) {
|
|
603
|
+
console.warn(
|
|
604
|
+
`fetchProjectItems: skipping item with null content or repository. itemId: ${item?.id ?? 'unknown'}`,
|
|
605
|
+
);
|
|
603
606
|
return null;
|
|
604
607
|
}
|
|
605
608
|
return {
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { RevertNotReadyReviewQueueIssueUseCase } from './RevertNotReadyReviewQueueIssueUseCase';
|
|
2
2
|
import { Issue } from '../entities/Issue';
|
|
3
3
|
import { Project } from '../entities/Project';
|
|
4
|
+
import { RelatedPullRequest } from './adapter-interfaces/IssueRepository';
|
|
4
5
|
|
|
5
6
|
const createMockProject = (overrides: Partial<Project> = {}): Project => ({
|
|
6
7
|
id: 'project-1',
|
|
@@ -714,6 +715,45 @@ describe('RevertNotReadyReviewQueueIssueUseCase', () => {
|
|
|
714
715
|
expect.stringContaining('PULL_REQUEST_NOT_FOUND'),
|
|
715
716
|
);
|
|
716
717
|
});
|
|
718
|
+
|
|
719
|
+
it('should fall back to findRelatedOpenPRs when the linked PR is absent from the allIssues cache', async () => {
|
|
720
|
+
const issue = createMockIssue({
|
|
721
|
+
status: 'Awaiting Quality Check',
|
|
722
|
+
url: 'https://github.com/user/repo/issues/99',
|
|
723
|
+
number: 99,
|
|
724
|
+
});
|
|
725
|
+
mockIssueRepository.getAllIssues.mockResolvedValue({
|
|
726
|
+
project: mockProject,
|
|
727
|
+
issues: [issue],
|
|
728
|
+
cacheUsed: false,
|
|
729
|
+
});
|
|
730
|
+
const readyPr: RelatedPullRequest = {
|
|
731
|
+
url: 'https://github.com/user/repo/pull/99',
|
|
732
|
+
branchName: 'fix/issue-99',
|
|
733
|
+
createdAt: new Date(),
|
|
734
|
+
isDraft: false,
|
|
735
|
+
isConflicted: false,
|
|
736
|
+
mergeable: 'MERGEABLE',
|
|
737
|
+
isPassedAllCiJob: true,
|
|
738
|
+
isCiStateSuccess: true,
|
|
739
|
+
isResolvedAllReviewComments: true,
|
|
740
|
+
isBranchOutOfDate: false,
|
|
741
|
+
missingRequiredCheckNames: [],
|
|
742
|
+
};
|
|
743
|
+
mockIssueRepository.findRelatedOpenPRs.mockResolvedValue([readyPr]);
|
|
744
|
+
|
|
745
|
+
await useCase.run({
|
|
746
|
+
manager: 'manager-user',
|
|
747
|
+
projectUrl: 'https://github.com/users/user/projects/1',
|
|
748
|
+
allowedIssueAuthors: ['owner'],
|
|
749
|
+
});
|
|
750
|
+
|
|
751
|
+
expect(mockIssueRepository.findRelatedOpenPRs).toHaveBeenCalledWith(
|
|
752
|
+
'https://github.com/user/repo/issues/99',
|
|
753
|
+
);
|
|
754
|
+
expect(mockIssueRepository.updateStatus).not.toHaveBeenCalled();
|
|
755
|
+
expect(mockIssueCommentRepository.createComment).not.toHaveBeenCalled();
|
|
756
|
+
});
|
|
717
757
|
});
|
|
718
758
|
|
|
719
759
|
describe('change-target label auto-approve', () => {
|
|
@@ -125,7 +125,7 @@ export class RevertNotReadyReviewQueueIssueUseCase {
|
|
|
125
125
|
params.labelsAsLlmAgentName ?? [],
|
|
126
126
|
{
|
|
127
127
|
relatedOpenPrUrls:
|
|
128
|
-
relatedOpenPrUrlsByIssueUrl.get(issue.url) ??
|
|
128
|
+
relatedOpenPrUrlsByIssueUrl.get(issue.url) ?? null,
|
|
129
129
|
},
|
|
130
130
|
);
|
|
131
131
|
if (rejections.length > 0) {
|
|
@@ -3,6 +3,7 @@ import { IssueAttachmentRepository } from '../../../domain/usecases/adapter-inte
|
|
|
3
3
|
import { Project } from '../../../domain/entities/Project';
|
|
4
4
|
export declare const AWAITING_WORKSPACE_STATUS_NAME = "awaiting workspace";
|
|
5
5
|
export declare const IN_TMUX_BY_HUMAN_STATUS_NAME = "in tmux by human";
|
|
6
|
+
export declare const CHORE_LABEL_NAME = "chore";
|
|
6
7
|
export type ConsoleProjectBinding = {
|
|
7
8
|
pjcode: string;
|
|
8
9
|
project: Project;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"consoleOperationApi.d.ts","sourceRoot":"","sources":["../../../../src/adapter/entry-points/console/consoleOperationApi.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EAEhB,MAAM,6DAA6D,CAAC;AACrE,OAAO,EAAE,yBAAyB,EAAE,MAAM,uEAAuE,CAAC;AAClH,OAAO,EAAE,OAAO,EAAE,MAAM,kCAAkC,CAAC;AAK3D,eAAO,MAAM,8BAA8B,uBAAuB,CAAC;AACnE,eAAO,MAAM,4BAA4B,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"consoleOperationApi.d.ts","sourceRoot":"","sources":["../../../../src/adapter/entry-points/console/consoleOperationApi.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EAEhB,MAAM,6DAA6D,CAAC;AACrE,OAAO,EAAE,yBAAyB,EAAE,MAAM,uEAAuE,CAAC;AAClH,OAAO,EAAE,OAAO,EAAE,MAAM,kCAAkC,CAAC;AAK3D,eAAO,MAAM,8BAA8B,uBAAuB,CAAC;AACnE,eAAO,MAAM,4BAA4B,qBAAqB,CAAC;AAC/D,eAAO,MAAM,gBAAgB,UAAU,CAAC;AAExC,MAAM,MAAM,qBAAqB,GAAG;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG,CACnC,MAAM,EAAE,MAAM,KACX,OAAO,CAAC,qBAAqB,GAAG,IAAI,CAAC,CAAC;AAE3C,MAAM,MAAM,sBAAsB,GAAG,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC;AAEjE,MAAM,MAAM,8BAA8B,GAAG,CAC3C,qBAAqB,EAAE,MAAM,KAC1B,eAAe,CAAC;AAErB,MAAM,MAAM,uBAAuB,GAAG;IACpC,sBAAsB,EAAE,8BAA8B,CAAC;IACvD,cAAc,EAAE,sBAAsB,CAAC;IACvC,kBAAkB,EAAE,sBAAsB,CAAC;IAC3C,oBAAoB,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,yBAAyB,EAAE,yBAAyB,GAAG,IAAI,CAAC;CAC7D,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG;IACrC,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,OAAO,CAAC;CACf,CAAC;AA6KF,eAAO,MAAM,YAAY,GACvB,SAAS,uBAAuB,EAChC,MAAM,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAC5B,OAAO,CAAC,wBAAwB,CAwHlC,CAAC;AAEF,eAAO,MAAM,YAAY,GACvB,SAAS,uBAAuB,EAChC,MAAM,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAC5B,OAAO,CAAC,wBAAwB,CA6FlC,CAAC;AAEF,eAAO,MAAM,aAAa,GACxB,SAAS,uBAAuB,EAChC,MAAM,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAC5B,OAAO,CAAC,wBAAwB,CA8BlC,CAAC;AAEF,eAAO,MAAM,sBAAsB,GACjC,SAAS,uBAAuB,EAChC,MAAM,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAC5B,OAAO,CAAC,wBAAwB,CA2ClC,CAAC;AAEF,eAAO,MAAM,mBAAmB,GAC9B,SAAS,uBAAuB,EAChC,MAAM,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAC5B,OAAO,CAAC,wBAAwB,CA6BlC,CAAC;AAEF,eAAO,MAAM,YAAY,GACvB,SAAS,uBAAuB,EAChC,MAAM,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAC5B,OAAO,CAAC,wBAAwB,CAiClC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GraphqlProjectItemRepository.d.ts","sourceRoot":"","sources":["../../../../src/adapter/repositories/issue/GraphqlProjectItemRepository.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAE/D,OAAO,EAAE,OAAO,EAAE,MAAM,kCAAkC,CAAC;AAC3D,OAAO,EAAE,KAAK,EAAE,MAAM,gCAAgC,CAAC;AACvD,MAAM,MAAM,WAAW,GAAG;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,GAAG,QAAQ,GAAG,QAAQ,CAAC;IACpC,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,yBAAyB,EAAE,MAAM,EAAE,CAAC;IACpC,YAAY,EAAE;QACZ,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;KACtB,EAAE,CAAC;CACL,CAAC;AACF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAsCF,eAAO,MAAM,yBAAyB,KAAK,CAAC;AAC5C,eAAO,MAAM,4BAA4B,KAAK,CAAC;AAuG/C,eAAO,MAAM,mBAAmB,OAAO,CAAC;AACxC,eAAO,MAAM,qCAAqC,MAAM,CAAC;AACzD,eAAO,MAAM,qCAAqC,MAAM,CAAC;AACzD,eAAO,MAAM,oDAAoD,OAAO,CAAC;AACzE,eAAO,MAAM,sBAAsB,IAAI,CAAC;AACxC,eAAO,MAAM,yBAAyB,OAAO,CAAC;AAC9C,eAAO,MAAM,6BAA6B,QAAQ,CAAC;AACnD,eAAO,MAAM,yBAAyB,SAAS,CAAC;AAsDhD,eAAO,MAAM,sBAAsB,GAAU,CAAC,EAC5C,SAAS,MAAM,OAAO,CAAC,CAAC,CAAC,KACxB,OAAO,CAAC,CAAC,CAyBX,CAAC;AAcF,qBAAa,4BAA6B,SAAQ,oBAAoB;IACpE,WAAW,GACT,WAAW,MAAM,EACjB,OAAO,MAAM,EACb,gBAAgB,MAAM,EACtB,aAAa,MAAM,KAClB,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAiE5B;IACF,iBAAiB,GACf,WAAW,MAAM,EACjB,QAAQ,MAAM,KACb,OAAO,CAAC,WAAW,EAAE,CAAC,CAyPvB;IACF,OAAO,CAAC,iCAAiC,
|
|
1
|
+
{"version":3,"file":"GraphqlProjectItemRepository.d.ts","sourceRoot":"","sources":["../../../../src/adapter/repositories/issue/GraphqlProjectItemRepository.ts"],"names":[],"mappings":"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"}
|