github-issue-tower-defence-management 2.1.2 → 2.3.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 (65) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/README.md +8 -0
  3. package/bin/adapter/entry-points/cli/fleetConfig.js +30 -12
  4. package/bin/adapter/entry-points/cli/fleetConfig.js.map +1 -1
  5. package/bin/adapter/entry-points/cli/index.js +5 -0
  6. package/bin/adapter/entry-points/cli/index.js.map +1 -1
  7. package/bin/adapter/entry-points/console/consoleDoneStore.js +0 -2
  8. package/bin/adapter/entry-points/console/consoleDoneStore.js.map +1 -1
  9. package/bin/adapter/entry-points/console/consoleTabNames.js +0 -1
  10. package/bin/adapter/entry-points/console/consoleTabNames.js.map +1 -1
  11. package/bin/adapter/entry-points/console/ui-dist/assets/index-C5cOzhyn.js +86 -0
  12. package/bin/adapter/entry-points/console/ui-dist/index.html +1 -1
  13. package/bin/domain/usecases/StartPreparationUseCase.js +13 -12
  14. package/bin/domain/usecases/StartPreparationUseCase.js.map +1 -1
  15. package/bin/domain/usecases/console/GenerateConsoleListsUseCase.js +0 -15
  16. package/bin/domain/usecases/console/GenerateConsoleListsUseCase.js.map +1 -1
  17. package/package.json +1 -1
  18. package/src/adapter/entry-points/cli/fleetConfig.test.ts +96 -0
  19. package/src/adapter/entry-points/cli/fleetConfig.ts +51 -6
  20. package/src/adapter/entry-points/cli/index.test.ts +2 -0
  21. package/src/adapter/entry-points/cli/index.ts +16 -0
  22. package/src/adapter/entry-points/console/consoleDataDelivery.test.ts +15 -9
  23. package/src/adapter/entry-points/console/consoleDoneStore.ts +0 -2
  24. package/src/adapter/entry-points/console/consoleItemUrlLookup.test.ts +1 -1
  25. package/src/adapter/entry-points/console/consoleTabNames.ts +0 -1
  26. package/src/adapter/entry-points/console/ui/e2e/consoleScenario.spec.ts +7 -115
  27. package/src/adapter/entry-points/console/ui/e2e/consoleTestHarness.ts +0 -16
  28. package/src/adapter/entry-points/console/ui/src/features/console/components/detail/ConsoleItemDetail.stories.tsx +1 -3
  29. package/src/adapter/entry-points/console/ui/src/features/console/components/layout/ConsoleTabList.stories.tsx +0 -4
  30. package/src/adapter/entry-points/console/ui/src/features/console/components/layout/ConsoleTabList.test.tsx +0 -1
  31. package/src/adapter/entry-points/console/ui/src/features/console/components/operations/ConsoleOperationMenu.stories.tsx +0 -10
  32. package/src/adapter/entry-points/console/ui/src/features/console/components/operations/ConsoleOperationMenu.test.tsx +2 -28
  33. package/src/adapter/entry-points/console/ui/src/features/console/components/operations/ConsoleOperationMenu.tsx +0 -10
  34. package/src/adapter/entry-points/console/ui/src/features/console/hooks/useConsoleNavigation.test.ts +18 -14
  35. package/src/adapter/entry-points/console/ui/src/features/console/hooks/useConsoleOverlay.test.ts +2 -2
  36. package/src/adapter/entry-points/console/ui/src/features/console/logic/actionToast.test.ts +1 -1
  37. package/src/adapter/entry-points/console/ui/src/features/console/logic/grouping.test.ts +7 -7
  38. package/src/adapter/entry-points/console/ui/src/features/console/logic/overlay.test.ts +10 -8
  39. package/src/adapter/entry-points/console/ui/src/features/console/logic/tabAdvance.test.ts +9 -11
  40. package/src/adapter/entry-points/console/ui/src/features/console/logic/types.ts +1 -12
  41. package/src/adapter/entry-points/console/ui/src/features/console/pages/ConsoleItemDetailContainer.test.tsx +0 -12
  42. package/src/adapter/entry-points/console/ui/src/features/console/pages/ConsoleItemDetailContainer.tsx +0 -3
  43. package/src/adapter/entry-points/console/ui/src/features/console/pages/ConsolePage.tsx +10 -57
  44. package/src/adapter/entry-points/console/ui-dist/assets/index-C5cOzhyn.js +86 -0
  45. package/src/adapter/entry-points/console/ui-dist/index.html +1 -1
  46. package/src/adapter/entry-points/console/webServer.test.ts +2 -2
  47. package/src/adapter/entry-points/handlers/consoleListsWriter.test.ts +0 -1
  48. package/src/domain/usecases/StartPreparationUseCase.test.ts +97 -0
  49. package/src/domain/usecases/StartPreparationUseCase.ts +13 -3
  50. package/src/domain/usecases/console/GenerateConsoleListsUseCase.test.ts +2 -160
  51. package/src/domain/usecases/console/GenerateConsoleListsUseCase.ts +0 -37
  52. package/types/adapter/entry-points/cli/fleetConfig.d.ts +6 -0
  53. package/types/adapter/entry-points/cli/fleetConfig.d.ts.map +1 -1
  54. package/types/adapter/entry-points/cli/index.d.ts.map +1 -1
  55. package/types/adapter/entry-points/console/consoleDoneStore.d.ts.map +1 -1
  56. package/types/adapter/entry-points/console/consoleTabNames.d.ts.map +1 -1
  57. package/types/domain/usecases/StartPreparationUseCase.d.ts +3 -1
  58. package/types/domain/usecases/StartPreparationUseCase.d.ts.map +1 -1
  59. package/types/domain/usecases/console/GenerateConsoleListsUseCase.d.ts +1 -11
  60. package/types/domain/usecases/console/GenerateConsoleListsUseCase.d.ts.map +1 -1
  61. package/bin/adapter/entry-points/console/ui-dist/assets/index-BVyeR7xJ.js +0 -86
  62. package/src/adapter/entry-points/console/ui/src/features/console/components/operations/ConsoleStoryActions.stories.tsx +0 -80
  63. package/src/adapter/entry-points/console/ui/src/features/console/components/operations/ConsoleStoryActions.test.tsx +0 -39
  64. package/src/adapter/entry-points/console/ui/src/features/console/components/operations/ConsoleStoryActions.tsx +0 -42
  65. package/src/adapter/entry-points/console/ui-dist/assets/index-BVyeR7xJ.js +0 -86
@@ -9,7 +9,6 @@ const counts = (
9
9
  ): Record<ConsoleTabName, number> => ({
10
10
  'workflow-blocker': 0,
11
11
  prs: 0,
12
- triage: 0,
13
12
  'failed-preparation': 0,
14
13
  'todo-by-human': 0,
15
14
  'todo-by-agent': 0,
@@ -19,16 +18,16 @@ const counts = (
19
18
 
20
19
  describe('findNextNonEmptyTabToRight', () => {
21
20
  it('returns the first non-empty tab to the right of the active tab', () => {
22
- expect(findNextNonEmptyTabToRight('prs', counts({ triage: 7 }))).toBe(
23
- 'triage',
24
- );
21
+ expect(
22
+ findNextNonEmptyTabToRight('prs', counts({ 'failed-preparation': 7 })),
23
+ ).toBe('failed-preparation');
25
24
  });
26
25
 
27
26
  it('skips empty tabs and returns the next non-empty tab further right', () => {
28
27
  expect(
29
28
  findNextNonEmptyTabToRight(
30
29
  'prs',
31
- counts({ triage: 0, 'todo-by-human': 4 }),
30
+ counts({ 'failed-preparation': 0, 'todo-by-human': 4 }),
32
31
  ),
33
32
  ).toBe('todo-by-human');
34
33
  });
@@ -43,9 +42,9 @@ describe('findNextNonEmptyTabToRight', () => {
43
42
  });
44
43
 
45
44
  it('returns the immediately adjacent tab when it is non-empty', () => {
46
- expect(findNextNonEmptyTabToRight('prs', counts({ triage: 12 }))).toBe(
47
- 'triage',
48
- );
45
+ expect(
46
+ findNextNonEmptyTabToRight('prs', counts({ 'failed-preparation': 12 })),
47
+ ).toBe('failed-preparation');
49
48
  });
50
49
 
51
50
  it('returns null when no tab to the right has any items', () => {
@@ -68,7 +67,6 @@ describe('resolveDefaultActiveTab', () => {
68
67
  counts({
69
68
  'workflow-blocker': 3,
70
69
  prs: 5,
71
- triage: 2,
72
70
  'failed-preparation': 1,
73
71
  'todo-by-human': 4,
74
72
  }),
@@ -79,9 +77,9 @@ describe('resolveDefaultActiveTab', () => {
79
77
  it('skips empty left-most tabs and returns the first non-empty tab', () => {
80
78
  expect(
81
79
  resolveDefaultActiveTab(
82
- counts({ 'workflow-blocker': 0, prs: 0, triage: 8 }),
80
+ counts({ 'workflow-blocker': 0, prs: 0, 'failed-preparation': 8 }),
83
81
  ),
84
- ).toBe('triage');
82
+ ).toBe('failed-preparation');
85
83
  });
86
84
 
87
85
  it('falls back to the first tab when every tab is empty', () => {
@@ -43,16 +43,7 @@ export type ConsoleStatusTab = {
43
43
  items: ConsoleListItem[];
44
44
  };
45
45
 
46
- export type ConsoleTriageTab = {
47
- pjcode: string;
48
- generatedAt: string;
49
- storyOptions: ConsoleFieldOption[];
50
- storyOrder: string[];
51
- storyColors: Record<string, ConsoleColor>;
52
- items: ConsoleListItem[];
53
- };
54
-
55
- export type ConsoleTabData = ConsoleStatusTab | ConsoleTriageTab;
46
+ export type ConsoleTabData = ConsoleStatusTab;
56
47
 
57
48
  export type ConsoleStoryColorSource = Record<
58
49
  string,
@@ -144,7 +135,6 @@ export type ConsoleOverlay = Record<string, ConsoleOverlayEntry>;
144
135
  export type ConsoleTabName =
145
136
  | 'workflow-blocker'
146
137
  | 'prs'
147
- | 'triage'
148
138
  | 'failed-preparation'
149
139
  | 'todo-by-human'
150
140
  | 'todo-by-agent'
@@ -166,7 +156,6 @@ export type ConsoleTab = {
166
156
  export const CONSOLE_TABS: ConsoleTab[] = [
167
157
  { name: 'workflow-blocker', label: 'Workflow Blocker' },
168
158
  { name: 'prs', label: 'Awaiting Quality Check' },
169
- { name: 'triage', label: 'Triage' },
170
159
  { name: 'failed-preparation', label: 'Failed Preparation' },
171
160
  { name: 'todo-by-human', label: 'Todo by human' },
172
161
  { name: 'todo-by-agent', label: 'Todo by agent' },
@@ -13,7 +13,6 @@ import {
13
13
  consoleRelatedPullRequestsFixture,
14
14
  consoleStatusOptionsFixture,
15
15
  consoleStoryColorsFixture,
16
- consoleStoryOptionsFixture,
17
16
  } from '../testing/fixtures';
18
17
  import { ConsoleItemDetailContainer } from './ConsoleItemDetailContainer';
19
18
 
@@ -110,7 +109,6 @@ describe('ConsoleItemDetailContainer', () => {
110
109
  caches={buildCaches()}
111
110
  operations={operations}
112
111
  statusOptions={consoleStatusOptionsFixture}
113
- storyOptions={consoleStoryOptionsFixture}
114
112
  storyColors={consoleStoryColorsFixture}
115
113
  storyName="TDPM Console port"
116
114
  overlayStatus={null}
@@ -144,7 +142,6 @@ describe('ConsoleItemDetailContainer', () => {
144
142
  caches={buildCaches()}
145
143
  operations={buildOperations()}
146
144
  statusOptions={consoleStatusOptionsFixture}
147
- storyOptions={consoleStoryOptionsFixture}
148
145
  storyColors={consoleStoryColorsFixture}
149
146
  storyName="TDPM Console port"
150
147
  overlayStatus={null}
@@ -170,7 +167,6 @@ describe('ConsoleItemDetailContainer', () => {
170
167
  caches={buildCaches()}
171
168
  operations={operations}
172
169
  statusOptions={consoleStatusOptionsFixture}
173
- storyOptions={consoleStoryOptionsFixture}
174
170
  storyColors={consoleStoryColorsFixture}
175
171
  storyName="TDPM Console port"
176
172
  overlayStatus={null}
@@ -212,7 +208,6 @@ describe('ConsoleItemDetailContainer', () => {
212
208
  caches={buildCaches()}
213
209
  operations={operations}
214
210
  statusOptions={consoleStatusOptionsFixture}
215
- storyOptions={consoleStoryOptionsFixture}
216
211
  storyColors={consoleStoryColorsFixture}
217
212
  storyName="TDPM Console port"
218
213
  overlayStatus={null}
@@ -260,7 +255,6 @@ describe('ConsoleItemDetailContainer', () => {
260
255
  caches={buildCaches()}
261
256
  operations={operations}
262
257
  statusOptions={consoleStatusOptionsFixture}
263
- storyOptions={consoleStoryOptionsFixture}
264
258
  storyColors={consoleStoryColorsFixture}
265
259
  storyName="TDPM Console port"
266
260
  overlayStatus={null}
@@ -311,7 +305,6 @@ describe('ConsoleItemDetailContainer', () => {
311
305
  caches={buildCaches({ relatedPrsNeverResolve: true })}
312
306
  operations={operations}
313
307
  statusOptions={consoleStatusOptionsFixture}
314
- storyOptions={consoleStoryOptionsFixture}
315
308
  storyColors={consoleStoryColorsFixture}
316
309
  storyName="TDPM Console port"
317
310
  overlayStatus={null}
@@ -348,7 +341,6 @@ describe('ConsoleItemDetailContainer', () => {
348
341
  caches={buildCaches({ prFiles: consoleChangedFilesFixture })}
349
342
  operations={operations}
350
343
  statusOptions={consoleStatusOptionsFixture}
351
- storyOptions={consoleStoryOptionsFixture}
352
344
  storyColors={consoleStoryColorsFixture}
353
345
  storyName="TDPM Console port"
354
346
  overlayStatus={null}
@@ -414,7 +406,6 @@ describe('ConsoleItemDetailContainer', () => {
414
406
  caches={buildCaches()}
415
407
  operations={buildOperations()}
416
408
  statusOptions={consoleStatusOptionsFixture}
417
- storyOptions={consoleStoryOptionsFixture}
418
409
  storyColors={consoleStoryColorsFixture}
419
410
  storyName="TDPM Console port"
420
411
  overlayStatus={null}
@@ -437,7 +428,6 @@ describe('ConsoleItemDetailContainer', () => {
437
428
  caches={buildCaches()}
438
429
  operations={buildOperations()}
439
430
  statusOptions={statusOptionsWithoutAwaitingWorkspace}
440
- storyOptions={consoleStoryOptionsFixture}
441
431
  storyColors={consoleStoryColorsFixture}
442
432
  storyName="TDPM Console port"
443
433
  overlayStatus={null}
@@ -458,7 +448,6 @@ describe('ConsoleItemDetailContainer', () => {
458
448
  caches={buildCaches()}
459
449
  operations={operations}
460
450
  statusOptions={consoleStatusOptionsFixture}
461
- storyOptions={consoleStoryOptionsFixture}
462
451
  storyColors={consoleStoryColorsFixture}
463
452
  storyName="TDPM Console port"
464
453
  overlayStatus={null}
@@ -508,7 +497,6 @@ describe('ConsoleItemDetailContainer', () => {
508
497
  })}
509
498
  operations={operations}
510
499
  statusOptions={consoleStatusOptionsFixture}
511
- storyOptions={consoleStoryOptionsFixture}
512
500
  storyColors={consoleStoryColorsFixture}
513
501
  storyName="TDPM Console port"
514
502
  overlayStatus={null}
@@ -38,7 +38,6 @@ export type ConsoleItemDetailContainerProps = {
38
38
  caches: ConsoleCaches;
39
39
  operations: ConsoleOperationsApi;
40
40
  statusOptions: ConsoleFieldOption[];
41
- storyOptions: ConsoleFieldOption[];
42
41
  storyColors: ConsoleStoryColorSource;
43
42
  storyName: string | null;
44
43
  overlayStatus: ConsoleOverlayStatus | null;
@@ -54,7 +53,6 @@ export const ConsoleItemDetailContainer = ({
54
53
  caches,
55
54
  operations,
56
55
  statusOptions,
57
- storyOptions,
58
56
  storyColors,
59
57
  storyName,
60
58
  overlayStatus,
@@ -231,7 +229,6 @@ export const ConsoleItemDetailContainer = ({
231
229
  hasPullRequest={hasPullRequest}
232
230
  rejectEnabled={pendingReviewComments.length > 0}
233
231
  statusOptions={statusOptions}
234
- storyOptions={storyOptions}
235
232
  handlers={handlers}
236
233
  />
237
234
  }
@@ -3,7 +3,6 @@ import { ConsoleTabList } from '../components/layout/ConsoleTabList';
3
3
  import { ConsoleTimerSettingsModalDialog } from '../components/layout/ConsoleTimerSettingsModalDialog';
4
4
  import { ConsoleItemList } from '../components/list/ConsoleItemList';
5
5
  import { ConsoleStoryList } from '../components/list/ConsoleStoryList';
6
- import { ConsoleStoryReorderPanel } from '../components/list/ConsoleStoryReorderPanel';
7
6
  import {
8
7
  ConsoleErrorToast,
9
8
  ConsoleUndoToast,
@@ -177,26 +176,14 @@ export const ConsolePage = () => {
177
176
 
178
177
  const storyColors = activeSnapshot?.storyColors ?? {};
179
178
  const statusOptions = activeSnapshot?.statusOptions ?? [];
180
- const storyOptions = activeSnapshot?.storyOptions ?? [];
181
179
  const generatedAt = activeSnapshot?.generatedAt ?? null;
182
180
  const fromCache = activeSnapshot?.fromCache ?? false;
183
181
 
184
- const [localStoryOptionsOverride, setLocalStoryOptionsOverride] = useState<{
185
- generatedAt: string | undefined;
186
- stories: typeof storyOptions;
187
- } | null>(null);
188
-
189
182
  const [localStoryEntriesOverride, setLocalStoryEntriesOverride] = useState<{
190
183
  generatedAt: string | undefined;
191
184
  stories: ConsoleStoryEntry[];
192
185
  } | null>(null);
193
186
 
194
- const triageStoryOptions =
195
- localStoryOptionsOverride !== null &&
196
- localStoryOptionsOverride.generatedAt === activeSnapshot?.generatedAt
197
- ? localStoryOptionsOverride.stories
198
- : storyOptions.filter((o) => o.color !== 'GRAY');
199
-
200
187
  const selectedItem = useMemo<ConsoleListItem | null>(() => {
201
188
  if (selectedItemKey === null || activeSnapshot === null) {
202
189
  return null;
@@ -385,25 +372,6 @@ export const ConsolePage = () => {
385
372
  throw new Error('No project specified in the URL path.');
386
373
  }
387
374
  await postConsoleReorderStory({ pjcode, storyOptionId, direction });
388
- const triageIndex = triageStoryOptions.findIndex(
389
- (o) => o.id === storyOptionId,
390
- );
391
- if (triageIndex !== -1) {
392
- const triageSwapIndex = triageIndex + (direction === 'up' ? -1 : 1);
393
- if (
394
- triageSwapIndex >= 0 &&
395
- triageSwapIndex < triageStoryOptions.length
396
- ) {
397
- const nextTriage = [...triageStoryOptions];
398
- const triageTemp = nextTriage[triageIndex];
399
- nextTriage[triageIndex] = nextTriage[triageSwapIndex];
400
- nextTriage[triageSwapIndex] = triageTemp;
401
- setLocalStoryOptionsOverride({
402
- generatedAt: activeSnapshot?.generatedAt,
403
- stories: nextTriage,
404
- });
405
- }
406
- }
407
375
  const entryIndex = storyEntries.findIndex(
408
376
  (e) => e.storyOptionId === storyOptionId,
409
377
  );
@@ -421,13 +389,7 @@ export const ConsolePage = () => {
421
389
  }
422
390
  }
423
391
  },
424
- [
425
- pjcode,
426
- triageStoryOptions,
427
- storyEntries,
428
- activeSnapshot?.generatedAt,
429
- storiesSnapshot?.generatedAt,
430
- ],
392
+ [pjcode, storyEntries, storiesSnapshot?.generatedAt],
431
393
  );
432
394
 
433
395
  const handleStoryAdd = useCallback(
@@ -565,23 +527,15 @@ export const ConsolePage = () => {
565
527
  colorErrors={storyColorErrors}
566
528
  />
567
529
  ) : selectedItem === null ? (
568
- <>
569
- {activeTab === 'triage' && triageStoryOptions.length > 0 && (
570
- <ConsoleStoryReorderPanel
571
- stories={triageStoryOptions}
572
- onReorderStory={handleReorderStory}
573
- />
574
- )}
575
- <ConsoleItemList
576
- rows={rows}
577
- storyColors={storyColors}
578
- activeItemId={null}
579
- now={now}
580
- isLoading={isLoading}
581
- error={error}
582
- onSelectItem={(item) => navigation.openItem(item.projectItemId)}
583
- />
584
- </>
530
+ <ConsoleItemList
531
+ rows={rows}
532
+ storyColors={storyColors}
533
+ activeItemId={null}
534
+ now={now}
535
+ isLoading={isLoading}
536
+ error={error}
537
+ onSelectItem={(item) => navigation.openItem(item.projectItemId)}
538
+ />
585
539
  ) : (
586
540
  <div className="console-detail-screen" ref={detailScreenRef}>
587
541
  <ConsoleItemDetailContainer
@@ -591,7 +545,6 @@ export const ConsolePage = () => {
591
545
  caches={caches}
592
546
  operations={operations}
593
547
  statusOptions={statusOptions}
594
- storyOptions={storyOptions}
595
548
  storyColors={storyColors}
596
549
  storyName={storyNameForSelected}
597
550
  overlayStatus={overlayStatusForSelected}