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.
Files changed (33) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/README.md +1 -0
  3. package/bin/adapter/entry-points/cli/index.js +2 -0
  4. package/bin/adapter/entry-points/cli/index.js.map +1 -1
  5. package/bin/domain/usecases/NotifyFinishedIssuePreparationUseCase.js +36 -0
  6. package/bin/domain/usecases/NotifyFinishedIssuePreparationUseCase.js.map +1 -1
  7. package/bin/domain/usecases/RevertOrphanedPreparationUseCase.js +23 -7
  8. package/bin/domain/usecases/RevertOrphanedPreparationUseCase.js.map +1 -1
  9. package/bin/domain/usecases/console/GenerateConsoleListsUseCase.js +1 -7
  10. package/bin/domain/usecases/console/GenerateConsoleListsUseCase.js.map +1 -1
  11. package/bin/domain/usecases/resolveNextStepAgentDispatchRepetition.js +31 -0
  12. package/bin/domain/usecases/resolveNextStepAgentDispatchRepetition.js.map +1 -0
  13. package/package.json +1 -1
  14. package/src/adapter/entry-points/cli/index.test.ts +2 -0
  15. package/src/adapter/entry-points/cli/index.ts +6 -0
  16. package/src/domain/usecases/NotifyFinishedIssuePreparationUseCase.test.ts +215 -0
  17. package/src/domain/usecases/NotifyFinishedIssuePreparationUseCase.ts +79 -1
  18. package/src/domain/usecases/RevertOrphanedPreparationUseCase.test.ts +128 -0
  19. package/src/domain/usecases/RevertOrphanedPreparationUseCase.ts +43 -15
  20. package/src/domain/usecases/console/GenerateConsoleListsUseCase.test.ts +21 -26
  21. package/src/domain/usecases/console/GenerateConsoleListsUseCase.ts +5 -13
  22. package/src/domain/usecases/issueReactivationTriggerIsPending.test.ts +2 -0
  23. package/src/domain/usecases/resolveNextStepAgentDispatchRepetition.test.ts +97 -0
  24. package/src/domain/usecases/resolveNextStepAgentDispatchRepetition.ts +49 -0
  25. package/types/adapter/entry-points/cli/index.d.ts.map +1 -1
  26. package/types/domain/usecases/NotifyFinishedIssuePreparationUseCase.d.ts +3 -1
  27. package/types/domain/usecases/NotifyFinishedIssuePreparationUseCase.d.ts.map +1 -1
  28. package/types/domain/usecases/RevertOrphanedPreparationUseCase.d.ts +0 -1
  29. package/types/domain/usecases/RevertOrphanedPreparationUseCase.d.ts.map +1 -1
  30. package/types/domain/usecases/console/GenerateConsoleListsUseCase.d.ts +0 -1
  31. package/types/domain/usecases/console/GenerateConsoleListsUseCase.d.ts.map +1 -1
  32. package/types/domain/usecases/resolveNextStepAgentDispatchRepetition.d.ts +21 -0
  33. 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 no-story items case-insensitively for triage', () => {
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(3);
227
+ expect(result.triage.items).toHaveLength(4);
228
228
  });
229
229
 
230
- it('keeps no-story items whose status is In Tmux by agent', () => {
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('keeps a no-story item that is blocked or scheduled to resume later', () => {
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(3);
252
+ expect(result.triage.items).toHaveLength(0);
257
253
  });
258
254
 
259
- it('keeps a pull request and another person’s item off the triage tab', () => {
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(0);
261
+ expect(result.triage.items).toHaveLength(1);
266
262
  });
267
263
 
268
- it('keeps an item whose story field is empty on the triage tab', () => {
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(3);
271
+ expect(result.triage.items).toHaveLength(4);
276
272
  });
277
273
 
278
- it('keeps a pull request, another person’s item and a closed item off the triage tab when the story field is empty', () => {
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(0);
280
+ expect(result.triage.items).toHaveLength(1);
285
281
  });
286
282
 
287
- it('keeps every no-story item whatever status it carries', () => {
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: null }),
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('keeps an item whose story is not a no-story name off the triage tab at every status', () => {
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: null }),
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(0);
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('shows a no-story In Tmux by agent issue on the triage tab and nowhere else', () => {
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(1);
451
- expect(allTabItems(result)).toHaveLength(1);
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
- issues
223
- .filter((issue) => this.needsStory(issue, assigneeLogin))
224
- .map((issue) =>
225
- this.projectItem(
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;AAiMzB,eAAO,MAAM,OAAO,SAAgB,CAAC;AAgiCrC,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":";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":"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"}
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;AA4B7E,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,CAkJf;IAEF,OAAO,CAAC,oBAAoB,CAqB1B;IAEF,OAAO,CAAC,eAAe,CA+FrB;IAEF,OAAO,CAAC,uBAAuB,CAQ7B;IAEF,OAAO,CAAC,oBAAoB,CAU1B;IAEF,OAAO,CAAC,qBAAqB,CAyB3B;IAEF,OAAO,CAAC,eAAe,CA6BrB;IAEF,OAAO,CAAC,YAAY,CA+BlB;CACH"}
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"}