repoburg 1.0.55 → 1.0.57

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 (186) hide show
  1. package/backend/.env +1 -0
  2. package/backend/coverage/clover.xml +2409 -2355
  3. package/backend/coverage/coverage-final.json +99 -96
  4. package/backend/coverage/lcov-report/index.html +356 -341
  5. package/backend/coverage/lcov-report/src/action-execution/action-execution.module.ts.html +12 -12
  6. package/backend/coverage/lcov-report/src/action-execution/action-execution.service.ts.html +140 -62
  7. package/backend/coverage/lcov-report/src/action-execution/index.html +28 -28
  8. package/backend/coverage/lcov-report/src/ai-actions/ai-action-batch.service.ts.html +188 -188
  9. package/backend/coverage/lcov-report/src/ai-actions/ai-action-creation.service.ts.html +284 -236
  10. package/backend/coverage/lcov-report/src/ai-actions/ai-actions.controller.ts.html +109 -109
  11. package/backend/coverage/lcov-report/src/ai-actions/ai-actions.module.ts.html +28 -28
  12. package/backend/coverage/lcov-report/src/ai-actions/ai-actions.service.ts.html +193 -193
  13. package/backend/coverage/lcov-report/src/ai-actions/index.html +61 -61
  14. package/backend/coverage/lcov-report/src/app.controller.ts.html +24 -24
  15. package/backend/coverage/lcov-report/src/app.module.ts.html +68 -65
  16. package/backend/coverage/lcov-report/src/app.service.ts.html +46 -13
  17. package/backend/coverage/lcov-report/src/application-state/application-state.controller.ts.html +87 -33
  18. package/backend/coverage/lcov-report/src/application-state/application-state.module.ts.html +18 -18
  19. package/backend/coverage/lcov-report/src/application-state/application-state.service.ts.html +113 -68
  20. package/backend/coverage/lcov-report/src/application-state/dto/index.html +42 -27
  21. package/backend/coverage/lcov-report/src/application-state/dto/set-auto-context-fetch-enabled.dto.ts.html +12 -12
  22. package/backend/coverage/lcov-report/src/application-state/dto/set-orchestration-timeout.dto.ts.html +103 -0
  23. package/backend/coverage/lcov-report/src/application-state/dto/set-theme.dto.ts.html +12 -12
  24. package/backend/coverage/lcov-report/src/application-state/dto/set-websocket-enabled.dto.ts.html +12 -12
  25. package/backend/coverage/lcov-report/src/application-state/index.html +37 -37
  26. package/backend/coverage/lcov-report/src/context-generation/context-generation.module.ts.html +16 -16
  27. package/backend/coverage/lcov-report/src/context-generation/context-generation.service.ts.html +222 -222
  28. package/backend/coverage/lcov-report/src/context-generation/index.html +28 -28
  29. package/backend/coverage/lcov-report/src/context-snippets/context-snippets.controller.ts.html +31 -31
  30. package/backend/coverage/lcov-report/src/context-snippets/context-snippets.module.ts.html +20 -20
  31. package/backend/coverage/lcov-report/src/context-snippets/context-snippets.service.ts.html +26 -26
  32. package/backend/coverage/lcov-report/src/context-snippets/dto/context-snippet.dto.ts.html +28 -28
  33. package/backend/coverage/lcov-report/src/context-snippets/dto/index.html +13 -13
  34. package/backend/coverage/lcov-report/src/context-snippets/index.html +31 -31
  35. package/backend/coverage/lcov-report/src/context-templates/context-templates.controller.ts.html +45 -45
  36. package/backend/coverage/lcov-report/src/context-templates/context-templates.module.ts.html +20 -20
  37. package/backend/coverage/lcov-report/src/context-templates/context-templates.service.ts.html +87 -84
  38. package/backend/coverage/lcov-report/src/context-templates/dto/context-template.dto.ts.html +48 -48
  39. package/backend/coverage/lcov-report/src/context-templates/dto/index.html +13 -13
  40. package/backend/coverage/lcov-report/src/context-templates/index.html +36 -36
  41. package/backend/coverage/lcov-report/src/core-entities/ai-action.entity.ts.html +48 -48
  42. package/backend/coverage/lcov-report/src/core-entities/application-state.entity.ts.html +14 -14
  43. package/backend/coverage/lcov-report/src/core-entities/base.entity.ts.html +22 -22
  44. package/backend/coverage/lcov-report/src/core-entities/context-snippet.entity.ts.html +18 -18
  45. package/backend/coverage/lcov-report/src/core-entities/context-template.entity.ts.html +52 -52
  46. package/backend/coverage/lcov-report/src/core-entities/custom-snippet.entity.ts.html +20 -20
  47. package/backend/coverage/lcov-report/src/core-entities/execution-log.entity.ts.html +26 -26
  48. package/backend/coverage/lcov-report/src/core-entities/index.html +112 -112
  49. package/backend/coverage/lcov-report/src/core-entities/index.ts.html +28 -28
  50. package/backend/coverage/lcov-report/src/core-entities/project.entity.ts.html +24 -24
  51. package/backend/coverage/lcov-report/src/core-entities/session-input.entity.ts.html +59 -50
  52. package/backend/coverage/lcov-report/src/core-entities/session.entity.ts.html +56 -56
  53. package/backend/coverage/lcov-report/src/core-entities/system-prompt.entity.ts.html +28 -28
  54. package/backend/coverage/lcov-report/src/custom-snippets/custom-snippets.controller.ts.html +30 -30
  55. package/backend/coverage/lcov-report/src/custom-snippets/custom-snippets.module.ts.html +18 -18
  56. package/backend/coverage/lcov-report/src/custom-snippets/custom-snippets.service.ts.html +20 -20
  57. package/backend/coverage/lcov-report/src/custom-snippets/dto/custom-snippet.dto.ts.html +28 -28
  58. package/backend/coverage/lcov-report/src/custom-snippets/dto/index.html +13 -13
  59. package/backend/coverage/lcov-report/src/custom-snippets/index.html +32 -32
  60. package/backend/coverage/lcov-report/src/events/events.gateway.ts.html +46 -46
  61. package/backend/coverage/lcov-report/src/events/events.module.ts.html +12 -12
  62. package/backend/coverage/lcov-report/src/events/index.html +28 -28
  63. package/backend/coverage/lcov-report/src/execution-logs/dto/execution-log.dto.ts.html +1 -1
  64. package/backend/coverage/lcov-report/src/execution-logs/dto/index.html +1 -1
  65. package/backend/coverage/lcov-report/src/execution-logs/execution-logs.controller.ts.html +18 -18
  66. package/backend/coverage/lcov-report/src/execution-logs/execution-logs.module.ts.html +18 -18
  67. package/backend/coverage/lcov-report/src/execution-logs/execution-logs.service.ts.html +32 -32
  68. package/backend/coverage/lcov-report/src/execution-logs/index.html +33 -33
  69. package/backend/coverage/lcov-report/src/http-exception.filter.ts.html +55 -55
  70. package/backend/coverage/lcov-report/src/index.html +44 -44
  71. package/backend/coverage/lcov-report/src/llm-response-parser/dto/ai-action.dto.ts.html +67 -67
  72. package/backend/coverage/lcov-report/src/llm-response-parser/dto/index.html +21 -21
  73. package/backend/coverage/lcov-report/src/llm-response-parser/errors/index.html +17 -17
  74. package/backend/coverage/lcov-report/src/llm-response-parser/errors/parsing.error.ts.html +19 -19
  75. package/backend/coverage/lcov-report/src/llm-response-parser/index.html +35 -35
  76. package/backend/coverage/lcov-report/src/llm-response-parser/llm-response-parser.module.ts.html +12 -12
  77. package/backend/coverage/lcov-report/src/llm-response-parser/llm-response-parser.service.ts.html +208 -208
  78. package/backend/coverage/lcov-report/src/llm-response-parser/parsing.constants.ts.html +38 -38
  79. package/backend/coverage/lcov-report/src/llm-responses/dto/index.html +21 -21
  80. package/backend/coverage/lcov-report/src/llm-responses/dto/submit-llm-response.dto.ts.html +28 -28
  81. package/backend/coverage/lcov-report/src/llm-responses/index.html +38 -38
  82. package/backend/coverage/lcov-report/src/llm-responses/llm-responses.controller.ts.html +24 -24
  83. package/backend/coverage/lcov-report/src/llm-responses/llm-responses.module.ts.html +38 -35
  84. package/backend/coverage/lcov-report/src/llm-responses/llm-responses.service.ts.html +107 -86
  85. package/backend/coverage/lcov-report/src/main.ts.html +1 -1
  86. package/backend/coverage/lcov-report/src/orchestration/dto/index.html +13 -13
  87. package/backend/coverage/lcov-report/src/orchestration/dto/orchestration.dto.ts.html +30 -45
  88. package/backend/coverage/lcov-report/src/orchestration/index.html +74 -74
  89. package/backend/coverage/lcov-report/src/orchestration/orchestration-fs.service.ts.html +245 -128
  90. package/backend/coverage/lcov-report/src/orchestration/orchestration-parser.service.ts.html +32 -200
  91. package/backend/coverage/lcov-report/src/orchestration/orchestration.controller.ts.html +72 -102
  92. package/backend/coverage/lcov-report/src/orchestration/orchestration.module.ts.html +35 -38
  93. package/backend/coverage/lcov-report/src/orchestration/orchestration.service.ts.html +317 -425
  94. package/backend/coverage/lcov-report/src/orchestration/orchestration.types.ts.html +41 -35
  95. package/backend/coverage/lcov-report/src/projects/dto/index.html +13 -13
  96. package/backend/coverage/lcov-report/src/projects/dto/project.dto.ts.html +20 -20
  97. package/backend/coverage/lcov-report/src/projects/index.html +32 -32
  98. package/backend/coverage/lcov-report/src/projects/projects.controller.ts.html +28 -28
  99. package/backend/coverage/lcov-report/src/projects/projects.module.ts.html +18 -18
  100. package/backend/coverage/lcov-report/src/projects/projects.service.ts.html +20 -20
  101. package/backend/coverage/lcov-report/src/seeding/context-template-seeding.service.ts.html +22 -22
  102. package/backend/coverage/lcov-report/src/seeding/custom-snippet-seeding.service.ts.html +21 -21
  103. package/backend/coverage/lcov-report/src/seeding/data/context-templates/default-followup_ad-hoc-focused-context.ts.html +1 -1
  104. package/backend/coverage/lcov-report/src/seeding/data/context-templates/default-initial_condensed-project-context.ts.html +1 -1
  105. package/backend/coverage/lcov-report/src/seeding/data/context-templates/default-initial_full-project-context.ts.html +1 -1
  106. package/backend/coverage/lcov-report/src/seeding/data/context-templates/index.html +1 -1
  107. package/backend/coverage/lcov-report/src/seeding/data/context-templates/pm-context.ts.html +1 -1
  108. package/backend/coverage/lcov-report/src/seeding/data/context-templates/pr-description.ts.html +1 -1
  109. package/backend/coverage/lcov-report/src/seeding/data/context-templates/sample_focused-tree.ts.html +1 -1
  110. package/backend/coverage/lcov-report/src/seeding/data/custom-snippets/default_rglob.ts.html +1 -1
  111. package/backend/coverage/lcov-report/src/seeding/data/custom-snippets/git-diff.ts.html +1 -1
  112. package/backend/coverage/lcov-report/src/seeding/data/custom-snippets/index.html +1 -1
  113. package/backend/coverage/lcov-report/src/seeding/data/custom-snippets/rg-exclude.ts.html +1 -1
  114. package/backend/coverage/lcov-report/src/seeding/data/custom-snippets/rg-search-glob.ts.html +1 -1
  115. package/backend/coverage/lcov-report/src/seeding/data/custom-snippets/rg-search.ts.html +1 -1
  116. package/backend/coverage/lcov-report/src/seeding/data/custom-snippets/run-command.ts.html +1 -1
  117. package/backend/coverage/lcov-report/src/seeding/data/custom-snippets/tree.ts.html +1 -1
  118. package/backend/coverage/lcov-report/src/seeding/data/custom-snippets/usr-adhoc-incl.ts.html +1 -1
  119. package/backend/coverage/lcov-report/src/seeding/data/custom-snippets/usr-input-incl.ts.html +1 -1
  120. package/backend/coverage/lcov-report/src/seeding/data/system-prompts/codebase-explorer.ts.html +1 -1
  121. package/backend/coverage/lcov-report/src/seeding/data/system-prompts/default_multi-file-action-generator-with-requester.ts.html +8 -2
  122. package/backend/coverage/lcov-report/src/seeding/data/system-prompts/index.html +3 -3
  123. package/backend/coverage/lcov-report/src/seeding/data/system-prompts/packup.ts.html +1 -1
  124. package/backend/coverage/lcov-report/src/seeding/data/system-prompts/refactor-split.ts.html +244 -0
  125. package/backend/coverage/lcov-report/src/seeding/index.html +47 -47
  126. package/backend/coverage/lcov-report/src/seeding/seeding.module.ts.html +24 -24
  127. package/backend/coverage/lcov-report/src/seeding/seeding.service.ts.html +27 -27
  128. package/backend/coverage/lcov-report/src/seeding/system-prompt-seeding.service.ts.html +21 -21
  129. package/backend/coverage/lcov-report/src/session-followup/index.html +28 -28
  130. package/backend/coverage/lcov-report/src/session-followup/session-followup.module.ts.html +22 -22
  131. package/backend/coverage/lcov-report/src/session-followup/session-followup.service.ts.html +44 -41
  132. package/backend/coverage/lcov-report/src/session-inputs/dto/index.html +13 -13
  133. package/backend/coverage/lcov-report/src/session-inputs/dto/session-input.dto.ts.html +40 -28
  134. package/backend/coverage/lcov-report/src/session-inputs/index.html +50 -50
  135. package/backend/coverage/lcov-report/src/session-inputs/session-input-context.service.ts.html +168 -156
  136. package/backend/coverage/lcov-report/src/session-inputs/session-inputs.controller.ts.html +36 -36
  137. package/backend/coverage/lcov-report/src/session-inputs/session-inputs.module.ts.html +40 -37
  138. package/backend/coverage/lcov-report/src/session-inputs/session-inputs.service.ts.html +242 -236
  139. package/backend/coverage/lcov-report/src/session-transfer/index.html +22 -22
  140. package/backend/coverage/lcov-report/src/session-transfer/session-transfer.module.ts.html +16 -16
  141. package/backend/coverage/lcov-report/src/session-transfer/session-transfer.service.ts.html +30 -30
  142. package/backend/coverage/lcov-report/src/sessions/dto/index.html +21 -21
  143. package/backend/coverage/lcov-report/src/sessions/dto/session.dto.ts.html +54 -54
  144. package/backend/coverage/lcov-report/src/sessions/index.html +39 -39
  145. package/backend/coverage/lcov-report/src/sessions/sessions.controller.ts.html +55 -55
  146. package/backend/coverage/lcov-report/src/sessions/sessions.module.ts.html +30 -30
  147. package/backend/coverage/lcov-report/src/sessions/sessions.service.ts.html +120 -120
  148. package/backend/coverage/lcov-report/src/system-prompts/dto/index.html +19 -19
  149. package/backend/coverage/lcov-report/src/system-prompts/dto/system-prompt.dto.ts.html +38 -29
  150. package/backend/coverage/lcov-report/src/system-prompts/index.html +37 -37
  151. package/backend/coverage/lcov-report/src/system-prompts/system-prompts.controller.ts.html +34 -34
  152. package/backend/coverage/lcov-report/src/system-prompts/system-prompts.module.ts.html +20 -20
  153. package/backend/coverage/lcov-report/src/system-prompts/system-prompts.service.ts.html +62 -62
  154. package/backend/coverage/lcov-report/src/timeout.interceptor.ts.html +1 -1
  155. package/backend/coverage/lcov-report/src/utils/fuzzy-search.ts.html +310 -0
  156. package/backend/coverage/lcov-report/src/utils/index.html +131 -0
  157. package/backend/coverage/lcov-report/src/utils/index.ts.html +88 -0
  158. package/backend/coverage/lcov-report/src/workspace/dto/index.html +13 -13
  159. package/backend/coverage/lcov-report/src/workspace/dto/search-workspace.dto.ts.html +24 -24
  160. package/backend/coverage/lcov-report/src/workspace/index.html +37 -37
  161. package/backend/coverage/lcov-report/src/workspace/workspace.controller.ts.html +26 -26
  162. package/backend/coverage/lcov-report/src/workspace/workspace.module.ts.html +16 -16
  163. package/backend/coverage/lcov-report/src/workspace/workspace.service.ts.html +259 -214
  164. package/backend/coverage/lcov.info +3284 -3186
  165. package/backend/dist/action-execution/action-execution.service.d.ts +2 -0
  166. package/backend/dist/action-execution/action-execution.service.js +31 -13
  167. package/backend/dist/action-execution/action-execution.service.js.map +1 -1
  168. package/backend/dist/context-generation/context-generation.service.d.ts +2 -2
  169. package/backend/dist/context-generation/context-generation.service.js.map +1 -1
  170. package/backend/dist/orchestration/orchestration.service.js +1 -0
  171. package/backend/dist/orchestration/orchestration.service.js.map +1 -1
  172. package/backend/dist/session-inputs/dto/session-input.dto.d.ts +1 -0
  173. package/backend/dist/session-inputs/dto/session-input.dto.js +5 -0
  174. package/backend/dist/session-inputs/dto/session-input.dto.js.map +1 -1
  175. package/backend/dist/session-inputs/session-input-context.service.js +4 -5
  176. package/backend/dist/session-inputs/session-input-context.service.js.map +1 -1
  177. package/backend/dist/session-inputs/session-inputs.service.js +2 -1
  178. package/backend/dist/session-inputs/session-inputs.service.js.map +1 -1
  179. package/backend/dist/tsconfig.build.tsbuildinfo +1 -1
  180. package/backend/dist/utils/fuzzy-search.js +13 -4
  181. package/backend/dist/utils/fuzzy-search.js.map +1 -1
  182. package/backend/dist/workspace/workspace.service.d.ts +1 -0
  183. package/backend/dist/workspace/workspace.service.js +14 -3
  184. package/backend/dist/workspace/workspace.service.js.map +1 -1
  185. package/package.json +1 -1
  186. package/orchestration-test.txt +0 -3
@@ -23,30 +23,30 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">0% </span>
26
+ <span class="strong">86.2% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>0/58</span>
28
+ <span class='fraction'>50/58</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">0% </span>
33
+ <span class="strong">64.28% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>0/14</span>
35
+ <span class='fraction'>9/14</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
- <span class="strong">0% </span>
40
+ <span class="strong">86.66% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>0/15</span>
42
+ <span class='fraction'>13/15</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">0% </span>
47
+ <span class="strong">85.71% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>0/56</span>
49
+ <span class='fraction'>48/56</span>
50
50
  </div>
51
51
 
52
52
 
@@ -61,7 +61,7 @@
61
61
  </div>
62
62
  </template>
63
63
  </div>
64
- <div class='status-line low'></div>
64
+ <div class='status-line high'></div>
65
65
  <pre><table class="coverage">
66
66
  <tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
67
67
  <a name='L2'></a><a href='#L2'>2</a>
@@ -256,7 +256,7 @@
256
256
  <a name='L191'></a><a href='#L191'>191</a>
257
257
  <a name='L192'></a><a href='#L192'>192</a>
258
258
  <a name='L193'></a><a href='#L193'>193</a>
259
- <a name='L194'></a><a href='#L194'>194</a></td><td class="line-coverage quiet"><span class="cline-any cline-no">&nbsp;</span>
259
+ <a name='L194'></a><a href='#L194'>194</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">6x</span>
260
260
  <span class="cline-any cline-neutral">&nbsp;</span>
261
261
  <span class="cline-any cline-neutral">&nbsp;</span>
262
262
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -267,13 +267,13 @@
267
267
  <span class="cline-any cline-neutral">&nbsp;</span>
268
268
  <span class="cline-any cline-neutral">&nbsp;</span>
269
269
  <span class="cline-any cline-neutral">&nbsp;</span>
270
- <span class="cline-any cline-no">&nbsp;</span>
270
+ <span class="cline-any cline-yes">6x</span>
271
271
  <span class="cline-any cline-neutral">&nbsp;</span>
272
272
  <span class="cline-any cline-neutral">&nbsp;</span>
273
273
  <span class="cline-any cline-neutral">&nbsp;</span>
274
274
  <span class="cline-any cline-neutral">&nbsp;</span>
275
275
  <span class="cline-any cline-neutral">&nbsp;</span>
276
- <span class="cline-any cline-no">&nbsp;</span>
276
+ <span class="cline-any cline-yes">6x</span>
277
277
  <span class="cline-any cline-neutral">&nbsp;</span>
278
278
  <span class="cline-any cline-neutral">&nbsp;</span>
279
279
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -292,21 +292,21 @@
292
292
  <span class="cline-any cline-neutral">&nbsp;</span>
293
293
  <span class="cline-any cline-neutral">&nbsp;</span>
294
294
  <span class="cline-any cline-neutral">&nbsp;</span>
295
- <span class="cline-any cline-no">&nbsp;</span>
295
+ <span class="cline-any cline-yes">6x</span>
296
296
  <span class="cline-any cline-neutral">&nbsp;</span>
297
- <span class="cline-any cline-no">&nbsp;</span>
298
- <span class="cline-any cline-no">&nbsp;</span>
297
+ <span class="cline-any cline-yes">6x</span>
298
+ <span class="cline-any cline-yes">6x</span>
299
299
  <span class="cline-any cline-neutral">&nbsp;</span>
300
300
  <span class="cline-any cline-neutral">&nbsp;</span>
301
301
  <span class="cline-any cline-neutral">&nbsp;</span>
302
- <span class="cline-any cline-no">&nbsp;</span>
302
+ <span class="cline-any cline-yes">6x</span>
303
303
  <span class="cline-any cline-neutral">&nbsp;</span>
304
304
  <span class="cline-any cline-neutral">&nbsp;</span>
305
305
  <span class="cline-any cline-no">&nbsp;</span>
306
306
  <span class="cline-any cline-neutral">&nbsp;</span>
307
307
  <span class="cline-any cline-neutral">&nbsp;</span>
308
308
  <span class="cline-any cline-neutral">&nbsp;</span>
309
- <span class="cline-any cline-no">&nbsp;</span>
309
+ <span class="cline-any cline-yes">6x</span>
310
310
  <span class="cline-any cline-neutral">&nbsp;</span>
311
311
  <span class="cline-any cline-neutral">&nbsp;</span>
312
312
  <span class="cline-any cline-no">&nbsp;</span>
@@ -314,116 +314,116 @@
314
314
  <span class="cline-any cline-neutral">&nbsp;</span>
315
315
  <span class="cline-any cline-neutral">&nbsp;</span>
316
316
  <span class="cline-any cline-neutral">&nbsp;</span>
317
- <span class="cline-any cline-no">&nbsp;</span>
317
+ <span class="cline-any cline-yes">6x</span>
318
318
  <span class="cline-any cline-neutral">&nbsp;</span>
319
319
  <span class="cline-any cline-neutral">&nbsp;</span>
320
- <span class="cline-any cline-no">&nbsp;</span>
320
+ <span class="cline-any cline-yes">5x</span>
321
321
  <span class="cline-any cline-neutral">&nbsp;</span>
322
322
  <span class="cline-any cline-neutral">&nbsp;</span>
323
323
  <span class="cline-any cline-neutral">&nbsp;</span>
324
324
  <span class="cline-any cline-neutral">&nbsp;</span>
325
- <span class="cline-any cline-no">&nbsp;</span>
325
+ <span class="cline-any cline-yes">6x</span>
326
326
  <span class="cline-any cline-neutral">&nbsp;</span>
327
327
  <span class="cline-any cline-neutral">&nbsp;</span>
328
- <span class="cline-any cline-no">&nbsp;</span>
328
+ <span class="cline-any cline-yes">1x</span>
329
329
  <span class="cline-any cline-neutral">&nbsp;</span>
330
330
  <span class="cline-any cline-neutral">&nbsp;</span>
331
331
  <span class="cline-any cline-neutral">&nbsp;</span>
332
332
  <span class="cline-any cline-neutral">&nbsp;</span>
333
- <span class="cline-any cline-no">&nbsp;</span>
333
+ <span class="cline-any cline-yes">6x</span>
334
334
  <span class="cline-any cline-neutral">&nbsp;</span>
335
335
  <span class="cline-any cline-neutral">&nbsp;</span>
336
- <span class="cline-any cline-no">&nbsp;</span>
336
+ <span class="cline-any cline-yes">1x</span>
337
337
  <span class="cline-any cline-neutral">&nbsp;</span>
338
338
  <span class="cline-any cline-neutral">&nbsp;</span>
339
339
  <span class="cline-any cline-neutral">&nbsp;</span>
340
340
  <span class="cline-any cline-neutral">&nbsp;</span>
341
- <span class="cline-any cline-no">&nbsp;</span>
341
+ <span class="cline-any cline-yes">6x</span>
342
342
  <span class="cline-any cline-neutral">&nbsp;</span>
343
343
  <span class="cline-any cline-neutral">&nbsp;</span>
344
- <span class="cline-any cline-no">&nbsp;</span>
344
+ <span class="cline-any cline-yes">1x</span>
345
345
  <span class="cline-any cline-neutral">&nbsp;</span>
346
346
  <span class="cline-any cline-neutral">&nbsp;</span>
347
347
  <span class="cline-any cline-neutral">&nbsp;</span>
348
- <span class="cline-any cline-no">&nbsp;</span>
348
+ <span class="cline-any cline-yes">6x</span>
349
349
  <span class="cline-any cline-neutral">&nbsp;</span>
350
350
  <span class="cline-any cline-neutral">&nbsp;</span>
351
351
  <span class="cline-any cline-neutral">&nbsp;</span>
352
352
  <span class="cline-any cline-neutral">&nbsp;</span>
353
- <span class="cline-any cline-no">&nbsp;</span>
353
+ <span class="cline-any cline-yes">4x</span>
354
354
  <span class="cline-any cline-neutral">&nbsp;</span>
355
- <span class="cline-any cline-no">&nbsp;</span>
356
- <span class="cline-any cline-no">&nbsp;</span>
355
+ <span class="cline-any cline-yes">3x</span>
356
+ <span class="cline-any cline-yes">4x</span>
357
357
  <span class="cline-any cline-neutral">&nbsp;</span>
358
- <span class="cline-any cline-no">&nbsp;</span>
359
- <span class="cline-any cline-no">&nbsp;</span>
358
+ <span class="cline-any cline-yes">3x</span>
359
+ <span class="cline-any cline-yes">4x</span>
360
360
  <span class="cline-any cline-neutral">&nbsp;</span>
361
361
  <span class="cline-any cline-neutral">&nbsp;</span>
362
- <span class="cline-any cline-no">&nbsp;</span>
362
+ <span class="cline-any cline-yes">3x</span>
363
363
  <span class="cline-any cline-neutral">&nbsp;</span>
364
- <span class="cline-any cline-no">&nbsp;</span>
364
+ <span class="cline-any cline-yes">1x</span>
365
365
  <span class="cline-any cline-neutral">&nbsp;</span>
366
366
  <span class="cline-any cline-neutral">&nbsp;</span>
367
367
  <span class="cline-any cline-neutral">&nbsp;</span>
368
- <span class="cline-any cline-no">&nbsp;</span>
368
+ <span class="cline-any cline-yes">1x</span>
369
369
  <span class="cline-any cline-neutral">&nbsp;</span>
370
370
  <span class="cline-any cline-neutral">&nbsp;</span>
371
- <span class="cline-any cline-no">&nbsp;</span>
372
- <span class="cline-any cline-no">&nbsp;</span>
373
- <span class="cline-any cline-no">&nbsp;</span>
374
- <span class="cline-any cline-no">&nbsp;</span>
371
+ <span class="cline-any cline-yes">2x</span>
372
+ <span class="cline-any cline-yes">1x</span>
373
+ <span class="cline-any cline-yes">1x</span>
374
+ <span class="cline-any cline-yes">1x</span>
375
375
  <span class="cline-any cline-neutral">&nbsp;</span>
376
376
  <span class="cline-any cline-no">&nbsp;</span>
377
377
  <span class="cline-any cline-neutral">&nbsp;</span>
378
378
  <span class="cline-any cline-neutral">&nbsp;</span>
379
379
  <span class="cline-any cline-neutral">&nbsp;</span>
380
380
  <span class="cline-any cline-neutral">&nbsp;</span>
381
- <span class="cline-any cline-no">&nbsp;</span>
381
+ <span class="cline-any cline-yes">6x</span>
382
382
  <span class="cline-any cline-neutral">&nbsp;</span>
383
383
  <span class="cline-any cline-neutral">&nbsp;</span>
384
384
  <span class="cline-any cline-neutral">&nbsp;</span>
385
385
  <span class="cline-any cline-neutral">&nbsp;</span>
386
- <span class="cline-any cline-no">&nbsp;</span>
386
+ <span class="cline-any cline-yes">1x</span>
387
387
  <span class="cline-any cline-neutral">&nbsp;</span>
388
- <span class="cline-any cline-no">&nbsp;</span>
388
+ <span class="cline-any cline-yes">1x</span>
389
389
  <span class="cline-any cline-no">&nbsp;</span>
390
390
  <span class="cline-any cline-neutral">&nbsp;</span>
391
391
  <span class="cline-any cline-neutral">&nbsp;</span>
392
392
  <span class="cline-any cline-neutral">&nbsp;</span>
393
393
  <span class="cline-any cline-neutral">&nbsp;</span>
394
394
  <span class="cline-any cline-neutral">&nbsp;</span>
395
- <span class="cline-any cline-no">&nbsp;</span>
395
+ <span class="cline-any cline-yes">1x</span>
396
396
  <span class="cline-any cline-neutral">&nbsp;</span>
397
397
  <span class="cline-any cline-neutral">&nbsp;</span>
398
398
  <span class="cline-any cline-neutral">&nbsp;</span>
399
399
  <span class="cline-any cline-neutral">&nbsp;</span>
400
- <span class="cline-any cline-no">&nbsp;</span>
400
+ <span class="cline-any cline-yes">6x</span>
401
401
  <span class="cline-any cline-neutral">&nbsp;</span>
402
402
  <span class="cline-any cline-neutral">&nbsp;</span>
403
403
  <span class="cline-any cline-neutral">&nbsp;</span>
404
404
  <span class="cline-any cline-neutral">&nbsp;</span>
405
- <span class="cline-any cline-no">&nbsp;</span>
405
+ <span class="cline-any cline-yes">1x</span>
406
406
  <span class="cline-any cline-neutral">&nbsp;</span>
407
- <span class="cline-any cline-no">&nbsp;</span>
407
+ <span class="cline-any cline-yes">1x</span>
408
408
  <span class="cline-any cline-no">&nbsp;</span>
409
409
  <span class="cline-any cline-neutral">&nbsp;</span>
410
410
  <span class="cline-any cline-neutral">&nbsp;</span>
411
411
  <span class="cline-any cline-neutral">&nbsp;</span>
412
412
  <span class="cline-any cline-neutral">&nbsp;</span>
413
413
  <span class="cline-any cline-neutral">&nbsp;</span>
414
- <span class="cline-any cline-no">&nbsp;</span>
414
+ <span class="cline-any cline-yes">1x</span>
415
415
  <span class="cline-any cline-neutral">&nbsp;</span>
416
416
  <span class="cline-any cline-neutral">&nbsp;</span>
417
417
  <span class="cline-any cline-neutral">&nbsp;</span>
418
418
  <span class="cline-any cline-neutral">&nbsp;</span>
419
- <span class="cline-any cline-no">&nbsp;</span>
419
+ <span class="cline-any cline-yes">6x</span>
420
420
  <span class="cline-any cline-neutral">&nbsp;</span>
421
421
  <span class="cline-any cline-neutral">&nbsp;</span>
422
422
  <span class="cline-any cline-neutral">&nbsp;</span>
423
423
  <span class="cline-any cline-neutral">&nbsp;</span>
424
- <span class="cline-any cline-no">&nbsp;</span>
424
+ <span class="cline-any cline-yes">3x</span>
425
425
  <span class="cline-any cline-neutral">&nbsp;</span>
426
- <span class="cline-any cline-no">&nbsp;</span>
426
+ <span class="cline-any cline-yes">2x</span>
427
427
  <span class="cline-any cline-no">&nbsp;</span>
428
428
  <span class="cline-any cline-neutral">&nbsp;</span>
429
429
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -432,24 +432,24 @@
432
432
  <span class="cline-any cline-no">&nbsp;</span>
433
433
  <span class="cline-any cline-neutral">&nbsp;</span>
434
434
  <span class="cline-any cline-neutral">&nbsp;</span>
435
- <span class="cline-any cline-no">&nbsp;</span>
436
- <span class="cline-any cline-no">&nbsp;</span>
435
+ <span class="cline-any cline-yes">2x</span>
436
+ <span class="cline-any cline-yes">2x</span>
437
437
  <span class="cline-any cline-neutral">&nbsp;</span>
438
- <span class="cline-any cline-no">&nbsp;</span>
439
- <span class="cline-any cline-no">&nbsp;</span>
438
+ <span class="cline-any cline-yes">2x</span>
439
+ <span class="cline-any cline-yes">2x</span>
440
440
  <span class="cline-any cline-neutral">&nbsp;</span>
441
441
  <span class="cline-any cline-neutral">&nbsp;</span>
442
- <span class="cline-any cline-no">&nbsp;</span>
443
- <span class="cline-any cline-no">&nbsp;</span>
444
- <span class="cline-any cline-no">&nbsp;</span>
445
- <span class="cline-any cline-no">&nbsp;</span>
442
+ <span class="cline-any cline-yes">2x</span>
443
+ <span class="cline-any cline-yes">1x</span>
444
+ <span class="cline-any cline-yes">1x</span>
445
+ <span class="cline-any cline-yes">1x</span>
446
446
  <span class="cline-any cline-neutral">&nbsp;</span>
447
447
  <span class="cline-any cline-neutral">&nbsp;</span>
448
448
  <span class="cline-any cline-no">&nbsp;</span>
449
449
  <span class="cline-any cline-neutral">&nbsp;</span>
450
450
  <span class="cline-any cline-neutral">&nbsp;</span>
451
451
  <span class="cline-any cline-neutral">&nbsp;</span>
452
- <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js"><span class="cstat-no" title="statement not covered" >import {</span>
452
+ <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import {
453
453
  Controller,
454
454
  Get,
455
455
  Param,
@@ -460,13 +460,13 @@
460
460
  Res, // Import Res for custom response handling
461
461
  } from '@nestjs/common';
462
462
  import { Response } from 'express'; // Import Response from express
463
- <span class="cstat-no" title="statement not covered" >import {</span>
463
+ import {
464
464
  AIActionsService,
465
465
  AIActionStatus,
466
466
  ActionResult,
467
467
  } from './ai-actions.service'; // Import ActionResult
468
468
  import { AIAction, ExecutionLog } from '../core-entities';
469
- <span class="cstat-no" title="statement not covered" >import { AIActionBatchService } from './ai-action-batch.service';</span>
469
+ import { AIActionBatchService } from './ai-action-batch.service';
470
470
  &nbsp;
471
471
  interface ActionResultResponse {
472
472
  action_id: string;
@@ -485,21 +485,21 @@ interface ConfirmedActionInfoResponse {
485
485
  }
486
486
  &nbsp;
487
487
  @Controller() // No common prefix, routes are specific
488
- export <span class="cstat-no" title="statement not covered" >class <span class="cstat-no" title="statement not covered" ><span class="cstat-no" title="statement not covered" >AIActionsController </span>{</span></span>
489
- <span class="fstat-no" title="function not covered" > constructor(</span>
490
- private readonly <span class="cstat-no" title="statement not covered" >aiActionsService: A</span>IActionsService,
491
- private readonly <span class="cstat-no" title="statement not covered" >aiActionBatchService: A</span>IActionBatchService,
488
+ export class AIActionsController {
489
+ constructor(
490
+ private readonly aiActionsService: AIActionsService,
491
+ private readonly aiActionBatchService: AIActionBatchService,
492
492
  ) {}
493
493
  &nbsp;
494
494
  @Get('inputs/:inputId/actions')
495
- <span class="fstat-no" title="function not covered" > async <span class="cstat-no" title="statement not covered" ></span>findAllByInputId(</span>
495
+ <span class="fstat-no" title="function not covered" > async </span>findAllByInputId(
496
496
  @Param('inputId', ParseUUIDPipe) inputId: string,
497
497
  ): Promise&lt;AIAction[]&gt; {
498
498
  <span class="cstat-no" title="statement not covered" > return this.aiActionsService.findAllByInputId(inputId);</span>
499
499
  }
500
500
  &nbsp;
501
501
  @Get('actions/:actionId')
502
- <span class="fstat-no" title="function not covered" > async <span class="cstat-no" title="statement not covered" ></span>findOne(</span>
502
+ <span class="fstat-no" title="function not covered" > async </span>findOne(
503
503
  @Param('actionId', ParseUUIDPipe) actionId: string,
504
504
  ): Promise&lt;AIAction&gt; {
505
505
  <span class="cstat-no" title="statement not covered" > return this.aiActionsService.findOne(actionId);</span>
@@ -507,116 +507,116 @@ export <span class="cstat-no" title="statement not covered" >class <span class="
507
507
  &nbsp;
508
508
  @Post('actions/:actionId/approve')
509
509
  @HttpCode(HttpStatus.OK)
510
- <span class="fstat-no" title="function not covered" > async <span class="cstat-no" title="statement not covered" ></span>approveAction(</span>
510
+ async approveAction(
511
511
  @Param('actionId', ParseUUIDPipe) actionId: string,
512
512
  ): Promise&lt;AIAction&gt; {
513
- <span class="cstat-no" title="statement not covered" > return this.aiActionsService.approveAction(actionId);</span>
513
+ return this.aiActionsService.approveAction(actionId);
514
514
  }
515
515
  &nbsp;
516
516
  @Post('actions/:actionId/discard')
517
517
  @HttpCode(HttpStatus.OK)
518
- <span class="fstat-no" title="function not covered" > async <span class="cstat-no" title="statement not covered" ></span>discardAction(</span>
518
+ async discardAction(
519
519
  @Param('actionId', ParseUUIDPipe) actionId: string,
520
520
  ): Promise&lt;AIAction&gt; {
521
- <span class="cstat-no" title="statement not covered" > return this.aiActionsService.discardAction(actionId);</span>
521
+ return this.aiActionsService.discardAction(actionId);
522
522
  }
523
523
  &nbsp;
524
524
  @Post('actions/:actionId/confirm-keep')
525
525
  @HttpCode(HttpStatus.OK)
526
- <span class="fstat-no" title="function not covered" > async <span class="cstat-no" title="statement not covered" ></span>confirmKeepAction(</span>
526
+ async confirmKeepAction(
527
527
  @Param('actionId', ParseUUIDPipe) actionId: string,
528
528
  ): Promise&lt;AIAction&gt; {
529
- <span class="cstat-no" title="statement not covered" > return this.aiActionsService.confirmKeepAction(actionId);</span>
529
+ return this.aiActionsService.confirmKeepAction(actionId);
530
530
  }
531
531
  &nbsp;
532
532
  @Post('actions/:actionId/revert')
533
533
  @HttpCode(HttpStatus.OK)
534
- <span class="fstat-no" title="function not covered" > async <span class="cstat-no" title="statement not covered" ></span>revertAction(</span>
534
+ async revertAction(
535
535
  @Param('actionId', ParseUUIDPipe) actionId: string,
536
536
  ): Promise&lt;AIAction&gt; {
537
- <span class="cstat-no" title="statement not covered" > return this.aiActionsService.revertAction(actionId);</span>
537
+ return this.aiActionsService.revertAction(actionId);
538
538
  }
539
539
  &nbsp;
540
540
  @Post('inputs/:inputId/apply-approved-actions')
541
- <span class="fstat-no" title="function not covered" > async <span class="cstat-no" title="statement not covered" ></span>applyApprovedActions(</span>
541
+ async applyApprovedActions(
542
542
  @Param('inputId', ParseUUIDPipe) inputId: string,
543
543
  @Res() response: Response, // Inject Response object
544
544
  ): Promise&lt;void&gt; {
545
545
  const results: ActionResultResponse[] =
546
- <span class="cstat-no" title="statement not covered" > await this.aiActionBatchService.applyApprovedActions(inputId);</span>
546
+ await this.aiActionBatchService.applyApprovedActions(inputId);
547
547
  &nbsp;
548
- const allSucceeded = <span class="cstat-no" title="statement not covered" >results.every(</span>
549
- <span class="fstat-no" title="function not covered" > (r</span>) =&gt; <span class="cstat-no" title="statement not covered" >r.status === AIActionStatus.CONFIRMED_KEPT,</span>
548
+ const allSucceeded = results.every(
549
+ (r) =&gt; r.status === AIActionStatus.CONFIRMED_KEPT,
550
550
  );
551
- const someFailed = <span class="cstat-no" title="statement not covered" >results.some(</span>
552
- <span class="fstat-no" title="function not covered" > (r</span>) =&gt; <span class="cstat-no" title="statement not covered" >r.status === AIActionStatus.EXECUTION_FAILED,</span>
551
+ const someFailed = results.some(
552
+ (r) =&gt; r.status === AIActionStatus.EXECUTION_FAILED,
553
553
  );
554
554
  &nbsp;
555
- <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (results.length === 0) {</span>
555
+ if (results.length === 0) {
556
556
  // No actions were in approved_for_apply state or inputId was valid but had no such actions.
557
- <span class="cstat-no" title="statement not covered" > response.status(HttpStatus.OK).json({</span>
557
+ response.status(HttpStatus.OK).json({
558
558
  message: 'No actions were in "approved_for_apply" state to process.',
559
559
  results: [],
560
560
  });
561
- <span class="cstat-no" title="statement not covered" > return;</span>
561
+ return;
562
562
  }
563
563
  &nbsp;
564
- <span class="cstat-no" title="statement not covered" > if (allSucceeded) {</span>
565
- <span class="cstat-no" title="statement not covered" > response.status(HttpStatus.OK).json({ results });</span>
566
- } else <span class="cstat-no" title="statement not covered" >if (someFailed) {</span>
567
- <span class="cstat-no" title="statement not covered" > response.status(207).json({ results }); </span>// Use numeric 207 for Multi-Status
568
- } else {
564
+ if (allSucceeded) {
565
+ response.status(HttpStatus.OK).json({ results });
566
+ } else if (someFailed) {
567
+ response.status(207).json({ results }); // Use numeric 207 for Multi-Status
568
+ } else <span class="missing-if-branch" title="else path not taken" >E</span>{
569
569
  <span class="cstat-no" title="statement not covered" > response.status(HttpStatus.OK).json({ results });</span>
570
570
  }
571
571
  }
572
572
  &nbsp;
573
573
  @Post('inputs/:inputId/discard-actions')
574
- <span class="fstat-no" title="function not covered" > async <span class="cstat-no" title="statement not covered" ></span>discardAllActions(</span>
574
+ async discardAllActions(
575
575
  @Param('inputId', ParseUUIDPipe) inputId: string,
576
576
  @Res() response: Response,
577
577
  ): Promise&lt;void&gt; {
578
578
  const results: DiscardedActionInfoResponse[] =
579
- <span class="cstat-no" title="statement not covered" > await this.aiActionBatchService.discardAllActionsForInput(inputId);</span>
579
+ await this.aiActionBatchService.discardAllActionsForInput(inputId);
580
580
  &nbsp;
581
- <span class="cstat-no" title="statement not covered" > if (results.length === 0) {</span>
581
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (results.length === 0) {
582
582
  <span class="cstat-no" title="statement not covered" > response.status(HttpStatus.OK).json({</span>
583
583
  message:
584
584
  'No actions found in "proposed" or "approved_for_apply" state to discard for this input.',
585
585
  results: [],
586
586
  });
587
587
  } else {
588
- <span class="cstat-no" title="statement not covered" > response.status(HttpStatus.OK).json({ results });</span>
588
+ response.status(HttpStatus.OK).json({ results });
589
589
  }
590
590
  }
591
591
  &nbsp;
592
592
  @Post('inputs/:inputId/confirm-all-actions')
593
- <span class="fstat-no" title="function not covered" > async <span class="cstat-no" title="statement not covered" ></span>confirmAllActions(</span>
593
+ async confirmAllActions(
594
594
  @Param('inputId', ParseUUIDPipe) inputId: string,
595
595
  @Res() response: Response,
596
596
  ): Promise&lt;void&gt; {
597
597
  const results: ConfirmedActionInfoResponse[] =
598
- <span class="cstat-no" title="statement not covered" > await this.aiActionBatchService.confirmAllAppliedActionsForInput(inputId);</span>
598
+ await this.aiActionBatchService.confirmAllAppliedActionsForInput(inputId);
599
599
  &nbsp;
600
- <span class="cstat-no" title="statement not covered" > if (results.length === 0) {</span>
600
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (results.length === 0) {
601
601
  <span class="cstat-no" title="statement not covered" > response.status(HttpStatus.OK).json({</span>
602
602
  message:
603
603
  'No actions found in "applied_pending_review" state to confirm for this input.',
604
604
  results: [],
605
605
  });
606
606
  } else {
607
- <span class="cstat-no" title="statement not covered" > response.status(HttpStatus.OK).json({ results });</span>
607
+ response.status(HttpStatus.OK).json({ results });
608
608
  }
609
609
  }
610
610
  &nbsp;
611
611
  @Post('inputs/:inputId/revert-all-actions')
612
- <span class="fstat-no" title="function not covered" > async <span class="cstat-no" title="statement not covered" ></span>revertAllActions(</span>
612
+ async revertAllActions(
613
613
  @Param('inputId', ParseUUIDPipe) inputId: string,
614
614
  @Res() response: Response,
615
615
  ): Promise&lt;void&gt; {
616
616
  const results: ActionResult[] =
617
- <span class="cstat-no" title="statement not covered" > await this.aiActionBatchService.revertAllAppliedActionsForInput(inputId);</span>
617
+ await this.aiActionBatchService.revertAllAppliedActionsForInput(inputId);
618
618
  &nbsp;
619
- <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (results.length === 0) {</span>
619
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (results.length === 0) {
620
620
  <span class="cstat-no" title="statement not covered" > response.status(HttpStatus.OK).json({</span>
621
621
  message:
622
622
  'No actions in "applied_pending_review" state to revert for this input.',
@@ -625,18 +625,18 @@ export <span class="cstat-no" title="statement not covered" >class <span class="
625
625
  <span class="cstat-no" title="statement not covered" > return;</span>
626
626
  }
627
627
  &nbsp;
628
- const allRevertedSuccessfully = <span class="cstat-no" title="statement not covered" >results.every(</span>
629
- <span class="fstat-no" title="function not covered" > (r</span>) =&gt; <span class="cstat-no" title="statement not covered" >r.status === AIActionStatus.CONFIRMED_REVERTED,</span>
628
+ const allRevertedSuccessfully = results.every(
629
+ (r) =&gt; r.status === AIActionStatus.CONFIRMED_REVERTED,
630
630
  );
631
- const someRevertsFailed = <span class="cstat-no" title="statement not covered" >results.some(</span>
632
- <span class="fstat-no" title="function not covered" > (r</span>) =&gt; <span class="cstat-no" title="statement not covered" >r.status === AIActionStatus.REVERT_FAILED,</span>
631
+ const someRevertsFailed = results.some(
632
+ (r) =&gt; r.status === AIActionStatus.REVERT_FAILED,
633
633
  );
634
634
  &nbsp;
635
- <span class="cstat-no" title="statement not covered" > if (allRevertedSuccessfully) {</span>
636
- <span class="cstat-no" title="statement not covered" > response.status(HttpStatus.OK).json({ results });</span>
637
- } else <span class="cstat-no" title="statement not covered" >if (someRevertsFailed) {</span>
638
- <span class="cstat-no" title="statement not covered" > response.status(207).json({ results }); </span>// Use numeric 207 for Multi-Status
639
- } else {
635
+ if (allRevertedSuccessfully) {
636
+ response.status(HttpStatus.OK).json({ results });
637
+ } else if (someRevertsFailed) {
638
+ response.status(207).json({ results }); // Use numeric 207 for Multi-Status
639
+ } else <span class="missing-if-branch" title="else path not taken" >E</span>{
640
640
  // Should ideally not happen if actions are only confirmed_reverted or revert_failed
641
641
  <span class="cstat-no" title="statement not covered" > response.status(HttpStatus.OK).json({ results });</span>
642
642
  }
@@ -649,7 +649,7 @@ export <span class="cstat-no" title="statement not covered" >class <span class="
649
649
  <div class='footer quiet pad2 space-top1 center small'>
650
650
  Code coverage generated by
651
651
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
652
- at 2025-07-30T23:37:05.373Z
652
+ at 2025-09-12T19:21:55.945Z
653
653
  </div>
654
654
  <script src="../../prettify.js"></script>
655
655
  <script>