github-issue-tower-defence-management 1.183.0 → 1.184.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 (48) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/README.md +8 -8
  3. package/bin/adapter/entry-points/cli/index.js +1 -2
  4. package/bin/adapter/entry-points/cli/index.js.map +1 -1
  5. package/bin/adapter/entry-points/cli/projectConfig.js +3 -3
  6. package/bin/adapter/entry-points/cli/projectConfig.js.map +1 -1
  7. package/bin/adapter/entry-points/console/consoleGithubTokenResolver.js +20 -6
  8. package/bin/adapter/entry-points/console/consoleGithubTokenResolver.js.map +1 -1
  9. package/bin/adapter/entry-points/console/ui-dist/assets/{index-Cc2LSARI.js → index-CMrnEYO1.js} +1 -1
  10. package/bin/adapter/entry-points/console/ui-dist/index.html +1 -1
  11. package/bin/adapter/entry-points/handlers/HandleScheduledEventUseCaseHandler.js +4 -1
  12. package/bin/adapter/entry-points/handlers/HandleScheduledEventUseCaseHandler.js.map +1 -1
  13. package/bin/adapter/entry-points/handlers/consoleListsWriter.js +1 -0
  14. package/bin/adapter/entry-points/handlers/consoleListsWriter.js.map +1 -1
  15. package/bin/domain/usecases/console/GenerateConsoleListsUseCase.js +5 -1
  16. package/bin/domain/usecases/console/GenerateConsoleListsUseCase.js.map +1 -1
  17. package/eslint.config.mjs +9 -0
  18. package/package.json +1 -1
  19. package/src/adapter/ci/workflowRunCancellation.test.ts +0 -46
  20. package/src/adapter/entry-points/cli/index.ts +2 -3
  21. package/src/adapter/entry-points/cli/projectConfig.test.ts +58 -0
  22. package/src/adapter/entry-points/cli/projectConfig.ts +6 -6
  23. package/src/adapter/entry-points/console/consoleGithubTokenResolver.test.ts +77 -28
  24. package/src/adapter/entry-points/console/consoleGithubTokenResolver.ts +25 -6
  25. package/src/adapter/entry-points/console/ui/e2e/consoleScenario.spec.ts +9 -0
  26. package/src/adapter/entry-points/console/ui/e2e/consoleTestHarness.ts +3 -0
  27. package/src/adapter/entry-points/console/ui/src/features/console/components/list/ConsoleStoryList.stories.tsx +23 -2
  28. package/src/adapter/entry-points/console/ui/src/features/console/components/list/ConsoleStoryList.test.tsx +60 -0
  29. package/src/adapter/entry-points/console/ui/src/features/console/components/list/ConsoleStoryList.tsx +25 -9
  30. package/src/adapter/entry-points/console/ui/src/features/console/logic/types.ts +1 -0
  31. package/src/adapter/entry-points/console/ui-dist/assets/{index-Cc2LSARI.js → index-CMrnEYO1.js} +1 -1
  32. package/src/adapter/entry-points/console/ui-dist/index.html +1 -1
  33. package/src/adapter/entry-points/handlers/HandleScheduledEventUseCaseHandler.test.ts +38 -1
  34. package/src/adapter/entry-points/handlers/HandleScheduledEventUseCaseHandler.ts +4 -1
  35. package/src/adapter/entry-points/handlers/consoleListsWriter.ts +2 -0
  36. package/src/domain/usecases/StartPreparationUseCase.test.ts +2 -2
  37. package/src/domain/usecases/console/GenerateConsoleListsUseCase.test.ts +53 -0
  38. package/src/domain/usecases/console/GenerateConsoleListsUseCase.ts +7 -0
  39. package/types/adapter/entry-points/cli/index.d.ts.map +1 -1
  40. package/types/adapter/entry-points/cli/projectConfig.d.ts +1 -1
  41. package/types/adapter/entry-points/cli/projectConfig.d.ts.map +1 -1
  42. package/types/adapter/entry-points/console/consoleGithubTokenResolver.d.ts +1 -1
  43. package/types/adapter/entry-points/console/consoleGithubTokenResolver.d.ts.map +1 -1
  44. package/types/adapter/entry-points/handlers/HandleScheduledEventUseCaseHandler.d.ts.map +1 -1
  45. package/types/adapter/entry-points/handlers/consoleListsWriter.d.ts +1 -0
  46. package/types/adapter/entry-points/handlers/consoleListsWriter.d.ts.map +1 -1
  47. package/types/domain/usecases/console/GenerateConsoleListsUseCase.d.ts +2 -0
  48. package/types/domain/usecases/console/GenerateConsoleListsUseCase.d.ts.map +1 -1
@@ -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-Cc2LSARI.js"></script>
7
+ <script type="module" crossorigin src="/assets/index-CMrnEYO1.js"></script>
8
8
  <link rel="stylesheet" crossorigin href="/assets/index-8Ni5iu-C.css">
9
9
  </head>
10
10
  <body>
@@ -498,7 +498,7 @@ allowedIssueAuthors: 'user1, user2, user3'
498
498
  });
499
499
  });
500
500
 
501
- it('should default autoAssignManagerAuthors to null when omitted from the YAML config', async () => {
501
+ it('should default autoAssignManagerAuthors to null when omitted from the YAML config and allowedIssueAuthors is also absent', async () => {
502
502
  mockFetchReturningReadme(null);
503
503
  jest.mocked(fs.readFileSync).mockReturnValue(YAML.stringify(validConfig));
504
504
 
@@ -510,6 +510,43 @@ allowedIssueAuthors: 'user1, user2, user3'
510
510
  });
511
511
  });
512
512
 
513
+ it('should fall back to allowedIssueAuthors for autoAssignManagerAuthors when autoAssignManagerAuthors is omitted', async () => {
514
+ mockFetchReturningReadme(null);
515
+ const configWithAllowedIssueAuthors = {
516
+ ...validConfig,
517
+ allowedIssueAuthors: ['HiromiShikata', 'umino-bot'],
518
+ };
519
+ jest
520
+ .mocked(fs.readFileSync)
521
+ .mockReturnValue(YAML.stringify(configWithAllowedIssueAuthors));
522
+
523
+ const handler = new HandleScheduledEventUseCaseHandler();
524
+ await handler.handle('config.yml', false);
525
+
526
+ expect(capturedRunInputs[0][0]).toMatchObject({
527
+ autoAssignManagerAuthors: ['HiromiShikata', 'umino-bot'],
528
+ });
529
+ });
530
+
531
+ it('should prefer explicit autoAssignManagerAuthors over allowedIssueAuthors fallback', async () => {
532
+ mockFetchReturningReadme(null);
533
+ const configWithBothAuthors = {
534
+ ...validConfig,
535
+ allowedIssueAuthors: ['HiromiShikata', 'umino-bot'],
536
+ autoAssignManagerAuthors: ['trusted-bot'],
537
+ };
538
+ jest
539
+ .mocked(fs.readFileSync)
540
+ .mockReturnValue(YAML.stringify(configWithBothAuthors));
541
+
542
+ const handler = new HandleScheduledEventUseCaseHandler();
543
+ await handler.handle('config.yml', false);
544
+
545
+ expect(capturedRunInputs[0][0]).toMatchObject({
546
+ autoAssignManagerAuthors: ['trusted-bot'],
547
+ });
548
+ });
549
+
513
550
  it('should split comma-separated autoAssignManagerAuthors from README config', async () => {
514
551
  const readmeContent = `<details>
515
552
  <summary>config</summary>
@@ -290,7 +290,9 @@ export class HandleScheduledEventUseCaseHandler {
290
290
  input.allowedIssueAuthors,
291
291
  ),
292
292
  autoAssignManagerAuthors: normalizeAllowedIssueAuthors(
293
- readmeConfig.autoAssignManagerAuthors ?? input.autoAssignManagerAuthors,
293
+ readmeConfig.autoAssignManagerAuthors ??
294
+ input.autoAssignManagerAuthors ??
295
+ input.allowedIssueAuthors,
294
296
  ),
295
297
  claudeCodeOauthTokenListJsonPath:
296
298
  readmeConfig.claudeCodeOauthTokenListJsonPath ??
@@ -597,6 +599,7 @@ export class HandleScheduledEventUseCaseHandler {
597
599
  generatedAt: formatConsoleGeneratedAt(new Date(issuesFetchedAt)),
598
600
  workflowBlockerStoryName:
599
601
  mergedInput.workflowBlockerStoryName ?? null,
602
+ urlOfStoryView: mergedInput.urlOfStoryView,
600
603
  });
601
604
  } catch (error) {
602
605
  console.error(
@@ -16,6 +16,7 @@ export type ConsoleListsWriterParams = {
16
16
  project: Project;
17
17
  issues: Issue[];
18
18
  workflowBlockerStoryName?: string | null | undefined;
19
+ urlOfStoryView?: string | null;
19
20
  generatedAt?: string;
20
21
  };
21
22
 
@@ -45,6 +46,7 @@ export const writeConsoleLists = (params: ConsoleListsWriterParams): void => {
45
46
  assigneeLogin,
46
47
  generatedAt,
47
48
  workflowBlockerStoryName: params.workflowBlockerStoryName ?? null,
49
+ urlOfStoryView: params.urlOfStoryView ?? null,
48
50
  });
49
51
 
50
52
  for (const tab of CONSOLE_LIST_TAB_NAMES) {
@@ -6454,9 +6454,9 @@ describe('StartPreparationUseCase', () => {
6454
6454
  });
6455
6455
 
6456
6456
  it('should log one aggregate spawn candidate exclusion summary per run with counts by reason', async () => {
6457
- const currentHour = new Date().getHours();
6457
+ const currentHour = new Date().getUTCHours();
6458
6458
  const dayAfterTomorrow = new Date();
6459
- dayAfterTomorrow.setDate(dayAfterTomorrow.getDate() + 2);
6459
+ dayAfterTomorrow.setUTCDate(dayAfterTomorrow.getUTCDate() + 2);
6460
6460
  const awaitingIssues: Issue[] = [
6461
6461
  createMockIssue({
6462
6462
  url: 'https://github.com/user/repo/issues/11',
@@ -101,6 +101,7 @@ describe('GenerateConsoleListsUseCase', () => {
101
101
  issues: Issue[],
102
102
  project: Project = projectWithStory,
103
103
  workflowBlockerStoryName: string | null = 'regular / WORKFLOW BLOCKER',
104
+ urlOfStoryView: string | null = null,
104
105
  ) =>
105
106
  usecase.run({
106
107
  project,
@@ -109,6 +110,7 @@ describe('GenerateConsoleListsUseCase', () => {
109
110
  assigneeLogin: ASSIGNEE,
110
111
  generatedAt,
111
112
  workflowBlockerStoryName,
113
+ urlOfStoryView,
112
114
  });
113
115
 
114
116
  describe('common actionable filter', () => {
@@ -879,6 +881,57 @@ describe('GenerateConsoleListsUseCase', () => {
879
881
  const result = run([], baseProject(null));
880
882
  expect(result.stories.stories).toEqual([]);
881
883
  });
884
+
885
+ it('sets storyViewUrl to null for every entry when urlOfStoryView is null', () => {
886
+ const result = run([], projectWithStory, null, null);
887
+ for (const entry of result.stories.stories) {
888
+ expect(entry.storyViewUrl).toBeNull();
889
+ }
890
+ });
891
+
892
+ it('computes storyViewUrl with sliceBy query param for each entry when urlOfStoryView is provided', () => {
893
+ const result = run(
894
+ [],
895
+ projectWithStory,
896
+ null,
897
+ 'https://github.com/orgs/demo/projects/1/views/1',
898
+ );
899
+ const alpha = result.stories.stories.find(
900
+ (s) => s.storyName === 'Story Alpha',
901
+ );
902
+ const beta = result.stories.stories.find(
903
+ (s) => s.storyName === 'Story Beta',
904
+ );
905
+ expect(alpha?.storyViewUrl).toBe(
906
+ 'https://github.com/orgs/demo/projects/1/views/1?sliceBy%5Bvalue%5D=Story%20Alpha',
907
+ );
908
+ expect(beta?.storyViewUrl).toBe(
909
+ 'https://github.com/orgs/demo/projects/1/views/1?sliceBy%5Bvalue%5D=Story%20Beta',
910
+ );
911
+ });
912
+
913
+ it('encodes special characters in the story name when building storyViewUrl', () => {
914
+ const specialStoryOptions: FieldOption[] = [
915
+ storyOption('sp1', 'Story #1 & More', 'BLUE'),
916
+ ];
917
+ const specialProject = baseProject({
918
+ name: 'story',
919
+ fieldId: 'story-field',
920
+ databaseId: 2,
921
+ stories: specialStoryOptions,
922
+ workflowManagementStory: { id: 'wm', name: 'workflow management' },
923
+ });
924
+ const result = run(
925
+ [],
926
+ specialProject,
927
+ null,
928
+ 'https://github.com/orgs/demo/projects/1/views/1',
929
+ );
930
+ const entry = result.stories.stories[0];
931
+ expect(entry.storyViewUrl).toBe(
932
+ 'https://github.com/orgs/demo/projects/1/views/1?sliceBy%5Bvalue%5D=Story%20%231%20%26%20More',
933
+ );
934
+ });
882
935
  });
883
936
 
884
937
  describe('agent field propagation', () => {
@@ -6,6 +6,7 @@ import {
6
6
  TODO_BY_AGENT_STATUS_NAME,
7
7
  TODO_STATUS_NAME,
8
8
  } from '../../entities/WorkflowStatus';
9
+ import { encodeForURI } from '../utils';
9
10
 
10
11
  export type ConsoleColor = FieldOption['color'];
11
12
 
@@ -67,6 +68,7 @@ export type ConsoleStoryEntry = {
67
68
  storyOptionId: string;
68
69
  color: ConsoleColor;
69
70
  openItemCount: number;
71
+ storyViewUrl: string | null;
70
72
  };
71
73
 
72
74
  export type ConsoleStoriesTab = {
@@ -95,6 +97,7 @@ export type GenerateConsoleListsInput = {
95
97
  assigneeLogin: string;
96
98
  generatedAt: string;
97
99
  workflowBlockerStoryName: string | null;
100
+ urlOfStoryView: string | null;
98
101
  };
99
102
 
100
103
  const UNKNOWN_STORY_SORT_INDEX = 999999;
@@ -108,6 +111,7 @@ export class GenerateConsoleListsUseCase {
108
111
  assigneeLogin,
109
112
  generatedAt,
110
113
  workflowBlockerStoryName,
114
+ urlOfStoryView,
111
115
  } = input;
112
116
 
113
117
  const storyOptions = project.story ? project.story.stories : [];
@@ -176,6 +180,9 @@ export class GenerateConsoleListsUseCase {
176
180
  storyOptionId: option.id,
177
181
  color: option.color,
178
182
  openItemCount: openItemCountByStory.get(option.name) ?? 0,
183
+ storyViewUrl: urlOfStoryView
184
+ ? `${urlOfStoryView}?sliceBy%5Bvalue%5D=${encodeForURI(option.name)}`
185
+ : null,
179
186
  }));
180
187
 
181
188
  return {
@@ -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;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"}
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;AAoiCrC,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"}
@@ -25,7 +25,7 @@ export type ConfigFile = {
25
25
  consoleDataOutputDir?: string;
26
26
  consoleAccessToken?: string;
27
27
  consoleProjects?: Record<string, string>;
28
- consoleGithubTokenFilesByRepositoryOwner?: Record<string, string>;
28
+ consoleGithubTokenFileDir?: string;
29
29
  disks?: DiskConfig[];
30
30
  };
31
31
  export type DiskConfig = {
@@ -1 +1 @@
1
- {"version":3,"file":"projectConfig.d.ts","sourceRoot":"","sources":["../../../../src/adapter/entry-points/cli/projectConfig.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,UAAU,GAAG;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,2BAA2B,CAAC,EAAE,MAAM,CAAC;IACrC,8BAA8B,CAAC,EAAE,MAAM,CAAC;IACxC,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,iCAAiC,CAAC,EAAE,MAAM,CAAC;IAC3C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,8BAA8B,CAAC,EAAE,MAAM,CAAC;IACxC,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC/B,gCAAgC,CAAC,EAAE,MAAM,CAAC;IAC1C,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,0BAA0B,CAAC,EAAE,MAAM,CAAC;IACpC,oBAAoB,CAAC,EAAE,MAAM,EAAE,CAAC;IAChC,6BAA6B,CAAC,EAAE,MAAM,EAAE,CAAC;IACzC,uBAAuB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjD,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzC,wCAAwC,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAClE,KAAK,CAAC,EAAE,UAAU,EAAE,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAsDF,eAAO,MAAM,QAAQ,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CACH,CAAC;AAgDvE,eAAO,MAAM,cAAc,GAAI,gBAAgB,MAAM,KAAG,UA0EvD,CAAC;AAEF,eAAO,MAAM,wBAAwB,GACnC,QAAQ,MAAM,EACd,aAAa,MAAM,KAClB,UA8EF,CAAC;AAEF,eAAO,MAAM,YAAY,GACvB,YAAY,UAAU,EACtB,cAAc,UAAU,EACxB,iBAAiB,UAAU,KAC1B,UA4FD,CAAC;AAkBH,eAAO,MAAM,kBAAkB,GAC7B,YAAY,MAAM,EAClB,OAAO,MAAM,KACZ,OAAO,CAAC,MAAM,GAAG,IAAI,CAoDvB,CAAC"}
1
+ {"version":3,"file":"projectConfig.d.ts","sourceRoot":"","sources":["../../../../src/adapter/entry-points/cli/projectConfig.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,UAAU,GAAG;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,2BAA2B,CAAC,EAAE,MAAM,CAAC;IACrC,8BAA8B,CAAC,EAAE,MAAM,CAAC;IACxC,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,iCAAiC,CAAC,EAAE,MAAM,CAAC;IAC3C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,8BAA8B,CAAC,EAAE,MAAM,CAAC;IACxC,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC/B,gCAAgC,CAAC,EAAE,MAAM,CAAC;IAC1C,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,0BAA0B,CAAC,EAAE,MAAM,CAAC;IACpC,oBAAoB,CAAC,EAAE,MAAM,EAAE,CAAC;IAChC,6BAA6B,CAAC,EAAE,MAAM,EAAE,CAAC;IACzC,uBAAuB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjD,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzC,yBAAyB,CAAC,EAAE,MAAM,CAAC;IACnC,KAAK,CAAC,EAAE,UAAU,EAAE,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAsDF,eAAO,MAAM,QAAQ,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CACH,CAAC;AAgDvE,eAAO,MAAM,cAAc,GAAI,gBAAgB,MAAM,KAAG,UA0EvD,CAAC;AAEF,eAAO,MAAM,wBAAwB,GACnC,QAAQ,MAAM,EACd,aAAa,MAAM,KAClB,UA8EF,CAAC;AAEF,eAAO,MAAM,YAAY,GACvB,YAAY,UAAU,EACtB,cAAc,UAAU,EACxB,iBAAiB,UAAU,KAC1B,UA4FD,CAAC;AAkBH,eAAO,MAAM,kBAAkB,GAC7B,YAAY,MAAM,EAClB,OAAO,MAAM,KACZ,OAAO,CAAC,MAAM,GAAG,IAAI,CAoDvB,CAAC"}
@@ -5,5 +5,5 @@ export declare const createConsoleIssueRepositoryResolver: <IssueRepositoryType>
5
5
  export declare const extractProjectOwner: (projectUrl: string) => string | null;
6
6
  export declare const createConsoleProjectRepositoryResolver: <ProjectRepositoryType>(resolveGithubToken: ConsoleGithubTokenResolver, buildProjectRepositoryForToken: (githubToken: string) => ProjectRepositoryType) => ((projectUrl: string) => ProjectRepositoryType);
7
7
  export declare const createConsoleGithubTokenResolverByItemUrl: (resolveGithubToken: ConsoleGithubTokenResolver) => ((itemUrl: string) => string);
8
- export declare const createConsoleGithubTokenResolver: (defaultToken: string, githubTokenFilePathByRepositoryOwner: Record<string, string> | null, readTokenFile: GithubTokenFileReader) => ConsoleGithubTokenResolver;
8
+ export declare const createConsoleGithubTokenResolver: (defaultToken: string, consoleProjectUrls: Record<string, string> | null, githubTokenFileDirPath: string | null, readTokenFile: GithubTokenFileReader) => ConsoleGithubTokenResolver;
9
9
  //# sourceMappingURL=consoleGithubTokenResolver.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"consoleGithubTokenResolver.d.ts","sourceRoot":"","sources":["../../../../src/adapter/entry-points/console/consoleGithubTokenResolver.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,0BAA0B,GAAG,CAAC,eAAe,EAAE,MAAM,KAAK,MAAM,CAAC;AAE7E,MAAM,MAAM,qBAAqB,GAAG,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM,CAAC;AAEjE,eAAO,MAAM,sBAAsB,GACjC,uBAAuB,MAAM,KAC5B,MAAM,GAAG,IAKX,CAAC;AAEF,eAAO,MAAM,oCAAoC,GAAI,mBAAmB,EACtE,oBAAoB,0BAA0B,EAC9C,8BAA8B,CAAC,WAAW,EAAE,MAAM,KAAK,mBAAmB,KACzE,CAAC,CAAC,qBAAqB,EAAE,MAAM,KAAK,mBAAmB,CAUzD,CAAC;AAEF,eAAO,MAAM,mBAAmB,GAAI,YAAY,MAAM,KAAG,MAAM,GAAG,IAKjE,CAAC;AAEF,eAAO,MAAM,sCAAsC,GAAI,qBAAqB,EAC1E,oBAAoB,0BAA0B,EAC9C,gCAAgC,CAC9B,WAAW,EAAE,MAAM,KAChB,qBAAqB,KACzB,CAAC,CAAC,UAAU,EAAE,MAAM,KAAK,qBAAqB,CAUhD,CAAC;AAEF,eAAO,MAAM,yCAAyC,GACpD,oBAAoB,0BAA0B,KAC7C,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK,MAAM,CAU9B,CAAC;AAEF,eAAO,MAAM,gCAAgC,GAC3C,cAAc,MAAM,EACpB,sCAAsC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,EACnE,eAAe,qBAAqB,KACnC,0BAuBF,CAAC"}
1
+ {"version":3,"file":"consoleGithubTokenResolver.d.ts","sourceRoot":"","sources":["../../../../src/adapter/entry-points/console/consoleGithubTokenResolver.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,0BAA0B,GAAG,CAAC,eAAe,EAAE,MAAM,KAAK,MAAM,CAAC;AAE7E,MAAM,MAAM,qBAAqB,GAAG,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM,CAAC;AAEjE,eAAO,MAAM,sBAAsB,GACjC,uBAAuB,MAAM,KAC5B,MAAM,GAAG,IAKX,CAAC;AAEF,eAAO,MAAM,oCAAoC,GAAI,mBAAmB,EACtE,oBAAoB,0BAA0B,EAC9C,8BAA8B,CAAC,WAAW,EAAE,MAAM,KAAK,mBAAmB,KACzE,CAAC,CAAC,qBAAqB,EAAE,MAAM,KAAK,mBAAmB,CAUzD,CAAC;AAEF,eAAO,MAAM,mBAAmB,GAAI,YAAY,MAAM,KAAG,MAAM,GAAG,IAKjE,CAAC;AAEF,eAAO,MAAM,sCAAsC,GAAI,qBAAqB,EAC1E,oBAAoB,0BAA0B,EAC9C,gCAAgC,CAC9B,WAAW,EAAE,MAAM,KAChB,qBAAqB,KACzB,CAAC,CAAC,UAAU,EAAE,MAAM,KAAK,qBAAqB,CAUhD,CAAC;AAEF,eAAO,MAAM,yCAAyC,GACpD,oBAAoB,0BAA0B,KAC7C,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK,MAAM,CAU9B,CAAC;AAEF,eAAO,MAAM,gCAAgC,GAC3C,cAAc,MAAM,EACpB,oBAAoB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,EACjD,wBAAwB,MAAM,GAAG,IAAI,EACrC,eAAe,qBAAqB,KACnC,0BAyCF,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;AAwD3D,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,CA2yBP;CACH"}
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;AAwD3D,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,CA8yBP;CACH"}
@@ -7,6 +7,7 @@ export type ConsoleListsWriterParams = {
7
7
  project: Project;
8
8
  issues: Issue[];
9
9
  workflowBlockerStoryName?: string | null | undefined;
10
+ urlOfStoryView?: string | null;
10
11
  generatedAt?: string;
11
12
  };
12
13
  export declare const formatConsoleGeneratedAt: (date: Date) => string;
@@ -1 +1 @@
1
- {"version":3,"file":"consoleListsWriter.d.ts","sourceRoot":"","sources":["../../../../src/adapter/entry-points/handlers/consoleListsWriter.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,gCAAgC,CAAC;AAC5D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kCAAkC,CAAC;AAQhE,MAAM,MAAM,wBAAwB,GAAG;IACrC,oBAAoB,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IAChD,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IAClC,aAAa,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IACzC,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,KAAK,EAAE,CAAC;IAChB,wBAAwB,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IACrD,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,eAAO,MAAM,wBAAwB,GAAI,MAAM,IAAI,KAAG,MACR,CAAC;AAU/C,eAAO,MAAM,iBAAiB,GAAI,QAAQ,wBAAwB,KAAG,IAyBpE,CAAC"}
1
+ {"version":3,"file":"consoleListsWriter.d.ts","sourceRoot":"","sources":["../../../../src/adapter/entry-points/handlers/consoleListsWriter.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,gCAAgC,CAAC;AAC5D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kCAAkC,CAAC;AAQhE,MAAM,MAAM,wBAAwB,GAAG;IACrC,oBAAoB,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IAChD,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IAClC,aAAa,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IACzC,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,KAAK,EAAE,CAAC;IAChB,wBAAwB,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IACrD,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,eAAO,MAAM,wBAAwB,GAAI,MAAM,IAAI,KAAG,MACR,CAAC;AAU/C,eAAO,MAAM,iBAAiB,GAAI,QAAQ,wBAAwB,KAAG,IA0BpE,CAAC"}
@@ -49,6 +49,7 @@ export type ConsoleStoryEntry = {
49
49
  storyOptionId: string;
50
50
  color: ConsoleColor;
51
51
  openItemCount: number;
52
+ storyViewUrl: string | null;
52
53
  };
53
54
  export type ConsoleStoriesTab = {
54
55
  pjcode: string;
@@ -76,6 +77,7 @@ export type GenerateConsoleListsInput = {
76
77
  assigneeLogin: string;
77
78
  generatedAt: string;
78
79
  workflowBlockerStoryName: string | null;
80
+ urlOfStoryView: string | null;
79
81
  };
80
82
  export declare class GenerateConsoleListsUseCase {
81
83
  run: (input: GenerateConsoleListsInput) => ConsoleLists;
@@ -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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"}