github-issue-tower-defence-management 2.2.0 → 2.4.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 (58) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/bin/adapter/entry-points/cli/fleetConfig.js +19 -1
  3. package/bin/adapter/entry-points/cli/fleetConfig.js.map +1 -1
  4. package/bin/adapter/entry-points/console/consoleDoneStore.js +0 -2
  5. package/bin/adapter/entry-points/console/consoleDoneStore.js.map +1 -1
  6. package/bin/adapter/entry-points/console/consoleTabNames.js +0 -1
  7. package/bin/adapter/entry-points/console/consoleTabNames.js.map +1 -1
  8. package/bin/adapter/entry-points/console/ui-dist/assets/index-C5cOzhyn.js +86 -0
  9. package/bin/adapter/entry-points/console/ui-dist/index.html +1 -1
  10. package/bin/adapter/entry-points/handlers/HandleScheduledEventUseCaseHandler.js +4 -1
  11. package/bin/adapter/entry-points/handlers/HandleScheduledEventUseCaseHandler.js.map +1 -1
  12. package/bin/domain/usecases/console/GenerateConsoleListsUseCase.js +0 -15
  13. package/bin/domain/usecases/console/GenerateConsoleListsUseCase.js.map +1 -1
  14. package/package.json +1 -1
  15. package/src/adapter/entry-points/cli/fleetConfig.test.ts +86 -0
  16. package/src/adapter/entry-points/cli/fleetConfig.ts +38 -0
  17. package/src/adapter/entry-points/console/consoleDataDelivery.test.ts +15 -9
  18. package/src/adapter/entry-points/console/consoleDoneStore.ts +0 -2
  19. package/src/adapter/entry-points/console/consoleItemUrlLookup.test.ts +1 -1
  20. package/src/adapter/entry-points/console/consoleTabNames.ts +0 -1
  21. package/src/adapter/entry-points/console/ui/e2e/consoleScenario.spec.ts +7 -115
  22. package/src/adapter/entry-points/console/ui/e2e/consoleTestHarness.ts +0 -16
  23. package/src/adapter/entry-points/console/ui/src/features/console/components/detail/ConsoleItemDetail.stories.tsx +1 -3
  24. package/src/adapter/entry-points/console/ui/src/features/console/components/layout/ConsoleTabList.stories.tsx +0 -4
  25. package/src/adapter/entry-points/console/ui/src/features/console/components/layout/ConsoleTabList.test.tsx +0 -1
  26. package/src/adapter/entry-points/console/ui/src/features/console/components/operations/ConsoleOperationMenu.stories.tsx +0 -10
  27. package/src/adapter/entry-points/console/ui/src/features/console/components/operations/ConsoleOperationMenu.test.tsx +2 -28
  28. package/src/adapter/entry-points/console/ui/src/features/console/components/operations/ConsoleOperationMenu.tsx +0 -10
  29. package/src/adapter/entry-points/console/ui/src/features/console/hooks/useConsoleNavigation.test.ts +18 -14
  30. package/src/adapter/entry-points/console/ui/src/features/console/hooks/useConsoleOverlay.test.ts +2 -2
  31. package/src/adapter/entry-points/console/ui/src/features/console/logic/actionToast.test.ts +1 -1
  32. package/src/adapter/entry-points/console/ui/src/features/console/logic/grouping.test.ts +7 -7
  33. package/src/adapter/entry-points/console/ui/src/features/console/logic/overlay.test.ts +10 -8
  34. package/src/adapter/entry-points/console/ui/src/features/console/logic/tabAdvance.test.ts +9 -11
  35. package/src/adapter/entry-points/console/ui/src/features/console/logic/types.ts +1 -12
  36. package/src/adapter/entry-points/console/ui/src/features/console/pages/ConsoleItemDetailContainer.test.tsx +0 -12
  37. package/src/adapter/entry-points/console/ui/src/features/console/pages/ConsoleItemDetailContainer.tsx +0 -3
  38. package/src/adapter/entry-points/console/ui/src/features/console/pages/ConsolePage.tsx +10 -57
  39. package/src/adapter/entry-points/console/ui-dist/assets/index-C5cOzhyn.js +86 -0
  40. package/src/adapter/entry-points/console/ui-dist/index.html +1 -1
  41. package/src/adapter/entry-points/console/webServer.test.ts +2 -2
  42. package/src/adapter/entry-points/handlers/HandleScheduledEventUseCaseHandler.test.ts +24 -0
  43. package/src/adapter/entry-points/handlers/HandleScheduledEventUseCaseHandler.ts +10 -1
  44. package/src/adapter/entry-points/handlers/consoleListsWriter.test.ts +0 -1
  45. package/src/domain/usecases/console/GenerateConsoleListsUseCase.test.ts +2 -160
  46. package/src/domain/usecases/console/GenerateConsoleListsUseCase.ts +0 -37
  47. package/types/adapter/entry-points/cli/fleetConfig.d.ts +7 -0
  48. package/types/adapter/entry-points/cli/fleetConfig.d.ts.map +1 -1
  49. package/types/adapter/entry-points/console/consoleDoneStore.d.ts.map +1 -1
  50. package/types/adapter/entry-points/console/consoleTabNames.d.ts.map +1 -1
  51. package/types/adapter/entry-points/handlers/HandleScheduledEventUseCaseHandler.d.ts.map +1 -1
  52. package/types/domain/usecases/console/GenerateConsoleListsUseCase.d.ts +1 -11
  53. package/types/domain/usecases/console/GenerateConsoleListsUseCase.d.ts.map +1 -1
  54. package/bin/adapter/entry-points/console/ui-dist/assets/index-BVyeR7xJ.js +0 -86
  55. package/src/adapter/entry-points/console/ui/src/features/console/components/operations/ConsoleStoryActions.stories.tsx +0 -80
  56. package/src/adapter/entry-points/console/ui/src/features/console/components/operations/ConsoleStoryActions.test.tsx +0 -39
  57. package/src/adapter/entry-points/console/ui/src/features/console/components/operations/ConsoleStoryActions.tsx +0 -42
  58. package/src/adapter/entry-points/console/ui-dist/assets/index-BVyeR7xJ.js +0 -86
@@ -4,7 +4,7 @@
4
4
  <meta charset="UTF-8" />
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
6
  <title>TDPM Console</title>
7
- <script type="module" crossorigin src="/assets/index-BVyeR7xJ.js"></script>
7
+ <script type="module" crossorigin src="/assets/index-C5cOzhyn.js"></script>
8
8
  <link rel="stylesheet" crossorigin href="/assets/index-CLHvrafO.css">
9
9
  </head>
10
10
  <body>
@@ -82,7 +82,7 @@ describe('webServer pure helpers', () => {
82
82
  it('matches a per-project tab route for every list tab', () => {
83
83
  expect(isConsoleAppRoute('/projects/acme/workflow-blocker')).toBe(true);
84
84
  expect(isConsoleAppRoute('/projects/acme/prs')).toBe(true);
85
- expect(isConsoleAppRoute('/projects/globex/triage')).toBe(true);
85
+ expect(isConsoleAppRoute('/projects/globex/todo-by-agent')).toBe(true);
86
86
  expect(isConsoleAppRoute('/projects/initech/todo-by-human')).toBe(true);
87
87
  expect(isConsoleAppRoute('/projects/umbrella/failed-preparation')).toBe(
88
88
  true,
@@ -379,7 +379,7 @@ describe('webServer integration', () => {
379
379
  port: 0,
380
380
  });
381
381
  try {
382
- const projectRoot = await requestServer(server, '/projects/acme/triage');
382
+ const projectRoot = await requestServer(server, '/projects/acme/prs');
383
383
  expect(projectRoot.statusCode).toBe(200);
384
384
  expect(projectRoot.body).toContain('TDPM Console');
385
385
  } finally {
@@ -419,6 +419,30 @@ allowedIssueAuthors: 'user1, user2, user3'
419
419
  });
420
420
  });
421
421
 
422
+ it('applies the fleet default maximumPreparingIssuesCount when neither README nor YAML provides it', async () => {
423
+ const configWithPreparationNoMax = {
424
+ ...validConfig,
425
+ startPreparation: {
426
+ defaultAgentName: 'yaml-agent',
427
+ configFilePath: '/path/to/config.yml',
428
+ utilizationPercentageThreshold: 90,
429
+ },
430
+ };
431
+ mockFetchReturningReadme(null);
432
+ jest
433
+ .mocked(fs.readFileSync)
434
+ .mockReturnValue(YAML.stringify(configWithPreparationNoMax));
435
+
436
+ const handler = new HandleScheduledEventUseCaseHandler();
437
+ await handler.handle('config.yml', false);
438
+
439
+ expect(capturedRunInputs[0][0]).toMatchObject({
440
+ startPreparation: {
441
+ maximumPreparingIssuesCount: 80,
442
+ },
443
+ });
444
+ });
445
+
422
446
  it('should use README token from manager credentials to fetch README', async () => {
423
447
  mockFetchReturningReadme(null);
424
448
  jest.mocked(fs.readFileSync).mockReturnValue(YAML.stringify(validConfig));
@@ -32,6 +32,10 @@ import {
32
32
  fetchProjectReadme,
33
33
  parseProjectReadmeConfig,
34
34
  } from '../cli/projectConfig';
35
+ import {
36
+ loadStartPreparationFleetSettings,
37
+ resolveFleetConfigFilePath,
38
+ } from '../cli/fleetConfig';
35
39
  import { SystemDateRepository } from '../../repositories/SystemDateRepository';
36
40
  import { LocalStorageRepository } from '../../repositories/LocalStorageRepository';
37
41
  import { GoogleSpreadsheetRepository } from '../../repositories/GoogleSpreadsheetRepository';
@@ -272,6 +276,10 @@ export class HandleScheduledEventUseCaseHandler {
272
276
  ? parseProjectReadmeConfig(readme, input.projectUrl)
273
277
  : {};
274
278
 
279
+ const startPreparationFleetSettings = loadStartPreparationFleetSettings(
280
+ resolveFleetConfigFilePath(null),
281
+ );
282
+
275
283
  const normalizeAllowedIssueAuthors = (
276
284
  value: string | string[] | null | undefined,
277
285
  ): string[] | null => {
@@ -323,7 +331,8 @@ export class HandleScheduledEventUseCaseHandler {
323
331
  input.startPreparation.defaultLlmAgentName,
324
332
  maximumPreparingIssuesCount:
325
333
  readmeConfig.maximumPreparingIssuesCount ??
326
- input.startPreparation.maximumPreparingIssuesCount,
334
+ input.startPreparation.maximumPreparingIssuesCount ??
335
+ startPreparationFleetSettings.maximumPreparingIssuesCount,
327
336
  utilizationPercentageThreshold:
328
337
  readmeConfig.utilizationPercentageThreshold ??
329
338
  input.startPreparation.utilizationPercentageThreshold,
@@ -99,7 +99,6 @@ describe('writeConsoleLists', () => {
99
99
  for (const tab of [
100
100
  'workflow-blocker',
101
101
  'prs',
102
- 'triage',
103
102
  'failed-preparation',
104
103
  'todo-by-human',
105
104
  'todo-by-agent',
@@ -219,139 +219,6 @@ describe('GenerateConsoleListsUseCase', () => {
219
219
  ]);
220
220
  expect(result['todo-by-agent'].items).toHaveLength(0);
221
221
  });
222
-
223
- it('selects all actionable items for triage regardless of story', () => {
224
- const result = run([
225
- makeIssue({ story: 'regular / NO STORY; SET STORY FIELD' }),
226
- makeIssue({ story: 'no story please' }),
227
- makeIssue({ story: 'Story Alpha' }),
228
- makeIssue({ story: null }),
229
- ]);
230
- expect(result.triage.items).toHaveLength(4);
231
- });
232
-
233
- it('excludes In Tmux by agent items from triage regardless of story', () => {
234
- const result = run([
235
- makeIssue({ story: 'no story', status: 'In Tmux by agent' }),
236
- makeIssue({ story: 'no story', status: 'in tmux by agent' }),
237
- makeIssue({ story: 'no story', status: 'Unread' }),
238
- ]);
239
- const statuses = result.triage.items.map((item) => item.status);
240
- expect(statuses).toEqual(['Unread']);
241
- });
242
-
243
- it('excludes items with reactivation triggers from triage', () => {
244
- const result = run([
245
- makeIssue({
246
- story: 'no story',
247
- dependedIssueUrls: ['https://github.com/demo/repo/issues/99'],
248
- }),
249
- makeIssue({
250
- story: 'no story',
251
- nextActionDate: new Date('2026-08-20T00:00:00.000Z'),
252
- }),
253
- makeIssue({ story: 'no story', nextActionHour: 9 }),
254
- ]);
255
- expect(result.triage.items).toHaveLength(0);
256
- });
257
-
258
- it('includes pull requests in triage when assigned, excludes unassigned and closed', () => {
259
- const result = run([
260
- makeIssue({ story: 'no story', isPr: true }),
261
- makeIssue({ story: 'no story', assignees: ['someone-else'] }),
262
- makeIssue({ story: 'no story', isClosed: true }),
263
- ]);
264
- expect(result.triage.items).toHaveLength(1);
265
- });
266
-
267
- it('includes all actionable items in triage including those with a real story or null story', () => {
268
- const result = run([
269
- makeIssue({ story: null, status: 'Awaiting Workspace' }),
270
- makeIssue({ story: null, status: null }),
271
- makeIssue({ story: 'regular / NO STORY' }),
272
- makeIssue({ story: 'Story Alpha' }),
273
- ]);
274
- expect(result.triage.items).toHaveLength(4);
275
- });
276
-
277
- it('includes pull requests in triage, excludes unassigned and closed items with null story', () => {
278
- const result = run([
279
- makeIssue({ story: null, isPr: true }),
280
- makeIssue({ story: null, assignees: ['someone-else'] }),
281
- makeIssue({ story: null, isClosed: true }),
282
- ]);
283
- expect(result.triage.items).toHaveLength(1);
284
- });
285
-
286
- it('shows all actionable items in triage whatever status they carry, excluding In Tmux by agent', () => {
287
- const result = run([
288
- makeIssue({ story: 'no story', status: 'Unread' }),
289
- makeIssue({ story: 'no story', status: 'Awaiting Workspace' }),
290
- makeIssue({ story: 'no story', status: 'In Tmux by agent' }),
291
- makeIssue({ story: 'no story', status: 'Preparation' }),
292
- makeIssue({ story: 'no story', status: 'Failed Preparation' }),
293
- makeIssue({ story: 'no story', status: 'Awaiting Quality Check' }),
294
- makeIssue({ story: 'no story', status: 'Todo by human' }),
295
- makeIssue({ story: 'no story', status: 'Todo by agent' }),
296
- makeIssue({ story: 'no story', status: 'In Tmux by human' }),
297
- makeIssue({ story: 'no story', status: 'Done' }),
298
- makeIssue({ story: 'no story', status: 'Icebox' }),
299
- ]);
300
- expect(result.triage.items.map((item) => item.status)).toEqual([
301
- 'Unread',
302
- 'Awaiting Workspace',
303
- 'Preparation',
304
- 'Failed Preparation',
305
- 'Awaiting Quality Check',
306
- 'Todo by human',
307
- 'Todo by agent',
308
- 'In Tmux by human',
309
- 'Done',
310
- 'Icebox',
311
- ]);
312
- });
313
-
314
- it('shows items with any story in triage at every status except In Tmux by agent', () => {
315
- const result = run([
316
- makeIssue({ story: 'Story Alpha', status: 'Unread' }),
317
- makeIssue({ story: 'Story Alpha', status: 'Awaiting Workspace' }),
318
- makeIssue({ story: 'Story Alpha', status: 'In Tmux by agent' }),
319
- makeIssue({ story: 'Story Alpha', status: 'Preparation' }),
320
- makeIssue({ story: 'Story Alpha', status: 'Failed Preparation' }),
321
- makeIssue({ story: 'Story Alpha', status: 'Awaiting Quality Check' }),
322
- makeIssue({ story: 'Story Alpha', status: 'Todo by human' }),
323
- makeIssue({ story: 'Story Alpha', status: 'Todo by agent' }),
324
- makeIssue({ story: 'Story Alpha', status: 'In Tmux by human' }),
325
- makeIssue({ story: 'Story Alpha', status: 'Done' }),
326
- makeIssue({ story: 'Story Alpha', status: 'Icebox' }),
327
- ]);
328
- expect(result.triage.items).toHaveLength(10);
329
- });
330
-
331
- it('keeps a no-story item whose status is written in a different case', () => {
332
- const result = run([
333
- makeIssue({ story: 'no story', status: 'unread' }),
334
- makeIssue({ story: 'no story', status: 'awaiting workspace' }),
335
- makeIssue({ story: 'no story', status: 'failed preparation' }),
336
- ]);
337
- expect(result.triage.items.map((item) => item.status)).toEqual([
338
- 'unread',
339
- 'awaiting workspace',
340
- 'failed preparation',
341
- ]);
342
- });
343
-
344
- it('keeps an item carrying the story option this tool assigns automatically once its status has advanced', () => {
345
- const result = run([
346
- makeIssue({
347
- story: 'regular / NO STORY; SET STORY FIELD',
348
- status: 'Awaiting Quality Check',
349
- }),
350
- ]);
351
- expect(result.triage.items.map((item) => item.status)).toEqual([
352
- 'Awaiting Quality Check',
353
- ]);
354
- });
355
222
  });
356
223
 
357
224
  describe('workflow-blocker tab', () => {
@@ -420,7 +287,6 @@ describe('GenerateConsoleListsUseCase', () => {
420
287
  ) => [
421
288
  ...result['workflow-blocker'].items,
422
289
  ...result.prs.items,
423
- ...result.triage.items,
424
290
  ...result['failed-preparation'].items,
425
291
  ...result['todo-by-human'].items,
426
292
  ];
@@ -438,14 +304,13 @@ describe('GenerateConsoleListsUseCase', () => {
438
304
  expect(allTabItems(result)).toHaveLength(1);
439
305
  });
440
306
 
441
- it('hides a no-story In Tmux by agent issue from triage and all other tabs', () => {
307
+ it('hides a no-story In Tmux by agent issue from all tabs', () => {
442
308
  const result = run([
443
309
  makeIssue({
444
310
  story: 'no story',
445
311
  status: 'In Tmux by agent',
446
312
  }),
447
313
  ]);
448
- expect(result.triage.items).toHaveLength(0);
449
314
  expect(allTabItems(result)).toHaveLength(0);
450
315
  });
451
316
 
@@ -475,10 +340,8 @@ describe('GenerateConsoleListsUseCase', () => {
475
340
  expect(
476
341
  result['workflow-blocker'].items.map((item) => item.status).sort(),
477
342
  ).toEqual(['In Tmux by agent', 'In Tmux by human']);
478
- expect(result.triage.items.map((item) => item.number)).toEqual([3, 2]);
479
343
  expect(
480
344
  result.prs.items
481
- .concat(result.triage.items)
482
345
  .concat(result['failed-preparation'].items)
483
346
  .concat(result['todo-by-human'].items)
484
347
  .some((item) => item.status === 'In Tmux by agent'),
@@ -673,16 +536,6 @@ describe('GenerateConsoleListsUseCase', () => {
673
536
  expect(names).toContain('Awaiting Workspace');
674
537
  });
675
538
 
676
- it('emits all story options for triage and no statusOptions key', () => {
677
- const triage = run([]).triage;
678
- expect(triage.storyOptions.map((o) => o.name)).toEqual([
679
- 'regular / NO STORY; SET STORY FIELD',
680
- 'Story Alpha',
681
- 'Story Beta',
682
- ]);
683
- expect(triage).not.toHaveProperty('statusOptions');
684
- });
685
-
686
539
  it('builds storyOrder from story field option order', () => {
687
540
  expect(run([]).prs.storyOrder).toEqual([
688
541
  'regular / NO STORY; SET STORY FIELD',
@@ -700,19 +553,12 @@ describe('GenerateConsoleListsUseCase', () => {
700
553
  color: 'BLUE',
701
554
  });
702
555
  });
703
-
704
- it('uses plain string color values for triage', () => {
705
- const result = run([]);
706
- expect(result.triage.storyColors['Story Alpha']).toBe('BLUE');
707
- expect(result.triage.storyColors['Story Beta']).toBe('GREEN');
708
- });
709
556
  });
710
557
 
711
558
  describe('generatedAt and pjcode passthrough', () => {
712
559
  it('writes the provided generatedAt without milliseconds on every tab', () => {
713
560
  const result = run([]);
714
561
  expect(result.prs.generatedAt).toBe(generatedAt);
715
- expect(result.triage.generatedAt).toBe(generatedAt);
716
562
  expect(result['failed-preparation'].generatedAt).toBe(generatedAt);
717
563
  expect(generatedAt).not.toMatch(/\.\d{3}Z$/);
718
564
  });
@@ -720,7 +566,6 @@ describe('GenerateConsoleListsUseCase', () => {
720
566
  it('writes the configured pjcode on every tab', () => {
721
567
  const result = run([]);
722
568
  expect(result.prs.pjcode).toBe('demo');
723
- expect(result.triage.pjcode).toBe('demo');
724
569
  expect(result['failed-preparation'].pjcode).toBe('demo');
725
570
  });
726
571
  });
@@ -789,13 +634,10 @@ describe('GenerateConsoleListsUseCase', () => {
789
634
  describe('project without a story field', () => {
790
635
  const projectNoStory = baseProject(null);
791
636
 
792
- it('degrades story order, colors and triage options gracefully', () => {
637
+ it('degrades story order and colors gracefully', () => {
793
638
  const result = run([makeIssue({ story: 'no story' })], projectNoStory);
794
639
  expect(result.prs.storyOrder).toEqual([]);
795
640
  expect(result.prs.storyColors).toEqual({});
796
- expect(result.triage.storyOptions).toEqual([]);
797
- expect(result.triage.storyColors).toEqual({});
798
- expect(result.triage.items).toHaveLength(1);
799
641
  });
800
642
  });
801
643
 
@@ -45,19 +45,9 @@ export type ConsoleStatusTab = {
45
45
  items: ConsoleListItem[];
46
46
  };
47
47
 
48
- export type ConsoleTriageTab = {
49
- pjcode: string;
50
- generatedAt: string;
51
- storyOptions: ConsoleFieldOption[];
52
- storyOrder: string[];
53
- storyColors: Record<string, ConsoleColor>;
54
- items: ConsoleListItem[];
55
- };
56
-
57
48
  export type ConsoleTabName =
58
49
  | 'workflow-blocker'
59
50
  | 'prs'
60
- | 'triage'
61
51
  | 'failed-preparation'
62
52
  | 'todo-by-human'
63
53
  | 'todo-by-agent'
@@ -83,7 +73,6 @@ export type ConsoleStoriesTab = {
83
73
  export type ConsoleLists = {
84
74
  'workflow-blocker': ConsoleStatusTab;
85
75
  prs: ConsoleStatusTab;
86
- triage: ConsoleTriageTab;
87
76
  'failed-preparation': ConsoleStatusTab;
88
77
  'todo-by-human': ConsoleStatusTab;
89
78
  'todo-by-agent': ConsoleStatusTab;
@@ -217,22 +206,6 @@ export class GenerateConsoleListsUseCase {
217
206
  (issue) => issue.status === TODO_BY_AGENT_STATUS_NAME,
218
207
  [TODO_BY_AGENT_STATUS_NAME.toLowerCase(), 'done'],
219
208
  ),
220
- triage: {
221
- pjcode,
222
- generatedAt,
223
- storyOptions: this.buildFieldOptions(storyOptions, []),
224
- storyOrder,
225
- storyColors: this.buildStoryColorsString(storyOptions),
226
- items: this.sortByStoryOrder(
227
- actionableIssues.map((issue) =>
228
- this.projectItem(
229
- issue,
230
- relatedOpenPullRequestUrlsByIssueUrl.get(issue.url) ?? [],
231
- ),
232
- ),
233
- storyOrder,
234
- ),
235
- },
236
209
  stories: {
237
210
  pjcode,
238
211
  generatedAt,
@@ -332,16 +305,6 @@ export class GenerateConsoleListsUseCase {
332
305
  return result;
333
306
  };
334
307
 
335
- private buildStoryColorsString = (
336
- options: FieldOption[],
337
- ): Record<string, ConsoleColor> => {
338
- const result: Record<string, ConsoleColor> = {};
339
- for (const option of options) {
340
- result[option.name] = option.color;
341
- }
342
- return result;
343
- };
344
-
345
308
  private sortByStoryOrder = (
346
309
  items: ConsoleListItem[],
347
310
  storyOrder: string[],
@@ -2,11 +2,18 @@ import { LiveSessionOauthTokenSelectionSettings } from '../../../domain/usecases
2
2
  export declare const FLEET_CONFIG_FILE_PATH_ENVIRONMENT_VARIABLE = "TDPM_FLEET_CONFIG";
3
3
  export declare const LIVE_SESSION_OAUTH_TOKEN_SELECTION_SECTION_KEY = "liveSessionOauthTokenSelection";
4
4
  export declare const PREPARATION_WORKER_SECTION_KEY = "preparationWorker";
5
+ export declare const START_PREPARATION_SECTION_KEY = "startPreparation";
6
+ export declare const DEFAULT_FLEET_MAXIMUM_PREPARING_ISSUES_COUNT = 80;
5
7
  export type PreparationWorkerSettings = {
6
8
  normalConcurrentLimit: number;
7
9
  };
8
10
  export declare const DEFAULT_PREPARATION_WORKER_SETTINGS: PreparationWorkerSettings;
11
+ export type StartPreparationFleetSettings = {
12
+ maximumPreparingIssuesCount: number;
13
+ };
14
+ export declare const DEFAULT_START_PREPARATION_FLEET_SETTINGS: StartPreparationFleetSettings;
9
15
  export declare const resolveFleetConfigFilePath: (cliValue: string | null) => string | null;
10
16
  export declare const loadLiveSessionOauthTokenSelectionSettings: (fleetConfigFilePath: string | null) => LiveSessionOauthTokenSelectionSettings;
11
17
  export declare const loadPreparationWorkerSettings: (fleetConfigFilePath: string | null) => PreparationWorkerSettings;
18
+ export declare const loadStartPreparationFleetSettings: (fleetConfigFilePath: string | null) => StartPreparationFleetSettings;
12
19
  //# sourceMappingURL=fleetConfig.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"fleetConfig.d.ts","sourceRoot":"","sources":["../../../../src/adapter/entry-points/cli/fleetConfig.ts"],"names":[],"mappings":"AAEA,OAAO,EAEL,sCAAsC,EACvC,MAAM,6DAA6D,CAAC;AAGrE,eAAO,MAAM,2CAA2C,sBAAsB,CAAC;AAE/E,eAAO,MAAM,8CAA8C,mCACzB,CAAC;AACnC,eAAO,MAAM,8BAA8B,sBAAsB,CAAC;AAElE,MAAM,MAAM,yBAAyB,GAAG;IACtC,qBAAqB,EAAE,MAAM,CAAC;CAC/B,CAAC;AAEF,eAAO,MAAM,mCAAmC,EAAE,yBAEjD,CAAC;AAEF,eAAO,MAAM,0BAA0B,GACrC,UAAU,MAAM,GAAG,IAAI,KACtB,MAAM,GAAG,IAUX,CAAC;AA0DF,eAAO,MAAM,0CAA0C,GACrD,qBAAqB,MAAM,GAAG,IAAI,KACjC,sCAiDF,CAAC;AAEF,eAAO,MAAM,6BAA6B,GACxC,qBAAqB,MAAM,GAAG,IAAI,KACjC,yBAsBF,CAAC"}
1
+ {"version":3,"file":"fleetConfig.d.ts","sourceRoot":"","sources":["../../../../src/adapter/entry-points/cli/fleetConfig.ts"],"names":[],"mappings":"AAEA,OAAO,EAEL,sCAAsC,EACvC,MAAM,6DAA6D,CAAC;AAGrE,eAAO,MAAM,2CAA2C,sBAAsB,CAAC;AAE/E,eAAO,MAAM,8CAA8C,mCACzB,CAAC;AACnC,eAAO,MAAM,8BAA8B,sBAAsB,CAAC;AAClE,eAAO,MAAM,6BAA6B,qBAAqB,CAAC;AAEhE,eAAO,MAAM,4CAA4C,KAAK,CAAC;AAE/D,MAAM,MAAM,yBAAyB,GAAG;IACtC,qBAAqB,EAAE,MAAM,CAAC;CAC/B,CAAC;AAEF,eAAO,MAAM,mCAAmC,EAAE,yBAEjD,CAAC;AAEF,MAAM,MAAM,6BAA6B,GAAG;IAC1C,2BAA2B,EAAE,MAAM,CAAC;CACrC,CAAC;AAEF,eAAO,MAAM,wCAAwC,EAAE,6BAGpD,CAAC;AAEJ,eAAO,MAAM,0BAA0B,GACrC,UAAU,MAAM,GAAG,IAAI,KACtB,MAAM,GAAG,IAUX,CAAC;AA0DF,eAAO,MAAM,0CAA0C,GACrD,qBAAqB,MAAM,GAAG,IAAI,KACjC,sCAiDF,CAAC;AAEF,eAAO,MAAM,6BAA6B,GACxC,qBAAqB,MAAM,GAAG,IAAI,KACjC,yBAsBF,CAAC;AAEF,eAAO,MAAM,iCAAiC,GAC5C,qBAAqB,MAAM,GAAG,IAAI,KACjC,6BAsBF,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"consoleDoneStore.d.ts","sourceRoot":"","sources":["../../../../src/adapter/entry-points/console/consoleDoneStore.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,sBAAsB,eAAe,CAAC;AAEnD,MAAM,MAAM,iBAAiB,GAAG;IAC9B,cAAc,EAAE,MAAM,EAAE,CAAC;CAC1B,CAAC;AAqBF,eAAO,MAAM,kBAAkB,GAC7B,sBAAsB,MAAM,EAC5B,QAAQ,MAAM,EACd,KAAK,MAAM,KACV,MACmE,CAAC;AAYvE,eAAO,MAAM,sBAAsB,GACjC,sBAAsB,MAAM,EAC5B,QAAQ,MAAM,EACd,KAAK,MAAM,KACV,MAAM,EASR,CAAC;AAEF,eAAO,MAAM,uBAAuB,GAClC,sBAAsB,MAAM,EAC5B,QAAQ,MAAM,EACd,KAAK,MAAM,EACX,eAAe,MAAM,KACpB,IAaF,CAAC;AAEF,eAAO,MAAM,sBAAsB,EAAE,MAAM,EAQ1C,CAAC;AAEF,eAAO,MAAM,sCAAsC,EAAE,MAAM,EAM1D,CAAC;AAEF,eAAO,MAAM,qCAAqC,EAAE,MAAM,EAGzD,CAAC;AAEF,eAAO,MAAM,8BAA8B,GACzC,sBAAsB,MAAM,EAC5B,QAAQ,MAAM,EACd,eAAe,MAAM,EACrB,UAAU,MAAM,EAAE,KACjB,IAIF,CAAC;AAEF,eAAO,MAAM,iCAAiC,GAC5C,sBAAsB,MAAM,EAC5B,QAAQ,MAAM,EACd,eAAe,MAAM,KACpB,IAIF,CAAC;AAEF,eAAO,MAAM,uBAAuB,GAClC,sBAAsB,MAAM,EAC5B,QAAQ,MAAM,EACd,KAAK,MAAM,KACV,IAGF,CAAC;AAEF,eAAO,MAAM,iCAAiC,GAC5C,sBAAsB,MAAM,EAC5B,QAAQ,MAAM,KACb,IAIF,CAAC"}
1
+ {"version":3,"file":"consoleDoneStore.d.ts","sourceRoot":"","sources":["../../../../src/adapter/entry-points/console/consoleDoneStore.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,sBAAsB,eAAe,CAAC;AAEnD,MAAM,MAAM,iBAAiB,GAAG;IAC9B,cAAc,EAAE,MAAM,EAAE,CAAC;CAC1B,CAAC;AAqBF,eAAO,MAAM,kBAAkB,GAC7B,sBAAsB,MAAM,EAC5B,QAAQ,MAAM,EACd,KAAK,MAAM,KACV,MACmE,CAAC;AAYvE,eAAO,MAAM,sBAAsB,GACjC,sBAAsB,MAAM,EAC5B,QAAQ,MAAM,EACd,KAAK,MAAM,KACV,MAAM,EASR,CAAC;AAEF,eAAO,MAAM,uBAAuB,GAClC,sBAAsB,MAAM,EAC5B,QAAQ,MAAM,EACd,KAAK,MAAM,EACX,eAAe,MAAM,KACpB,IAaF,CAAC;AAEF,eAAO,MAAM,sBAAsB,EAAE,MAAM,EAO1C,CAAC;AAEF,eAAO,MAAM,sCAAsC,EAAE,MAAM,EAM1D,CAAC;AAEF,eAAO,MAAM,qCAAqC,EAAE,MAAM,EAEzD,CAAC;AAEF,eAAO,MAAM,8BAA8B,GACzC,sBAAsB,MAAM,EAC5B,QAAQ,MAAM,EACd,eAAe,MAAM,EACrB,UAAU,MAAM,EAAE,KACjB,IAIF,CAAC;AAEF,eAAO,MAAM,iCAAiC,GAC5C,sBAAsB,MAAM,EAC5B,QAAQ,MAAM,EACd,eAAe,MAAM,KACpB,IAIF,CAAC;AAEF,eAAO,MAAM,uBAAuB,GAClC,sBAAsB,MAAM,EAC5B,QAAQ,MAAM,EACd,KAAK,MAAM,KACV,IAGF,CAAC;AAEF,eAAO,MAAM,iCAAiC,GAC5C,sBAAsB,MAAM,EAC5B,QAAQ,MAAM,KACb,IAIF,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"consoleTabNames.d.ts","sourceRoot":"","sources":["../../../../src/adapter/entry-points/console/consoleTabNames.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8DAA8D,CAAC;AAEnG,eAAO,MAAM,sBAAsB,EAAE,cAAc,EAQlD,CAAC;AAOF,eAAO,MAAM,gBAAgB,GAC3B,OAAO,OAAO,EAAE,EAChB,YAAY,MAAM,EAAE,KACnB,OAAO,EAgBT,CAAC"}
1
+ {"version":3,"file":"consoleTabNames.d.ts","sourceRoot":"","sources":["../../../../src/adapter/entry-points/console/consoleTabNames.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8DAA8D,CAAC;AAEnG,eAAO,MAAM,sBAAsB,EAAE,cAAc,EAOlD,CAAC;AAOF,eAAO,MAAM,gBAAgB,GAC3B,OAAO,OAAO,EAAE,EAChB,YAAY,MAAM,EAAE,KACnB,OAAO,EAgBT,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"HandleScheduledEventUseCaseHandler.d.ts","sourceRoot":"","sources":["../../../../src/adapter/entry-points/handlers/HandleScheduledEventUseCaseHandler.ts"],"names":[],"mappings":"AAiDA,OAAO,EAAE,KAAK,EAAE,MAAM,gCAAgC,CAAC;AACvD,OAAO,EAAE,OAAO,EAAE,MAAM,kCAAkC,CAAC;AA2D3D,qBAAa,kCAAkC;IAC7C,MAAM,GACJ,gBAAgB,MAAM,EACtB,UAAU,OAAO,EACjB,6BAA4B,MAAM,EAAE,GAAG,IAAW,KACjD,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,CAu0BP;CACH"}
1
+ {"version":3,"file":"HandleScheduledEventUseCaseHandler.d.ts","sourceRoot":"","sources":["../../../../src/adapter/entry-points/handlers/HandleScheduledEventUseCaseHandler.ts"],"names":[],"mappings":"AAqDA,OAAO,EAAE,KAAK,EAAE,MAAM,gCAAgC,CAAC;AACvD,OAAO,EAAE,OAAO,EAAE,MAAM,kCAAkC,CAAC;AA2D3D,qBAAa,kCAAkC;IAC7C,MAAM,GACJ,gBAAgB,MAAM,EACtB,UAAU,OAAO,EACjB,6BAA4B,MAAM,EAAE,GAAG,IAAW,KACjD,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,CA40BP;CACH"}
@@ -35,15 +35,7 @@ export type ConsoleStatusTab = {
35
35
  }>;
36
36
  items: ConsoleListItem[];
37
37
  };
38
- export type ConsoleTriageTab = {
39
- pjcode: string;
40
- generatedAt: string;
41
- storyOptions: ConsoleFieldOption[];
42
- storyOrder: string[];
43
- storyColors: Record<string, ConsoleColor>;
44
- items: ConsoleListItem[];
45
- };
46
- export type ConsoleTabName = 'workflow-blocker' | 'prs' | 'triage' | 'failed-preparation' | 'todo-by-human' | 'todo-by-agent' | 'stories';
38
+ export type ConsoleTabName = 'workflow-blocker' | 'prs' | 'failed-preparation' | 'todo-by-human' | 'todo-by-agent' | 'stories';
47
39
  export type ConsoleStoryEntry = {
48
40
  storyName: string;
49
41
  storyOptionId: string;
@@ -64,7 +56,6 @@ export type ConsoleStoriesTab = {
64
56
  export type ConsoleLists = {
65
57
  'workflow-blocker': ConsoleStatusTab;
66
58
  prs: ConsoleStatusTab;
67
- triage: ConsoleTriageTab;
68
59
  'failed-preparation': ConsoleStatusTab;
69
60
  'todo-by-human': ConsoleStatusTab;
70
61
  'todo-by-agent': ConsoleStatusTab;
@@ -87,7 +78,6 @@ export declare class GenerateConsoleListsUseCase {
87
78
  private projectItem;
88
79
  private buildFieldOptions;
89
80
  private buildStoryColorsObject;
90
- private buildStoryColorsString;
91
81
  private sortByStoryOrder;
92
82
  }
93
83
  //# sourceMappingURL=GenerateConsoleListsUseCase.d.ts.map
@@ -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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"}