github-issue-tower-defence-management 1.147.1 → 1.147.2

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 (53) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/README.md +1 -0
  3. package/bin/adapter/entry-points/cli/index.js +3 -0
  4. package/bin/adapter/entry-points/cli/index.js.map +1 -1
  5. package/bin/adapter/entry-points/cli/projectConfig.js +4 -0
  6. package/bin/adapter/entry-points/cli/projectConfig.js.map +1 -1
  7. package/bin/domain/usecases/CheckIssueReviewReadinessUseCase.js +2 -1
  8. package/bin/domain/usecases/CheckIssueReviewReadinessUseCase.js.map +1 -1
  9. package/bin/domain/usecases/HandleScheduledEventUseCase.js +2 -0
  10. package/bin/domain/usecases/HandleScheduledEventUseCase.js.map +1 -1
  11. package/bin/domain/usecases/IssueRejectionEvaluator.js +3 -3
  12. package/bin/domain/usecases/IssueRejectionEvaluator.js.map +1 -1
  13. package/bin/domain/usecases/NotifyFinishedIssuePreparationUseCase.js +4 -3
  14. package/bin/domain/usecases/NotifyFinishedIssuePreparationUseCase.js.map +1 -1
  15. package/bin/domain/usecases/RevertNotReadyReviewQueueIssueUseCase.js +3 -2
  16. package/bin/domain/usecases/RevertNotReadyReviewQueueIssueUseCase.js.map +1 -1
  17. package/bin/domain/usecases/RevertOrphanedPreparationUseCase.js +5 -4
  18. package/bin/domain/usecases/RevertOrphanedPreparationUseCase.js.map +1 -1
  19. package/bin/domain/usecases/resolveLabelsNotRequiringPullRequest.js +9 -0
  20. package/bin/domain/usecases/resolveLabelsNotRequiringPullRequest.js.map +1 -0
  21. package/package.json +1 -1
  22. package/src/adapter/entry-points/cli/index.test.ts +4 -0
  23. package/src/adapter/entry-points/cli/index.ts +6 -0
  24. package/src/adapter/entry-points/cli/projectConfig.ts +9 -0
  25. package/src/domain/usecases/CheckIssueReviewReadinessUseCase.test.ts +18 -0
  26. package/src/domain/usecases/CheckIssueReviewReadinessUseCase.ts +3 -1
  27. package/src/domain/usecases/HandleScheduledEventUseCase.ts +3 -0
  28. package/src/domain/usecases/IssueRejectionEvaluator.ts +4 -4
  29. package/src/domain/usecases/NotifyFinishedIssuePreparationUseCase.test.ts +30 -0
  30. package/src/domain/usecases/NotifyFinishedIssuePreparationUseCase.ts +8 -3
  31. package/src/domain/usecases/RevertNotReadyReviewQueueIssueUseCase.test.ts +23 -0
  32. package/src/domain/usecases/RevertNotReadyReviewQueueIssueUseCase.ts +4 -2
  33. package/src/domain/usecases/RevertOrphanedPreparationUseCase.test.ts +37 -0
  34. package/src/domain/usecases/RevertOrphanedPreparationUseCase.ts +7 -5
  35. package/src/domain/usecases/resolveLabelsNotRequiringPullRequest.test.ts +33 -0
  36. package/src/domain/usecases/resolveLabelsNotRequiringPullRequest.ts +7 -0
  37. package/types/adapter/entry-points/cli/index.d.ts.map +1 -1
  38. package/types/adapter/entry-points/cli/projectConfig.d.ts +1 -0
  39. package/types/adapter/entry-points/cli/projectConfig.d.ts.map +1 -1
  40. package/types/domain/usecases/CheckIssueReviewReadinessUseCase.d.ts +1 -0
  41. package/types/domain/usecases/CheckIssueReviewReadinessUseCase.d.ts.map +1 -1
  42. package/types/domain/usecases/HandleScheduledEventUseCase.d.ts +1 -0
  43. package/types/domain/usecases/HandleScheduledEventUseCase.d.ts.map +1 -1
  44. package/types/domain/usecases/IssueRejectionEvaluator.d.ts +1 -1
  45. package/types/domain/usecases/IssueRejectionEvaluator.d.ts.map +1 -1
  46. package/types/domain/usecases/NotifyFinishedIssuePreparationUseCase.d.ts +1 -0
  47. package/types/domain/usecases/NotifyFinishedIssuePreparationUseCase.d.ts.map +1 -1
  48. package/types/domain/usecases/RevertNotReadyReviewQueueIssueUseCase.d.ts +1 -0
  49. package/types/domain/usecases/RevertNotReadyReviewQueueIssueUseCase.d.ts.map +1 -1
  50. package/types/domain/usecases/RevertOrphanedPreparationUseCase.d.ts +1 -0
  51. package/types/domain/usecases/RevertOrphanedPreparationUseCase.d.ts.map +1 -1
  52. package/types/domain/usecases/resolveLabelsNotRequiringPullRequest.d.ts +5 -0
  53. package/types/domain/usecases/resolveLabelsNotRequiringPullRequest.d.ts.map +1 -0
@@ -2,6 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.RevertOrphanedPreparationUseCase = void 0;
4
4
  const WorkflowStatus_1 = require("../entities/WorkflowStatus");
5
+ const resolveLabelsNotRequiringPullRequest_1 = require("./resolveLabelsNotRequiringPullRequest");
5
6
  const ORPHANED_PREPARATION_REJECTION_DETAIL = 'ORPHANED_PREPARATION';
6
7
  class RevertOrphanedPreparationUseCase {
7
8
  constructor(projectRepository, issueRepository, issueCommentRepository, localCommandRunner) {
@@ -32,7 +33,7 @@ class RevertOrphanedPreparationUseCase {
32
33
  if (!isOrphaned) {
33
34
  continue;
34
35
  }
35
- const { hasRejections, comments } = await this.evaluateHasRejections(issue, params.labelsAsLlmAgentName ?? []);
36
+ const { hasRejections, comments } = await this.evaluateHasRejections(issue, (0, resolveLabelsNotRequiringPullRequest_1.resolveLabelsNotRequiringPullRequest)(params));
36
37
  if (!hasRejections) {
37
38
  if (awaitingQualityCheckStatusOption) {
38
39
  await this.issueRepository.updateStatus(project, issue, awaitingQualityCheckStatusOption.id);
@@ -59,7 +60,7 @@ class RevertOrphanedPreparationUseCase {
59
60
  await this.issueCommentRepository.createComment(issue, rejectionStatusMessage);
60
61
  }
61
62
  };
62
- this.evaluateHasRejections = async (issue, labelsAsLlmAgentName) => {
63
+ this.evaluateHasRejections = async (issue, labelsNotRequiringPullRequest) => {
63
64
  if (issue.isClosed) {
64
65
  return { hasRejections: false, comments: [] };
65
66
  }
@@ -73,9 +74,9 @@ class RevertOrphanedPreparationUseCase {
73
74
  }
74
75
  const categoryLabels = issue.labels.filter((label) => label.startsWith('category:'));
75
76
  const hasLlmAgentLabel = issue.labels.some((l) => l === 'llm-agent' || l.startsWith('llm-agent:'));
76
- const hasLabelAsLlmAgentName = issue.labels.some((label) => labelsAsLlmAgentName.includes(label));
77
+ const hasLabelNotRequiringPullRequest = issue.labels.some((label) => labelsNotRequiringPullRequest.includes(label));
77
78
  if (hasLlmAgentLabel ||
78
- hasLabelAsLlmAgentName ||
79
+ hasLabelNotRequiringPullRequest ||
79
80
  (categoryLabels.length > 0 && !categoryLabels.includes('category:e2e'))) {
80
81
  return { hasRejections: false, comments };
81
82
  }
@@ -1 +1 @@
1
- {"version":3,"file":"RevertOrphanedPreparationUseCase.js","sourceRoot":"","sources":["../../../src/domain/usecases/RevertOrphanedPreparationUseCase.ts"],"names":[],"mappings":";;;AASA,+DAKoC;AAEpC,MAAM,qCAAqC,GAAG,sBAAsB,CAAC;AAErE,MAAa,gCAAgC;IAC3C,YACW,iBAGR,EACQ,eAMR,EACQ,sBAGR,EACQ,kBAAsC;QAftC,sBAAiB,GAAjB,iBAAiB,CAGzB;QACQ,oBAAe,GAAf,eAAe,CAMvB;QACQ,2BAAsB,GAAtB,sBAAsB,CAG9B;QACQ,uBAAkB,GAAlB,kBAAkB,CAAoB;QAGjD,QAAG,GAAG,KAAK,EAAE,MAQZ,EAAiB,EAAE;YAClB,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,kBAAkB,CAC/D,MAAM,CAAC,UAAU,CAClB,CAAC;YACF,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,MAAM,IAAI,KAAK,CAAC,kCAAkC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;YACzE,CAAC;YACD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;YACnE,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,MAAM,IAAI,KAAK,CACb,iCAAiC,SAAS,gBAAgB,MAAM,CAAC,UAAU,EAAE,CAC9E,CAAC;YACJ,CAAC;YACD,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;YAEtE,MAAM,iBAAiB,GAAG,MAAM,CAAC,MAAM,CACrC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,KAAK,wCAAuB,CACpD,CAAC;YAEF,MAAM,6BAA6B,GAAG,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAChE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,+CAA8B,CACjD,CAAC;YACF,IAAI,CAAC,6BAA6B,EAAE,CAAC;gBACnC,OAAO;YACT,CAAC;YAED,MAAM,8BAA8B,GAClC,MAAM,CAAC,0BAA0B,IAAI,mDAAkC,CAAC;YAC1E,MAAM,gCAAgC,GAAG,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CACnE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,8BAA8B,CACjD,CAAC;YAEF,MAAM,6BAA6B,GAAG,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAChE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,+CAA8B,CACjD,CAAC;YAEF,KAAK,MAAM,KAAK,IAAI,iBAAiB,EAAE,CAAC;gBACtC,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;gBAC7D,IAAI,CAAC,UAAU,EAAE,CAAC;oBAChB,SAAS;gBACX,CAAC;gBACD,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,GAAG,MAAM,IAAI,CAAC,qBAAqB,CAClE,KAAK,EACL,MAAM,CAAC,oBAAoB,IAAI,EAAE,CAClC,CAAC;gBACF,IAAI,CAAC,aAAa,EAAE,CAAC;oBACnB,IAAI,gCAAgC,EAAE,CAAC;wBACrC,MAAM,IAAI,CAAC,eAAe,CAAC,YAAY,CACrC,OAAO,EACP,KAAK,EACL,gCAAgC,CAAC,EAAE,CACpC,CAAC;oBACJ,CAAC;yBAAM,CAAC;wBACN,MAAM,IAAI,CAAC,eAAe,CAAC,YAAY,CACrC,OAAO,EACP,KAAK,EACL,6BAA6B,CAAC,EAAE,CACjC,CAAC;oBACJ,CAAC;oBACD,SAAS;gBACX,CAAC;gBAED,MAAM,sBAAsB,GAAG,kCAAkC,qCAAqC,EAAE,CAAC;gBACzG,MAAM,kBAAkB,GAAG,QAAQ,CAAC,KAAK,CACvC,CAAC,MAAM,CAAC,sBAAsB,GAAG,CAAC,CACnC,CAAC;gBACF,MAAM,qBAAqB,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAClE,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,6BAA6B,CAAC,CAC1D,CAAC,MAAM,CAAC;gBACT,MAAM,gBAAgB,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAC3D,OAAO,CAAC,OAAO;qBACZ,WAAW,EAAE;qBACb,QAAQ,CAAC,wCAAwC,CAAC,CACtD,CAAC;gBAEF,IACE,6BAA6B;oBAC7B,qBAAqB,GAAG,CAAC,IAAI,MAAM,CAAC,sBAAsB;oBAC1D,CAAC,gBAAgB,EACjB,CAAC;oBACD,MAAM,IAAI,CAAC,eAAe,CAAC,YAAY,CACrC,OAAO,EACP,KAAK,EACL,6BAA6B,CAAC,EAAE,CACjC,CAAC;oBACF,MAAM,IAAI,CAAC,sBAAsB,CAAC,aAAa,CAC7C,KAAK,EACL,GAAG,sBAAsB,kDAAkD,MAAM,CAAC,sBAAsB,QAAQ,CACjH,CAAC;oBACF,SAAS;gBACX,CAAC;gBAED,MAAM,IAAI,CAAC,eAAe,CAAC,YAAY,CACrC,OAAO,EACP,KAAK,EACL,6BAA6B,CAAC,EAAE,CACjC,CAAC;gBACF,MAAM,IAAI,CAAC,sBAAsB,CAAC,aAAa,CAC7C,KAAK,EACL,sBAAsB,CACvB,CAAC;YACJ,CAAC;QACH,CAAC,CAAC;QAEM,0BAAqB,GAAG,KAAK,EACnC,KAAY,EACZ,oBAA8B,EAC4B,EAAE;YAC5D,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;gBACnB,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;YAChD,CAAC;YACD,MAAM,QAAQ,GACZ,MAAM,IAAI,CAAC,sBAAsB,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;YAChE,MAAM,WAAW,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YAClD,IAAI,CAAC,WAAW,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;gBACrE,OAAO,EAAE,aAAa,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;YAC3C,CAAC;YACD,IAAI,IAAI,CAAC,qBAAqB,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC;gBACpD,OAAO,EAAE,aAAa,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;YAC3C,CAAC;YAED,MAAM,cAAc,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CACnD,KAAK,CAAC,UAAU,CAAC,WAAW,CAAC,CAC9B,CAAC;YACF,MAAM,gBAAgB,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CACxC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,WAAW,IAAI,CAAC,CAAC,UAAU,CAAC,YAAY,CAAC,CACvD,CAAC;YACF,MAAM,sBAAsB,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CACzD,oBAAoB,CAAC,QAAQ,CAAC,KAAK,CAAC,CACrC,CAAC;YACF,IACE,gBAAgB;gBAChB,sBAAsB;gBACtB,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,EACvE,CAAC;gBACD,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;YAC5C,CAAC;YAED,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI;gBAC3B,CAAC,CAAC,MAAM,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC,GAAG,CAAC;gBAC/C,CAAC,CAAC,MAAM,IAAI,CAAC,eAAe,CAAC,kBAAkB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAE7D,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC5B,OAAO,EAAE,aAAa,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;YAC3C,CAAC;YAED,MAAM,EAAE,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;YACzB,MAAM,aAAa,GACjB,EAAE,CAAC,YAAY;gBACf,CAAC,EAAE,CAAC,gBAAgB;gBACpB,CAAC,EAAE,CAAC,2BAA2B,CAAC;YAClC,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,CAAC;QACrC,CAAC,CAAC;QAEM,4BAAuB,GAAG,KAAK,EACrC,KAAa,EACkB,EAAE;YACjC,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;YAChE,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC;gBAChB,OAAO,EAAE,CAAC;YACZ,CAAC;YACD,OAAO,CAAC,EAAE,CAAC,CAAC;QACd,CAAC,CAAC;QAEM,0BAAqB,GAAG,CAAC,IAAY,EAAW,EAAE;YACxD,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC;YAC3D,IAAI,CAAC,WAAW,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC3C,OAAO,KAAK,CAAC;YACf,CAAC;YACD,IAAI,UAAmB,CAAC;YACxB,IAAI,CAAC;gBACH,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;YAC1C,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,IAAI,CACV,sDAAsD,EACtD,KAAK,CACN,CAAC;gBACF,OAAO,KAAK,CAAC;YACf,CAAC;YACD,IAAI,OAAO,UAAU,KAAK,QAAQ,IAAI,UAAU,KAAK,IAAI,EAAE,CAAC;gBAC1D,OAAO,KAAK,CAAC;YACf,CAAC;YACD,IAAI,CAAC,CAAC,UAAU,IAAI,UAAU,CAAC,EAAE,CAAC;gBAChC,OAAO,KAAK,CAAC;YACf,CAAC;YACD,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;YAC1D,OAAO,aAAa,KAAK,IAAI,IAAI,aAAa,KAAK,SAAS,CAAC;QAC/D,CAAC,CAAC;QAEM,oBAAe,GAAG,KAAK,EAC7B,KAAY,EACZ,MAIC,EACiB,EAAE;YACpB,MAAM,eAAe,GAAG,MAAM,CAAC,8BAA8B,CAAC,OAAO,CACnE,OAAO,EACP,IAAI,CACL,CAAC;YACF,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,IAAI,EAAE;gBAClE,IAAI;gBACJ,eAAe;gBACf,IAAI;gBACJ,KAAK,CAAC,GAAG;aACV,CAAC,CAAC;YAEH,IAAI,QAAQ,KAAK,CAAC;gBAAE,OAAO,IAAI,CAAC;YAEhC,MAAM,EAAE,kBAAkB,EAAE,0BAA0B,EAAE,GAAG,MAAM,CAAC;YAClE,IAAI,CAAC,kBAAkB,IAAI,CAAC,0BAA0B;gBAAE,OAAO,KAAK,CAAC;YAErE,OAAO,IAAI,CAAC,YAAY,CACtB,KAAK,EACL,kBAAkB,EAClB,0BAA0B,CAC3B,CAAC;QACJ,CAAC,CAAC;QAEM,iBAAY,GAAG,KAAK,EAC1B,KAAY,EACZ,kBAA0B,EAC1B,0BAAkC,EAChB,EAAE;YACpB,MAAM,UAAU,GAAG,GAAG,KAAK,CAAC,GAAG,IAAI,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC;YAElE,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,QAAQ,EAAE,gBAAgB,EAAE,GAC1D,MAAM,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,IAAI,EAAE;gBAC7C,IAAI;gBACJ,sBAAsB;gBACtB,IAAI;gBACJ,kBAAkB;gBAClB,UAAU;aACX,CAAC,CAAC;YAEL,IAAI,gBAAgB,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE;gBAAE,OAAO,KAAK,CAAC;YAEnE,MAAM,EAAE,MAAM,EAAE,iBAAiB,EAAE,QAAQ,EAAE,mBAAmB,EAAE,GAChE,MAAM,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,IAAI,EAAE;gBAC7C,IAAI;gBACJ,gCAAgC;gBAChC,IAAI;gBACJ,kBAAkB;gBAClB,UAAU;gBACV,MAAM,CAAC,0BAA0B,CAAC;aACnC,CAAC,CAAC;YAEL,IAAI,mBAAmB,KAAK,CAAC;gBAAE,OAAO,KAAK,CAAC;YAE5C,OAAO,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC;QACnC,CAAC,CAAC;IArQC,CAAC;CAsQL;AAxRD,4EAwRC"}
1
+ {"version":3,"file":"RevertOrphanedPreparationUseCase.js","sourceRoot":"","sources":["../../../src/domain/usecases/RevertOrphanedPreparationUseCase.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.resolveLabelsNotRequiringPullRequest = void 0;
4
+ const resolveLabelsNotRequiringPullRequest = (source) => [
5
+ ...(source.labelsAsLlmAgentName ?? []),
6
+ ...(source.labelsNotRequiringPullRequest ?? []),
7
+ ];
8
+ exports.resolveLabelsNotRequiringPullRequest = resolveLabelsNotRequiringPullRequest;
9
+ //# sourceMappingURL=resolveLabelsNotRequiringPullRequest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolveLabelsNotRequiringPullRequest.js","sourceRoot":"","sources":["../../../src/domain/usecases/resolveLabelsNotRequiringPullRequest.ts"],"names":[],"mappings":";;;AAAO,MAAM,oCAAoC,GAAG,CAAC,MAGpD,EAAY,EAAE,CAAC;IACd,GAAG,CAAC,MAAM,CAAC,oBAAoB,IAAI,EAAE,CAAC;IACtC,GAAG,CAAC,MAAM,CAAC,6BAA6B,IAAI,EAAE,CAAC;CAChD,CAAC;AANW,QAAA,oCAAoC,wCAM/C"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "github-issue-tower-defence-management",
3
- "version": "1.147.1",
3
+ "version": "1.147.2",
4
4
  "description": "",
5
5
  "main": "bin/index.js",
6
6
  "scripts": {
@@ -1472,6 +1472,7 @@ mysteryKey: 'value'
1472
1472
  workflowBlockerResolvedWebhookUrl: null,
1473
1473
  allowedIssueAuthors: null,
1474
1474
  labelsAsLlmAgentName: null,
1475
+ labelsNotRequiringPullRequest: null,
1475
1476
  changeTargetPathAliases: null,
1476
1477
  });
1477
1478
  });
@@ -1508,6 +1509,7 @@ mysteryKey: 'value'
1508
1509
  workflowBlockerResolvedWebhookUrl: null,
1509
1510
  allowedIssueAuthors: null,
1510
1511
  labelsAsLlmAgentName: null,
1512
+ labelsNotRequiringPullRequest: null,
1511
1513
  changeTargetPathAliases: null,
1512
1514
  });
1513
1515
  });
@@ -1789,6 +1791,7 @@ mysteryKey: 'value'
1789
1791
  issueUrl: 'https://github.com/test/repo/issues/1',
1790
1792
  allowedIssueAuthors: null,
1791
1793
  labelsAsLlmAgentName: null,
1794
+ labelsNotRequiringPullRequest: null,
1792
1795
  });
1793
1796
  expect(stdoutSpy).toHaveBeenCalledWith(
1794
1797
  `${JSON.stringify({ reviewReady: true, rejections: [] })}\n`,
@@ -1874,6 +1877,7 @@ mysteryKey: 'value'
1874
1877
  issueUrl: 'https://github.com/test/repo/issues/1',
1875
1878
  allowedIssueAuthors: null,
1876
1879
  labelsAsLlmAgentName: null,
1880
+ labelsNotRequiringPullRequest: null,
1877
1881
  });
1878
1882
 
1879
1883
  stdoutSpy.mockRestore();
@@ -385,6 +385,8 @@ program
385
385
  awLogDirectoryPath: config.awLogDirectoryPath,
386
386
  awLogStaleThresholdMinutes: config.awLogStaleThresholdMinutes,
387
387
  labelsAsLlmAgentName: config.labelsAsLlmAgentName ?? null,
388
+ labelsNotRequiringPullRequest:
389
+ config.labelsNotRequiringPullRequest ?? null,
388
390
  });
389
391
  }
390
392
 
@@ -589,6 +591,8 @@ program
589
591
  workflowBlockerResolvedWebhookUrl,
590
592
  allowedIssueAuthors,
591
593
  labelsAsLlmAgentName: config.labelsAsLlmAgentName ?? null,
594
+ labelsNotRequiringPullRequest:
595
+ config.labelsNotRequiringPullRequest ?? null,
592
596
  changeTargetPathAliases: config.changeTargetPathAliases ?? null,
593
597
  });
594
598
  });
@@ -686,6 +690,8 @@ program
686
690
  issueUrl: options.issueUrl,
687
691
  allowedIssueAuthors,
688
692
  labelsAsLlmAgentName: config.labelsAsLlmAgentName ?? null,
693
+ labelsNotRequiringPullRequest:
694
+ config.labelsNotRequiringPullRequest ?? null,
689
695
  });
690
696
 
691
697
  process.stdout.write(`${JSON.stringify(result)}\n`);
@@ -22,6 +22,7 @@ export type ConfigFile = {
22
22
  awLogDirectoryPath?: string;
23
23
  awLogStaleThresholdMinutes?: number;
24
24
  labelsAsLlmAgentName?: string[];
25
+ labelsNotRequiringPullRequest?: string[];
25
26
  changeTargetPathAliases?: Record<string, string>;
26
27
  consoleAccessToken?: string;
27
28
  consoleProjects?: Record<string, string>;
@@ -179,6 +180,10 @@ export const loadConfigFile = (configFilePath: string): ConfigFile => {
179
180
  'awLogStaleThresholdMinutes',
180
181
  ),
181
182
  labelsAsLlmAgentName: getStringArrayValue(parsed, 'labelsAsLlmAgentName'),
183
+ labelsNotRequiringPullRequest: getStringArrayValue(
184
+ parsed,
185
+ 'labelsNotRequiringPullRequest',
186
+ ),
182
187
  changeTargetPathAliases: getStringRecordValue(
183
188
  parsed,
184
189
  'changeTargetPathAliases',
@@ -348,6 +353,10 @@ export const mergeConfigs = (
348
353
  readmeOverrides.labelsAsLlmAgentName ??
349
354
  cliOverrides.labelsAsLlmAgentName ??
350
355
  configFile.labelsAsLlmAgentName,
356
+ labelsNotRequiringPullRequest:
357
+ readmeOverrides.labelsNotRequiringPullRequest ??
358
+ cliOverrides.labelsNotRequiringPullRequest ??
359
+ configFile.labelsNotRequiringPullRequest,
351
360
  changeTargetPathAliases:
352
361
  readmeOverrides.changeTargetPathAliases ??
353
362
  cliOverrides.changeTargetPathAliases ??
@@ -106,6 +106,24 @@ describe('CheckIssueReviewReadinessUseCase', () => {
106
106
  ]);
107
107
  });
108
108
 
109
+ it('should return reviewReady=true when the issue label is only in labelsNotRequiringPullRequest and no pull request exists', async () => {
110
+ const issue = createMockIssue({ labels: ['story'] });
111
+ mockIssueRepository.getIssueByUrl.mockResolvedValue(issue);
112
+ mockIssueCommentRepository.getCommentsFromIssue.mockResolvedValue([
113
+ createMockComment(),
114
+ ]);
115
+ mockIssueRepository.findRelatedOpenPRs.mockResolvedValue([]);
116
+
117
+ const result = await useCase.run({
118
+ issueUrl: 'https://github.com/user/repo/issues/1',
119
+ labelsAsLlmAgentName: ['chore'],
120
+ labelsNotRequiringPullRequest: ['story'],
121
+ });
122
+
123
+ expect(result.rejections).toEqual([]);
124
+ expect(result.reviewReady).toBe(true);
125
+ });
126
+
109
127
  it('should return reviewReady=false with NO_REPORT_FROM_AGENT_BOT when no comments exist', async () => {
110
128
  const issue = createMockIssue();
111
129
  mockIssueRepository.getIssueByUrl.mockResolvedValue(issue);
@@ -4,6 +4,7 @@ import {
4
4
  IssueRejectionEvaluator,
5
5
  PrRejectedReasonType,
6
6
  } from './IssueRejectionEvaluator';
7
+ import { resolveLabelsNotRequiringPullRequest } from './resolveLabelsNotRequiringPullRequest';
7
8
 
8
9
  type RejectedReasonType =
9
10
  | 'ISSUE_NOT_FOUND'
@@ -40,6 +41,7 @@ export class CheckIssueReviewReadinessUseCase {
40
41
  issueUrl: string;
41
42
  allowedIssueAuthors?: string[] | null;
42
43
  labelsAsLlmAgentName?: string[] | null;
44
+ labelsNotRequiringPullRequest?: string[] | null;
43
45
  }): Promise<IssueReviewReadinessResult> => {
44
46
  const issue = await this.issueRepository.getIssueByUrl(params.issueUrl);
45
47
 
@@ -83,7 +85,7 @@ export class CheckIssueReviewReadinessUseCase {
83
85
  const { rejections: prRejections } =
84
86
  await this.issueRejectionEvaluator.evaluate(
85
87
  issue,
86
- params.labelsAsLlmAgentName ?? [],
88
+ resolveLabelsNotRequiringPullRequest(params),
87
89
  );
88
90
 
89
91
  const allRejections = [...rejections, ...prRejections];
@@ -156,6 +156,7 @@ export class HandleScheduledEventUseCase {
156
156
  urlOfStoryView: string;
157
157
  disabled: boolean;
158
158
  labelsAsLlmAgentName?: string[] | null;
159
+ labelsNotRequiringPullRequest?: string[] | null;
159
160
  changeTargetPathAliases?: Record<string, string> | null;
160
161
  allowedIssueAuthors?: string[] | null;
161
162
  autoAssignManagerAuthors?: string[] | null;
@@ -408,6 +409,7 @@ ${JSON.stringify(e)}
408
409
  projectUrl: input.projectUrl,
409
410
  manager: input.manager,
410
411
  labelsAsLlmAgentName,
412
+ labelsNotRequiringPullRequest: input.labelsNotRequiringPullRequest,
411
413
  changeTargetPathAliases: input.changeTargetPathAliases,
412
414
  allowedIssueAuthors,
413
415
  });
@@ -437,6 +439,7 @@ ${JSON.stringify(e)}
437
439
  awaitingQualityCheckStatus:
438
440
  input.startPreparation.awaitingQualityCheckStatus ?? undefined,
439
441
  labelsAsLlmAgentName,
442
+ labelsNotRequiringPullRequest: input.labelsNotRequiringPullRequest,
440
443
  });
441
444
  }
442
445
  const preparationResult = await this.startPreparationUseCase.run({
@@ -46,7 +46,7 @@ export class IssueRejectionEvaluator {
46
46
  labels: string[];
47
47
  isPr: boolean;
48
48
  },
49
- labelsAsLlmAgentName: string[] = [],
49
+ labelsNotRequiringPullRequest: string[] = [],
50
50
  options: EvaluateOptions = {},
51
51
  ): Promise<PrRejectionResult> => {
52
52
  const rejections: { type: PrRejectedReasonType; detail: string }[] = [];
@@ -58,13 +58,13 @@ export class IssueRejectionEvaluator {
58
58
  const hasLlmAgentLabel = issue.labels.some(
59
59
  (l) => l === 'llm-agent' || l.startsWith('llm-agent:'),
60
60
  );
61
- const hasLabelAsLlmAgentName = issue.labels.some((label) =>
62
- labelsAsLlmAgentName.includes(label),
61
+ const hasLabelNotRequiringPullRequest = issue.labels.some((label) =>
62
+ labelsNotRequiringPullRequest.includes(label),
63
63
  );
64
64
 
65
65
  if (
66
66
  !hasLlmAgentLabel &&
67
- !hasLabelAsLlmAgentName &&
67
+ !hasLabelNotRequiringPullRequest &&
68
68
  (categoryLabels.length <= 0 || categoryLabels.includes('category:e2e'))
69
69
  ) {
70
70
  let prsToCheck: RelatedPullRequest[];
@@ -1087,6 +1087,36 @@ describe('NotifyFinishedIssuePreparationUseCase', () => {
1087
1087
  );
1088
1088
  });
1089
1089
 
1090
+ it('should not reject a missing PR when the issue label is only in labelsNotRequiringPullRequest', async () => {
1091
+ const issue = createMockIssue({
1092
+ url: 'https://github.com/user/repo/issues/1',
1093
+ status: 'Preparation',
1094
+ labels: ['story'],
1095
+ });
1096
+
1097
+ mockProjectRepository.getByUrl.mockResolvedValue(mockProject);
1098
+ mockIssueRepository.get.mockResolvedValue(issue);
1099
+ mockIssueCommentRepository.getCommentsFromIssue.mockResolvedValue([
1100
+ createMockComment({ content: 'From: :robot: Test report' }),
1101
+ ]);
1102
+ mockIssueRepository.findRelatedOpenPRs.mockResolvedValue([]);
1103
+
1104
+ await useCase.run({
1105
+ projectUrl: 'https://github.com/users/user/projects/1',
1106
+ issueUrl: 'https://github.com/user/repo/issues/1',
1107
+ thresholdForAutoReject: 3,
1108
+ workflowBlockerResolvedWebhookUrl: null,
1109
+ allowedIssueAuthors: null,
1110
+ labelsAsLlmAgentName: ['chore', 'accounting'],
1111
+ labelsNotRequiringPullRequest: ['story'],
1112
+ });
1113
+
1114
+ expect(mockIssueCommentRepository.createComment).not.toHaveBeenCalledWith(
1115
+ expect.anything(),
1116
+ expect.stringContaining('PULL_REQUEST_NOT_FOUND'),
1117
+ );
1118
+ });
1119
+
1090
1120
  it('should reject when multiple PRs are found', async () => {
1091
1121
  const issue = createMockIssue({
1092
1122
  url: 'https://github.com/user/repo/issues/1',
@@ -13,6 +13,7 @@ import {
13
13
  PrRejectedReasonType,
14
14
  } from './IssueRejectionEvaluator';
15
15
  import { ChangeTargetPullRequestApprover } from './ChangeTargetPullRequestApprover';
16
+ import { resolveLabelsNotRequiringPullRequest } from './resolveLabelsNotRequiringPullRequest';
16
17
 
17
18
  export class IssueNotFoundError extends Error {
18
19
  constructor(issueUrl: string) {
@@ -76,6 +77,7 @@ export class NotifyFinishedIssuePreparationUseCase {
76
77
  workflowBlockerResolvedWebhookUrl: string | null;
77
78
  allowedIssueAuthors?: string[] | null;
78
79
  labelsAsLlmAgentName?: string[] | null;
80
+ labelsNotRequiringPullRequest?: string[] | null;
79
81
  changeTargetPathAliases?: Record<string, string> | null;
80
82
  }): Promise<void> => {
81
83
  const project = await this.projectRepository.getByUrl(params.projectUrl);
@@ -181,7 +183,7 @@ export class NotifyFinishedIssuePreparationUseCase {
181
183
  issue,
182
184
  comments,
183
185
  isTrustedAuthor,
184
- params.labelsAsLlmAgentName ?? [],
186
+ resolveLabelsNotRequiringPullRequest(params),
185
187
  );
186
188
 
187
189
  const rejectionStatusMessage =
@@ -287,7 +289,7 @@ export class NotifyFinishedIssuePreparationUseCase {
287
289
  issue: { url: string; labels: string[]; isPr: boolean },
288
290
  comments: { author: string; content: string }[],
289
291
  isTrustedAuthor: (author: string) => boolean,
290
- labelsAsLlmAgentName: string[],
292
+ labelsNotRequiringPullRequest: string[],
291
293
  ): Promise<{
292
294
  rejections: { type: RejectedReasonType; detail: string }[];
293
295
  approvedPrUrl: string | null;
@@ -312,7 +314,10 @@ export class NotifyFinishedIssuePreparationUseCase {
312
314
  }
313
315
 
314
316
  const { rejections: prRejections, approvedPrUrl } =
315
- await this.issueRejectionEvaluator.evaluate(issue, labelsAsLlmAgentName);
317
+ await this.issueRejectionEvaluator.evaluate(
318
+ issue,
319
+ labelsNotRequiringPullRequest,
320
+ );
316
321
  return { rejections: [...rejections, ...prRejections], approvedPrUrl };
317
322
  };
318
323
 
@@ -301,6 +301,29 @@ describe('RevertNotReadyReviewQueueIssueUseCase', () => {
301
301
  expect(mockIssueCommentRepository.createComment).not.toHaveBeenCalled();
302
302
  });
303
303
 
304
+ it('should not revert a story-labeled issue with no linked PR when story is only in labelsNotRequiringPullRequest', async () => {
305
+ const issue = createMockIssue({
306
+ status: 'Awaiting Quality Check',
307
+ labels: ['story'],
308
+ });
309
+ mockIssueRepository.getAllIssues.mockResolvedValue({
310
+ project: mockProject,
311
+ issues: [issue],
312
+ cacheUsed: false,
313
+ });
314
+
315
+ await useCase.run({
316
+ manager: 'manager-user',
317
+ projectUrl: 'https://github.com/users/user/projects/1',
318
+ labelsAsLlmAgentName: ['chore', 'accounting'],
319
+ labelsNotRequiringPullRequest: ['story'],
320
+ allowedIssueAuthors: ['owner'],
321
+ });
322
+
323
+ expect(mockIssueRepository.updateStatus).not.toHaveBeenCalled();
324
+ expect(mockIssueCommentRepository.createComment).not.toHaveBeenCalled();
325
+ });
326
+
304
327
  it('should not revert a chore-labeled issue with no linked PR when chore is in labelsAsLlmAgentName', async () => {
305
328
  const issue = createMockIssue({
306
329
  status: 'Awaiting Quality Check',
@@ -4,6 +4,7 @@ import { ProjectRepository } from './adapter-interfaces/ProjectRepository';
4
4
  import { IssueCommentRepository } from './adapter-interfaces/IssueCommentRepository';
5
5
  import { IssueRejectionEvaluator } from './IssueRejectionEvaluator';
6
6
  import { ChangeTargetPullRequestApprover } from './ChangeTargetPullRequestApprover';
7
+ import { resolveLabelsNotRequiringPullRequest } from './resolveLabelsNotRequiringPullRequest';
7
8
  import {
8
9
  AWAITING_QUALITY_CHECK_STATUS_NAME,
9
10
  AWAITING_WORKSPACE_STATUS_NAME,
@@ -71,6 +72,7 @@ export class RevertNotReadyReviewQueueIssueUseCase {
71
72
  projectUrl: string;
72
73
  manager: string;
73
74
  labelsAsLlmAgentName?: string[] | null;
75
+ labelsNotRequiringPullRequest?: string[] | null;
74
76
  changeTargetPathAliases?: Record<string, string> | null;
75
77
  allowedIssueAuthors?: string[] | null;
76
78
  }): Promise<void> => {
@@ -122,7 +124,7 @@ export class RevertNotReadyReviewQueueIssueUseCase {
122
124
  const { rejections, approvedPrUrl } =
123
125
  await this.issueRejectionEvaluator.evaluate(
124
126
  issue,
125
- params.labelsAsLlmAgentName ?? [],
127
+ resolveLabelsNotRequiringPullRequest(params),
126
128
  {
127
129
  relatedOpenPrUrls:
128
130
  relatedOpenPrUrlsByIssueUrl.get(issue.url) ?? null,
@@ -195,7 +197,7 @@ export class RevertNotReadyReviewQueueIssueUseCase {
195
197
  try {
196
198
  const { rejections } = await this.issueRejectionEvaluator.evaluate(
197
199
  pullRequest,
198
- params.labelsAsLlmAgentName ?? [],
200
+ resolveLabelsNotRequiringPullRequest(params),
199
201
  );
200
202
  if (rejections.length > 0) {
201
203
  if (!pullRequest.assignees.includes(params.manager)) {
@@ -369,6 +369,43 @@ describe('RevertOrphanedPreparationUseCase', () => {
369
369
  expect(mockIssueRepository.updateStatus.mock.calls[0][2]).toBe('4');
370
370
  });
371
371
 
372
+ it('should advance an orphaned issue whose label is only in labelsNotRequiringPullRequest to Awaiting Quality Check without PR check', async () => {
373
+ const stuckIssue = createMockIssue({
374
+ url: 'https://github.com/user/repo/issues/10',
375
+ status: 'Preparation',
376
+ labels: ['story'],
377
+ });
378
+ mockIssueRepository.getAllIssues.mockResolvedValue({
379
+ project: mockProject,
380
+ issues: [stuckIssue],
381
+ cacheUsed: false,
382
+ });
383
+ mockLocalCommandRunner.runCommand.mockResolvedValue({
384
+ stdout: '',
385
+ stderr: '',
386
+ exitCode: 1,
387
+ });
388
+ mockIssueCommentRepository.getCommentsFromIssue.mockResolvedValue([
389
+ {
390
+ author: 'bot',
391
+ content: 'From: :robot: agent report',
392
+ createdAt: new Date(),
393
+ },
394
+ ]);
395
+
396
+ await useCase.run({
397
+ projectUrl: 'https://github.com/user/repo',
398
+ preparationProcessCheckCommand: 'pgrep -fa "claude-agent.*{URL}"',
399
+ thresholdForAutoReject: 3,
400
+ labelsAsLlmAgentName: ['chore'],
401
+ labelsNotRequiringPullRequest: ['story'],
402
+ });
403
+
404
+ expect(mockIssueRepository.findRelatedOpenPRs.mock.calls).toHaveLength(0);
405
+ expect(mockIssueRepository.updateStatus.mock.calls).toHaveLength(1);
406
+ expect(mockIssueRepository.updateStatus.mock.calls[0][2]).toBe('4');
407
+ });
408
+
372
409
  it('should revert orphaned issue to Awaiting Workspace when its label is not in labelsAsLlmAgentName and no PR is found', async () => {
373
410
  const stuckIssue = createMockIssue({
374
411
  url: 'https://github.com/user/repo/issues/10',
@@ -13,6 +13,7 @@ import {
13
13
  FAILED_PREPARATION_STATUS_NAME,
14
14
  PREPARATION_STATUS_NAME,
15
15
  } from '../entities/WorkflowStatus';
16
+ import { resolveLabelsNotRequiringPullRequest } from './resolveLabelsNotRequiringPullRequest';
16
17
 
17
18
  const ORPHANED_PREPARATION_REJECTION_DETAIL = 'ORPHANED_PREPARATION';
18
19
 
@@ -44,6 +45,7 @@ export class RevertOrphanedPreparationUseCase {
44
45
  awLogStaleThresholdMinutes?: number;
45
46
  awaitingQualityCheckStatus?: string | null;
46
47
  labelsAsLlmAgentName?: string[] | null;
48
+ labelsNotRequiringPullRequest?: string[] | null;
47
49
  }): Promise<void> => {
48
50
  const projectId = await this.projectRepository.findProjectIdByUrl(
49
51
  params.projectUrl,
@@ -87,7 +89,7 @@ export class RevertOrphanedPreparationUseCase {
87
89
  }
88
90
  const { hasRejections, comments } = await this.evaluateHasRejections(
89
91
  issue,
90
- params.labelsAsLlmAgentName ?? [],
92
+ resolveLabelsNotRequiringPullRequest(params),
91
93
  );
92
94
  if (!hasRejections) {
93
95
  if (awaitingQualityCheckStatusOption) {
@@ -150,7 +152,7 @@ export class RevertOrphanedPreparationUseCase {
150
152
 
151
153
  private evaluateHasRejections = async (
152
154
  issue: Issue,
153
- labelsAsLlmAgentName: string[],
155
+ labelsNotRequiringPullRequest: string[],
154
156
  ): Promise<{ hasRejections: boolean; comments: Comment[] }> => {
155
157
  if (issue.isClosed) {
156
158
  return { hasRejections: false, comments: [] };
@@ -171,12 +173,12 @@ export class RevertOrphanedPreparationUseCase {
171
173
  const hasLlmAgentLabel = issue.labels.some(
172
174
  (l) => l === 'llm-agent' || l.startsWith('llm-agent:'),
173
175
  );
174
- const hasLabelAsLlmAgentName = issue.labels.some((label) =>
175
- labelsAsLlmAgentName.includes(label),
176
+ const hasLabelNotRequiringPullRequest = issue.labels.some((label) =>
177
+ labelsNotRequiringPullRequest.includes(label),
176
178
  );
177
179
  if (
178
180
  hasLlmAgentLabel ||
179
- hasLabelAsLlmAgentName ||
181
+ hasLabelNotRequiringPullRequest ||
180
182
  (categoryLabels.length > 0 && !categoryLabels.includes('category:e2e'))
181
183
  ) {
182
184
  return { hasRejections: false, comments };
@@ -0,0 +1,33 @@
1
+ import { resolveLabelsNotRequiringPullRequest } from './resolveLabelsNotRequiringPullRequest';
2
+
3
+ describe('resolveLabelsNotRequiringPullRequest', () => {
4
+ it('combines both lists so an agent-name label keeps exempting the issue', () => {
5
+ expect(
6
+ resolveLabelsNotRequiringPullRequest({
7
+ labelsAsLlmAgentName: ['chore', 'accounting'],
8
+ labelsNotRequiringPullRequest: ['story'],
9
+ }),
10
+ ).toEqual(['chore', 'accounting', 'story']);
11
+ });
12
+
13
+ it('returns only the agent-name labels when no exemption list is configured', () => {
14
+ expect(
15
+ resolveLabelsNotRequiringPullRequest({
16
+ labelsAsLlmAgentName: ['chore'],
17
+ }),
18
+ ).toEqual(['chore']);
19
+ });
20
+
21
+ it('returns only the exemption labels when no agent-name label is configured', () => {
22
+ expect(
23
+ resolveLabelsNotRequiringPullRequest({
24
+ labelsAsLlmAgentName: null,
25
+ labelsNotRequiringPullRequest: ['story'],
26
+ }),
27
+ ).toEqual(['story']);
28
+ });
29
+
30
+ it('returns an empty array when neither list is present', () => {
31
+ expect(resolveLabelsNotRequiringPullRequest({})).toEqual([]);
32
+ });
33
+ });
@@ -0,0 +1,7 @@
1
+ export const resolveLabelsNotRequiringPullRequest = (source: {
2
+ labelsAsLlmAgentName?: string[] | null;
3
+ labelsNotRequiringPullRequest?: string[] | null;
4
+ }): string[] => [
5
+ ...(source.labelsAsLlmAgentName ?? []),
6
+ ...(source.labelsNotRequiringPullRequest ?? []),
7
+ ];
@@ -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;AAoKzB,eAAO,MAAM,OAAO,SAAgB,CAAC;AAq8BrC,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;AAoKzB,eAAO,MAAM,OAAO,SAAgB,CAAC;AA28BrC,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"}
@@ -18,6 +18,7 @@ export type ConfigFile = {
18
18
  awLogDirectoryPath?: string;
19
19
  awLogStaleThresholdMinutes?: number;
20
20
  labelsAsLlmAgentName?: string[];
21
+ labelsNotRequiringPullRequest?: string[];
21
22
  changeTargetPathAliases?: Record<string, string>;
22
23
  consoleAccessToken?: string;
23
24
  consoleProjects?: Record<string, 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,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,uBAAuB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjD,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;AA4CvE,eAAO,MAAM,cAAc,GAAI,gBAAgB,MAAM,KAAG,UAmEvD,CAAC;AAEF,eAAO,MAAM,wBAAwB,GACnC,QAAQ,MAAM,EACd,aAAa,MAAM,KAClB,UAuEF,CAAC;AAEF,eAAO,MAAM,YAAY,GACvB,YAAY,UAAU,EACtB,cAAc,UAAU,EACxB,iBAAiB,UAAU,KAC1B,UA+ED,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,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,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;AA4CvE,eAAO,MAAM,cAAc,GAAI,gBAAgB,MAAM,KAAG,UAuEvD,CAAC;AAEF,eAAO,MAAM,wBAAwB,GACnC,QAAQ,MAAM,EACd,aAAa,MAAM,KAClB,UAuEF,CAAC;AAEF,eAAO,MAAM,YAAY,GACvB,YAAY,UAAU,EACtB,cAAc,UAAU,EACxB,iBAAiB,UAAU,KAC1B,UAmFD,CAAC;AAkBH,eAAO,MAAM,kBAAkB,GAC7B,YAAY,MAAM,EAClB,OAAO,MAAM,KACZ,OAAO,CAAC,MAAM,GAAG,IAAI,CAoDvB,CAAC"}
@@ -18,6 +18,7 @@ export declare class CheckIssueReviewReadinessUseCase {
18
18
  issueUrl: string;
19
19
  allowedIssueAuthors?: string[] | null;
20
20
  labelsAsLlmAgentName?: string[] | null;
21
+ labelsNotRequiringPullRequest?: string[] | null;
21
22
  }) => Promise<IssueReviewReadinessResult>;
22
23
  private isAuthorTrusted;
23
24
  private reportBodyHasNextStep;
@@ -1 +1 @@
1
- {"version":3,"file":"CheckIssueReviewReadinessUseCase.d.ts","sourceRoot":"","sources":["../../../src/domain/usecases/CheckIssueReviewReadinessUseCase.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AACvE,OAAO,EAAE,sBAAsB,EAAE,MAAM,6CAA6C,CAAC;AACrF,OAAO,EAEL,oBAAoB,EACrB,MAAM,2BAA2B,CAAC;AAEnC,KAAK,kBAAkB,GACnB,iBAAiB,GACjB,0BAA0B,GAC1B,sBAAsB,GACtB,oBAAoB,CAAC;AAEzB,MAAM,MAAM,0BAA0B,GAAG;IACvC,WAAW,EAAE,OAAO,CAAC;IACrB,UAAU,EAAE;QAAE,IAAI,EAAE,kBAAkB,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CAC5D,CAAC;AAEF,qBAAa,gCAAgC;IAIzC,OAAO,CAAC,QAAQ,CAAC,eAAe;IAQhC,OAAO,CAAC,QAAQ,CAAC,sBAAsB;IAXzC,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAA0B;gBAG/C,eAAe,EAAE,IAAI,CACpC,eAAe,EACb,eAAe,GACf,oBAAoB,GACpB,oBAAoB,GACpB,gCAAgC,GAChC,iCAAiC,CACpC,EACgB,sBAAsB,EAAE,IAAI,CAC3C,sBAAsB,EACtB,sBAAsB,CACvB;IAKH,GAAG,GAAU,QAAQ;QACnB,QAAQ,EAAE,MAAM,CAAC;QACjB,mBAAmB,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;QACtC,oBAAoB,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;KACxC,KAAG,OAAO,CAAC,0BAA0B,CAAC,CAoDrC;IAEF,OAAO,CAAC,eAAe,CAIgD;IAEvE,OAAO,CAAC,qBAAqB,CAuB3B;CACH"}
1
+ {"version":3,"file":"CheckIssueReviewReadinessUseCase.d.ts","sourceRoot":"","sources":["../../../src/domain/usecases/CheckIssueReviewReadinessUseCase.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AACvE,OAAO,EAAE,sBAAsB,EAAE,MAAM,6CAA6C,CAAC;AACrF,OAAO,EAEL,oBAAoB,EACrB,MAAM,2BAA2B,CAAC;AAGnC,KAAK,kBAAkB,GACnB,iBAAiB,GACjB,0BAA0B,GAC1B,sBAAsB,GACtB,oBAAoB,CAAC;AAEzB,MAAM,MAAM,0BAA0B,GAAG;IACvC,WAAW,EAAE,OAAO,CAAC;IACrB,UAAU,EAAE;QAAE,IAAI,EAAE,kBAAkB,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CAC5D,CAAC;AAEF,qBAAa,gCAAgC;IAIzC,OAAO,CAAC,QAAQ,CAAC,eAAe;IAQhC,OAAO,CAAC,QAAQ,CAAC,sBAAsB;IAXzC,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAA0B;gBAG/C,eAAe,EAAE,IAAI,CACpC,eAAe,EACb,eAAe,GACf,oBAAoB,GACpB,oBAAoB,GACpB,gCAAgC,GAChC,iCAAiC,CACpC,EACgB,sBAAsB,EAAE,IAAI,CAC3C,sBAAsB,EACtB,sBAAsB,CACvB;IAKH,GAAG,GAAU,QAAQ;QACnB,QAAQ,EAAE,MAAM,CAAC;QACjB,mBAAmB,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;QACtC,oBAAoB,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;QACvC,6BAA6B,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;KACjD,KAAG,OAAO,CAAC,0BAA0B,CAAC,CAoDrC;IAEF,OAAO,CAAC,eAAe,CAIgD;IAEvE,OAAO,CAAC,qBAAqB,CAuB3B;CACH"}
@@ -72,6 +72,7 @@ export declare class HandleScheduledEventUseCase {
72
72
  urlOfStoryView: string;
73
73
  disabled: boolean;
74
74
  labelsAsLlmAgentName?: string[] | null;
75
+ labelsNotRequiringPullRequest?: string[] | null;
75
76
  changeTargetPathAliases?: Record<string, string> | null;
76
77
  allowedIssueAuthors?: string[] | null;
77
78
  autoAssignManagerAuthors?: string[] | null;