github-issue-tower-defence-management 1.149.0 → 1.149.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.
package/CHANGELOG.md CHANGED
@@ -1,3 +1,10 @@
1
+ ## [1.149.1](https://github.com/HiromiShikata/npm-cli-github-issue-tower-defence-management/compare/v1.149.0...v1.149.1) (2026-08-13)
2
+
3
+
4
+ ### Bug Fixes
5
+
6
+ * **DailySecurityScanUseCase:** keep scanning after a repository's findings issue write fails ([#1519](https://github.com/HiromiShikata/npm-cli-github-issue-tower-defence-management/issues/1519)) ([49d06db](https://github.com/HiromiShikata/npm-cli-github-issue-tower-defence-management/commit/49d06db8e110223f71c28a53e315bec7437a2a53))
7
+
1
8
  # [1.149.0](https://github.com/HiromiShikata/npm-cli-github-issue-tower-defence-management/compare/v1.148.25...v1.149.0) (2026-08-13)
2
9
 
3
10
 
package/README.md CHANGED
@@ -218,7 +218,7 @@ claudeCodeOauthTokenListJsonPath?: string # Optional: Path to a JSON file listin
218
218
  autoAssignManagerAuthors?: string | string[] | null # Optional: Restrict which authors' open, unassigned issues and pull requests are auto-assigned to the manager. Accepts a comma-separated string or an array of GitHub author logins (bot logins carry the `[bot]` suffix, for example `renovate[bot]`). When set to a non-empty list, only items whose author is in the list are auto-assigned; when omitted, null, or empty, every open unassigned item is auto-assigned (current behavior). Author matching is exact equality. Declared at the top level (sibling of startPreparation), not inside it.
219
219
  queryToAddProjectEnabled?: boolean # Optional: Enable the queryToAddProject search (default false). The search runs only when this is true, so setting queryToAddProject alone changes nothing. Declared at the top level (sibling of startPreparation), not inside it.
220
220
  queryToAddProject?: string | null # Optional: GitHub search query string, used only when queryToAddProjectEnabled is true. Each schedule cycle, issues and pull requests matching this query that are not already on the project board are added to the project and, when their author satisfies autoAssignManagerAuthors, assigned to the manager. Omit or set to null to skip this search. Declared at the top level (sibling of startPreparation), not inside it.
221
- dailySecurityScan?: # Optional: Run a daily OSV-Scanner security scan across locally cloned repositories of the org. Declared at the top level (sibling of startPreparation).
221
+ dailySecurityScan?: # Optional: Run a daily OSV-Scanner security scan across locally cloned repositories of the org. Declared at the top level (sibling of startPreparation). When the findings of one repository cannot be written to GitHub — for example because that repository is archived and therefore read-only, or because the rendered findings exceed what the issues API accepts — the failure is logged with the repository name and the cause, that repository is skipped, and the remaining repositories are still scanned and the CISA KEV report still runs.
222
222
  scanBaseDirectory: string # Base directory searched (4 levels deep) for cloned repositories to scan
223
223
  targetHourUtc: number # UTC hour (0-23) at which the scan runs once per day; the scan runs only when a target date matches this hour at minute zero
224
224
  enableKevNvdReport?: boolean # Optional: When true, also report CISA KEV catalog additions that have not been reported yet. A watermark recording the newest reported dateAdded, plus the CVE identifiers already reported on that date, is persisted at $XDG_CACHE_HOME/tdpm/kev-report-watermark.json (falling back to ~/.cache when XDG_CACHE_HOME is unset) and advanced over every addition the run considered, whether or not that addition matched a package the scan actually found and therefore produced a report issue. Only an addition whose CVE identifier matches a package the scan found at an installed version is written into the report issue. On the first run, when no watermark is stored yet, the additions dated on or after the day before the run are considered. Known limitations: (1) if the watermark write fails after the report issue was created, the failure is logged with the state file path and the cause, the run continues so that unrelated scheduled work is not aborted, and the same additions are considered again on the next run, so the guarantee is at-least-once at that boundary rather than exactly-once; (2) an addition whose dateAdded is strictly earlier than the stored watermark date, whether back-dated or published very late, is never selected again, so the protection covers late additions on the watermark date itself and not arbitrary lateness. When the stored watermark file exists but cannot be read or is malformed (including a stored date that is not a real calendar date in YYYY-MM-DD form), the KEV report is skipped for that run, an error naming the file and the cause is logged, the file is left untouched for inspection, and the rest of the scheduled work continues
@@ -170,19 +170,24 @@ class DailySecurityScanUseCase {
170
170
  const vulnerablePackages = parseScannerVulnerabilities(repositoryName, scanOutput);
171
171
  scannedVulnerablePackages.push(...vulnerablePackages);
172
172
  const findingsBody = renderScannerFindings(today, vulnerablePackages);
173
- const existingIssues = await this.issueRepository.searchIssue({
174
- owner: repositoryOrg,
175
- repositoryName,
176
- type: 'issue',
177
- state: 'open',
178
- title: 'Daily security scan findings',
179
- });
180
- const existingIssue = existingIssues.find((issue) => issue.title === 'Daily security scan findings');
181
- if (existingIssue) {
182
- await this.issueRepository.createCommentByUrl(existingIssue.url, findingsBody);
173
+ try {
174
+ const existingIssues = await this.issueRepository.searchIssue({
175
+ owner: repositoryOrg,
176
+ repositoryName,
177
+ type: 'issue',
178
+ state: 'open',
179
+ title: 'Daily security scan findings',
180
+ });
181
+ const existingIssue = existingIssues.find((issue) => issue.title === 'Daily security scan findings');
182
+ if (existingIssue) {
183
+ await this.issueRepository.createCommentByUrl(existingIssue.url, findingsBody);
184
+ }
185
+ else {
186
+ await this.issueRepository.createNewIssue(repositoryOrg, repositoryName, 'Daily security scan findings', findingsBody, [manager], []);
187
+ }
183
188
  }
184
- else {
185
- await this.issueRepository.createNewIssue(repositoryOrg, repositoryName, 'Daily security scan findings', findingsBody, [manager], []);
189
+ catch (error) {
190
+ console.error(`The findings of ${repositoryOrg}/${repositoryName} were not written to GitHub: ${String(error)}. The remaining repositories are still scanned and the CISA KEV report still runs.`);
186
191
  }
187
192
  }
188
193
  return scannedVulnerablePackages;
@@ -1 +1 @@
1
- {"version":3,"file":"DailySecurityScanUseCase.js","sourceRoot":"","sources":["../../../src/domain/usecases/DailySecurityScanUseCase.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"DailySecurityScanUseCase.js","sourceRoot":"","sources":["../../../src/domain/usecases/DailySecurityScanUseCase.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "github-issue-tower-defence-management",
3
- "version": "1.149.0",
3
+ "version": "1.149.1",
4
4
  "description": "",
5
5
  "main": "bin/index.js",
6
6
  "scripts": {
@@ -909,6 +909,210 @@ describe('DailySecurityScanUseCase', () => {
909
909
  errorSpy.mockRestore();
910
910
  });
911
911
 
912
+ it('logs an error and continues scanning remaining repositories when creating the findings issue fails', async () => {
913
+ const { useCase, mockLocalCommandRunner, mockIssueRepository } =
914
+ buildUseCase();
915
+ const errorSpy = jest
916
+ .spyOn(console, 'error')
917
+ .mockImplementation(() => undefined);
918
+
919
+ mockIssueRepository.searchIssue.mockResolvedValue([]);
920
+ mockIssueRepository.createNewIssue.mockImplementation(
921
+ async (_org, repositoryName) => {
922
+ if (repositoryName === 'archived') {
923
+ throw new Error(
924
+ 'Request failed with status code 403: Repository was archived so is read-only.',
925
+ );
926
+ }
927
+ return 1;
928
+ },
929
+ );
930
+
931
+ mockLocalCommandRunner.runCommand.mockImplementation(
932
+ async (program, args) => {
933
+ if (program === 'find') {
934
+ return {
935
+ stdout:
936
+ '/repos/example-org/archived/.git\n/repos/example-org/app/.git\n',
937
+ stderr: '',
938
+ exitCode: 0,
939
+ };
940
+ }
941
+ if (program === 'mktemp') {
942
+ return {
943
+ stdout: `/tmp/${args[args.length - 1].replace('XXXXXX', 'abc123')}\n`,
944
+ stderr: '',
945
+ exitCode: 0,
946
+ };
947
+ }
948
+ if (program === 'git') {
949
+ const dir = args[1];
950
+ const repo = dir.split('/').pop() ?? '';
951
+ return {
952
+ stdout: `git@github.com:example-org/${repo}.git\n`,
953
+ stderr: '',
954
+ exitCode: 0,
955
+ };
956
+ }
957
+ if (program === 'osv-scanner') {
958
+ return {
959
+ stdout: JSON.stringify({
960
+ results: [
961
+ {
962
+ source: {
963
+ path: args[args.indexOf('-r') + 1],
964
+ type: 'lockfile',
965
+ },
966
+ packages: [
967
+ {
968
+ package: {
969
+ name: 'example-library',
970
+ version: '1.2.3',
971
+ ecosystem: 'npm',
972
+ },
973
+ vulnerabilities: [
974
+ {
975
+ id: 'GHSA-1111-2222-3333',
976
+ aliases: [],
977
+ summary: 'Example Library Deserialization',
978
+ },
979
+ ],
980
+ },
981
+ ],
982
+ },
983
+ ],
984
+ }),
985
+ stderr: '',
986
+ exitCode: 1,
987
+ };
988
+ }
989
+ return { stdout: '', stderr: '', exitCode: 0 };
990
+ },
991
+ );
992
+
993
+ await useCase.run({
994
+ targetDates: [new Date('2024-01-02T05:00:00Z')],
995
+ org: 'example-org',
996
+ manager: 'manager-name',
997
+ dailySecurityScan: {
998
+ scanBaseDirectory: '/repos',
999
+ targetHourUtc: 5,
1000
+ },
1001
+ });
1002
+
1003
+ expect(errorSpy).toHaveBeenCalledWith(
1004
+ expect.stringContaining('archived'),
1005
+ );
1006
+ expect(
1007
+ mockIssueRepository.createNewIssue.mock.calls.map((call) => call[1]),
1008
+ ).toEqual(['archived', 'app']);
1009
+ errorSpy.mockRestore();
1010
+ });
1011
+
1012
+ it('logs an error and continues scanning remaining repositories when commenting on the existing findings issue fails', async () => {
1013
+ const { useCase, mockLocalCommandRunner, mockIssueRepository } =
1014
+ buildUseCase();
1015
+ const errorSpy = jest
1016
+ .spyOn(console, 'error')
1017
+ .mockImplementation(() => undefined);
1018
+
1019
+ mockIssueRepository.searchIssue.mockImplementation(
1020
+ async ({ repositoryName }) =>
1021
+ repositoryName === 'oversized'
1022
+ ? [
1023
+ {
1024
+ url: 'https://github.com/example-org/oversized/issues/1',
1025
+ title: 'Daily security scan findings',
1026
+ number: '1',
1027
+ },
1028
+ ]
1029
+ : [],
1030
+ );
1031
+ mockIssueRepository.createCommentByUrl.mockRejectedValue(
1032
+ new Error('Request failed with status code 422: Validation Failed'),
1033
+ );
1034
+
1035
+ mockLocalCommandRunner.runCommand.mockImplementation(
1036
+ async (program, args) => {
1037
+ if (program === 'find') {
1038
+ return {
1039
+ stdout:
1040
+ '/repos/example-org/oversized/.git\n/repos/example-org/app/.git\n',
1041
+ stderr: '',
1042
+ exitCode: 0,
1043
+ };
1044
+ }
1045
+ if (program === 'mktemp') {
1046
+ return {
1047
+ stdout: `/tmp/${args[args.length - 1].replace('XXXXXX', 'abc123')}\n`,
1048
+ stderr: '',
1049
+ exitCode: 0,
1050
+ };
1051
+ }
1052
+ if (program === 'git') {
1053
+ const dir = args[1];
1054
+ const repo = dir.split('/').pop() ?? '';
1055
+ return {
1056
+ stdout: `git@github.com:example-org/${repo}.git\n`,
1057
+ stderr: '',
1058
+ exitCode: 0,
1059
+ };
1060
+ }
1061
+ if (program === 'osv-scanner') {
1062
+ return {
1063
+ stdout: JSON.stringify({
1064
+ results: [
1065
+ {
1066
+ source: {
1067
+ path: args[args.indexOf('-r') + 1],
1068
+ type: 'lockfile',
1069
+ },
1070
+ packages: [
1071
+ {
1072
+ package: {
1073
+ name: 'example-library',
1074
+ version: '1.2.3',
1075
+ ecosystem: 'npm',
1076
+ },
1077
+ vulnerabilities: [
1078
+ {
1079
+ id: 'GHSA-1111-2222-3333',
1080
+ aliases: [],
1081
+ summary: 'Example Library Deserialization',
1082
+ },
1083
+ ],
1084
+ },
1085
+ ],
1086
+ },
1087
+ ],
1088
+ }),
1089
+ stderr: '',
1090
+ exitCode: 1,
1091
+ };
1092
+ }
1093
+ return { stdout: '', stderr: '', exitCode: 0 };
1094
+ },
1095
+ );
1096
+
1097
+ await useCase.run({
1098
+ targetDates: [new Date('2024-01-02T05:00:00Z')],
1099
+ org: 'example-org',
1100
+ manager: 'manager-name',
1101
+ dailySecurityScan: {
1102
+ scanBaseDirectory: '/repos',
1103
+ targetHourUtc: 5,
1104
+ },
1105
+ });
1106
+
1107
+ expect(errorSpy).toHaveBeenCalledWith(
1108
+ expect.stringContaining('oversized'),
1109
+ );
1110
+ expect(
1111
+ mockIssueRepository.createNewIssue.mock.calls.map((call) => call[1]),
1112
+ ).toEqual(['app']);
1113
+ errorSpy.mockRestore();
1114
+ });
1115
+
912
1116
  it('adds a comment to the existing open issue for the repository instead of creating a new one', async () => {
913
1117
  const { useCase, mockLocalCommandRunner, mockIssueRepository } =
914
1118
  buildUseCase();
@@ -1111,6 +1315,53 @@ describe('DailySecurityScanUseCase', () => {
1111
1315
  },
1112
1316
  });
1113
1317
 
1318
+ it('still reports KEV additions when the scanned repository findings issue cannot be written', async () => {
1319
+ const { useCase, mockIssueRepository } = buildScanEnvironment(
1320
+ osvScanOutput([
1321
+ {
1322
+ name: 'example-library',
1323
+ version: '1.2.3',
1324
+ ecosystem: 'npm',
1325
+ id: 'GHSA-1111-2222-3333',
1326
+ aliases: ['CVE-2024-0001'],
1327
+ summary: 'Example Library Deserialization',
1328
+ },
1329
+ ]),
1330
+ {
1331
+ vulnerabilities: [
1332
+ {
1333
+ cveID: 'CVE-2024-0001',
1334
+ vendorProject: 'Example',
1335
+ product: 'Example Library',
1336
+ vulnerabilityName: 'Example Library Deserialization',
1337
+ dateAdded: '2024-01-02',
1338
+ },
1339
+ ],
1340
+ },
1341
+ );
1342
+ const errorSpy = jest
1343
+ .spyOn(console, 'error')
1344
+ .mockImplementation(() => undefined);
1345
+ mockIssueRepository.createNewIssue.mockImplementation(
1346
+ async (_org, repositoryName) => {
1347
+ if (repositoryName === 'app') {
1348
+ throw new Error(
1349
+ 'Request failed with status code 403: Repository was archived so is read-only.',
1350
+ );
1351
+ }
1352
+ return 1;
1353
+ },
1354
+ );
1355
+
1356
+ await runWithKevReporting(useCase);
1357
+
1358
+ expect(errorSpy).toHaveBeenCalledWith(expect.stringContaining('app'));
1359
+ expect(
1360
+ kevReportCalls(mockIssueRepository.createNewIssue.mock.calls),
1361
+ ).toHaveLength(1);
1362
+ errorSpy.mockRestore();
1363
+ });
1364
+
1114
1365
  it('reports a KEV addition whose CVE the scanner found at an installed version', async () => {
1115
1366
  const { useCase, mockIssueRepository } = buildScanEnvironment(
1116
1367
  osvScanOutput([
@@ -303,29 +303,35 @@ export class DailySecurityScanUseCase {
303
303
  scannedVulnerablePackages.push(...vulnerablePackages);
304
304
 
305
305
  const findingsBody = renderScannerFindings(today, vulnerablePackages);
306
- const existingIssues = await this.issueRepository.searchIssue({
307
- owner: repositoryOrg,
308
- repositoryName,
309
- type: 'issue',
310
- state: 'open',
311
- title: 'Daily security scan findings',
312
- });
313
- const existingIssue = existingIssues.find(
314
- (issue) => issue.title === 'Daily security scan findings',
315
- );
316
- if (existingIssue) {
317
- await this.issueRepository.createCommentByUrl(
318
- existingIssue.url,
319
- findingsBody,
320
- );
321
- } else {
322
- await this.issueRepository.createNewIssue(
323
- repositoryOrg,
306
+ try {
307
+ const existingIssues = await this.issueRepository.searchIssue({
308
+ owner: repositoryOrg,
324
309
  repositoryName,
325
- 'Daily security scan findings',
326
- findingsBody,
327
- [manager],
328
- [],
310
+ type: 'issue',
311
+ state: 'open',
312
+ title: 'Daily security scan findings',
313
+ });
314
+ const existingIssue = existingIssues.find(
315
+ (issue) => issue.title === 'Daily security scan findings',
316
+ );
317
+ if (existingIssue) {
318
+ await this.issueRepository.createCommentByUrl(
319
+ existingIssue.url,
320
+ findingsBody,
321
+ );
322
+ } else {
323
+ await this.issueRepository.createNewIssue(
324
+ repositoryOrg,
325
+ repositoryName,
326
+ 'Daily security scan findings',
327
+ findingsBody,
328
+ [manager],
329
+ [],
330
+ );
331
+ }
332
+ } catch (error) {
333
+ console.error(
334
+ `The findings of ${repositoryOrg}/${repositoryName} were not written to GitHub: ${String(error)}. The remaining repositories are still scanned and the CISA KEV report still runs.`,
329
335
  );
330
336
  }
331
337
  }
@@ -1 +1 @@
1
- {"version":3,"file":"DailySecurityScanUseCase.d.ts","sourceRoot":"","sources":["../../../src/domain/usecases/DailySecurityScanUseCase.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,yCAAyC,CAAC;AAC7E,OAAO,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AACvE,OAAO,EAAE,cAAc,EAAE,MAAM,qCAAqC,CAAC;AACrE,OAAO,EAAE,4BAA4B,EAAE,MAAM,mDAAmD,CAAC;AAEjG,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAE5C,MAAM,MAAM,uBAAuB,GAAG;IACpC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,aAAa,EAAE,MAAM,CAAC;IACtB,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AAoJF,qBAAa,wBAAwB;IAEjC,QAAQ,CAAC,kBAAkB,EAAE,kBAAkB;IAC/C,QAAQ,CAAC,eAAe,EAAE,IAAI,CAC5B,eAAe,EACf,gBAAgB,GAAG,aAAa,GAAG,oBAAoB,CACxD;IACD,QAAQ,CAAC,cAAc,EAAE,cAAc;IACvC,QAAQ,CAAC,4BAA4B,EAAE,4BAA4B;gBAN1D,kBAAkB,EAAE,kBAAkB,EACtC,eAAe,EAAE,IAAI,CAC5B,eAAe,EACf,gBAAgB,GAAG,aAAa,GAAG,oBAAoB,CACxD,EACQ,cAAc,EAAE,cAAc,EAC9B,4BAA4B,EAAE,4BAA4B;IAGrE,GAAG,GAAU,OAAO;QAClB,WAAW,EAAE,IAAI,EAAE,CAAC;QACpB,GAAG,EAAE,MAAM,CAAC;QACZ,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;QACxB,iBAAiB,EAAE,uBAAuB,CAAC;KAC5C,KAAG,OAAO,CAAC,IAAI,CAAC,CA2Bf;IAEF,OAAO,CAAC,gBAAgB,CA+HtB;IAEF,OAAO,CAAC,qBAAqB,CAoC3B;IAEF,OAAO,CAAC,kBAAkB,CAgGxB;CACH"}
1
+ {"version":3,"file":"DailySecurityScanUseCase.d.ts","sourceRoot":"","sources":["../../../src/domain/usecases/DailySecurityScanUseCase.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,yCAAyC,CAAC;AAC7E,OAAO,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AACvE,OAAO,EAAE,cAAc,EAAE,MAAM,qCAAqC,CAAC;AACrE,OAAO,EAAE,4BAA4B,EAAE,MAAM,mDAAmD,CAAC;AAEjG,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAE5C,MAAM,MAAM,uBAAuB,GAAG;IACpC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,aAAa,EAAE,MAAM,CAAC;IACtB,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AAoJF,qBAAa,wBAAwB;IAEjC,QAAQ,CAAC,kBAAkB,EAAE,kBAAkB;IAC/C,QAAQ,CAAC,eAAe,EAAE,IAAI,CAC5B,eAAe,EACf,gBAAgB,GAAG,aAAa,GAAG,oBAAoB,CACxD;IACD,QAAQ,CAAC,cAAc,EAAE,cAAc;IACvC,QAAQ,CAAC,4BAA4B,EAAE,4BAA4B;gBAN1D,kBAAkB,EAAE,kBAAkB,EACtC,eAAe,EAAE,IAAI,CAC5B,eAAe,EACf,gBAAgB,GAAG,aAAa,GAAG,oBAAoB,CACxD,EACQ,cAAc,EAAE,cAAc,EAC9B,4BAA4B,EAAE,4BAA4B;IAGrE,GAAG,GAAU,OAAO;QAClB,WAAW,EAAE,IAAI,EAAE,CAAC;QACpB,GAAG,EAAE,MAAM,CAAC;QACZ,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;QACxB,iBAAiB,EAAE,uBAAuB,CAAC;KAC5C,KAAG,OAAO,CAAC,IAAI,CAAC,CA2Bf;IAEF,OAAO,CAAC,gBAAgB,CAqItB;IAEF,OAAO,CAAC,qBAAqB,CAoC3B;IAEF,OAAO,CAAC,kBAAkB,CAgGxB;CACH"}