github-issue-tower-defence-management 1.178.0 → 1.179.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 +16 -0
- package/README.md +1 -0
- package/bin/adapter/entry-points/cli/index.js +2 -0
- package/bin/adapter/entry-points/cli/index.js.map +1 -1
- package/bin/domain/usecases/NotifyFinishedIssuePreparationUseCase.js +36 -0
- package/bin/domain/usecases/NotifyFinishedIssuePreparationUseCase.js.map +1 -1
- package/bin/domain/usecases/RevertOrphanedPreparationUseCase.js +23 -7
- package/bin/domain/usecases/RevertOrphanedPreparationUseCase.js.map +1 -1
- package/bin/domain/usecases/console/GenerateConsoleListsUseCase.js +1 -7
- package/bin/domain/usecases/console/GenerateConsoleListsUseCase.js.map +1 -1
- package/bin/domain/usecases/resolveNextStepAgentDispatchRepetition.js +31 -0
- package/bin/domain/usecases/resolveNextStepAgentDispatchRepetition.js.map +1 -0
- 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/domain/usecases/NotifyFinishedIssuePreparationUseCase.test.ts +215 -0
- package/src/domain/usecases/NotifyFinishedIssuePreparationUseCase.ts +79 -1
- package/src/domain/usecases/RevertOrphanedPreparationUseCase.test.ts +128 -0
- package/src/domain/usecases/RevertOrphanedPreparationUseCase.ts +43 -15
- package/src/domain/usecases/console/GenerateConsoleListsUseCase.test.ts +21 -26
- package/src/domain/usecases/console/GenerateConsoleListsUseCase.ts +5 -13
- package/src/domain/usecases/issueReactivationTriggerIsPending.test.ts +2 -0
- package/src/domain/usecases/resolveNextStepAgentDispatchRepetition.test.ts +97 -0
- package/src/domain/usecases/resolveNextStepAgentDispatchRepetition.ts +49 -0
- package/types/adapter/entry-points/cli/index.d.ts.map +1 -1
- package/types/domain/usecases/NotifyFinishedIssuePreparationUseCase.d.ts +3 -1
- package/types/domain/usecases/NotifyFinishedIssuePreparationUseCase.d.ts.map +1 -1
- package/types/domain/usecases/RevertOrphanedPreparationUseCase.d.ts +0 -1
- package/types/domain/usecases/RevertOrphanedPreparationUseCase.d.ts.map +1 -1
- package/types/domain/usecases/console/GenerateConsoleListsUseCase.d.ts +0 -1
- package/types/domain/usecases/console/GenerateConsoleListsUseCase.d.ts.map +1 -1
- package/types/domain/usecases/resolveNextStepAgentDispatchRepetition.d.ts +21 -0
- package/types/domain/usecases/resolveNextStepAgentDispatchRepetition.d.ts.map +1 -0
|
@@ -217,31 +217,27 @@ describe('GenerateConsoleListsUseCase', () => {
|
|
|
217
217
|
expect(result['todo-by-agent'].items).toHaveLength(0);
|
|
218
218
|
});
|
|
219
219
|
|
|
220
|
-
it('selects
|
|
220
|
+
it('selects all actionable items for triage regardless of story', () => {
|
|
221
221
|
const result = run([
|
|
222
222
|
makeIssue({ story: 'regular / NO STORY; SET STORY FIELD' }),
|
|
223
223
|
makeIssue({ story: 'no story please' }),
|
|
224
224
|
makeIssue({ story: 'Story Alpha' }),
|
|
225
225
|
makeIssue({ story: null }),
|
|
226
226
|
]);
|
|
227
|
-
expect(result.triage.items).toHaveLength(
|
|
227
|
+
expect(result.triage.items).toHaveLength(4);
|
|
228
228
|
});
|
|
229
229
|
|
|
230
|
-
it('
|
|
230
|
+
it('excludes In Tmux by agent items from triage regardless of story', () => {
|
|
231
231
|
const result = run([
|
|
232
232
|
makeIssue({ story: 'no story', status: 'In Tmux by agent' }),
|
|
233
233
|
makeIssue({ story: 'no story', status: 'in tmux by agent' }),
|
|
234
234
|
makeIssue({ story: 'no story', status: 'Unread' }),
|
|
235
235
|
]);
|
|
236
236
|
const statuses = result.triage.items.map((item) => item.status);
|
|
237
|
-
expect(statuses).toEqual([
|
|
238
|
-
'In Tmux by agent',
|
|
239
|
-
'in tmux by agent',
|
|
240
|
-
'Unread',
|
|
241
|
-
]);
|
|
237
|
+
expect(statuses).toEqual(['Unread']);
|
|
242
238
|
});
|
|
243
239
|
|
|
244
|
-
it('
|
|
240
|
+
it('excludes items with reactivation triggers from triage', () => {
|
|
245
241
|
const result = run([
|
|
246
242
|
makeIssue({
|
|
247
243
|
story: 'no story',
|
|
@@ -253,42 +249,42 @@ describe('GenerateConsoleListsUseCase', () => {
|
|
|
253
249
|
}),
|
|
254
250
|
makeIssue({ story: 'no story', nextActionHour: 9 }),
|
|
255
251
|
]);
|
|
256
|
-
expect(result.triage.items).toHaveLength(
|
|
252
|
+
expect(result.triage.items).toHaveLength(0);
|
|
257
253
|
});
|
|
258
254
|
|
|
259
|
-
it('
|
|
255
|
+
it('includes pull requests in triage when assigned, excludes unassigned and closed', () => {
|
|
260
256
|
const result = run([
|
|
261
257
|
makeIssue({ story: 'no story', isPr: true }),
|
|
262
258
|
makeIssue({ story: 'no story', assignees: ['someone-else'] }),
|
|
263
259
|
makeIssue({ story: 'no story', isClosed: true }),
|
|
264
260
|
]);
|
|
265
|
-
expect(result.triage.items).toHaveLength(
|
|
261
|
+
expect(result.triage.items).toHaveLength(1);
|
|
266
262
|
});
|
|
267
263
|
|
|
268
|
-
it('
|
|
264
|
+
it('includes all actionable items in triage including those with a real story or null story', () => {
|
|
269
265
|
const result = run([
|
|
270
266
|
makeIssue({ story: null, status: 'Awaiting Workspace' }),
|
|
271
267
|
makeIssue({ story: null, status: null }),
|
|
272
268
|
makeIssue({ story: 'regular / NO STORY' }),
|
|
273
269
|
makeIssue({ story: 'Story Alpha' }),
|
|
274
270
|
]);
|
|
275
|
-
expect(result.triage.items).toHaveLength(
|
|
271
|
+
expect(result.triage.items).toHaveLength(4);
|
|
276
272
|
});
|
|
277
273
|
|
|
278
|
-
it('
|
|
274
|
+
it('includes pull requests in triage, excludes unassigned and closed items with null story', () => {
|
|
279
275
|
const result = run([
|
|
280
276
|
makeIssue({ story: null, isPr: true }),
|
|
281
277
|
makeIssue({ story: null, assignees: ['someone-else'] }),
|
|
282
278
|
makeIssue({ story: null, isClosed: true }),
|
|
283
279
|
]);
|
|
284
|
-
expect(result.triage.items).toHaveLength(
|
|
280
|
+
expect(result.triage.items).toHaveLength(1);
|
|
285
281
|
});
|
|
286
282
|
|
|
287
|
-
it('
|
|
283
|
+
it('shows all actionable items in triage whatever status they carry, excluding In Tmux by agent', () => {
|
|
288
284
|
const result = run([
|
|
289
285
|
makeIssue({ story: 'no story', status: 'Unread' }),
|
|
290
286
|
makeIssue({ story: 'no story', status: 'Awaiting Workspace' }),
|
|
291
|
-
makeIssue({ story: 'no story', status:
|
|
287
|
+
makeIssue({ story: 'no story', status: 'In Tmux by agent' }),
|
|
292
288
|
makeIssue({ story: 'no story', status: 'Preparation' }),
|
|
293
289
|
makeIssue({ story: 'no story', status: 'Failed Preparation' }),
|
|
294
290
|
makeIssue({ story: 'no story', status: 'Awaiting Quality Check' }),
|
|
@@ -301,7 +297,6 @@ describe('GenerateConsoleListsUseCase', () => {
|
|
|
301
297
|
expect(result.triage.items.map((item) => item.status)).toEqual([
|
|
302
298
|
'Unread',
|
|
303
299
|
'Awaiting Workspace',
|
|
304
|
-
null,
|
|
305
300
|
'Preparation',
|
|
306
301
|
'Failed Preparation',
|
|
307
302
|
'Awaiting Quality Check',
|
|
@@ -313,11 +308,11 @@ describe('GenerateConsoleListsUseCase', () => {
|
|
|
313
308
|
]);
|
|
314
309
|
});
|
|
315
310
|
|
|
316
|
-
it('
|
|
311
|
+
it('shows items with any story in triage at every status except In Tmux by agent', () => {
|
|
317
312
|
const result = run([
|
|
318
313
|
makeIssue({ story: 'Story Alpha', status: 'Unread' }),
|
|
319
314
|
makeIssue({ story: 'Story Alpha', status: 'Awaiting Workspace' }),
|
|
320
|
-
makeIssue({ story: 'Story Alpha', status:
|
|
315
|
+
makeIssue({ story: 'Story Alpha', status: 'In Tmux by agent' }),
|
|
321
316
|
makeIssue({ story: 'Story Alpha', status: 'Preparation' }),
|
|
322
317
|
makeIssue({ story: 'Story Alpha', status: 'Failed Preparation' }),
|
|
323
318
|
makeIssue({ story: 'Story Alpha', status: 'Awaiting Quality Check' }),
|
|
@@ -327,7 +322,7 @@ describe('GenerateConsoleListsUseCase', () => {
|
|
|
327
322
|
makeIssue({ story: 'Story Alpha', status: 'Done' }),
|
|
328
323
|
makeIssue({ story: 'Story Alpha', status: 'Icebox' }),
|
|
329
324
|
]);
|
|
330
|
-
expect(result.triage.items).toHaveLength(
|
|
325
|
+
expect(result.triage.items).toHaveLength(10);
|
|
331
326
|
});
|
|
332
327
|
|
|
333
328
|
it('keeps a no-story item whose status is written in a different case', () => {
|
|
@@ -440,15 +435,15 @@ describe('GenerateConsoleListsUseCase', () => {
|
|
|
440
435
|
expect(allTabItems(result)).toHaveLength(1);
|
|
441
436
|
});
|
|
442
437
|
|
|
443
|
-
it('
|
|
438
|
+
it('hides a no-story In Tmux by agent issue from triage and all other tabs', () => {
|
|
444
439
|
const result = run([
|
|
445
440
|
makeIssue({
|
|
446
441
|
story: 'no story',
|
|
447
442
|
status: 'In Tmux by agent',
|
|
448
443
|
}),
|
|
449
444
|
]);
|
|
450
|
-
expect(result.triage.items).toHaveLength(
|
|
451
|
-
expect(allTabItems(result)).toHaveLength(
|
|
445
|
+
expect(result.triage.items).toHaveLength(0);
|
|
446
|
+
expect(allTabItems(result)).toHaveLength(0);
|
|
452
447
|
});
|
|
453
448
|
|
|
454
449
|
it('hides In Tmux by agent case-insensitively from every tab other than the workflow blocker tab', () => {
|
|
@@ -477,7 +472,7 @@ describe('GenerateConsoleListsUseCase', () => {
|
|
|
477
472
|
expect(
|
|
478
473
|
result['workflow-blocker'].items.map((item) => item.status).sort(),
|
|
479
474
|
).toEqual(['In Tmux by agent', 'In Tmux by human']);
|
|
480
|
-
expect(result.triage.items.map((item) => item.number)).toEqual([3]);
|
|
475
|
+
expect(result.triage.items.map((item) => item.number)).toEqual([3, 2]);
|
|
481
476
|
expect(
|
|
482
477
|
result.prs.items
|
|
483
478
|
.concat(result.triage.items)
|
|
@@ -219,14 +219,12 @@ export class GenerateConsoleListsUseCase {
|
|
|
219
219
|
storyOrder,
|
|
220
220
|
storyColors: this.buildStoryColorsString(storyOptions),
|
|
221
221
|
items: this.sortByStoryOrder(
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
issue,
|
|
227
|
-
relatedOpenPullRequestUrlsByIssueUrl.get(issue.url) ?? [],
|
|
228
|
-
),
|
|
222
|
+
actionableIssues.map((issue) =>
|
|
223
|
+
this.projectItem(
|
|
224
|
+
issue,
|
|
225
|
+
relatedOpenPullRequestUrlsByIssueUrl.get(issue.url) ?? [],
|
|
229
226
|
),
|
|
227
|
+
),
|
|
230
228
|
storyOrder,
|
|
231
229
|
),
|
|
232
230
|
},
|
|
@@ -241,12 +239,6 @@ export class GenerateConsoleListsUseCase {
|
|
|
241
239
|
};
|
|
242
240
|
};
|
|
243
241
|
|
|
244
|
-
private needsStory = (issue: Issue, assigneeLogin: string): boolean =>
|
|
245
|
-
issue.isClosed === false &&
|
|
246
|
-
issue.isPr === false &&
|
|
247
|
-
issue.assignees.includes(assigneeLogin) &&
|
|
248
|
-
(issue.story === null || issue.story.toLowerCase().includes('no story'));
|
|
249
|
-
|
|
250
242
|
private isActionable = (issue: Issue, assigneeLogin: string): boolean =>
|
|
251
243
|
issue.isClosed === false &&
|
|
252
244
|
issue.assignees.includes(assigneeLogin) &&
|
|
@@ -347,6 +347,7 @@ describe('spawn and finish sides agree on the reactivation trigger predicate', (
|
|
|
347
347
|
| 'setIssueAgentField'
|
|
348
348
|
| 'searchIssue'
|
|
349
349
|
| 'createNewIssue'
|
|
350
|
+
| 'updateNextActionDate'
|
|
350
351
|
>
|
|
351
352
|
>;
|
|
352
353
|
let notifyMockIssueCommentRepository: jest.Mocked<
|
|
@@ -455,6 +456,7 @@ describe('spawn and finish sides agree on the reactivation trigger predicate', (
|
|
|
455
456
|
setIssueAgentField: jest.fn().mockResolvedValue(undefined),
|
|
456
457
|
searchIssue: jest.fn().mockResolvedValue([]),
|
|
457
458
|
createNewIssue: jest.fn().mockResolvedValue(42),
|
|
459
|
+
updateNextActionDate: jest.fn().mockResolvedValue(undefined),
|
|
458
460
|
};
|
|
459
461
|
notifyMockIssueCommentRepository = {
|
|
460
462
|
getCommentsFromIssue: jest.fn().mockResolvedValue([
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import {
|
|
2
|
+
NEXT_STEP_AGENT_DISPATCH_REPEATED_MESSAGE_HEAD,
|
|
3
|
+
resolveNextStepAgentDispatchRepetition,
|
|
4
|
+
} from './resolveNextStepAgentDispatchRepetition';
|
|
5
|
+
|
|
6
|
+
const trustAll = (): boolean => true;
|
|
7
|
+
|
|
8
|
+
describe('resolveNextStepAgentDispatchRepetition', () => {
|
|
9
|
+
it('returns notRepeated when the agent field holds no value', () => {
|
|
10
|
+
expect(
|
|
11
|
+
resolveNextStepAgentDispatchRepetition({
|
|
12
|
+
agentFieldValue: null,
|
|
13
|
+
nextStepAgent: 'accounting',
|
|
14
|
+
commentsAfterLastAgentReport: [],
|
|
15
|
+
isTrustedAuthor: trustAll,
|
|
16
|
+
thresholdForAutoReject: 3,
|
|
17
|
+
}),
|
|
18
|
+
).toEqual({ type: 'notRepeated' });
|
|
19
|
+
});
|
|
20
|
+
|
|
21
|
+
it('returns notRepeated when the agent field holds another agent', () => {
|
|
22
|
+
expect(
|
|
23
|
+
resolveNextStepAgentDispatchRepetition({
|
|
24
|
+
agentFieldValue: 'triager',
|
|
25
|
+
nextStepAgent: 'accounting',
|
|
26
|
+
commentsAfterLastAgentReport: [],
|
|
27
|
+
isTrustedAuthor: trustAll,
|
|
28
|
+
thresholdForAutoReject: 3,
|
|
29
|
+
}),
|
|
30
|
+
).toEqual({ type: 'notRepeated' });
|
|
31
|
+
});
|
|
32
|
+
|
|
33
|
+
it('returns dispatchAgain with the attempt count when the declared agent is already assigned', () => {
|
|
34
|
+
const result = resolveNextStepAgentDispatchRepetition({
|
|
35
|
+
agentFieldValue: 'accounting',
|
|
36
|
+
nextStepAgent: 'accounting',
|
|
37
|
+
commentsAfterLastAgentReport: [],
|
|
38
|
+
isTrustedAuthor: trustAll,
|
|
39
|
+
thresholdForAutoReject: 3,
|
|
40
|
+
});
|
|
41
|
+
|
|
42
|
+
expect(result.type).toBe('dispatchAgain');
|
|
43
|
+
expect(result.type === 'dispatchAgain' ? result.comment : '').toContain(
|
|
44
|
+
'(1/3)',
|
|
45
|
+
);
|
|
46
|
+
});
|
|
47
|
+
|
|
48
|
+
it('matches the agent field and the declared agent ignoring case, spaces and hyphens', () => {
|
|
49
|
+
expect(
|
|
50
|
+
resolveNextStepAgentDispatchRepetition({
|
|
51
|
+
agentFieldValue: 'PR Reviewer',
|
|
52
|
+
nextStepAgent: 'pr-reviewer',
|
|
53
|
+
commentsAfterLastAgentReport: [],
|
|
54
|
+
isTrustedAuthor: trustAll,
|
|
55
|
+
thresholdForAutoReject: 3,
|
|
56
|
+
}).type,
|
|
57
|
+
).toBe('dispatchAgain');
|
|
58
|
+
});
|
|
59
|
+
|
|
60
|
+
it('counts only repetition comments written by a trusted author', () => {
|
|
61
|
+
const result = resolveNextStepAgentDispatchRepetition({
|
|
62
|
+
agentFieldValue: 'accounting',
|
|
63
|
+
nextStepAgent: 'accounting',
|
|
64
|
+
commentsAfterLastAgentReport: [
|
|
65
|
+
{
|
|
66
|
+
author: 'stranger',
|
|
67
|
+
content: `${NEXT_STEP_AGENT_DISPATCH_REPEATED_MESSAGE_HEAD} accounting`,
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
author: 'stranger',
|
|
71
|
+
content: `${NEXT_STEP_AGENT_DISPATCH_REPEATED_MESSAGE_HEAD} accounting`,
|
|
72
|
+
},
|
|
73
|
+
],
|
|
74
|
+
isTrustedAuthor: (author: string): boolean => author === 'bot',
|
|
75
|
+
thresholdForAutoReject: 3,
|
|
76
|
+
});
|
|
77
|
+
|
|
78
|
+
expect(result.type).toBe('dispatchAgain');
|
|
79
|
+
});
|
|
80
|
+
|
|
81
|
+
it('escalates once the repetition count reaches the auto reject threshold', () => {
|
|
82
|
+
const repeated = {
|
|
83
|
+
author: 'bot',
|
|
84
|
+
content: `${NEXT_STEP_AGENT_DISPATCH_REPEATED_MESSAGE_HEAD} accounting`,
|
|
85
|
+
};
|
|
86
|
+
|
|
87
|
+
const result = resolveNextStepAgentDispatchRepetition({
|
|
88
|
+
agentFieldValue: 'accounting',
|
|
89
|
+
nextStepAgent: 'accounting',
|
|
90
|
+
commentsAfterLastAgentReport: [repeated, repeated],
|
|
91
|
+
isTrustedAuthor: trustAll,
|
|
92
|
+
thresholdForAutoReject: 3,
|
|
93
|
+
});
|
|
94
|
+
|
|
95
|
+
expect(result.type).toBe('escalateToFailedPreparation');
|
|
96
|
+
});
|
|
97
|
+
});
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { normalizeProjectFieldName } from '../entities/ProjectFieldName';
|
|
2
|
+
|
|
3
|
+
export const NEXT_STEP_AGENT_DISPATCH_REPEATED_MESSAGE_HEAD =
|
|
4
|
+
'Next step agent dispatch repeated:';
|
|
5
|
+
|
|
6
|
+
export type NextStepAgentDispatchRepetition =
|
|
7
|
+
| { type: 'notRepeated' }
|
|
8
|
+
| { type: 'dispatchAgain'; comment: string }
|
|
9
|
+
| { type: 'escalateToFailedPreparation'; comment: string };
|
|
10
|
+
|
|
11
|
+
export const resolveNextStepAgentDispatchRepetition = <
|
|
12
|
+
CommentLike extends { author: string; content: string },
|
|
13
|
+
>(params: {
|
|
14
|
+
agentFieldValue: string | null;
|
|
15
|
+
nextStepAgent: string;
|
|
16
|
+
commentsAfterLastAgentReport: CommentLike[];
|
|
17
|
+
isTrustedAuthor: (author: string) => boolean;
|
|
18
|
+
thresholdForAutoReject: number;
|
|
19
|
+
}): NextStepAgentDispatchRepetition => {
|
|
20
|
+
if (
|
|
21
|
+
params.agentFieldValue === null ||
|
|
22
|
+
normalizeProjectFieldName(params.agentFieldValue) !==
|
|
23
|
+
normalizeProjectFieldName(params.nextStepAgent)
|
|
24
|
+
) {
|
|
25
|
+
return { type: 'notRepeated' };
|
|
26
|
+
}
|
|
27
|
+
const previousRepetitions = params.commentsAfterLastAgentReport.filter(
|
|
28
|
+
(comment) =>
|
|
29
|
+
params.isTrustedAuthor(comment.author) &&
|
|
30
|
+
comment.content.startsWith(
|
|
31
|
+
NEXT_STEP_AGENT_DISPATCH_REPEATED_MESSAGE_HEAD,
|
|
32
|
+
),
|
|
33
|
+
).length;
|
|
34
|
+
const repetition = previousRepetitions + 1;
|
|
35
|
+
if (repetition >= params.thresholdForAutoReject) {
|
|
36
|
+
return {
|
|
37
|
+
type: 'escalateToFailedPreparation',
|
|
38
|
+
comment: `${NEXT_STEP_AGENT_DISPATCH_REPEATED_MESSAGE_HEAD} ${params.nextStepAgent}
|
|
39
|
+
|
|
40
|
+
Failed to receive a report from the dispatched agent for ${params.thresholdForAutoReject} times`,
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
return {
|
|
44
|
+
type: 'dispatchAgain',
|
|
45
|
+
comment: `${NEXT_STEP_AGENT_DISPATCH_REPEATED_MESSAGE_HEAD} ${params.nextStepAgent}
|
|
46
|
+
|
|
47
|
+
The latest agent report names this agent as the next step and the agent field already holds it, so the previous dispatch to it ended without a report. Dispatching it again (${repetition}/${params.thresholdForAutoReject}).`,
|
|
48
|
+
};
|
|
49
|
+
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/adapter/entry-points/cli/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EACL,UAAU,EACV,cAAc,EACd,wBAAwB,EACxB,YAAY,EACZ,kBAAkB,GACnB,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/adapter/entry-points/cli/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EACL,UAAU,EACV,cAAc,EACd,wBAAwB,EACxB,YAAY,EACZ,kBAAkB,GACnB,MAAM,iBAAiB,CAAC;AAkMzB,eAAO,MAAM,OAAO,SAAgB,CAAC;AAqiCrC,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"}
|
|
@@ -17,7 +17,7 @@ export declare class NotifyFinishedIssuePreparationUseCase {
|
|
|
17
17
|
private readonly consoleTabsRepository?;
|
|
18
18
|
private readonly issueRejectionEvaluator;
|
|
19
19
|
private readonly changeTargetPullRequestApprover;
|
|
20
|
-
constructor(projectRepository: Pick<ProjectRepository, 'getByUrl' | 'updateAgentList' | 'createField'>, issueRepository: Pick<IssueRepository, 'get' | 'update' | 'updateStatus' | 'updateLabels' | 'getOrCreateLabel' | 'findRelatedOpenPRs' | 'getStoryObjectMap' | 'getOpenPullRequest' | 'getPullRequestChangedFilePaths' | 'approvePullRequest' | 'requestChangesWithInlineComment' | 'setDependedIssueUrl' | 'setIssueAgentField' | 'searchIssue' | 'createNewIssue'>, issueCommentRepository: Pick<IssueCommentRepository, 'getCommentsFromIssue' | 'createComment'>, webhookRepository: Pick<WebhookRepository, 'sendGetRequest'>, consoleTabsRepository?: (ConsoleTabsRepository | null) | undefined);
|
|
20
|
+
constructor(projectRepository: Pick<ProjectRepository, 'getByUrl' | 'updateAgentList' | 'createField'>, issueRepository: Pick<IssueRepository, 'get' | 'update' | 'updateStatus' | 'updateLabels' | 'getOrCreateLabel' | 'findRelatedOpenPRs' | 'getStoryObjectMap' | 'getOpenPullRequest' | 'getPullRequestChangedFilePaths' | 'approvePullRequest' | 'requestChangesWithInlineComment' | 'setDependedIssueUrl' | 'setIssueAgentField' | 'searchIssue' | 'createNewIssue' | 'updateNextActionDate'>, issueCommentRepository: Pick<IssueCommentRepository, 'getCommentsFromIssue' | 'createComment'>, webhookRepository: Pick<WebhookRepository, 'sendGetRequest'>, consoleTabsRepository?: (ConsoleTabsRepository | null) | undefined);
|
|
21
21
|
run: (params: {
|
|
22
22
|
projectUrl: string;
|
|
23
23
|
issueUrl: string;
|
|
@@ -32,7 +32,9 @@ export declare class NotifyFinishedIssuePreparationUseCase {
|
|
|
32
32
|
sessionErrorLine?: string | null;
|
|
33
33
|
manager?: string | null;
|
|
34
34
|
developerAgentName?: string | null;
|
|
35
|
+
deferPreparation?: boolean | null;
|
|
35
36
|
}) => Promise<void>;
|
|
37
|
+
private handleTransientFailureDeferral;
|
|
36
38
|
private handleMissingAgentDefinition;
|
|
37
39
|
private isAuthorTrusted;
|
|
38
40
|
private collectRejections;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NotifyFinishedIssuePreparationUseCase.d.ts","sourceRoot":"","sources":["../../../src/domain/usecases/NotifyFinishedIssuePreparationUseCase.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AACvE,OAAO,EAAE,iBAAiB,EAAE,MAAM,wCAAwC,CAAC;AAC3E,OAAO,EAAE,sBAAsB,EAAE,MAAM,6CAA6C,CAAC;AACrF,OAAO,EAAE,iBAAiB,EAAE,MAAM,wCAAwC,CAAC;AAC3E,OAAO,EAAE,qBAAqB,EAAE,MAAM,4CAA4C,CAAC;
|
|
1
|
+
{"version":3,"file":"NotifyFinishedIssuePreparationUseCase.d.ts","sourceRoot":"","sources":["../../../src/domain/usecases/NotifyFinishedIssuePreparationUseCase.ts"],"names":[],"mappings":"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"}
|
|
@@ -22,7 +22,6 @@ export declare class RevertOrphanedPreparationUseCase {
|
|
|
22
22
|
private isStillInPreparation;
|
|
23
23
|
private evaluateOutcome;
|
|
24
24
|
private resolveOpenPrsForPrItem;
|
|
25
|
-
private resolveNextStepAgent;
|
|
26
25
|
private reportBodyHasNextStep;
|
|
27
26
|
private isOrphanedIssue;
|
|
28
27
|
private isAwLogStale;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RevertOrphanedPreparationUseCase.d.ts","sourceRoot":"","sources":["../../../src/domain/usecases/RevertOrphanedPreparationUseCase.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EAEhB,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EAAE,sBAAsB,EAAE,MAAM,6CAA6C,CAAC;AACrF,OAAO,EAAE,iBAAiB,EAAE,MAAM,wCAAwC,CAAC;AAC3E,OAAO,EAAE,kBAAkB,EAAE,MAAM,yCAAyC,CAAC;
|
|
1
|
+
{"version":3,"file":"RevertOrphanedPreparationUseCase.d.ts","sourceRoot":"","sources":["../../../src/domain/usecases/RevertOrphanedPreparationUseCase.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EAEhB,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EAAE,sBAAsB,EAAE,MAAM,6CAA6C,CAAC;AACrF,OAAO,EAAE,iBAAiB,EAAE,MAAM,wCAAwC,CAAC;AAC3E,OAAO,EAAE,kBAAkB,EAAE,MAAM,yCAAyC,CAAC;AA6B7E,qBAAa,gCAAgC;IAEzC,QAAQ,CAAC,iBAAiB,EAAE,IAAI,CAC9B,iBAAiB,EACf,oBAAoB,GACpB,YAAY,GACZ,aAAa,GACb,UAAU,GACV,iBAAiB,CACpB;IACD,QAAQ,CAAC,eAAe,EAAE,IAAI,CAC5B,eAAe,EACb,cAAc,GACd,cAAc,GACd,oBAAoB,GACpB,oBAAoB,GACpB,KAAK,GACL,oBAAoB,CACvB;IACD,QAAQ,CAAC,sBAAsB,EAAE,IAAI,CACnC,sBAAsB,EACtB,sBAAsB,GAAG,eAAe,CACzC;IACD,QAAQ,CAAC,kBAAkB,EAAE,kBAAkB;gBArBtC,iBAAiB,EAAE,IAAI,CAC9B,iBAAiB,EACf,oBAAoB,GACpB,YAAY,GACZ,aAAa,GACb,UAAU,GACV,iBAAiB,CACpB,EACQ,eAAe,EAAE,IAAI,CAC5B,eAAe,EACb,cAAc,GACd,cAAc,GACd,oBAAoB,GACpB,oBAAoB,GACpB,KAAK,GACL,oBAAoB,CACvB,EACQ,sBAAsB,EAAE,IAAI,CACnC,sBAAsB,EACtB,sBAAsB,GAAG,eAAe,CACzC,EACQ,kBAAkB,EAAE,kBAAkB;IAGjD,GAAG,GAAU,QAAQ;QACnB,UAAU,EAAE,MAAM,CAAC;QACnB,8BAA8B,EAAE,MAAM,CAAC;QACvC,sBAAsB,EAAE,MAAM,CAAC;QAC/B,kBAAkB,CAAC,EAAE,MAAM,CAAC;QAC5B,0BAA0B,CAAC,EAAE,MAAM,CAAC;QACpC,0BAA0B,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAC3C,oBAAoB,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;QACvC,6BAA6B,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;QAChD,mBAAmB,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;KACvC,KAAG,OAAO,CAAC,IAAI,CAAC,CAyLf;IAEF,OAAO,CAAC,oBAAoB,CAqB1B;IAEF,OAAO,CAAC,eAAe,CA+FrB;IAEF,OAAO,CAAC,uBAAuB,CAQ7B;IAEF,OAAO,CAAC,qBAAqB,CAyB3B;IAEF,OAAO,CAAC,eAAe,CA6BrB;IAEF,OAAO,CAAC,YAAY,CA+BlB;CACH"}
|
|
@@ -79,7 +79,6 @@ export type GenerateConsoleListsInput = {
|
|
|
79
79
|
};
|
|
80
80
|
export declare class GenerateConsoleListsUseCase {
|
|
81
81
|
run: (input: GenerateConsoleListsInput) => ConsoleLists;
|
|
82
|
-
private needsStory;
|
|
83
82
|
private isActionable;
|
|
84
83
|
private workflowBlockerSelector;
|
|
85
84
|
private buildRelatedOpenPullRequestUrlsByIssueUrl;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GenerateConsoleListsUseCase.d.ts","sourceRoot":"","sources":["../../../../src/domain/usecases/console/GenerateConsoleListsUseCase.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"GenerateConsoleListsUseCase.d.ts","sourceRoot":"","sources":["../../../../src/domain/usecases/console/GenerateConsoleListsUseCase.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export declare const NEXT_STEP_AGENT_DISPATCH_REPEATED_MESSAGE_HEAD = "Next step agent dispatch repeated:";
|
|
2
|
+
export type NextStepAgentDispatchRepetition = {
|
|
3
|
+
type: 'notRepeated';
|
|
4
|
+
} | {
|
|
5
|
+
type: 'dispatchAgain';
|
|
6
|
+
comment: string;
|
|
7
|
+
} | {
|
|
8
|
+
type: 'escalateToFailedPreparation';
|
|
9
|
+
comment: string;
|
|
10
|
+
};
|
|
11
|
+
export declare const resolveNextStepAgentDispatchRepetition: <CommentLike extends {
|
|
12
|
+
author: string;
|
|
13
|
+
content: string;
|
|
14
|
+
}>(params: {
|
|
15
|
+
agentFieldValue: string | null;
|
|
16
|
+
nextStepAgent: string;
|
|
17
|
+
commentsAfterLastAgentReport: CommentLike[];
|
|
18
|
+
isTrustedAuthor: (author: string) => boolean;
|
|
19
|
+
thresholdForAutoReject: number;
|
|
20
|
+
}) => NextStepAgentDispatchRepetition;
|
|
21
|
+
//# sourceMappingURL=resolveNextStepAgentDispatchRepetition.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolveNextStepAgentDispatchRepetition.d.ts","sourceRoot":"","sources":["../../../src/domain/usecases/resolveNextStepAgentDispatchRepetition.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,8CAA8C,uCACrB,CAAC;AAEvC,MAAM,MAAM,+BAA+B,GACvC;IAAE,IAAI,EAAE,aAAa,CAAA;CAAE,GACvB;IAAE,IAAI,EAAE,eAAe,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAC1C;IAAE,IAAI,EAAE,6BAA6B,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAE7D,eAAO,MAAM,sCAAsC,GACjD,WAAW,SAAS;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,EACvD,QAAQ;IACR,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,aAAa,EAAE,MAAM,CAAC;IACtB,4BAA4B,EAAE,WAAW,EAAE,CAAC;IAC5C,eAAe,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC;IAC7C,sBAAsB,EAAE,MAAM,CAAC;CAChC,KAAG,+BA8BH,CAAC"}
|