github-issue-tower-defence-management 1.51.0 → 1.52.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 (24) hide show
  1. package/.github/workflows/umino-project.yml +2 -2
  2. package/CHANGELOG.md +20 -0
  3. package/README.md +41 -2
  4. package/bin/adapter/entry-points/cli/index.js +2 -2
  5. package/bin/adapter/entry-points/cli/index.js.map +1 -1
  6. package/bin/adapter/repositories/GraphqlProjectRepository.js +31 -9
  7. package/bin/adapter/repositories/GraphqlProjectRepository.js.map +1 -1
  8. package/bin/domain/usecases/ConvertCheckboxToIssueInStoryIssueUseCase.js +1 -1
  9. package/bin/domain/usecases/ConvertCheckboxToIssueInStoryIssueUseCase.js.map +1 -1
  10. package/bin/domain/usecases/HandleScheduledEventUseCase.js +48 -26
  11. package/bin/domain/usecases/HandleScheduledEventUseCase.js.map +1 -1
  12. package/package.json +1 -1
  13. package/src/adapter/entry-points/cli/index.test.ts +2 -2
  14. package/src/adapter/entry-points/cli/index.ts +2 -2
  15. package/src/adapter/repositories/GraphqlProjectRepository.fetchProjectId.test.ts +251 -0
  16. package/src/adapter/repositories/GraphqlProjectRepository.ts +54 -25
  17. package/src/domain/usecases/ConvertCheckboxToIssueInStoryIssueUseCase.test.ts +144 -10
  18. package/src/domain/usecases/ConvertCheckboxToIssueInStoryIssueUseCase.ts +1 -1
  19. package/src/domain/usecases/HandleScheduledEventUseCase.test.ts +160 -0
  20. package/src/domain/usecases/HandleScheduledEventUseCase.ts +91 -29
  21. package/types/adapter/repositories/GraphqlProjectRepository.d.ts +2 -0
  22. package/types/adapter/repositories/GraphqlProjectRepository.d.ts.map +1 -1
  23. package/types/domain/usecases/HandleScheduledEventUseCase.d.ts +3 -1
  24. package/types/domain/usecases/HandleScheduledEventUseCase.d.ts.map +1 -1
@@ -451,5 +451,165 @@ describe('HandleScheduledEventUseCase', () => {
451
451
  expect(capturedLogs[4]).toContain('Story issue created');
452
452
  });
453
453
  });
454
+
455
+ describe('slow sweep cadence', () => {
456
+ const baseInput = {
457
+ projectName: 'test-project',
458
+ org: 'test-org',
459
+ projectUrl: 'https://github.com/test-org/test-project',
460
+ manager: 'test-manager',
461
+ workingReport: {
462
+ repo: 'test-repo',
463
+ members: ['member1'],
464
+ spreadsheetUrl: 'https://docs.google.com/spreadsheets/test',
465
+ },
466
+ urlOfStoryView: 'https://github.com/test-org/test-project/issues',
467
+ disabled: false,
468
+ allowIssueCacheMinutes: 10,
469
+ startPreparation: {
470
+ defaultAgentName: 'test-agent',
471
+ configFilePath: '/path/to/config.yml',
472
+ maximumPreparingIssuesCount: null,
473
+ defaultLlmModelName: null,
474
+ defaultLlmAgentName: null,
475
+ },
476
+ };
477
+
478
+ it('should run slow sweep use cases when no LastSlowSweepDateTime is recorded', async () => {
479
+ mockSpreadsheetRepository.getSheet.mockResolvedValue([
480
+ ['LastExecutionDateTime'],
481
+ ['2024-01-01T00:00:00Z'],
482
+ ]);
483
+ mockDateRepository.now.mockResolvedValue(
484
+ new Date('2024-01-01T00:10:00Z'),
485
+ );
486
+
487
+ await useCase.run(baseInput);
488
+
489
+ expect(mockAnalyzeStoriesUseCase.run).toHaveBeenCalled();
490
+ expect(mockUpdateIssueStatusByLabelUseCase.run).toHaveBeenCalled();
491
+ expect(mockChangeStatusByStoryColorUseCase.run).toHaveBeenCalled();
492
+ expect(mockCreateNewStoryByLabelUseCase.run).toHaveBeenCalled();
493
+ });
494
+
495
+ it('should skip slow sweep use cases when LastSlowSweepDateTime is within 600 seconds', async () => {
496
+ const now = new Date('2024-01-01T00:10:00Z');
497
+ const recentSlowSweep = new Date(
498
+ now.getTime() - 300 * 1000,
499
+ ).toISOString();
500
+ mockSpreadsheetRepository.getSheet.mockResolvedValue([
501
+ ['LastExecutionDateTime'],
502
+ [
503
+ '2024-01-01T00:00:00Z',
504
+ '',
505
+ '',
506
+ 'LastSlowSweepDateTime',
507
+ recentSlowSweep,
508
+ ],
509
+ ]);
510
+ mockDateRepository.now.mockResolvedValue(now);
511
+
512
+ await useCase.run(baseInput);
513
+
514
+ expect(mockAnalyzeStoriesUseCase.run).not.toHaveBeenCalled();
515
+ expect(mockUpdateIssueStatusByLabelUseCase.run).not.toHaveBeenCalled();
516
+ expect(mockChangeStatusByStoryColorUseCase.run).not.toHaveBeenCalled();
517
+ expect(mockCreateNewStoryByLabelUseCase.run).not.toHaveBeenCalled();
518
+ });
519
+
520
+ it('should still run preparation use cases even when slow sweep is skipped', async () => {
521
+ const now = new Date('2024-01-01T00:10:00Z');
522
+ const recentSlowSweep = new Date(
523
+ now.getTime() - 300 * 1000,
524
+ ).toISOString();
525
+ mockSpreadsheetRepository.getSheet.mockResolvedValue([
526
+ ['LastExecutionDateTime'],
527
+ [
528
+ '2024-01-01T00:00:00Z',
529
+ '',
530
+ '',
531
+ 'LastSlowSweepDateTime',
532
+ recentSlowSweep,
533
+ ],
534
+ ]);
535
+ mockDateRepository.now.mockResolvedValue(now);
536
+
537
+ await useCase.run(baseInput);
538
+
539
+ expect(mockStartPreparationUseCase.run).toHaveBeenCalled();
540
+ });
541
+
542
+ it('should run slow sweep use cases when LastSlowSweepDateTime is exactly 600 seconds ago', async () => {
543
+ const now = new Date('2024-01-01T00:10:00Z');
544
+ const exactThresholdSlowSweep = new Date(
545
+ now.getTime() - 600 * 1000,
546
+ ).toISOString();
547
+ mockSpreadsheetRepository.getSheet.mockResolvedValue([
548
+ ['LastExecutionDateTime'],
549
+ [
550
+ '2024-01-01T00:00:00Z',
551
+ '',
552
+ '',
553
+ 'LastSlowSweepDateTime',
554
+ exactThresholdSlowSweep,
555
+ ],
556
+ ]);
557
+ mockDateRepository.now.mockResolvedValue(now);
558
+
559
+ await useCase.run(baseInput);
560
+
561
+ expect(mockAnalyzeStoriesUseCase.run).toHaveBeenCalled();
562
+ expect(mockUpdateIssueStatusByLabelUseCase.run).toHaveBeenCalled();
563
+ });
564
+
565
+ it('should update LastSlowSweepDateTime in spreadsheet when slow sweep runs', async () => {
566
+ mockSpreadsheetRepository.getSheet.mockResolvedValue([
567
+ ['LastExecutionDateTime'],
568
+ ['2024-01-01T00:00:00Z'],
569
+ ]);
570
+ const now = new Date('2024-01-01T00:10:00Z');
571
+ mockDateRepository.now.mockResolvedValue(now);
572
+
573
+ await useCase.run(baseInput);
574
+
575
+ const updateCellCalls = mockSpreadsheetRepository.updateCell.mock.calls;
576
+ const slowSweepHeaderCall = updateCellCalls.find(
577
+ (call) => call[2] === 1 && call[3] === 3,
578
+ );
579
+ const slowSweepValueCall = updateCellCalls.find(
580
+ (call) => call[2] === 1 && call[3] === 4,
581
+ );
582
+ expect(slowSweepHeaderCall).toBeDefined();
583
+ expect(slowSweepHeaderCall?.[4]).toBe('LastSlowSweepDateTime');
584
+ expect(slowSweepValueCall).toBeDefined();
585
+ expect(slowSweepValueCall?.[4]).toBe(now.toISOString());
586
+ });
587
+
588
+ it('should not update LastSlowSweepDateTime when slow sweep is skipped', async () => {
589
+ const now = new Date('2024-01-01T00:10:00Z');
590
+ const recentSlowSweep = new Date(
591
+ now.getTime() - 300 * 1000,
592
+ ).toISOString();
593
+ mockSpreadsheetRepository.getSheet.mockResolvedValue([
594
+ ['LastExecutionDateTime'],
595
+ [
596
+ '2024-01-01T00:00:00Z',
597
+ '',
598
+ '',
599
+ 'LastSlowSweepDateTime',
600
+ recentSlowSweep,
601
+ ],
602
+ ]);
603
+ mockDateRepository.now.mockResolvedValue(now);
604
+
605
+ await useCase.run(baseInput);
606
+
607
+ const updateCellCalls = mockSpreadsheetRepository.updateCell.mock.calls;
608
+ const slowSweepValueCall = updateCellCalls.find(
609
+ (call) => call[2] === 1 && call[3] === 4,
610
+ );
611
+ expect(slowSweepValueCall).toBeUndefined();
612
+ });
613
+ });
454
614
  });
455
615
  });
@@ -30,6 +30,8 @@ export class ProjectNotFoundError extends Error {
30
30
  }
31
31
  }
32
32
 
33
+ const SLOW_SWEEP_INTERVAL_SECONDS = 600;
34
+
33
35
  export class HandleScheduledEventUseCase {
34
36
  constructor(
35
37
  readonly setupTowerDefenceProjectUseCase: SetupTowerDefenceProjectUseCase,
@@ -191,6 +193,11 @@ export class HandleScheduledEventUseCase {
191
193
  now,
192
194
  );
193
195
 
196
+ const runSlowSweep = await this.shouldRunSlowSweep(
197
+ input.workingReport.spreadsheetUrl,
198
+ now,
199
+ );
200
+
194
201
  try {
195
202
  await this.runEachUseCases(
196
203
  input,
@@ -199,6 +206,7 @@ export class HandleScheduledEventUseCase {
199
206
  cacheUsed,
200
207
  targetDateTimes,
201
208
  storyIssues,
209
+ runSlowSweep,
202
210
  );
203
211
  } catch (e) {
204
212
  if (!(e instanceof Error)) {
@@ -232,6 +240,55 @@ ${JSON.stringify(e)}
232
240
  cacheUsed: boolean,
233
241
  targetDateTimes: Date[],
234
242
  storyObjectMap: StoryObjectMap,
243
+ runSlowSweep: boolean,
244
+ ): Promise<void> => {
245
+ if (runSlowSweep) {
246
+ await this.runSlowSweepUseCases(
247
+ input,
248
+ project,
249
+ issues,
250
+ cacheUsed,
251
+ targetDateTimes,
252
+ storyObjectMap,
253
+ );
254
+ }
255
+ if (input.startPreparation) {
256
+ if (input.startPreparation.preparationProcessCheckCommand) {
257
+ await this.revertOrphanedPreparationUseCase.run({
258
+ projectUrl: input.projectUrl,
259
+ allowIssueCacheMinutes: input.allowIssueCacheMinutes,
260
+ preparationProcessCheckCommand:
261
+ input.startPreparation.preparationProcessCheckCommand,
262
+ awLogDirectoryPath: input.startPreparation.awLogDirectoryPath,
263
+ awLogStaleThresholdMinutes:
264
+ input.startPreparation.awLogStaleThresholdMinutes,
265
+ awaitingQualityCheckStatus:
266
+ input.startPreparation.awaitingQualityCheckStatus ?? undefined,
267
+ });
268
+ }
269
+ await this.startPreparationUseCase.run({
270
+ projectUrl: input.projectUrl,
271
+ defaultAgentName: input.startPreparation.defaultAgentName,
272
+ defaultLlmModelName: input.startPreparation.defaultLlmModelName ?? null,
273
+ defaultLlmAgentName: input.startPreparation.defaultLlmAgentName ?? null,
274
+ configFilePath: input.startPreparation.configFilePath,
275
+ maximumPreparingIssuesCount:
276
+ input.startPreparation.maximumPreparingIssuesCount,
277
+ utilizationPercentageThreshold:
278
+ input.startPreparation.utilizationPercentageThreshold ?? 90,
279
+ allowedIssueAuthors: input.startPreparation.allowedIssueAuthors ?? null,
280
+ codexHomeCandidates: input.startPreparation.codexHomeCandidates ?? null,
281
+ allowIssueCacheMinutes: input.allowIssueCacheMinutes,
282
+ });
283
+ }
284
+ };
285
+ runSlowSweepUseCases = async (
286
+ input: Parameters<HandleScheduledEventUseCase['run']>[0],
287
+ project: Project,
288
+ issues: Issue[],
289
+ cacheUsed: boolean,
290
+ targetDateTimes: Date[],
291
+ storyObjectMap: StoryObjectMap,
235
292
  ): Promise<void> => {
236
293
  await this.setWorkflowManagementIssueToStoryUseCase.run({
237
294
  targetDates: targetDateTimes,
@@ -322,35 +379,6 @@ ${JSON.stringify(e)}
322
379
  project,
323
380
  issues,
324
381
  });
325
- if (input.startPreparation) {
326
- if (input.startPreparation.preparationProcessCheckCommand) {
327
- await this.revertOrphanedPreparationUseCase.run({
328
- projectUrl: input.projectUrl,
329
- allowIssueCacheMinutes: input.allowIssueCacheMinutes,
330
- preparationProcessCheckCommand:
331
- input.startPreparation.preparationProcessCheckCommand,
332
- awLogDirectoryPath: input.startPreparation.awLogDirectoryPath,
333
- awLogStaleThresholdMinutes:
334
- input.startPreparation.awLogStaleThresholdMinutes,
335
- awaitingQualityCheckStatus:
336
- input.startPreparation.awaitingQualityCheckStatus ?? undefined,
337
- });
338
- }
339
- await this.startPreparationUseCase.run({
340
- projectUrl: input.projectUrl,
341
- defaultAgentName: input.startPreparation.defaultAgentName,
342
- defaultLlmModelName: input.startPreparation.defaultLlmModelName ?? null,
343
- defaultLlmAgentName: input.startPreparation.defaultLlmAgentName ?? null,
344
- configFilePath: input.startPreparation.configFilePath,
345
- maximumPreparingIssuesCount:
346
- input.startPreparation.maximumPreparingIssuesCount,
347
- utilizationPercentageThreshold:
348
- input.startPreparation.utilizationPercentageThreshold ?? 90,
349
- allowedIssueAuthors: input.startPreparation.allowedIssueAuthors ?? null,
350
- codexHomeCandidates: input.startPreparation.codexHomeCandidates ?? null,
351
- allowIssueCacheMinutes: input.allowIssueCacheMinutes,
352
- });
353
- }
354
382
  };
355
383
  static createTargetDateTimes = (from: Date, to: Date): Date[] => {
356
384
  const targetDateTimes: Date[] = [];
@@ -409,6 +437,40 @@ ${JSON.stringify(e)}
409
437
  );
410
438
  return targetDateTimes;
411
439
  };
440
+ shouldRunSlowSweep = async (
441
+ spreadsheetUrl: string,
442
+ now: Date,
443
+ ): Promise<boolean> => {
444
+ const sheetValues = await this.spreadsheetRepository.getSheet(
445
+ spreadsheetUrl,
446
+ 'HandleScheduledEvent',
447
+ );
448
+ const lastSlowSweepDateTime =
449
+ sheetValues && sheetValues[1] && sheetValues[1][4]
450
+ ? new Date(sheetValues[1][4])
451
+ : null;
452
+ const elapsedSeconds = lastSlowSweepDateTime
453
+ ? (now.getTime() - lastSlowSweepDateTime.getTime()) / 1000
454
+ : Infinity;
455
+ if (elapsedSeconds < SLOW_SWEEP_INTERVAL_SECONDS) {
456
+ return false;
457
+ }
458
+ await this.spreadsheetRepository.updateCell(
459
+ spreadsheetUrl,
460
+ 'HandleScheduledEvent',
461
+ 1,
462
+ 3,
463
+ 'LastSlowSweepDateTime',
464
+ );
465
+ await this.spreadsheetRepository.updateCell(
466
+ spreadsheetUrl,
467
+ 'HandleScheduledEvent',
468
+ 1,
469
+ 4,
470
+ now.toISOString(),
471
+ );
472
+ return true;
473
+ };
412
474
  storyIssues = async (input: {
413
475
  project: Project;
414
476
  issues: Issue[];
@@ -2,6 +2,8 @@ import { BaseGitHubRepository } from './BaseGitHubRepository';
2
2
  import { ProjectRepository } from '../../domain/usecases/adapter-interfaces/ProjectRepository';
3
3
  import { FieldOption, Project } from '../../domain/entities/Project';
4
4
  export declare class GraphqlProjectRepository extends BaseGitHubRepository implements Pick<ProjectRepository, 'getProject' | 'findProjectIdByUrl' | 'getByUrl' | 'updateStoryList' | 'updateStatusList'> {
5
+ private readonly projectIdCache;
6
+ private readonly fetchProjectIdFailedAt;
5
7
  extractProjectFromUrl: (projectUrl: string) => {
6
8
  owner: string;
7
9
  projectNumber: number;
@@ -1 +1 @@
1
- {"version":3,"file":"GraphqlProjectRepository.d.ts","sourceRoot":"","sources":["../../../src/adapter/repositories/GraphqlProjectRepository.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,4DAA4D,CAAC;AAC/F,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,+BAA+B,CAAC;AAGrE,qBAAa,wBACX,SAAQ,oBACR,YACE,IAAI,CACF,iBAAiB,EACf,YAAY,GACZ,oBAAoB,GACpB,UAAU,GACV,iBAAiB,GACjB,kBAAkB,CACrB;IAEH,qBAAqB,GACnB,YAAY,MAAM,KACjB;QACD,KAAK,EAAE,MAAM,CAAC;QACd,aAAa,EAAE,MAAM,CAAC;KACvB,CAMC;IACF,cAAc,GACZ,OAAO,MAAM,EACb,eAAe,MAAM,KACpB,OAAO,CAAC,MAAM,CAAC,CA8DhB;IACF,kBAAkB,GAChB,YAAY,MAAM,KACjB,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAG9B;IACF,UAAU,GAAU,WAAW,OAAO,CAAC,IAAI,CAAC,KAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CA2NpE;IACF,QAAQ,GAAU,KAAK,MAAM,KAAG,OAAO,CAAC,OAAO,CAAC,CAU9C;IACF,eAAe,GACb,SAAS,OAAO,EAChB,cAAc,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,GAAG;QACvC,EAAE,EAAE,WAAW,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;KAC9B,CAAC,EAAE,KACH,OAAO,CAAC,WAAW,EAAE,CAAC,CA+CvB;IACF,gBAAgB,GACd,SAAS,OAAO,EAChB,eAAe,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,GAAG;QACxC,EAAE,EAAE,WAAW,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;KAC9B,CAAC,EAAE,KACH,OAAO,CAAC,WAAW,EAAE,CAAC,CA4CvB;CACH"}
1
+ {"version":3,"file":"GraphqlProjectRepository.d.ts","sourceRoot":"","sources":["../../../src/adapter/repositories/GraphqlProjectRepository.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,4DAA4D,CAAC;AAC/F,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,+BAA+B,CAAC;AAKrE,qBAAa,wBACX,SAAQ,oBACR,YACE,IAAI,CACF,iBAAiB,EACf,YAAY,GACZ,oBAAoB,GACpB,UAAU,GACV,iBAAiB,GACjB,kBAAkB,CACrB;IAEH,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA6B;IAC5D,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAA6B;IAEpE,qBAAqB,GACnB,YAAY,MAAM,KACjB;QACD,KAAK,EAAE,MAAM,CAAC;QACd,aAAa,EAAE,MAAM,CAAC;KACvB,CAMC;IACF,cAAc,GACZ,OAAO,MAAM,EACb,eAAe,MAAM,KACpB,OAAO,CAAC,MAAM,CAAC,CAsFhB;IACF,kBAAkB,GAChB,YAAY,MAAM,KACjB,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAG9B;IACF,UAAU,GAAU,WAAW,OAAO,CAAC,IAAI,CAAC,KAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CA2NpE;IACF,QAAQ,GAAU,KAAK,MAAM,KAAG,OAAO,CAAC,OAAO,CAAC,CAU9C;IACF,eAAe,GACb,SAAS,OAAO,EAChB,cAAc,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,GAAG;QACvC,EAAE,EAAE,WAAW,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;KAC9B,CAAC,EAAE,KACH,OAAO,CAAC,WAAW,EAAE,CAAC,CA+CvB;IACF,gBAAgB,GACd,SAAS,OAAO,EAChB,eAAe,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,GAAG;QACxC,EAAE,EAAE,WAAW,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;KAC9B,CAAC,EAAE,KACH,OAAO,CAAC,WAAW,EAAE,CAAC,CA4CvB;CACH"}
@@ -81,9 +81,11 @@ export declare class HandleScheduledEventUseCase {
81
81
  targetDateTimes: Date[];
82
82
  storyIssues: StoryObjectMap;
83
83
  } | null>;
84
- runEachUseCases: (input: Parameters<HandleScheduledEventUseCase["run"]>[0], project: Project, issues: Issue[], cacheUsed: boolean, targetDateTimes: Date[], storyObjectMap: StoryObjectMap) => Promise<void>;
84
+ runEachUseCases: (input: Parameters<HandleScheduledEventUseCase["run"]>[0], project: Project, issues: Issue[], cacheUsed: boolean, targetDateTimes: Date[], storyObjectMap: StoryObjectMap, runSlowSweep: boolean) => Promise<void>;
85
+ runSlowSweepUseCases: (input: Parameters<HandleScheduledEventUseCase["run"]>[0], project: Project, issues: Issue[], cacheUsed: boolean, targetDateTimes: Date[], storyObjectMap: StoryObjectMap) => Promise<void>;
85
86
  static createTargetDateTimes: (from: Date, to: Date) => Date[];
86
87
  findTargetDateAndUpdateLastExecutionDateTime: (spreadsheetUrl: string, now: Date) => Promise<Date[]>;
88
+ shouldRunSlowSweep: (spreadsheetUrl: string, now: Date) => Promise<boolean>;
87
89
  storyIssues: (input: {
88
90
  project: Project;
89
91
  issues: Issue[];
@@ -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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"}