github-issue-tower-defence-management 1.196.1 → 1.197.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 (32) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/README.md +1 -0
  3. package/bin/adapter/entry-points/cli/index.js +66 -0
  4. package/bin/adapter/entry-points/cli/index.js.map +1 -1
  5. package/bin/adapter/entry-points/cli/projectConfig.js +6 -0
  6. package/bin/adapter/entry-points/cli/projectConfig.js.map +1 -1
  7. package/bin/adapter/entry-points/console/consoleDataDelivery.js +1 -20
  8. package/bin/adapter/entry-points/console/consoleDataDelivery.js.map +1 -1
  9. package/bin/adapter/entry-points/console/ui-dist/assets/{index-CYwLv9pf.js → index-lT5OKx7e.js} +2 -2
  10. package/bin/adapter/entry-points/console/ui-dist/index.html +1 -1
  11. package/bin/domain/usecases/CliErrorReportUseCase.js +50 -0
  12. package/bin/domain/usecases/CliErrorReportUseCase.js.map +1 -0
  13. package/package.json +1 -1
  14. package/src/adapter/entry-points/cli/index.ts +85 -0
  15. package/src/adapter/entry-points/cli/projectConfig.ts +14 -0
  16. package/src/adapter/entry-points/console/consoleDataDelivery.test.ts +12 -6
  17. package/src/adapter/entry-points/console/consoleDataDelivery.ts +1 -31
  18. package/src/adapter/entry-points/console/ui/src/features/console/logic/overlay.test.ts +30 -18
  19. package/src/adapter/entry-points/console/ui/src/features/console/logic/overlay.ts +12 -3
  20. package/src/adapter/entry-points/console/ui/src/features/console/pages/ConsolePage.tsx +3 -1
  21. package/src/adapter/entry-points/console/ui-dist/assets/{index-CYwLv9pf.js → index-lT5OKx7e.js} +2 -2
  22. package/src/adapter/entry-points/console/ui-dist/index.html +1 -1
  23. package/src/adapter/entry-points/console/webServer.test.ts +10 -4
  24. package/src/adapter/entry-points/handlers/consoleListsWriter.test.ts +2 -2
  25. package/src/domain/usecases/CliErrorReportUseCase.test.ts +151 -0
  26. package/src/domain/usecases/CliErrorReportUseCase.ts +72 -0
  27. package/types/adapter/entry-points/cli/index.d.ts.map +1 -1
  28. package/types/adapter/entry-points/cli/projectConfig.d.ts +1 -0
  29. package/types/adapter/entry-points/cli/projectConfig.d.ts.map +1 -1
  30. package/types/adapter/entry-points/console/consoleDataDelivery.d.ts.map +1 -1
  31. package/types/domain/usecases/CliErrorReportUseCase.d.ts +14 -0
  32. package/types/domain/usecases/CliErrorReportUseCase.d.ts.map +1 -0
@@ -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-CYwLv9pf.js"></script>
7
+ <script type="module" crossorigin src="/assets/index-lT5OKx7e.js"></script>
8
8
  <link rel="stylesheet" crossorigin href="/assets/index-CLHvrafO.css">
9
9
  </head>
10
10
  <body>
@@ -545,7 +545,7 @@ describe('webServer new routes integration', () => {
545
545
  },
546
546
  });
547
547
 
548
- it('serves a data list file with the done exclusion through the token gate', async () => {
548
+ it('serves a data list file through the token gate without done filtering', async () => {
549
549
  const tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), 'console-server-'));
550
550
  const dataDir = path.join(tmpDir, 'data');
551
551
  const listDir = path.join(dataDir, 'acme', 'prs');
@@ -554,12 +554,15 @@ describe('webServer new routes integration', () => {
554
554
  path.join(listDir, 'list.json'),
555
555
  JSON.stringify({
556
556
  pjcode: 'acme',
557
- items: [{ projectItemId: 'PVTI_keep' }, { projectItemId: 'PVTI_drop' }],
557
+ items: [
558
+ { projectItemId: 'PVTI_keep' },
559
+ { projectItemId: 'PVTI_also_keep' },
560
+ ],
558
561
  }),
559
562
  );
560
563
  fs.writeFileSync(
561
564
  path.join(listDir, '.done.json'),
562
- JSON.stringify({ projectItemIds: ['PVTI_drop'] }),
565
+ JSON.stringify({ projectItemIds: ['PVTI_also_keep'] }),
563
566
  );
564
567
  const server = await startWebServer({
565
568
  accessToken: testToken,
@@ -588,7 +591,10 @@ describe('webServer new routes integration', () => {
588
591
  const parsed: unknown = JSON.parse(authorized.body);
589
592
  expect(parsed).toEqual({
590
593
  pjcode: 'acme',
591
- items: [{ projectItemId: 'PVTI_keep' }],
594
+ items: [
595
+ { projectItemId: 'PVTI_keep' },
596
+ { projectItemId: 'PVTI_also_keep' },
597
+ ],
592
598
  });
593
599
  } finally {
594
600
  await closeServer(server);
@@ -312,12 +312,12 @@ describe('writeConsoleLists', () => {
312
312
  expect(todoByHumanServedItemCount()).toBe(1);
313
313
  });
314
314
 
315
- it('re-hides an item recorded as done until the next regeneration bounds it to one cycle', () => {
315
+ it('serves an item regardless of a done record accumulated between regenerations', () => {
316
316
  regenerateTodoByHuman();
317
317
  expect(todoByHumanServedItemCount()).toBe(1);
318
318
 
319
319
  recordDoneProjectItemId(outDir, 'demo', 'todo-by-human', 'item-1');
320
- expect(todoByHumanServedItemCount()).toBe(0);
320
+ expect(todoByHumanServedItemCount()).toBe(1);
321
321
 
322
322
  regenerateTodoByHuman();
323
323
  expect(todoByHumanServedItemCount()).toBe(1);
@@ -0,0 +1,151 @@
1
+ import { mock } from 'jest-mock-extended';
2
+ import { IssueRepository } from './adapter-interfaces/IssueRepository';
3
+ import { CliErrorReportUseCase } from './CliErrorReportUseCase';
4
+
5
+ describe('CliErrorReportUseCase', () => {
6
+ jest.setTimeout(30 * 1000);
7
+
8
+ const mockIssueRepository = mock<IssueRepository>();
9
+ const useCase = new CliErrorReportUseCase(mockIssueRepository);
10
+
11
+ beforeEach(() => {
12
+ jest.clearAllMocks();
13
+ });
14
+
15
+ const owner = 'test-owner';
16
+ const repo = 'test-repo';
17
+ const commandLine =
18
+ 'github-issue-tower-defence-management startDaemon --configFilePath config.yml';
19
+
20
+ describe('run', () => {
21
+ it('should call createNewIssue when searchIssue returns no matching open issue', async () => {
22
+ const error = new Error('something went wrong');
23
+ error.name = 'TypeError';
24
+ mockIssueRepository.searchIssue.mockResolvedValue([]);
25
+ mockIssueRepository.createNewIssue.mockResolvedValue(42);
26
+
27
+ await useCase.run({ error, owner, repo, commandLine });
28
+
29
+ expect(mockIssueRepository.searchIssue).toHaveBeenCalledWith({
30
+ owner,
31
+ repositoryName: repo,
32
+ type: 'issue',
33
+ state: 'open',
34
+ title: 'CLI error: TypeError: something went wrong',
35
+ });
36
+ expect(mockIssueRepository.createNewIssue).toHaveBeenCalledWith(
37
+ owner,
38
+ repo,
39
+ 'CLI error: TypeError: something went wrong',
40
+ expect.stringContaining('something went wrong'),
41
+ [],
42
+ [],
43
+ );
44
+ expect(mockIssueRepository.createCommentByUrl).not.toHaveBeenCalled();
45
+ });
46
+
47
+ it('should call createCommentByUrl when searchIssue returns a result whose title matches exactly', async () => {
48
+ const error = new Error('something went wrong');
49
+ error.name = 'TypeError';
50
+ const title = 'CLI error: TypeError: something went wrong';
51
+ const existingIssueUrl =
52
+ 'https://github.com/test-owner/test-repo/issues/10';
53
+ mockIssueRepository.searchIssue.mockResolvedValue([
54
+ { url: existingIssueUrl, title, number: '10' },
55
+ ]);
56
+ mockIssueRepository.createCommentByUrl.mockResolvedValue(undefined);
57
+
58
+ await useCase.run({ error, owner, repo, commandLine });
59
+
60
+ expect(mockIssueRepository.createCommentByUrl).toHaveBeenCalledWith(
61
+ existingIssueUrl,
62
+ expect.stringContaining('something went wrong'),
63
+ );
64
+ expect(mockIssueRepository.createNewIssue).not.toHaveBeenCalled();
65
+ });
66
+
67
+ it('should not call createCommentByUrl when searchIssue returns a result with a different title', async () => {
68
+ const error = new Error('something went wrong');
69
+ error.name = 'TypeError';
70
+ mockIssueRepository.searchIssue.mockResolvedValue([
71
+ {
72
+ url: 'https://github.com/test-owner/test-repo/issues/9',
73
+ title: 'CLI error: TypeError: something else entirely',
74
+ number: '9',
75
+ },
76
+ ]);
77
+ mockIssueRepository.createNewIssue.mockResolvedValue(11);
78
+
79
+ await useCase.run({ error, owner, repo, commandLine });
80
+
81
+ expect(mockIssueRepository.createNewIssue).toHaveBeenCalled();
82
+ expect(mockIssueRepository.createCommentByUrl).not.toHaveBeenCalled();
83
+ });
84
+
85
+ it('should truncate long messages to 80 characters in the title', async () => {
86
+ const longMessage = 'a'.repeat(120);
87
+ const error = new Error(longMessage);
88
+ mockIssueRepository.searchIssue.mockResolvedValue([]);
89
+ mockIssueRepository.createNewIssue.mockResolvedValue(1);
90
+
91
+ await useCase.run({ error, owner, repo, commandLine });
92
+
93
+ const expectedTitle = `CLI error: Error: ${'a'.repeat(80)}`;
94
+ expect(mockIssueRepository.searchIssue).toHaveBeenCalledWith(
95
+ expect.objectContaining({ title: expectedTitle }),
96
+ );
97
+ expect(mockIssueRepository.createNewIssue).toHaveBeenCalledWith(
98
+ owner,
99
+ repo,
100
+ expectedTitle,
101
+ expect.any(String),
102
+ [],
103
+ [],
104
+ );
105
+ });
106
+
107
+ it('should not throw when searchIssue rejects', async () => {
108
+ const error = new Error('some error');
109
+ mockIssueRepository.searchIssue.mockRejectedValue(
110
+ new Error('network error'),
111
+ );
112
+ const consoleSpy = jest
113
+ .spyOn(console, 'error')
114
+ .mockImplementation(() => undefined);
115
+
116
+ await expect(
117
+ useCase.run({ error, owner, repo, commandLine }),
118
+ ).resolves.toBeUndefined();
119
+ expect(consoleSpy).toHaveBeenCalled();
120
+ consoleSpy.mockRestore();
121
+ });
122
+
123
+ it('should include the command line in the issue body', async () => {
124
+ const error = new Error('cmd error');
125
+ mockIssueRepository.searchIssue.mockResolvedValue([]);
126
+ mockIssueRepository.createNewIssue.mockResolvedValue(2);
127
+
128
+ await useCase.run({ error, owner, repo, commandLine });
129
+
130
+ const bodyArg = mockIssueRepository.createNewIssue.mock.calls[0][3];
131
+ expect(bodyArg).toContain(commandLine);
132
+ });
133
+
134
+ it('should handle non-Error values', async () => {
135
+ const error = 'plain string error';
136
+ mockIssueRepository.searchIssue.mockResolvedValue([]);
137
+ mockIssueRepository.createNewIssue.mockResolvedValue(3);
138
+
139
+ await useCase.run({ error, owner, repo, commandLine });
140
+
141
+ expect(mockIssueRepository.createNewIssue).toHaveBeenCalledWith(
142
+ owner,
143
+ repo,
144
+ expect.stringContaining('CLI error: Error:'),
145
+ expect.any(String),
146
+ [],
147
+ [],
148
+ );
149
+ });
150
+ });
151
+ });
@@ -0,0 +1,72 @@
1
+ import type { IssueRepository } from './adapter-interfaces/IssueRepository';
2
+
3
+ type CliErrorReportRepository = Pick<
4
+ IssueRepository,
5
+ 'searchIssue' | 'createNewIssue' | 'createCommentByUrl'
6
+ >;
7
+
8
+ export class CliErrorReportUseCase {
9
+ constructor(private readonly issueRepository: CliErrorReportRepository) {}
10
+
11
+ run = async (params: {
12
+ error: unknown;
13
+ owner: string;
14
+ repo: string;
15
+ commandLine: string;
16
+ }): Promise<void> => {
17
+ const { error, owner, repo, commandLine } = params;
18
+ const errorName =
19
+ error instanceof Error ? (error.name ?? 'Error') : 'Error';
20
+ const message = error instanceof Error ? error.message : String(error);
21
+ const stack =
22
+ error instanceof Error && error.stack ? error.stack : String(error);
23
+ const title = `CLI error: ${errorName}: ${message.slice(0, 80)}`;
24
+ const occurredAt = new Date().toISOString();
25
+
26
+ const buildBody = (prefix: string): string =>
27
+ [
28
+ `${prefix}`,
29
+ ``,
30
+ `Error name: ${errorName}`,
31
+ `Message: ${message}`,
32
+ `Command: \`${commandLine}\``,
33
+ `Occurred at: ${occurredAt}`,
34
+ ``,
35
+ `Stack trace:`,
36
+ `\`\`\``,
37
+ stack,
38
+ `\`\`\``,
39
+ ].join('\n');
40
+
41
+ try {
42
+ const results = await this.issueRepository.searchIssue({
43
+ owner,
44
+ repositoryName: repo,
45
+ type: 'issue',
46
+ state: 'open',
47
+ title,
48
+ });
49
+ const existing = results.find((r) => r.title === title);
50
+ if (existing) {
51
+ await this.issueRepository.createCommentByUrl(
52
+ existing.url,
53
+ buildBody('CLI error recurrence'),
54
+ );
55
+ } else {
56
+ await this.issueRepository.createNewIssue(
57
+ owner,
58
+ repo,
59
+ title,
60
+ buildBody('CLI error report'),
61
+ [],
62
+ [],
63
+ );
64
+ }
65
+ } catch (reportError) {
66
+ console.error(
67
+ 'CliErrorReportUseCase: failed to report error:',
68
+ reportError,
69
+ );
70
+ }
71
+ };
72
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/adapter/entry-points/cli/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpC,OAAO,EACL,UAAU,EACV,kBAAkB,EAClB,cAAc,EACd,YAAY,EACZ,wBAAwB,GACzB,MAAM,iBAAiB,CAAC;AA8OzB,eAAO,MAAM,OAAO,SAAgB,CAAC;AA2kCrC,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":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpC,OAAO,EACL,UAAU,EACV,kBAAkB,EAClB,cAAc,EACd,YAAY,EACZ,wBAAwB,GACzB,MAAM,iBAAiB,CAAC;AA+OzB,eAAO,MAAM,OAAO,SAAgB,CAAC;AA0lCrC,eAAO,MAAM,uBAAuB,GAAI,OAAO,OAAO,KAAG,IAGxD,CAAC;AAwCF,eAAO,MAAM,aAAa,GACxB,MAAM,MAAM,EAAE,EACd,kBAAkB,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,KACzC,OAAO,CAAC,IAAI,CAqCd,CAAC"}
@@ -29,6 +29,7 @@ export type ConfigFile = {
29
29
  consoleGithubTokenFileDir?: string;
30
30
  disks?: DiskConfig[];
31
31
  ownerApprovalTimeoutCycles?: number;
32
+ errorReportingRepository?: string;
32
33
  };
33
34
  export type DiskConfig = {
34
35
  title: string;
@@ -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,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,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;IACrB,0BAA0B,CAAC,EAAE,MAAM,CAAC;CACrC,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,UA8EvD,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,UA+FD,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,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,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;IACrB,0BAA0B,CAAC,EAAE,MAAM,CAAC;IACpC,wBAAwB,CAAC,EAAE,MAAM,CAAC;CACnC,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;AAiDvE,eAAO,MAAM,cAAc,GAAI,gBAAgB,MAAM,KAAG,UAkFvD,CAAC;AAEF,eAAO,MAAM,wBAAwB,GACnC,QAAQ,MAAM,EACd,aAAa,MAAM,KAClB,UAkFF,CAAC;AAEF,eAAO,MAAM,YAAY,GACvB,YAAY,UAAU,EACtB,cAAc,UAAU,EACxB,iBAAiB,UAAU,KAC1B,UAmGD,CAAC;AAkBH,eAAO,MAAM,kBAAkB,GAC7B,YAAY,MAAM,EAClB,OAAO,MAAM,KACZ,OAAO,CAAC,MAAM,GAAG,IAAI,CAoDvB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"consoleDataDelivery.d.ts","sourceRoot":"","sources":["../../../../src/adapter/entry-points/console/consoleDataDelivery.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAE3D,OAAO,EAAE,sBAAsB,EAAE,CAAC;AAElC,MAAM,MAAM,gBAAgB,GACxB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GAC7C;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GAC5D;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,CAAC;AAO9D,eAAO,MAAM,qBAAqB,GAChC,aAAa,MAAM,KAClB,gBAAgB,GAAG,IAoCrB,CAAC;AA0CF,MAAM,MAAM,mBAAmB,GAAG;IAChC,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,eAAO,MAAM,wBAAwB,GACnC,sBAAsB,MAAM,EAC5B,OAAO,gBAAgB,KACtB,mBA6CF,CAAC"}
1
+ {"version":3,"file":"consoleDataDelivery.d.ts","sourceRoot":"","sources":["../../../../src/adapter/entry-points/console/consoleDataDelivery.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAE3D,OAAO,EAAE,sBAAsB,EAAE,CAAC;AAElC,MAAM,MAAM,gBAAgB,GACxB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GAC7C;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GAC5D;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,CAAC;AAO9D,eAAO,MAAM,qBAAqB,GAChC,aAAa,MAAM,KAClB,gBAAgB,GAAG,IAoCrB,CAAC;AAmBF,MAAM,MAAM,mBAAmB,GAAG;IAChC,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,eAAO,MAAM,wBAAwB,GACnC,sBAAsB,MAAM,EAC5B,OAAO,gBAAgB,KACtB,mBAuCF,CAAC"}
@@ -0,0 +1,14 @@
1
+ import type { IssueRepository } from './adapter-interfaces/IssueRepository';
2
+ type CliErrorReportRepository = Pick<IssueRepository, 'searchIssue' | 'createNewIssue' | 'createCommentByUrl'>;
3
+ export declare class CliErrorReportUseCase {
4
+ private readonly issueRepository;
5
+ constructor(issueRepository: CliErrorReportRepository);
6
+ run: (params: {
7
+ error: unknown;
8
+ owner: string;
9
+ repo: string;
10
+ commandLine: string;
11
+ }) => Promise<void>;
12
+ }
13
+ export {};
14
+ //# sourceMappingURL=CliErrorReportUseCase.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CliErrorReportUseCase.d.ts","sourceRoot":"","sources":["../../../src/domain/usecases/CliErrorReportUseCase.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AAE5E,KAAK,wBAAwB,GAAG,IAAI,CAClC,eAAe,EACf,aAAa,GAAG,gBAAgB,GAAG,oBAAoB,CACxD,CAAC;AAEF,qBAAa,qBAAqB;IACpB,OAAO,CAAC,QAAQ,CAAC,eAAe;gBAAf,eAAe,EAAE,wBAAwB;IAEtE,GAAG,GAAU,QAAQ;QACnB,KAAK,EAAE,OAAO,CAAC;QACf,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,EAAE,MAAM,CAAC;KACrB,KAAG,OAAO,CAAC,IAAI,CAAC,CAuDf;CACH"}