github-issue-tower-defence-management 1.37.1 → 1.38.1

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 (29) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/README.md +5 -0
  3. package/bin/adapter/entry-points/cli/index.js +19 -0
  4. package/bin/adapter/entry-points/cli/index.js.map +1 -1
  5. package/bin/adapter/entry-points/handlers/HandleScheduledEventUseCaseHandler.js +9 -3
  6. package/bin/adapter/entry-points/handlers/HandleScheduledEventUseCaseHandler.js.map +1 -1
  7. package/bin/domain/usecases/HandleScheduledEventUseCase.js +11 -1
  8. package/bin/domain/usecases/HandleScheduledEventUseCase.js.map +1 -1
  9. package/bin/domain/usecases/RevertOrphanedPreparationUseCase.js +36 -0
  10. package/bin/domain/usecases/RevertOrphanedPreparationUseCase.js.map +1 -0
  11. package/bin/domain/usecases/SetNoStoryIssueToStoryUseCase.js +2 -2
  12. package/bin/domain/usecases/SetNoStoryIssueToStoryUseCase.js.map +1 -1
  13. package/package.json +1 -1
  14. package/src/adapter/entry-points/cli/index.ts +37 -0
  15. package/src/adapter/entry-points/handlers/HandleScheduledEventUseCaseHandler.ts +8 -0
  16. package/src/domain/usecases/HandleScheduledEventUseCase.test.ts +4 -0
  17. package/src/domain/usecases/HandleScheduledEventUseCase.ts +14 -0
  18. package/src/domain/usecases/RevertOrphanedPreparationUseCase.test.ts +302 -0
  19. package/src/domain/usecases/RevertOrphanedPreparationUseCase.ts +72 -0
  20. package/src/domain/usecases/SetNoStoryIssueToStoryUseCase.test.ts +372 -0
  21. package/src/domain/usecases/SetNoStoryIssueToStoryUseCase.ts +4 -2
  22. package/types/adapter/entry-points/cli/index.d.ts +1 -0
  23. package/types/adapter/entry-points/cli/index.d.ts.map +1 -1
  24. package/types/adapter/entry-points/handlers/HandleScheduledEventUseCaseHandler.d.ts.map +1 -1
  25. package/types/domain/usecases/HandleScheduledEventUseCase.d.ts +4 -1
  26. package/types/domain/usecases/HandleScheduledEventUseCase.d.ts.map +1 -1
  27. package/types/domain/usecases/RevertOrphanedPreparationUseCase.d.ts +17 -0
  28. package/types/domain/usecases/RevertOrphanedPreparationUseCase.d.ts.map +1 -0
  29. package/types/domain/usecases/SetNoStoryIssueToStoryUseCase.d.ts.map +1 -1
@@ -0,0 +1,372 @@
1
+ import { mock } from 'jest-mock-extended';
2
+ import { SetNoStoryIssueToStoryUseCase } from './SetNoStoryIssueToStoryUseCase';
3
+ import { IssueRepository } from './adapter-interfaces/IssueRepository';
4
+ import { Issue } from '../entities/Issue';
5
+ import { Project } from '../entities/Project';
6
+
7
+ describe('SetNoStoryIssueToStoryUseCase', () => {
8
+ const mockIssueRepository = mock<IssueRepository>();
9
+
10
+ const basicStory = {
11
+ name: 'Story Field',
12
+ fieldId: 'storyFieldId',
13
+ databaseId: 123,
14
+ stories: [
15
+ {
16
+ id: 'noStoryId',
17
+ name: 'regular / NO STORY',
18
+ color: 'GRAY' as const,
19
+ description: '',
20
+ },
21
+ {
22
+ id: 'highPriorityId',
23
+ name: 'regular / high priority',
24
+ color: 'RED' as const,
25
+ description: '',
26
+ },
27
+ ],
28
+ workflowManagementStory: {
29
+ id: 'workflowManagementStoryId',
30
+ name: 'workflow management',
31
+ },
32
+ };
33
+
34
+ const basicProject: Project = {
35
+ ...mock<Project>(),
36
+ story: basicStory,
37
+ };
38
+
39
+ const targetDate = new Date('2000-01-01T01:00:00Z');
40
+
41
+ let useCase: SetNoStoryIssueToStoryUseCase;
42
+
43
+ beforeEach(() => {
44
+ jest.clearAllMocks();
45
+ jest.useFakeTimers();
46
+ useCase = new SetNoStoryIssueToStoryUseCase(mockIssueRepository);
47
+ });
48
+
49
+ afterEach(() => {
50
+ jest.useRealTimers();
51
+ });
52
+
53
+ describe('run', () => {
54
+ it('should do nothing when project has no story field', async () => {
55
+ const projectWithoutStory: Project = { ...basicProject, story: null };
56
+
57
+ await useCase.run({
58
+ targetDates: [targetDate],
59
+ project: projectWithoutStory,
60
+ issues: [
61
+ {
62
+ ...mock<Issue>(),
63
+ labels: [],
64
+ story: null,
65
+ state: 'OPEN',
66
+ nextActionDate: null,
67
+ nextActionHour: null,
68
+ },
69
+ ],
70
+ cacheUsed: false,
71
+ });
72
+
73
+ expect(mockIssueRepository.updateStory).not.toHaveBeenCalled();
74
+ });
75
+
76
+ it('should do nothing when cacheUsed is true', async () => {
77
+ await useCase.run({
78
+ targetDates: [targetDate],
79
+ project: basicProject,
80
+ issues: [
81
+ {
82
+ ...mock<Issue>(),
83
+ labels: [],
84
+ story: null,
85
+ state: 'OPEN',
86
+ nextActionDate: null,
87
+ nextActionHour: null,
88
+ },
89
+ ],
90
+ cacheUsed: true,
91
+ });
92
+
93
+ expect(mockIssueRepository.updateStory).not.toHaveBeenCalled();
94
+ });
95
+
96
+ it('should do nothing when no target date has minutes === 0', async () => {
97
+ const nonHourDate = new Date('2000-01-01T01:30:00Z');
98
+
99
+ await useCase.run({
100
+ targetDates: [nonHourDate],
101
+ project: basicProject,
102
+ issues: [
103
+ {
104
+ ...mock<Issue>(),
105
+ labels: [],
106
+ story: null,
107
+ state: 'OPEN',
108
+ nextActionDate: null,
109
+ nextActionHour: null,
110
+ },
111
+ ],
112
+ cacheUsed: false,
113
+ });
114
+
115
+ expect(mockIssueRepository.updateStory).not.toHaveBeenCalled();
116
+ });
117
+
118
+ it('should do nothing when project story has no stories', async () => {
119
+ const projectWithEmptyStories: Project = {
120
+ ...basicProject,
121
+ story: {
122
+ ...basicStory,
123
+ stories: [],
124
+ },
125
+ };
126
+
127
+ await useCase.run({
128
+ targetDates: [targetDate],
129
+ project: projectWithEmptyStories,
130
+ issues: [
131
+ {
132
+ ...mock<Issue>(),
133
+ labels: [],
134
+ story: null,
135
+ state: 'OPEN',
136
+ nextActionDate: null,
137
+ nextActionHour: null,
138
+ },
139
+ ],
140
+ cacheUsed: false,
141
+ });
142
+
143
+ expect(mockIssueRepository.updateStory).not.toHaveBeenCalled();
144
+ });
145
+
146
+ it('should assign first story to eligible issue with no story and no story: labels', async () => {
147
+ const issue: Issue = {
148
+ ...mock<Issue>(),
149
+ labels: [],
150
+ story: null,
151
+ state: 'OPEN',
152
+ nextActionDate: null,
153
+ nextActionHour: null,
154
+ };
155
+
156
+ const promise = useCase.run({
157
+ targetDates: [targetDate],
158
+ project: basicProject,
159
+ issues: [issue],
160
+ cacheUsed: false,
161
+ });
162
+ await jest.runAllTimersAsync();
163
+ await promise;
164
+
165
+ expect(mockIssueRepository.updateStory.mock.calls).toEqual([
166
+ [{ ...basicProject, story: basicProject.story }, issue, 'noStoryId'],
167
+ ]);
168
+ });
169
+
170
+ it('should skip issue that has a story: label', async () => {
171
+ const issue: Issue = {
172
+ ...mock<Issue>(),
173
+ labels: ['story:high-priority'],
174
+ story: null,
175
+ state: 'OPEN',
176
+ nextActionDate: null,
177
+ nextActionHour: null,
178
+ };
179
+
180
+ await useCase.run({
181
+ targetDates: [targetDate],
182
+ project: basicProject,
183
+ issues: [issue],
184
+ cacheUsed: false,
185
+ });
186
+
187
+ expect(mockIssueRepository.updateStory).not.toHaveBeenCalled();
188
+ });
189
+
190
+ it('should skip issue that has a story:workflow-management label', async () => {
191
+ const issue: Issue = {
192
+ ...mock<Issue>(),
193
+ labels: ['story:workflow-management'],
194
+ story: null,
195
+ state: 'OPEN',
196
+ nextActionDate: null,
197
+ nextActionHour: null,
198
+ };
199
+
200
+ await useCase.run({
201
+ targetDates: [targetDate],
202
+ project: basicProject,
203
+ issues: [issue],
204
+ cacheUsed: false,
205
+ });
206
+
207
+ expect(mockIssueRepository.updateStory).not.toHaveBeenCalled();
208
+ });
209
+
210
+ it('should skip issue that has a story: label with uppercase prefix', async () => {
211
+ const issue: Issue = {
212
+ ...mock<Issue>(),
213
+ labels: ['STORY:high-priority'],
214
+ story: null,
215
+ state: 'OPEN',
216
+ nextActionDate: null,
217
+ nextActionHour: null,
218
+ };
219
+
220
+ await useCase.run({
221
+ targetDates: [targetDate],
222
+ project: basicProject,
223
+ issues: [issue],
224
+ cacheUsed: false,
225
+ });
226
+
227
+ expect(mockIssueRepository.updateStory).not.toHaveBeenCalled();
228
+ });
229
+
230
+ it('should skip issue that already has a story assigned', async () => {
231
+ const issue: Issue = {
232
+ ...mock<Issue>(),
233
+ labels: [],
234
+ story: 'regular / NO STORY',
235
+ state: 'OPEN',
236
+ nextActionDate: null,
237
+ nextActionHour: null,
238
+ };
239
+
240
+ await useCase.run({
241
+ targetDates: [targetDate],
242
+ project: basicProject,
243
+ issues: [issue],
244
+ cacheUsed: false,
245
+ });
246
+
247
+ expect(mockIssueRepository.updateStory).not.toHaveBeenCalled();
248
+ });
249
+
250
+ it('should skip CLOSED issue', async () => {
251
+ const issue: Issue = {
252
+ ...mock<Issue>(),
253
+ labels: [],
254
+ story: null,
255
+ state: 'CLOSED',
256
+ nextActionDate: null,
257
+ nextActionHour: null,
258
+ };
259
+
260
+ await useCase.run({
261
+ targetDates: [targetDate],
262
+ project: basicProject,
263
+ issues: [issue],
264
+ cacheUsed: false,
265
+ });
266
+
267
+ expect(mockIssueRepository.updateStory).not.toHaveBeenCalled();
268
+ });
269
+
270
+ it('should skip issue with nextActionDate in the future', async () => {
271
+ const futureDate = new Date('2000-01-02T00:00:00Z');
272
+ const issue: Issue = {
273
+ ...mock<Issue>(),
274
+ labels: [],
275
+ story: null,
276
+ state: 'OPEN',
277
+ nextActionDate: futureDate,
278
+ nextActionHour: null,
279
+ };
280
+
281
+ await useCase.run({
282
+ targetDates: [targetDate],
283
+ project: basicProject,
284
+ issues: [issue],
285
+ cacheUsed: false,
286
+ });
287
+
288
+ expect(mockIssueRepository.updateStory).not.toHaveBeenCalled();
289
+ });
290
+
291
+ it('should skip issue with nextActionHour set', async () => {
292
+ const issue: Issue = {
293
+ ...mock<Issue>(),
294
+ labels: [],
295
+ story: null,
296
+ state: 'OPEN',
297
+ nextActionDate: null,
298
+ nextActionHour: 9,
299
+ };
300
+
301
+ await useCase.run({
302
+ targetDates: [targetDate],
303
+ project: basicProject,
304
+ issues: [issue],
305
+ cacheUsed: false,
306
+ });
307
+
308
+ expect(mockIssueRepository.updateStory).not.toHaveBeenCalled();
309
+ });
310
+
311
+ it('should process issue with nextActionDate equal to or before target date', async () => {
312
+ const pastDate = new Date('2000-01-01T00:00:00Z');
313
+ const issue: Issue = {
314
+ ...mock<Issue>(),
315
+ labels: [],
316
+ story: null,
317
+ state: 'OPEN',
318
+ nextActionDate: pastDate,
319
+ nextActionHour: null,
320
+ };
321
+
322
+ const promise = useCase.run({
323
+ targetDates: [targetDate],
324
+ project: basicProject,
325
+ issues: [issue],
326
+ cacheUsed: false,
327
+ });
328
+ await jest.runAllTimersAsync();
329
+ await promise;
330
+
331
+ expect(mockIssueRepository.updateStory.mock.calls).toEqual([
332
+ [{ ...basicProject, story: basicProject.story }, issue, 'noStoryId'],
333
+ ]);
334
+ });
335
+
336
+ it('should process multiple eligible issues and skip those with story: labels', async () => {
337
+ const eligibleIssue: Issue = {
338
+ ...mock<Issue>(),
339
+ labels: [],
340
+ story: null,
341
+ state: 'OPEN',
342
+ nextActionDate: null,
343
+ nextActionHour: null,
344
+ };
345
+ const issueWithStoryLabel: Issue = {
346
+ ...mock<Issue>(),
347
+ labels: ['story:high-priority'],
348
+ story: null,
349
+ state: 'OPEN',
350
+ nextActionDate: null,
351
+ nextActionHour: null,
352
+ };
353
+
354
+ const promise = useCase.run({
355
+ targetDates: [targetDate],
356
+ project: basicProject,
357
+ issues: [eligibleIssue, issueWithStoryLabel],
358
+ cacheUsed: false,
359
+ });
360
+ await jest.runAllTimersAsync();
361
+ await promise;
362
+
363
+ expect(mockIssueRepository.updateStory.mock.calls).toEqual([
364
+ [
365
+ { ...basicProject, story: basicProject.story },
366
+ eligibleIssue,
367
+ 'noStoryId',
368
+ ],
369
+ ]);
370
+ });
371
+ });
372
+ });
@@ -22,11 +22,13 @@ export class SetNoStoryIssueToStoryUseCase {
22
22
  const isTargetIssue = (issue: Issue): boolean => {
23
23
  return (
24
24
  issue.story === null &&
25
+ !issue.labels.some((label) =>
26
+ label.toLowerCase().startsWith('story:'),
27
+ ) &&
25
28
  (issue.nextActionDate === null ||
26
29
  issue.nextActionDate.getTime() <= input.targetDates[0].getTime()) &&
27
30
  issue.nextActionHour === null &&
28
- issue.state === 'OPEN' &&
29
- issue.story === null
31
+ issue.state === 'OPEN'
30
32
  );
31
33
  };
32
34
  const firstStory = input.project.story?.stories[0];
@@ -12,6 +12,7 @@ type ConfigFile = {
12
12
  thresholdForAutoReject?: number;
13
13
  workflowBlockerResolvedWebhookUrl?: string;
14
14
  projectName?: string;
15
+ preparationProcessCheckCommand?: string;
15
16
  };
16
17
  export declare const loadConfigFile: (configFilePath: string) => ConfigFile;
17
18
  export declare const parseProjectReadmeConfig: (readme: string) => ConfigFile;
@@ -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;AAoBpC,KAAK,UAAU,GAAG;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,2BAA2B,CAAC,EAAE,MAAM,CAAC;IACrC,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,0BAA0B,CAAC,EAAE,MAAM,CAAC;IACpC,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,iCAAiC,CAAC,EAAE,MAAM,CAAC;IAC3C,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AA2CF,eAAO,MAAM,cAAc,GAAI,gBAAgB,MAAM,KAAG,UAuCvD,CAAC;AAEF,eAAO,MAAM,wBAAwB,GAAI,QAAQ,MAAM,KAAG,UA2CzD,CAAC;AAEF,eAAO,MAAM,YAAY,GACvB,YAAY,UAAU,EACtB,cAAc,UAAU,EACxB,iBAAiB,UAAU,KAC1B,UAuCD,CAAC;AAkBH,eAAO,MAAM,kBAAkB,GAC7B,YAAY,MAAM,EAClB,OAAO,MAAM,KACZ,OAAO,CAAC,MAAM,GAAG,IAAI,CAyDvB,CAAC;AAsBF,eAAO,MAAM,OAAO,SAAgB,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;AAqBpC,KAAK,UAAU,GAAG;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,2BAA2B,CAAC,EAAE,MAAM,CAAC;IACrC,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,0BAA0B,CAAC,EAAE,MAAM,CAAC;IACpC,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,iCAAiC,CAAC,EAAE,MAAM,CAAC;IAC3C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,8BAA8B,CAAC,EAAE,MAAM,CAAC;CACzC,CAAC;AA4CF,eAAO,MAAM,cAAc,GAAI,gBAAgB,MAAM,KAAG,UA2CvD,CAAC;AAEF,eAAO,MAAM,wBAAwB,GAAI,QAAQ,MAAM,KAAG,UA+CzD,CAAC;AAEF,eAAO,MAAM,YAAY,GACvB,YAAY,UAAU,EACtB,cAAc,UAAU,EACxB,iBAAiB,UAAU,KAC1B,UA2CD,CAAC;AAkBH,eAAO,MAAM,kBAAkB,GAC7B,YAAY,MAAM,EAClB,OAAO,MAAM,KACZ,OAAO,CAAC,MAAM,GAAG,IAAI,CAyDvB,CAAC;AAsBF,eAAO,MAAM,OAAO,SAAgB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"HandleScheduledEventUseCaseHandler.d.ts","sourceRoot":"","sources":["../../../../src/adapter/entry-points/handlers/HandleScheduledEventUseCaseHandler.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,KAAK,EAAE,MAAM,gCAAgC,CAAC;AACvD,OAAO,EAAE,OAAO,EAAE,MAAM,kCAAkC,CAAC;AAoB3D,qBAAa,kCAAkC;IAC7C,MAAM,GACJ,gBAAgB,MAAM,EACtB,UAAU,OAAO,KAChB,OAAO,CAAC;QACT,OAAO,EAAE,OAAO,CAAC;QACjB,MAAM,EAAE,KAAK,EAAE,CAAC;QAChB,SAAS,EAAE,OAAO,CAAC;QACnB,eAAe,EAAE,IAAI,EAAE,CAAC;KACzB,GAAG,IAAI,CAAC,CAqKP;CACH"}
1
+ {"version":3,"file":"HandleScheduledEventUseCaseHandler.d.ts","sourceRoot":"","sources":["../../../../src/adapter/entry-points/handlers/HandleScheduledEventUseCaseHandler.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,KAAK,EAAE,MAAM,gCAAgC,CAAC;AACvD,OAAO,EAAE,OAAO,EAAE,MAAM,kCAAkC,CAAC;AAqB3D,qBAAa,kCAAkC;IAC7C,MAAM,GACJ,gBAAgB,MAAM,EACtB,UAAU,OAAO,KAChB,OAAO,CAAC;QACT,OAAO,EAAE,OAAO,CAAC;QACjB,MAAM,EAAE,KAAK,EAAE,CAAC;QAChB,SAAS,EAAE,OAAO,CAAC;QACnB,eAAe,EAAE,IAAI,EAAE,CAAC;KACzB,GAAG,IAAI,CAAC,CA4KP;CACH"}
@@ -21,6 +21,7 @@ import { AssignNoAssigneeIssueToManagerUseCase } from './AssignNoAssigneeIssueTo
21
21
  import { UpdateIssueStatusByLabelUseCase } from './UpdateIssueStatusByLabelUseCase';
22
22
  import { StartPreparationUseCase } from './StartPreparationUseCase';
23
23
  import { NotifyFinishedIssuePreparationUseCase } from './NotifyFinishedIssuePreparationUseCase';
24
+ import { RevertOrphanedPreparationUseCase } from './RevertOrphanedPreparationUseCase';
24
25
  export declare class ProjectNotFoundError extends Error {
25
26
  constructor(message: string);
26
27
  }
@@ -40,11 +41,12 @@ export declare class HandleScheduledEventUseCase {
40
41
  readonly updateIssueStatusByLabelUseCase: UpdateIssueStatusByLabelUseCase;
41
42
  readonly startPreparationUseCase: StartPreparationUseCase;
42
43
  readonly notifyFinishedIssuePreparationUseCase: NotifyFinishedIssuePreparationUseCase;
44
+ readonly revertOrphanedPreparationUseCase: RevertOrphanedPreparationUseCase;
43
45
  readonly dateRepository: DateRepository;
44
46
  readonly spreadsheetRepository: SpreadsheetRepository;
45
47
  readonly projectRepository: ProjectRepository;
46
48
  readonly issueRepository: IssueRepository;
47
- constructor(actionAnnouncementUseCase: ActionAnnouncementUseCase, setWorkflowManagementIssueToStoryUseCase: SetWorkflowManagementIssueToStoryUseCase, clearPastNextActionUseCase: ClearPastNextActionDateHourUseCase, analyzeProblemByIssueUseCase: AnalyzeProblemByIssueUseCase, analyzeStoriesUseCase: AnalyzeStoriesUseCase, clearDependedIssueURLUseCase: ClearDependedIssueURLUseCase, createEstimationIssueUseCase: CreateEstimationIssueUseCase, convertCheckboxToIssueInStoryIssueUseCase: ConvertCheckboxToIssueInStoryIssueUseCase, changeStatusByStoryColorUseCase: ChangeStatusByStoryColorUseCase, setNoStoryIssueToStoryUseCase: SetNoStoryIssueToStoryUseCase, createNewStoryByLabelUseCase: CreateNewStoryByLabelUseCase, assignNoAssigneeIssueToManagerUseCase: AssignNoAssigneeIssueToManagerUseCase, updateIssueStatusByLabelUseCase: UpdateIssueStatusByLabelUseCase, startPreparationUseCase: StartPreparationUseCase, notifyFinishedIssuePreparationUseCase: NotifyFinishedIssuePreparationUseCase, dateRepository: DateRepository, spreadsheetRepository: SpreadsheetRepository, projectRepository: ProjectRepository, issueRepository: IssueRepository);
49
+ constructor(actionAnnouncementUseCase: ActionAnnouncementUseCase, setWorkflowManagementIssueToStoryUseCase: SetWorkflowManagementIssueToStoryUseCase, clearPastNextActionUseCase: ClearPastNextActionDateHourUseCase, analyzeProblemByIssueUseCase: AnalyzeProblemByIssueUseCase, analyzeStoriesUseCase: AnalyzeStoriesUseCase, clearDependedIssueURLUseCase: ClearDependedIssueURLUseCase, createEstimationIssueUseCase: CreateEstimationIssueUseCase, convertCheckboxToIssueInStoryIssueUseCase: ConvertCheckboxToIssueInStoryIssueUseCase, changeStatusByStoryColorUseCase: ChangeStatusByStoryColorUseCase, setNoStoryIssueToStoryUseCase: SetNoStoryIssueToStoryUseCase, createNewStoryByLabelUseCase: CreateNewStoryByLabelUseCase, assignNoAssigneeIssueToManagerUseCase: AssignNoAssigneeIssueToManagerUseCase, updateIssueStatusByLabelUseCase: UpdateIssueStatusByLabelUseCase, startPreparationUseCase: StartPreparationUseCase, notifyFinishedIssuePreparationUseCase: NotifyFinishedIssuePreparationUseCase, revertOrphanedPreparationUseCase: RevertOrphanedPreparationUseCase, dateRepository: DateRepository, spreadsheetRepository: SpreadsheetRepository, projectRepository: ProjectRepository, issueRepository: IssueRepository);
48
50
  run: (input: {
49
51
  projectName: string;
50
52
  org: string;
@@ -66,6 +68,7 @@ export declare class HandleScheduledEventUseCase {
66
68
  defaultAgentName: string;
67
69
  logFilePath?: string;
68
70
  maximumPreparingIssuesCount: number | null;
71
+ preparationProcessCheckCommand?: string;
69
72
  } | null;
70
73
  notifyFinishedPreparation?: {
71
74
  preparationStatus: string;
@@ -1 +1 @@
1
- {"version":3,"file":"HandleScheduledEventUseCase.d.ts","sourceRoot":"","sources":["../../../src/domain/usecases/HandleScheduledEventUseCase.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"HandleScheduledEventUseCase.d.ts","sourceRoot":"","sources":["../../../src/domain/usecases/HandleScheduledEventUseCase.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import { IssueRepository } from './adapter-interfaces/IssueRepository';
2
+ import { ProjectRepository } from './adapter-interfaces/ProjectRepository';
3
+ import { LocalCommandRunner } from './adapter-interfaces/LocalCommandRunner';
4
+ export declare class RevertOrphanedPreparationUseCase {
5
+ readonly projectRepository: Pick<ProjectRepository, 'findProjectIdByUrl' | 'getProject'>;
6
+ readonly issueRepository: Pick<IssueRepository, 'getAllIssues' | 'updateStatus' | 'createComment'>;
7
+ readonly localCommandRunner: LocalCommandRunner;
8
+ constructor(projectRepository: Pick<ProjectRepository, 'findProjectIdByUrl' | 'getProject'>, issueRepository: Pick<IssueRepository, 'getAllIssues' | 'updateStatus' | 'createComment'>, localCommandRunner: LocalCommandRunner);
9
+ run: (params: {
10
+ projectUrl: string;
11
+ preparationStatus: string;
12
+ awaitingWorkspaceStatus: string;
13
+ allowIssueCacheMinutes: number;
14
+ preparationProcessCheckCommand: string;
15
+ }) => Promise<void>;
16
+ }
17
+ //# sourceMappingURL=RevertOrphanedPreparationUseCase.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RevertOrphanedPreparationUseCase.d.ts","sourceRoot":"","sources":["../../../src/domain/usecases/RevertOrphanedPreparationUseCase.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AACvE,OAAO,EAAE,iBAAiB,EAAE,MAAM,wCAAwC,CAAC;AAC3E,OAAO,EAAE,kBAAkB,EAAE,MAAM,yCAAyC,CAAC;AAE7E,qBAAa,gCAAgC;IAEzC,QAAQ,CAAC,iBAAiB,EAAE,IAAI,CAC9B,iBAAiB,EACjB,oBAAoB,GAAG,YAAY,CACpC;IACD,QAAQ,CAAC,eAAe,EAAE,IAAI,CAC5B,eAAe,EACf,cAAc,GAAG,cAAc,GAAG,eAAe,CAClD;IACD,QAAQ,CAAC,kBAAkB,EAAE,kBAAkB;gBARtC,iBAAiB,EAAE,IAAI,CAC9B,iBAAiB,EACjB,oBAAoB,GAAG,YAAY,CACpC,EACQ,eAAe,EAAE,IAAI,CAC5B,eAAe,EACf,cAAc,GAAG,cAAc,GAAG,eAAe,CAClD,EACQ,kBAAkB,EAAE,kBAAkB;IAGjD,GAAG,GAAU,QAAQ;QACnB,UAAU,EAAE,MAAM,CAAC;QACnB,iBAAiB,EAAE,MAAM,CAAC;QAC1B,uBAAuB,EAAE,MAAM,CAAC;QAChC,sBAAsB,EAAE,MAAM,CAAC;QAC/B,8BAA8B,EAAE,MAAM,CAAC;KACxC,KAAG,OAAO,CAAC,IAAI,CAAC,CA+Cf;CACH"}
@@ -1 +1 @@
1
- {"version":3,"file":"SetNoStoryIssueToStoryUseCase.d.ts","sourceRoot":"","sources":["../../../src/domain/usecases/SetNoStoryIssueToStoryUseCase.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AACvE,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAE9C,qBAAa,6BAA6B;IAC5B,QAAQ,CAAC,eAAe,EAAE,IAAI,CAAC,eAAe,EAAE,aAAa,CAAC;gBAArD,eAAe,EAAE,IAAI,CAAC,eAAe,EAAE,aAAa,CAAC;IAE1E,GAAG,GAAU,OAAO;QAClB,WAAW,EAAE,IAAI,EAAE,CAAC;QACpB,OAAO,EAAE,OAAO,CAAC;QACjB,MAAM,EAAE,KAAK,EAAE,CAAC;QAChB,SAAS,EAAE,OAAO,CAAC;KACpB,KAAG,OAAO,CAAC,IAAI,CAAC,CAkCf;CACH"}
1
+ {"version":3,"file":"SetNoStoryIssueToStoryUseCase.d.ts","sourceRoot":"","sources":["../../../src/domain/usecases/SetNoStoryIssueToStoryUseCase.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AACvE,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAE9C,qBAAa,6BAA6B;IAC5B,QAAQ,CAAC,eAAe,EAAE,IAAI,CAAC,eAAe,EAAE,aAAa,CAAC;gBAArD,eAAe,EAAE,IAAI,CAAC,eAAe,EAAE,aAAa,CAAC;IAE1E,GAAG,GAAU,OAAO;QAClB,WAAW,EAAE,IAAI,EAAE,CAAC;QACpB,OAAO,EAAE,OAAO,CAAC;QACjB,MAAM,EAAE,KAAK,EAAE,CAAC;QAChB,SAAS,EAAE,OAAO,CAAC;KACpB,KAAG,OAAO,CAAC,IAAI,CAAC,CAoCf;CACH"}