github-issue-tower-defence-management 1.81.0 → 1.82.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +15 -0
- package/README.md +3 -0
- package/bin/adapter/entry-points/cli/index.js +1 -0
- package/bin/adapter/entry-points/cli/index.js.map +1 -1
- package/bin/adapter/entry-points/cli/projectConfig.js +20 -0
- package/bin/adapter/entry-points/cli/projectConfig.js.map +1 -1
- package/bin/adapter/entry-points/handlers/HandleScheduledEventUseCaseHandler.js +48 -20
- package/bin/adapter/entry-points/handlers/HandleScheduledEventUseCaseHandler.js.map +1 -1
- package/bin/domain/usecases/ChangeTargetPullRequestApprover.js +9 -5
- package/bin/domain/usecases/ChangeTargetPullRequestApprover.js.map +1 -1
- package/bin/domain/usecases/HandleScheduledEventUseCase.js +1 -0
- package/bin/domain/usecases/HandleScheduledEventUseCase.js.map +1 -1
- package/bin/domain/usecases/IssueRejectionEvaluator.js +1 -1
- package/bin/domain/usecases/IssueRejectionEvaluator.js.map +1 -1
- package/bin/domain/usecases/NotifyFinishedIssuePreparationUseCase.js +1 -1
- package/bin/domain/usecases/NotifyFinishedIssuePreparationUseCase.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/cli/index.test.ts +18 -0
- package/src/adapter/entry-points/cli/index.ts +1 -0
- package/src/adapter/entry-points/cli/projectConfig.ts +32 -0
- package/src/domain/usecases/ChangeTargetPullRequestApprover.test.ts +78 -0
- package/src/domain/usecases/ChangeTargetPullRequestApprover.ts +14 -4
- package/src/domain/usecases/HandleScheduledEventUseCase.ts +2 -0
- package/src/domain/usecases/IssueRejectionEvaluator.test.ts +18 -0
- package/src/domain/usecases/IssueRejectionEvaluator.ts +1 -1
- package/src/domain/usecases/NotifyFinishedIssuePreparationUseCase.test.ts +61 -0
- package/src/domain/usecases/NotifyFinishedIssuePreparationUseCase.ts +2 -0
- package/src/domain/usecases/RevertNotReadyReviewQueueIssueUseCase.test.ts +36 -0
- package/src/domain/usecases/RevertNotReadyReviewQueueIssueUseCase.ts +2 -0
- package/types/adapter/entry-points/cli/projectConfig.d.ts +1 -0
- package/types/adapter/entry-points/cli/projectConfig.d.ts.map +1 -1
- package/types/domain/usecases/ChangeTargetPullRequestApprover.d.ts +1 -1
- package/types/domain/usecases/ChangeTargetPullRequestApprover.d.ts.map +1 -1
- package/types/domain/usecases/HandleScheduledEventUseCase.d.ts +1 -0
- package/types/domain/usecases/HandleScheduledEventUseCase.d.ts.map +1 -1
- package/types/domain/usecases/NotifyFinishedIssuePreparationUseCase.d.ts +1 -0
- package/types/domain/usecases/NotifyFinishedIssuePreparationUseCase.d.ts.map +1 -1
- package/types/domain/usecases/RevertNotReadyReviewQueueIssueUseCase.d.ts +1 -0
- package/types/domain/usecases/RevertNotReadyReviewQueueIssueUseCase.d.ts.map +1 -1
|
@@ -109,7 +109,7 @@ class IssueRejectionEvaluator {
|
|
|
109
109
|
const raw = label.slice(prefix.length).trim();
|
|
110
110
|
if (raw.length === 0)
|
|
111
111
|
continue;
|
|
112
|
-
const normalized = raw.replace(/\/+$/, '');
|
|
112
|
+
const normalized = raw.replace(/^\/+/, '').replace(/\/+$/, '');
|
|
113
113
|
if (normalized.length === 0)
|
|
114
114
|
continue;
|
|
115
115
|
paths.push(normalized);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IssueRejectionEvaluator.js","sourceRoot":"","sources":["../../../src/domain/usecases/IssueRejectionEvaluator.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"IssueRejectionEvaluator.js","sourceRoot":"","sources":["../../../src/domain/usecases/IssueRejectionEvaluator.ts"],"names":[],"mappings":"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"}
|
|
@@ -100,7 +100,7 @@ class NotifyFinishedIssuePreparationUseCase {
|
|
|
100
100
|
return;
|
|
101
101
|
}
|
|
102
102
|
if (rejections.length <= 0) {
|
|
103
|
-
await this.changeTargetPullRequestApprover.approveIfConfined(issue.labels, approvedPrUrl);
|
|
103
|
+
await this.changeTargetPullRequestApprover.approveIfConfined(issue.labels, approvedPrUrl, params.changeTargetPathAliases);
|
|
104
104
|
issue.status = WorkflowStatus_1.AWAITING_QUALITY_CHECK_STATUS_NAME;
|
|
105
105
|
await this.issueRepository.update(issue, project);
|
|
106
106
|
await this.issueRepository.updateStatus(project, issue, awaitingQualityCheckStatusOption.id);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NotifyFinishedIssuePreparationUseCase.js","sourceRoot":"","sources":["../../../src/domain/usecases/NotifyFinishedIssuePreparationUseCase.ts"],"names":[],"mappings":";;;AAIA,+DAKoC;AACpC,uEAGmC;AACnC,uFAAoF;AAEpF,MAAa,kBAAmB,SAAQ,KAAK;IAC3C,YAAY,QAAgB;QAC1B,KAAK,CAAC,oBAAoB,QAAQ,EAAE,CAAC,CAAC;QACtC,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;IACnC,CAAC;CACF;AALD,gDAKC;AACD,MAAa,uBAAwB,SAAQ,KAAK;IAChD,YACE,QAAgB,EAChB,aAA4B,EAC5B,cAA6B;QAE7B,KAAK,CACH,4BAA4B,QAAQ,cAAc,cAAc,aAAa,aAAa,EAAE,CAC7F,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,yBAAyB,CAAC;IACxC,CAAC;CACF;AAXD,0DAWC;AAMD,MAAa,qCAAqC;IAIhD,YACmB,iBAAsD,EACtD,eAYhB,EACgB,sBAGhB,EACgB,iBAGhB;QArBgB,sBAAiB,GAAjB,iBAAiB,CAAqC;QACtD,oBAAe,GAAf,eAAe,CAY/B;QACgB,2BAAsB,GAAtB,sBAAsB,CAGtC;QACgB,sBAAiB,GAAjB,iBAAiB,CAGjC;QAQH,QAAG,GAAG,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"NotifyFinishedIssuePreparationUseCase.js","sourceRoot":"","sources":["../../../src/domain/usecases/NotifyFinishedIssuePreparationUseCase.ts"],"names":[],"mappings":"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"}
|
|
@@ -35,7 +35,7 @@ class RevertNotReadyReviewQueueIssueUseCase {
|
|
|
35
35
|
await this.issueCommentRepository.createComment(issue, `Auto Status Check: REJECTED\n${rejections.map((r) => `- ${r.detail}`).join('\n')}`);
|
|
36
36
|
continue;
|
|
37
37
|
}
|
|
38
|
-
await this.changeTargetPullRequestApprover.approveIfConfined(issue.labels, approvedPrUrl);
|
|
38
|
+
await this.changeTargetPullRequestApprover.approveIfConfined(issue.labels, approvedPrUrl, params.changeTargetPathAliases);
|
|
39
39
|
}
|
|
40
40
|
const projectStory = project.story;
|
|
41
41
|
const unreadPullRequests = issues.filter((issue) => issue.status === WorkflowStatus_1.DEFAULT_STATUS_NAME && issue.isPr);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RevertNotReadyReviewQueueIssueUseCase.js","sourceRoot":"","sources":["../../../src/domain/usecases/RevertNotReadyReviewQueueIssueUseCase.ts"],"names":[],"mappings":";;;AAGA,uEAAoE;AACpE,uFAAoF;AACpF,+DAIoC;AAEpC,MAAa,qCAAqC;IAIhD,YACmB,iBAGhB,EACgB,eAUhB,EACgB,sBAGhB;QAlBgB,sBAAiB,GAAjB,iBAAiB,CAGjC;QACgB,oBAAe,GAAf,eAAe,CAU/B;QACgB,2BAAsB,GAAtB,sBAAsB,CAGtC;QAQH,QAAG,GAAG,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"RevertNotReadyReviewQueueIssueUseCase.js","sourceRoot":"","sources":["../../../src/domain/usecases/RevertNotReadyReviewQueueIssueUseCase.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -353,6 +353,22 @@ codexHomeCandidates:
|
|
|
353
353
|
]);
|
|
354
354
|
});
|
|
355
355
|
|
|
356
|
+
it('should parse changeTargetPathAliases map from README config', () => {
|
|
357
|
+
const readme = `<details>
|
|
358
|
+
<summary>config</summary>
|
|
359
|
+
changeTargetPathAliases:
|
|
360
|
+
adapters: src/domain/usecases/adapter-interfaces
|
|
361
|
+
domain: src/domain
|
|
362
|
+
</details>`;
|
|
363
|
+
|
|
364
|
+
const result = parseProjectReadmeConfig(readme);
|
|
365
|
+
|
|
366
|
+
expect(result.changeTargetPathAliases).toEqual({
|
|
367
|
+
adapters: 'src/domain/usecases/adapter-interfaces',
|
|
368
|
+
domain: 'src/domain',
|
|
369
|
+
});
|
|
370
|
+
});
|
|
371
|
+
|
|
356
372
|
it('should not warn when only known top-level keys are present', () => {
|
|
357
373
|
const readme = `<details>
|
|
358
374
|
<summary>config</summary>
|
|
@@ -1191,6 +1207,7 @@ mysteryKey: 'value'
|
|
|
1191
1207
|
workflowBlockerResolvedWebhookUrl: null,
|
|
1192
1208
|
allowedIssueAuthors: null,
|
|
1193
1209
|
labelsAsLlmAgentName: null,
|
|
1210
|
+
changeTargetPathAliases: null,
|
|
1194
1211
|
});
|
|
1195
1212
|
});
|
|
1196
1213
|
|
|
@@ -1226,6 +1243,7 @@ mysteryKey: 'value'
|
|
|
1226
1243
|
workflowBlockerResolvedWebhookUrl: null,
|
|
1227
1244
|
allowedIssueAuthors: null,
|
|
1228
1245
|
labelsAsLlmAgentName: null,
|
|
1246
|
+
changeTargetPathAliases: null,
|
|
1229
1247
|
});
|
|
1230
1248
|
});
|
|
1231
1249
|
|
|
@@ -20,6 +20,7 @@ export type ConfigFile = {
|
|
|
20
20
|
awLogDirectoryPath?: string;
|
|
21
21
|
awLogStaleThresholdMinutes?: number;
|
|
22
22
|
labelsAsLlmAgentName?: string[];
|
|
23
|
+
changeTargetPathAliases?: Record<string, string>;
|
|
23
24
|
};
|
|
24
25
|
|
|
25
26
|
const getStringValue = (
|
|
@@ -38,6 +39,24 @@ const getNumberValue = (
|
|
|
38
39
|
return typeof value === 'number' ? value : undefined;
|
|
39
40
|
};
|
|
40
41
|
|
|
42
|
+
const getStringRecordValue = (
|
|
43
|
+
obj: Record<string, unknown>,
|
|
44
|
+
key: string,
|
|
45
|
+
): Record<string, string> | undefined => {
|
|
46
|
+
const value = obj[key];
|
|
47
|
+
if (!isRecord(value)) {
|
|
48
|
+
return undefined;
|
|
49
|
+
}
|
|
50
|
+
const result: Record<string, string> = {};
|
|
51
|
+
for (const [k, v] of Object.entries(value)) {
|
|
52
|
+
if (typeof v !== 'string') {
|
|
53
|
+
return undefined;
|
|
54
|
+
}
|
|
55
|
+
result[k] = v;
|
|
56
|
+
}
|
|
57
|
+
return result;
|
|
58
|
+
};
|
|
59
|
+
|
|
41
60
|
const getStringArrayValue = (
|
|
42
61
|
obj: Record<string, unknown>,
|
|
43
62
|
key: string,
|
|
@@ -75,6 +94,7 @@ const knownProjectReadmeConfigKeys = [
|
|
|
75
94
|
'claudeCodeOauthTokenListJsonPath',
|
|
76
95
|
'awLogDirectoryPath',
|
|
77
96
|
'awLogStaleThresholdMinutes',
|
|
97
|
+
'changeTargetPathAliases',
|
|
78
98
|
] as const;
|
|
79
99
|
|
|
80
100
|
export const loadConfigFile = (configFilePath: string): ConfigFile => {
|
|
@@ -121,6 +141,10 @@ export const loadConfigFile = (configFilePath: string): ConfigFile => {
|
|
|
121
141
|
'awLogStaleThresholdMinutes',
|
|
122
142
|
),
|
|
123
143
|
labelsAsLlmAgentName: getStringArrayValue(parsed, 'labelsAsLlmAgentName'),
|
|
144
|
+
changeTargetPathAliases: getStringRecordValue(
|
|
145
|
+
parsed,
|
|
146
|
+
'changeTargetPathAliases',
|
|
147
|
+
),
|
|
124
148
|
};
|
|
125
149
|
} catch (error) {
|
|
126
150
|
const message = error instanceof Error ? error.message : String(error);
|
|
@@ -193,6 +217,10 @@ export const parseProjectReadmeConfig = (
|
|
|
193
217
|
parsed,
|
|
194
218
|
'awLogStaleThresholdMinutes',
|
|
195
219
|
),
|
|
220
|
+
changeTargetPathAliases: getStringRecordValue(
|
|
221
|
+
parsed,
|
|
222
|
+
'changeTargetPathAliases',
|
|
223
|
+
),
|
|
196
224
|
};
|
|
197
225
|
} catch {
|
|
198
226
|
console.warn('Failed to parse YAML from project README config section');
|
|
@@ -271,6 +299,10 @@ export const mergeConfigs = (
|
|
|
271
299
|
readmeOverrides.labelsAsLlmAgentName ??
|
|
272
300
|
cliOverrides.labelsAsLlmAgentName ??
|
|
273
301
|
configFile.labelsAsLlmAgentName,
|
|
302
|
+
changeTargetPathAliases:
|
|
303
|
+
readmeOverrides.changeTargetPathAliases ??
|
|
304
|
+
cliOverrides.changeTargetPathAliases ??
|
|
305
|
+
configFile.changeTargetPathAliases,
|
|
274
306
|
});
|
|
275
307
|
|
|
276
308
|
type GraphqlProjectV2ReadmeResponse = {
|
|
@@ -116,6 +116,74 @@ describe('ChangeTargetPullRequestApprover', () => {
|
|
|
116
116
|
expect(mockIssueRepository.approvePullRequest).toHaveBeenCalledWith(prUrl);
|
|
117
117
|
});
|
|
118
118
|
|
|
119
|
+
it('should normalize leading slashes in change-target label paths', async () => {
|
|
120
|
+
mockIssueRepository.getPullRequestChangedFilePaths.mockResolvedValue([
|
|
121
|
+
'src/domain/entities/Foo.ts',
|
|
122
|
+
]);
|
|
123
|
+
|
|
124
|
+
await approver.approveIfConfined(['change-target:/src/domain'], prUrl);
|
|
125
|
+
|
|
126
|
+
expect(mockIssueRepository.approvePullRequest).toHaveBeenCalledWith(prUrl);
|
|
127
|
+
});
|
|
128
|
+
|
|
129
|
+
it('should normalize both leading and trailing slashes in change-target label paths', async () => {
|
|
130
|
+
mockIssueRepository.getPullRequestChangedFilePaths.mockResolvedValue([
|
|
131
|
+
'src/domain/entities/Foo.ts',
|
|
132
|
+
]);
|
|
133
|
+
|
|
134
|
+
await approver.approveIfConfined(['change-target:/src/domain/'], prUrl);
|
|
135
|
+
|
|
136
|
+
expect(mockIssueRepository.approvePullRequest).toHaveBeenCalledWith(prUrl);
|
|
137
|
+
});
|
|
138
|
+
|
|
139
|
+
it('should expand a path alias when pathAliases map is provided', async () => {
|
|
140
|
+
mockIssueRepository.getPullRequestChangedFilePaths.mockResolvedValue([
|
|
141
|
+
'src/domain/usecases/adapter-interfaces/IssueRepository.ts',
|
|
142
|
+
]);
|
|
143
|
+
|
|
144
|
+
await approver.approveIfConfined(['change-target:adapters'], prUrl, {
|
|
145
|
+
adapters: 'src/domain/usecases/adapter-interfaces',
|
|
146
|
+
});
|
|
147
|
+
|
|
148
|
+
expect(mockIssueRepository.approvePullRequest).toHaveBeenCalledWith(prUrl);
|
|
149
|
+
});
|
|
150
|
+
|
|
151
|
+
it('should not approve when file is outside the expanded alias path', async () => {
|
|
152
|
+
mockIssueRepository.getPullRequestChangedFilePaths.mockResolvedValue([
|
|
153
|
+
'src/domain/usecases/SomeOtherUseCase.ts',
|
|
154
|
+
]);
|
|
155
|
+
|
|
156
|
+
await approver.approveIfConfined(['change-target:adapters'], prUrl, {
|
|
157
|
+
adapters: 'src/domain/usecases/adapter-interfaces',
|
|
158
|
+
});
|
|
159
|
+
|
|
160
|
+
expect(mockIssueRepository.approvePullRequest).not.toHaveBeenCalled();
|
|
161
|
+
});
|
|
162
|
+
|
|
163
|
+
it('should treat label value as literal path when it does not match any alias key', async () => {
|
|
164
|
+
mockIssueRepository.getPullRequestChangedFilePaths.mockResolvedValue([
|
|
165
|
+
'src/domain/entities/Foo.ts',
|
|
166
|
+
]);
|
|
167
|
+
|
|
168
|
+
await approver.approveIfConfined(['change-target:src/domain'], prUrl, {
|
|
169
|
+
adapters: 'src/domain/usecases/adapter-interfaces',
|
|
170
|
+
});
|
|
171
|
+
|
|
172
|
+
expect(mockIssueRepository.approvePullRequest).toHaveBeenCalledWith(prUrl);
|
|
173
|
+
});
|
|
174
|
+
|
|
175
|
+
it('should normalize leading slash in alias expanded value', async () => {
|
|
176
|
+
mockIssueRepository.getPullRequestChangedFilePaths.mockResolvedValue([
|
|
177
|
+
'src/domain/entities/Foo.ts',
|
|
178
|
+
]);
|
|
179
|
+
|
|
180
|
+
await approver.approveIfConfined(['change-target:domain'], prUrl, {
|
|
181
|
+
domain: '/src/domain',
|
|
182
|
+
});
|
|
183
|
+
|
|
184
|
+
expect(mockIssueRepository.approvePullRequest).toHaveBeenCalledWith(prUrl);
|
|
185
|
+
});
|
|
186
|
+
|
|
119
187
|
it('should ignore empty change-target label values', async () => {
|
|
120
188
|
mockIssueRepository.getPullRequestChangedFilePaths.mockResolvedValue([
|
|
121
189
|
'src/domain/Foo.ts',
|
|
@@ -129,6 +197,16 @@ describe('ChangeTargetPullRequestApprover', () => {
|
|
|
129
197
|
expect(mockIssueRepository.approvePullRequest).not.toHaveBeenCalled();
|
|
130
198
|
});
|
|
131
199
|
|
|
200
|
+
it('should normalize leading slashes in change-target-must label paths', async () => {
|
|
201
|
+
mockIssueRepository.getPullRequestChangedFilePaths.mockResolvedValue([
|
|
202
|
+
'src/domain/entities/Foo.ts',
|
|
203
|
+
]);
|
|
204
|
+
|
|
205
|
+
await approver.approveIfConfined(['change-target-must:/src/domain'], prUrl);
|
|
206
|
+
|
|
207
|
+
expect(mockIssueRepository.approvePullRequest).toHaveBeenCalledWith(prUrl);
|
|
208
|
+
});
|
|
209
|
+
|
|
132
210
|
it('should treat change-target-must: path as an allowed confinement path and approve when all files are confined to it', async () => {
|
|
133
211
|
mockIssueRepository.getPullRequestChangedFilePaths.mockResolvedValue([
|
|
134
212
|
'src/domain/entities/Foo.ts',
|
|
@@ -11,11 +11,15 @@ export class ChangeTargetPullRequestApprover {
|
|
|
11
11
|
approveIfConfined = async (
|
|
12
12
|
issueLabels: string[],
|
|
13
13
|
approvedPrUrl: string | null,
|
|
14
|
+
pathAliases?: Record<string, string> | null,
|
|
14
15
|
): Promise<void> => {
|
|
15
16
|
if (approvedPrUrl === null) {
|
|
16
17
|
return;
|
|
17
18
|
}
|
|
18
|
-
const changeTargetPaths = this.extractChangeTargetPaths(
|
|
19
|
+
const changeTargetPaths = this.extractChangeTargetPaths(
|
|
20
|
+
issueLabels,
|
|
21
|
+
pathAliases,
|
|
22
|
+
);
|
|
19
23
|
if (changeTargetPaths.length === 0) {
|
|
20
24
|
return;
|
|
21
25
|
}
|
|
@@ -33,7 +37,10 @@ export class ChangeTargetPullRequestApprover {
|
|
|
33
37
|
await this.issueRepository.approvePullRequest(approvedPrUrl);
|
|
34
38
|
};
|
|
35
39
|
|
|
36
|
-
private extractChangeTargetPaths = (
|
|
40
|
+
private extractChangeTargetPaths = (
|
|
41
|
+
labels: string[],
|
|
42
|
+
pathAliases?: Record<string, string> | null,
|
|
43
|
+
): string[] => {
|
|
37
44
|
const prefixes = ['change-target:', 'change-target-must:'];
|
|
38
45
|
const paths: string[] = [];
|
|
39
46
|
for (const label of labels) {
|
|
@@ -41,9 +48,12 @@ export class ChangeTargetPullRequestApprover {
|
|
|
41
48
|
if (!matchedPrefix) continue;
|
|
42
49
|
const raw = label.slice(matchedPrefix.length).trim();
|
|
43
50
|
if (raw.length === 0) continue;
|
|
44
|
-
const normalized = raw.replace(/\/+$/, '');
|
|
51
|
+
const normalized = raw.replace(/^\/+/, '').replace(/\/+$/, '');
|
|
45
52
|
if (normalized.length === 0) continue;
|
|
46
|
-
|
|
53
|
+
const aliasExpanded = pathAliases?.[normalized] ?? normalized;
|
|
54
|
+
const finalPath = aliasExpanded.replace(/^\/+/, '').replace(/\/+$/, '');
|
|
55
|
+
if (finalPath.length === 0) continue;
|
|
56
|
+
paths.push(finalPath);
|
|
47
57
|
}
|
|
48
58
|
return paths;
|
|
49
59
|
};
|
|
@@ -85,6 +85,7 @@ export class HandleScheduledEventUseCase {
|
|
|
85
85
|
disabled: boolean;
|
|
86
86
|
allowIssueCacheMinutes: number;
|
|
87
87
|
labelsAsLlmAgentName?: string[] | null;
|
|
88
|
+
changeTargetPathAliases?: Record<string, string> | null;
|
|
88
89
|
startPreparation?: {
|
|
89
90
|
defaultAgentName: string;
|
|
90
91
|
defaultLlmModelName?: string | null;
|
|
@@ -296,6 +297,7 @@ ${JSON.stringify(e)}
|
|
|
296
297
|
projectUrl: input.projectUrl,
|
|
297
298
|
allowIssueCacheMinutes: input.allowIssueCacheMinutes,
|
|
298
299
|
labelsAsLlmAgentName,
|
|
300
|
+
changeTargetPathAliases: input.changeTargetPathAliases,
|
|
299
301
|
});
|
|
300
302
|
if (this.dailySecurityScanUseCase !== null && input.dailySecurityScan) {
|
|
301
303
|
await this.dailySecurityScanUseCase.run({
|
|
@@ -340,6 +340,24 @@ describe('IssueRejectionEvaluator', () => {
|
|
|
340
340
|
expect(result.rejections).toHaveLength(0);
|
|
341
341
|
expect(result.approvedPrUrl).toBe(prUrl);
|
|
342
342
|
});
|
|
343
|
+
|
|
344
|
+
it('should normalize leading slash in change-target-must label path', async () => {
|
|
345
|
+
mockIssueRepository.findRelatedOpenPRs.mockResolvedValue([
|
|
346
|
+
createReadyPr(prUrl),
|
|
347
|
+
]);
|
|
348
|
+
mockIssueRepository.getPullRequestChangedFilePaths.mockResolvedValue([
|
|
349
|
+
'src/domain/entities/Foo.ts',
|
|
350
|
+
]);
|
|
351
|
+
|
|
352
|
+
const result = await evaluator.evaluate({
|
|
353
|
+
url: 'https://github.com/user/repo/issues/1',
|
|
354
|
+
labels: ['change-target-must:/src/domain'],
|
|
355
|
+
isPr: false,
|
|
356
|
+
});
|
|
357
|
+
|
|
358
|
+
expect(result.rejections).toHaveLength(0);
|
|
359
|
+
expect(result.approvedPrUrl).toBe(prUrl);
|
|
360
|
+
});
|
|
343
361
|
});
|
|
344
362
|
});
|
|
345
363
|
});
|
|
@@ -167,7 +167,7 @@ export class IssueRejectionEvaluator {
|
|
|
167
167
|
if (!label.startsWith(prefix)) continue;
|
|
168
168
|
const raw = label.slice(prefix.length).trim();
|
|
169
169
|
if (raw.length === 0) continue;
|
|
170
|
-
const normalized = raw.replace(/\/+$/, '');
|
|
170
|
+
const normalized = raw.replace(/^\/+/, '').replace(/\/+$/, '');
|
|
171
171
|
if (normalized.length === 0) continue;
|
|
172
172
|
paths.push(normalized);
|
|
173
173
|
}
|
|
@@ -3013,5 +3013,66 @@ describe('NotifyFinishedIssuePreparationUseCase', () => {
|
|
|
3013
3013
|
'https://github.com/user/repo/pull/1',
|
|
3014
3014
|
);
|
|
3015
3015
|
});
|
|
3016
|
+
|
|
3017
|
+
it('should normalize leading slashes in change-target label paths', async () => {
|
|
3018
|
+
setupApprovedPrScenario({ labels: ['change-target:/src/domain'] });
|
|
3019
|
+
mockIssueRepository.getPullRequestChangedFilePaths.mockResolvedValue([
|
|
3020
|
+
'src/domain/entities/Foo.ts',
|
|
3021
|
+
]);
|
|
3022
|
+
|
|
3023
|
+
await useCase.run({
|
|
3024
|
+
projectUrl: 'https://github.com/users/user/projects/1',
|
|
3025
|
+
issueUrl: 'https://github.com/user/repo/issues/1',
|
|
3026
|
+
thresholdForAutoReject: 3,
|
|
3027
|
+
workflowBlockerResolvedWebhookUrl: null,
|
|
3028
|
+
allowedIssueAuthors: null,
|
|
3029
|
+
});
|
|
3030
|
+
|
|
3031
|
+
expect(mockIssueRepository.approvePullRequest).toHaveBeenCalledWith(
|
|
3032
|
+
'https://github.com/user/repo/pull/1',
|
|
3033
|
+
);
|
|
3034
|
+
});
|
|
3035
|
+
|
|
3036
|
+
it('should expand changeTargetPathAliases when alias matches a change-target label', async () => {
|
|
3037
|
+
setupApprovedPrScenario({ labels: ['change-target:adapters'] });
|
|
3038
|
+
mockIssueRepository.getPullRequestChangedFilePaths.mockResolvedValue([
|
|
3039
|
+
'src/domain/usecases/adapter-interfaces/IssueRepository.ts',
|
|
3040
|
+
]);
|
|
3041
|
+
|
|
3042
|
+
await useCase.run({
|
|
3043
|
+
projectUrl: 'https://github.com/users/user/projects/1',
|
|
3044
|
+
issueUrl: 'https://github.com/user/repo/issues/1',
|
|
3045
|
+
thresholdForAutoReject: 3,
|
|
3046
|
+
workflowBlockerResolvedWebhookUrl: null,
|
|
3047
|
+
allowedIssueAuthors: null,
|
|
3048
|
+
changeTargetPathAliases: {
|
|
3049
|
+
adapters: 'src/domain/usecases/adapter-interfaces',
|
|
3050
|
+
},
|
|
3051
|
+
});
|
|
3052
|
+
|
|
3053
|
+
expect(mockIssueRepository.approvePullRequest).toHaveBeenCalledWith(
|
|
3054
|
+
'https://github.com/user/repo/pull/1',
|
|
3055
|
+
);
|
|
3056
|
+
});
|
|
3057
|
+
|
|
3058
|
+
it('should not approve when file is outside the alias-expanded path', async () => {
|
|
3059
|
+
setupApprovedPrScenario({ labels: ['change-target:adapters'] });
|
|
3060
|
+
mockIssueRepository.getPullRequestChangedFilePaths.mockResolvedValue([
|
|
3061
|
+
'src/domain/usecases/SomeOtherUseCase.ts',
|
|
3062
|
+
]);
|
|
3063
|
+
|
|
3064
|
+
await useCase.run({
|
|
3065
|
+
projectUrl: 'https://github.com/users/user/projects/1',
|
|
3066
|
+
issueUrl: 'https://github.com/user/repo/issues/1',
|
|
3067
|
+
thresholdForAutoReject: 3,
|
|
3068
|
+
workflowBlockerResolvedWebhookUrl: null,
|
|
3069
|
+
allowedIssueAuthors: null,
|
|
3070
|
+
changeTargetPathAliases: {
|
|
3071
|
+
adapters: 'src/domain/usecases/adapter-interfaces',
|
|
3072
|
+
},
|
|
3073
|
+
});
|
|
3074
|
+
|
|
3075
|
+
expect(mockIssueRepository.approvePullRequest).not.toHaveBeenCalled();
|
|
3076
|
+
});
|
|
3016
3077
|
});
|
|
3017
3078
|
});
|
|
@@ -78,6 +78,7 @@ export class NotifyFinishedIssuePreparationUseCase {
|
|
|
78
78
|
workflowBlockerResolvedWebhookUrl: string | null;
|
|
79
79
|
allowedIssueAuthors?: string[] | null;
|
|
80
80
|
labelsAsLlmAgentName?: string[] | null;
|
|
81
|
+
changeTargetPathAliases?: Record<string, string> | null;
|
|
81
82
|
}): Promise<void> => {
|
|
82
83
|
const project = await this.projectRepository.getByUrl(params.projectUrl);
|
|
83
84
|
|
|
@@ -238,6 +239,7 @@ export class NotifyFinishedIssuePreparationUseCase {
|
|
|
238
239
|
await this.changeTargetPullRequestApprover.approveIfConfined(
|
|
239
240
|
issue.labels,
|
|
240
241
|
approvedPrUrl,
|
|
242
|
+
params.changeTargetPathAliases,
|
|
241
243
|
);
|
|
242
244
|
issue.status = AWAITING_QUALITY_CHECK_STATUS_NAME;
|
|
243
245
|
await this.issueRepository.update(issue, project);
|
|
@@ -762,6 +762,42 @@ describe('RevertNotReadyReviewQueueIssueUseCase', () => {
|
|
|
762
762
|
'https://github.com/user/repo/pull/1',
|
|
763
763
|
);
|
|
764
764
|
});
|
|
765
|
+
|
|
766
|
+
it('should expand changeTargetPathAliases when alias matches a change-target label', async () => {
|
|
767
|
+
setupReadyIssue(['change-target:adapters']);
|
|
768
|
+
mockIssueRepository.getPullRequestChangedFilePaths.mockResolvedValue([
|
|
769
|
+
'src/domain/usecases/adapter-interfaces/IssueRepository.ts',
|
|
770
|
+
]);
|
|
771
|
+
|
|
772
|
+
await useCase.run({
|
|
773
|
+
projectUrl: 'https://github.com/users/user/projects/1',
|
|
774
|
+
allowIssueCacheMinutes: 10,
|
|
775
|
+
changeTargetPathAliases: {
|
|
776
|
+
adapters: 'src/domain/usecases/adapter-interfaces',
|
|
777
|
+
},
|
|
778
|
+
});
|
|
779
|
+
|
|
780
|
+
expect(mockIssueRepository.approvePullRequest).toHaveBeenCalledWith(
|
|
781
|
+
'https://github.com/user/repo/pull/1',
|
|
782
|
+
);
|
|
783
|
+
});
|
|
784
|
+
|
|
785
|
+
it('should not approve when file is outside the alias-expanded path', async () => {
|
|
786
|
+
setupReadyIssue(['change-target:adapters']);
|
|
787
|
+
mockIssueRepository.getPullRequestChangedFilePaths.mockResolvedValue([
|
|
788
|
+
'src/domain/usecases/SomeOtherUseCase.ts',
|
|
789
|
+
]);
|
|
790
|
+
|
|
791
|
+
await useCase.run({
|
|
792
|
+
projectUrl: 'https://github.com/users/user/projects/1',
|
|
793
|
+
allowIssueCacheMinutes: 10,
|
|
794
|
+
changeTargetPathAliases: {
|
|
795
|
+
adapters: 'src/domain/usecases/adapter-interfaces',
|
|
796
|
+
},
|
|
797
|
+
});
|
|
798
|
+
|
|
799
|
+
expect(mockIssueRepository.approvePullRequest).not.toHaveBeenCalled();
|
|
800
|
+
});
|
|
765
801
|
});
|
|
766
802
|
});
|
|
767
803
|
|
|
@@ -44,6 +44,7 @@ export class RevertNotReadyReviewQueueIssueUseCase {
|
|
|
44
44
|
projectUrl: string;
|
|
45
45
|
allowIssueCacheMinutes: number;
|
|
46
46
|
labelsAsLlmAgentName?: string[] | null;
|
|
47
|
+
changeTargetPathAliases?: Record<string, string> | null;
|
|
47
48
|
}): Promise<void> => {
|
|
48
49
|
const projectId = await this.projectRepository.findProjectIdByUrl(
|
|
49
50
|
params.projectUrl,
|
|
@@ -103,6 +104,7 @@ export class RevertNotReadyReviewQueueIssueUseCase {
|
|
|
103
104
|
await this.changeTargetPullRequestApprover.approveIfConfined(
|
|
104
105
|
issue.labels,
|
|
105
106
|
approvedPrUrl,
|
|
107
|
+
params.changeTargetPathAliases,
|
|
106
108
|
);
|
|
107
109
|
}
|
|
108
110
|
|
|
@@ -17,6 +17,7 @@ export type ConfigFile = {
|
|
|
17
17
|
awLogDirectoryPath?: string;
|
|
18
18
|
awLogStaleThresholdMinutes?: number;
|
|
19
19
|
labelsAsLlmAgentName?: string[];
|
|
20
|
+
changeTargetPathAliases?: Record<string, string>;
|
|
20
21
|
};
|
|
21
22
|
export declare const isRecord: (value: unknown) => value is Record<string, unknown>;
|
|
22
23
|
export declare const loadConfigFile: (configFilePath: string) => ConfigFile;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"projectConfig.d.ts","sourceRoot":"","sources":["../../../../src/adapter/entry-points/cli/projectConfig.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,UAAU,GAAG;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,2BAA2B,CAAC,EAAE,MAAM,CAAC;IACrC,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,8BAA8B,CAAC,EAAE,MAAM,CAAC;IACxC,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,iCAAiC,CAAC,EAAE,MAAM,CAAC;IAC3C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,8BAA8B,CAAC,EAAE,MAAM,CAAC;IACxC,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC/B,gCAAgC,CAAC,EAAE,MAAM,CAAC;IAC1C,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,0BAA0B,CAAC,EAAE,MAAM,CAAC;IACpC,oBAAoB,CAAC,EAAE,MAAM,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"projectConfig.d.ts","sourceRoot":"","sources":["../../../../src/adapter/entry-points/cli/projectConfig.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,UAAU,GAAG;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,2BAA2B,CAAC,EAAE,MAAM,CAAC;IACrC,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,8BAA8B,CAAC,EAAE,MAAM,CAAC;IACxC,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,iCAAiC,CAAC,EAAE,MAAM,CAAC;IAC3C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,8BAA8B,CAAC,EAAE,MAAM,CAAC;IACxC,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC/B,gCAAgC,CAAC,EAAE,MAAM,CAAC;IAC1C,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,0BAA0B,CAAC,EAAE,MAAM,CAAC;IACpC,oBAAoB,CAAC,EAAE,MAAM,EAAE,CAAC;IAChC,uBAAuB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClD,CAAC;AAsDF,eAAO,MAAM,QAAQ,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CACH,CAAC;AAqBvE,eAAO,MAAM,cAAc,GAAI,gBAAgB,MAAM,KAAG,UAwDvD,CAAC;AAEF,eAAO,MAAM,wBAAwB,GACnC,QAAQ,MAAM,EACd,aAAa,MAAM,KAClB,UAoEF,CAAC;AAEF,eAAO,MAAM,YAAY,GACvB,YAAY,UAAU,EACtB,cAAc,UAAU,EACxB,iBAAiB,UAAU,KAC1B,UAuED,CAAC;AAkBH,eAAO,MAAM,kBAAkB,GAC7B,YAAY,MAAM,EAClB,OAAO,MAAM,KACZ,OAAO,CAAC,MAAM,GAAG,IAAI,CA0DvB,CAAC"}
|
|
@@ -2,7 +2,7 @@ import { IssueRepository } from './adapter-interfaces/IssueRepository';
|
|
|
2
2
|
export declare class ChangeTargetPullRequestApprover {
|
|
3
3
|
private readonly issueRepository;
|
|
4
4
|
constructor(issueRepository: Pick<IssueRepository, 'getPullRequestChangedFilePaths' | 'approvePullRequest'>);
|
|
5
|
-
approveIfConfined: (issueLabels: string[], approvedPrUrl: string | null) => Promise<void>;
|
|
5
|
+
approveIfConfined: (issueLabels: string[], approvedPrUrl: string | null, pathAliases?: Record<string, string> | null) => Promise<void>;
|
|
6
6
|
private extractChangeTargetPaths;
|
|
7
7
|
private isFilePathConfinedToAllowedPaths;
|
|
8
8
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChangeTargetPullRequestApprover.d.ts","sourceRoot":"","sources":["../../../src/domain/usecases/ChangeTargetPullRequestApprover.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AAEvE,qBAAa,+BAA+B;IAExC,OAAO,CAAC,QAAQ,CAAC,eAAe;gBAAf,eAAe,EAAE,IAAI,CACpC,eAAe,EACf,gCAAgC,GAAG,oBAAoB,CACxD;IAGH,iBAAiB,GACf,aAAa,MAAM,EAAE,EACrB,eAAe,MAAM,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"ChangeTargetPullRequestApprover.d.ts","sourceRoot":"","sources":["../../../src/domain/usecases/ChangeTargetPullRequestApprover.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AAEvE,qBAAa,+BAA+B;IAExC,OAAO,CAAC,QAAQ,CAAC,eAAe;gBAAf,eAAe,EAAE,IAAI,CACpC,eAAe,EACf,gCAAgC,GAAG,oBAAoB,CACxD;IAGH,iBAAiB,GACf,aAAa,MAAM,EAAE,EACrB,eAAe,MAAM,GAAG,IAAI,EAC5B,cAAc,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,KAC1C,OAAO,CAAC,IAAI,CAAC,CAuBd;IAEF,OAAO,CAAC,wBAAwB,CAmB9B;IAEF,OAAO,CAAC,gCAAgC,CAOpC;CACL"}
|
|
@@ -69,6 +69,7 @@ export declare class HandleScheduledEventUseCase {
|
|
|
69
69
|
disabled: boolean;
|
|
70
70
|
allowIssueCacheMinutes: number;
|
|
71
71
|
labelsAsLlmAgentName?: string[] | null;
|
|
72
|
+
changeTargetPathAliases?: Record<string, string> | null;
|
|
72
73
|
startPreparation?: {
|
|
73
74
|
defaultAgentName: string;
|
|
74
75
|
defaultLlmModelName?: string | null;
|