repoburg 1.3.147 → 1.3.149

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 (503) hide show
  1. package/backend/dist/src/seeding/data/context-templates/default-initial_full-project-context.d.ts +1 -1
  2. package/backend/dist/src/seeding/data/context-templates/default-initial_full-project-context.js +0 -3
  3. package/backend/dist/src/seeding/data/context-templates/default-initial_full-project-context.js.map +1 -1
  4. package/backend/dist/tsconfig.build.tsbuildinfo +1 -1
  5. package/package.json +1 -1
  6. package/.claude/settings.local.json +0 -7
  7. package/.playwright-mcp/console-2026-05-12T09-54-31-560Z.log +0 -13
  8. package/.playwright-mcp/console-2026-05-12T10-04-14-892Z.log +0 -13
  9. package/.playwright-mcp/console-2026-05-12T10-50-32-398Z.log +0 -14
  10. package/.playwright-mcp/console-2026-05-12T12-50-09-889Z.log +0 -13
  11. package/.playwright-mcp/console-2026-05-12T12-58-49-817Z.log +0 -60
  12. package/.playwright-mcp/console-2026-05-13T18-41-50-654Z.log +0 -13
  13. package/.playwright-mcp/console-2026-05-13T18-54-58-000Z.log +0 -13
  14. package/.playwright-mcp/console-2026-05-13T19-13-30-875Z.log +0 -95
  15. package/.playwright-mcp/console-2026-05-13T20-09-13-456Z.log +0 -17
  16. package/.playwright-mcp/console-2026-05-13T20-21-01-662Z.log +0 -13
  17. package/.playwright-mcp/console-2026-05-13T20-22-00-038Z.log +0 -15
  18. package/.playwright-mcp/console-2026-05-13T20-26-26-665Z.log +0 -28
  19. package/.playwright-mcp/console-2026-05-13T20-35-49-544Z.log +0 -26
  20. package/.playwright-mcp/console-2026-05-13T20-38-10-958Z.log +0 -676
  21. package/.playwright-mcp/console-2026-05-14T21-27-06-074Z.log +0 -69
  22. package/.playwright-mcp/console-2026-05-14T22-13-07-470Z.log +0 -101
  23. package/.playwright-mcp/console-2026-05-14T23-58-12-858Z.log +0 -28
  24. package/.playwright-mcp/console-2026-05-15T00-15-00-760Z.log +0 -81
  25. package/.playwright-mcp/page-2026-05-12T09-54-32-920Z.yml +0 -223
  26. package/.playwright-mcp/page-2026-05-12T09-54-42-067Z.yml +0 -190
  27. package/.playwright-mcp/page-2026-05-12T09-55-12-019Z.yml +0 -389
  28. package/.playwright-mcp/page-2026-05-12T09-55-49-065Z.yml +0 -428
  29. package/.playwright-mcp/page-2026-05-12T09-56-06-607Z.yml +0 -389
  30. package/.playwright-mcp/page-2026-05-12T09-56-23-371Z.yml +0 -196
  31. package/.playwright-mcp/page-2026-05-12T09-56-55-792Z.yml +0 -389
  32. package/.playwright-mcp/page-2026-05-12T10-04-15-716Z.yml +0 -164
  33. package/.playwright-mcp/page-2026-05-12T10-04-43-994Z.yml +0 -190
  34. package/.playwright-mcp/page-2026-05-12T10-05-04-616Z.yml +0 -389
  35. package/.playwright-mcp/page-2026-05-12T10-05-27-643Z.yml +0 -428
  36. package/.playwright-mcp/page-2026-05-12T10-05-47-851Z.yml +0 -389
  37. package/.playwright-mcp/page-2026-05-12T10-06-13-429Z.yml +0 -196
  38. package/.playwright-mcp/page-2026-05-12T10-06-58-147Z.yml +0 -389
  39. package/.playwright-mcp/page-2026-05-12T10-08-20-216Z.yml +0 -428
  40. package/.playwright-mcp/page-2026-05-12T10-08-38-177Z.yml +0 -389
  41. package/.playwright-mcp/page-2026-05-12T10-09-01-851Z.yml +0 -196
  42. package/.playwright-mcp/page-2026-05-12T10-09-24-888Z.yml +0 -389
  43. package/.playwright-mcp/page-2026-05-12T10-50-33-049Z.yml +0 -212
  44. package/.playwright-mcp/page-2026-05-12T10-50-48-496Z.yml +0 -196
  45. package/.playwright-mcp/page-2026-05-12T10-51-51-308Z.yml +0 -196
  46. package/.playwright-mcp/page-2026-05-12T10-52-07-379Z.yml +0 -196
  47. package/.playwright-mcp/page-2026-05-12T12-50-10-589Z.yml +0 -143
  48. package/.playwright-mcp/page-2026-05-12T12-50-25-461Z.yml +0 -196
  49. package/.playwright-mcp/page-2026-05-12T12-51-11-190Z.yml +0 -394
  50. package/.playwright-mcp/page-2026-05-12T12-52-21-138Z.yml +0 -524
  51. package/.playwright-mcp/page-2026-05-12T12-53-42-423Z.yml +0 -431
  52. package/.playwright-mcp/page-2026-05-12T12-54-18-549Z.yml +0 -196
  53. package/.playwright-mcp/page-2026-05-12T12-54-26-818Z.yml +0 -390
  54. package/.playwright-mcp/page-2026-05-12T12-55-32-697Z.yml +0 -520
  55. package/.playwright-mcp/page-2026-05-12T12-58-50-450Z.yml +0 -164
  56. package/.playwright-mcp/page-2026-05-12T12-59-12-954Z.yml +0 -196
  57. package/.playwright-mcp/page-2026-05-12T12-59-38-479Z.yml +0 -394
  58. package/.playwright-mcp/page-2026-05-12T13-01-17-580Z.yml +0 -524
  59. package/.playwright-mcp/page-2026-05-12T13-01-58-447Z.yml +0 -271
  60. package/.playwright-mcp/page-2026-05-12T13-03-12-109Z.yml +0 -394
  61. package/.playwright-mcp/page-2026-05-13T18-41-51-436Z.yml +0 -159
  62. package/.playwright-mcp/page-2026-05-13T18-42-27-482Z.yml +0 -4814
  63. package/.playwright-mcp/page-2026-05-13T18-54-58-644Z.yml +0 -154
  64. package/.playwright-mcp/page-2026-05-13T18-56-11-217Z.yml +0 -1560
  65. package/.playwright-mcp/page-2026-05-13T18-56-32-205Z.yml +0 -1560
  66. package/.playwright-mcp/page-2026-05-13T19-13-31-457Z.yml +0 -164
  67. package/.playwright-mcp/page-2026-05-13T19-14-26-248Z.yml +0 -1560
  68. package/.playwright-mcp/page-2026-05-13T19-15-02-355Z.yml +0 -1560
  69. package/.playwright-mcp/page-2026-05-13T20-09-14-478Z.yml +0 -149
  70. package/.playwright-mcp/page-2026-05-13T20-10-49-292Z.yml +0 -4814
  71. package/.playwright-mcp/page-2026-05-13T20-21-02-852Z.yml +0 -143
  72. package/.playwright-mcp/page-2026-05-13T20-22-01-084Z.yml +0 -143
  73. package/.playwright-mcp/page-2026-05-13T20-22-09-334Z.yml +0 -1561
  74. package/.playwright-mcp/page-2026-05-13T20-26-27-690Z.yml +0 -143
  75. package/.playwright-mcp/page-2026-05-13T20-26-53-324Z.yml +0 -1561
  76. package/.playwright-mcp/page-2026-05-13T20-27-35-395Z.yml +0 -1561
  77. package/.playwright-mcp/page-2026-05-13T20-35-50-708Z.yml +0 -149
  78. package/.playwright-mcp/page-2026-05-13T20-37-41-379Z.yml +0 -0
  79. package/.playwright-mcp/page-2026-05-13T20-38-12-049Z.yml +0 -149
  80. package/.playwright-mcp/page-2026-05-13T20-38-19-708Z.yml +0 -1561
  81. package/.playwright-mcp/page-2026-05-14T21-27-07-278Z.yml +0 -164
  82. package/.playwright-mcp/page-2026-05-14T22-13-07-628Z.yml +0 -5
  83. package/.playwright-mcp/page-2026-05-14T22-13-27-676Z.yml +0 -1561
  84. package/.playwright-mcp/page-2026-05-14T23-58-13-064Z.yml +0 -3
  85. package/.playwright-mcp/page-2026-05-14T23-58-33-500Z.yml +0 -1561
  86. package/.playwright-mcp/page-2026-05-15T00-15-00-945Z.yml +0 -3
  87. package/.run/backend _ build.run.xml +0 -12
  88. package/.run/backend _ lint.run.xml +0 -12
  89. package/.run/backend _ test.run.xml +0 -12
  90. package/.run/frontend _ build.run.xml +0 -12
  91. package/.run/frontend _ lint_fix.run.xml +0 -12
  92. package/CODEMAP.md +0 -53
  93. package/backend/.repoburg/hooks/README.md +0 -53
  94. package/backend/.repoburg/hooks/eslint-hook.ts +0 -46
  95. package/backend/.repoburg/hooks/example-hook.ts +0 -62
  96. package/backend/CODEMAP.md +0 -48
  97. package/backend/README.md +0 -3
  98. package/backend/coverage/clover.xml +0 -12003
  99. package/backend/coverage/coverage-final.json +0 -313
  100. package/backend/coverage/lcov-report/base.css +0 -224
  101. package/backend/coverage/lcov-report/block-navigation.js +0 -87
  102. package/backend/coverage/lcov-report/favicon.png +0 -0
  103. package/backend/coverage/lcov-report/index.html +0 -1301
  104. package/backend/coverage/lcov-report/packages/gemini-core/examples/index.html +0 -116
  105. package/backend/coverage/lcov-report/packages/gemini-core/examples/simple.ts.html +0 -445
  106. package/backend/coverage/lcov-report/packages/gemini-core/index.html +0 -116
  107. package/backend/coverage/lcov-report/packages/gemini-core/index.ts.html +0 -127
  108. package/backend/coverage/lcov-report/packages/gemini-core/src/code_assist/codeAssist.ts.html +0 -193
  109. package/backend/coverage/lcov-report/packages/gemini-core/src/code_assist/converter.ts.html +0 -832
  110. package/backend/coverage/lcov-report/packages/gemini-core/src/code_assist/index.html +0 -206
  111. package/backend/coverage/lcov-report/packages/gemini-core/src/code_assist/oauth-credential-storage.ts.html +0 -469
  112. package/backend/coverage/lcov-report/packages/gemini-core/src/code_assist/oauth2.ts.html +0 -1705
  113. package/backend/coverage/lcov-report/packages/gemini-core/src/code_assist/server.ts.html +0 -790
  114. package/backend/coverage/lcov-report/packages/gemini-core/src/code_assist/setup.ts.html +0 -454
  115. package/backend/coverage/lcov-report/packages/gemini-core/src/code_assist/types.ts.html +0 -685
  116. package/backend/coverage/lcov-report/packages/gemini-core/src/config/config.ts.html +0 -307
  117. package/backend/coverage/lcov-report/packages/gemini-core/src/config/index.html +0 -146
  118. package/backend/coverage/lcov-report/packages/gemini-core/src/config/models.ts.html +0 -151
  119. package/backend/coverage/lcov-report/packages/gemini-core/src/config/storage.ts.html +0 -172
  120. package/backend/coverage/lcov-report/packages/gemini-core/src/core/contentGenerator.ts.html +0 -490
  121. package/backend/coverage/lcov-report/packages/gemini-core/src/core/geminiChat.ts.html +0 -1237
  122. package/backend/coverage/lcov-report/packages/gemini-core/src/core/geminiRequest.ts.html +0 -139
  123. package/backend/coverage/lcov-report/packages/gemini-core/src/core/index.html +0 -176
  124. package/backend/coverage/lcov-report/packages/gemini-core/src/core/prompts.ts.html +0 -409
  125. package/backend/coverage/lcov-report/packages/gemini-core/src/core/tokenLimits.ts.html +0 -181
  126. package/backend/coverage/lcov-report/packages/gemini-core/src/index.html +0 -116
  127. package/backend/coverage/lcov-report/packages/gemini-core/src/index.ts.html +0 -187
  128. package/backend/coverage/lcov-report/packages/gemini-core/src/mcp/token-storage/base-token-storage.ts.html +0 -229
  129. package/backend/coverage/lcov-report/packages/gemini-core/src/mcp/token-storage/file-token-storage.ts.html +0 -634
  130. package/backend/coverage/lcov-report/packages/gemini-core/src/mcp/token-storage/hybrid-token-storage.ts.html +0 -373
  131. package/backend/coverage/lcov-report/packages/gemini-core/src/mcp/token-storage/index.html +0 -191
  132. package/backend/coverage/lcov-report/packages/gemini-core/src/mcp/token-storage/index.ts.html +0 -124
  133. package/backend/coverage/lcov-report/packages/gemini-core/src/mcp/token-storage/keychain-token-storage.ts.html +0 -835
  134. package/backend/coverage/lcov-report/packages/gemini-core/src/mcp/token-storage/types.ts.html +0 -211
  135. package/backend/coverage/lcov-report/packages/gemini-core/src/utils/errors.ts.html +0 -421
  136. package/backend/coverage/lcov-report/packages/gemini-core/src/utils/index.html +0 -191
  137. package/backend/coverage/lcov-report/packages/gemini-core/src/utils/partUtils.ts.html +0 -592
  138. package/backend/coverage/lcov-report/packages/gemini-core/src/utils/quotaErrorDetection.ts.html +0 -388
  139. package/backend/coverage/lcov-report/packages/gemini-core/src/utils/retry.ts.html +0 -877
  140. package/backend/coverage/lcov-report/packages/gemini-core/src/utils/session.ts.html +0 -112
  141. package/backend/coverage/lcov-report/packages/gemini-core/src/utils/userAccountManager.ts.html +0 -502
  142. package/backend/coverage/lcov-report/packages/tokenpatch/index.html +0 -161
  143. package/backend/coverage/lcov-report/packages/tokenpatch/index.ts.html +0 -415
  144. package/backend/coverage/lcov-report/packages/tokenpatch/parser.ts.html +0 -139
  145. package/backend/coverage/lcov-report/packages/tokenpatch/patcher.ts.html +0 -1249
  146. package/backend/coverage/lcov-report/packages/tokenpatch/strategies/index.html +0 -131
  147. package/backend/coverage/lcov-report/packages/tokenpatch/strategies/tiktoken-tokenizer.ts.html +0 -187
  148. package/backend/coverage/lcov-report/packages/tokenpatch/strategies/tree-sitter-tokenizer.ts.html +0 -193
  149. package/backend/coverage/lcov-report/packages/tokenpatch/tokens.ts.html +0 -178
  150. package/backend/coverage/lcov-report/prettify.css +0 -1
  151. package/backend/coverage/lcov-report/prettify.js +0 -2
  152. package/backend/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  153. package/backend/coverage/lcov-report/sorter.js +0 -210
  154. package/backend/coverage/lcov-report/src/ai-actions/ai-action-batch.service.ts.html +0 -1549
  155. package/backend/coverage/lcov-report/src/ai-actions/ai-actions.controller.ts.html +0 -904
  156. package/backend/coverage/lcov-report/src/ai-actions/ai-actions.module.ts.html +0 -175
  157. package/backend/coverage/lcov-report/src/ai-actions/ai-actions.service.ts.html +0 -1534
  158. package/backend/coverage/lcov-report/src/ai-actions/index.html +0 -161
  159. package/backend/coverage/lcov-report/src/app.controller.ts.html +0 -151
  160. package/backend/coverage/lcov-report/src/app.module.ts.html +0 -451
  161. package/backend/coverage/lcov-report/src/app.service.ts.html +0 -163
  162. package/backend/coverage/lcov-report/src/application-state/application-state.controller.ts.html +0 -1609
  163. package/backend/coverage/lcov-report/src/application-state/application-state.module.ts.html +0 -136
  164. package/backend/coverage/lcov-report/src/application-state/application-state.service.ts.html +0 -2281
  165. package/backend/coverage/lcov-report/src/application-state/dto/index.html +0 -416
  166. package/backend/coverage/lcov-report/src/application-state/dto/set-alibaba-config.dto.ts.html +0 -109
  167. package/backend/coverage/lcov-report/src/application-state/dto/set-auto-context-fetch-enabled.dto.ts.html +0 -118
  168. package/backend/coverage/lcov-report/src/application-state/dto/set-auto-send-to-ai-studio-enabled.dto.ts.html +0 -109
  169. package/backend/coverage/lcov-report/src/application-state/dto/set-context-token-limit.dto.ts.html +0 -124
  170. package/backend/coverage/lcov-report/src/application-state/dto/set-execution-strategy.dto.ts.html +0 -121
  171. package/backend/coverage/lcov-report/src/application-state/dto/set-followup-token-limit.dto.ts.html +0 -124
  172. package/backend/coverage/lcov-report/src/application-state/dto/set-history-compression-enabled.dto.ts.html +0 -115
  173. package/backend/coverage/lcov-report/src/application-state/dto/set-llm-retry-enabled.dto.ts.html +0 -115
  174. package/backend/coverage/lcov-report/src/application-state/dto/set-llm-retry-max-attempts.dto.ts.html +0 -127
  175. package/backend/coverage/lcov-report/src/application-state/dto/set-manual-llm-enabled.dto.ts.html +0 -118
  176. package/backend/coverage/lcov-report/src/application-state/dto/set-ollama-config.dto.ts.html +0 -109
  177. package/backend/coverage/lcov-report/src/application-state/dto/set-openai-config.dto.ts.html +0 -139
  178. package/backend/coverage/lcov-report/src/application-state/dto/set-openrouter-config.dto.ts.html +0 -109
  179. package/backend/coverage/lcov-report/src/application-state/dto/set-streaming-enabled.dto.ts.html +0 -109
  180. package/backend/coverage/lcov-report/src/application-state/dto/set-syntax-validation-enabled.dto.ts.html +0 -118
  181. package/backend/coverage/lcov-report/src/application-state/dto/set-theme.dto.ts.html +0 -124
  182. package/backend/coverage/lcov-report/src/application-state/dto/set-tools-enabled.dto.ts.html +0 -118
  183. package/backend/coverage/lcov-report/src/application-state/dto/set-websocket-enabled.dto.ts.html +0 -109
  184. package/backend/coverage/lcov-report/src/application-state/dto/set-yolo-mode-message.dto.ts.html +0 -124
  185. package/backend/coverage/lcov-report/src/application-state/dto/set-yolo-mode.dto.ts.html +0 -118
  186. package/backend/coverage/lcov-report/src/application-state/dto/set-zai-config.dto.ts.html +0 -109
  187. package/backend/coverage/lcov-report/src/application-state/index.html +0 -146
  188. package/backend/coverage/lcov-report/src/common/cache/cache-invalidation.service.ts.html +0 -1297
  189. package/backend/coverage/lcov-report/src/common/cache/cache-invalidation.subscriber.ts.html +0 -712
  190. package/backend/coverage/lcov-report/src/common/cache/etag-cache.service.ts.html +0 -379
  191. package/backend/coverage/lcov-report/src/common/cache/index.html +0 -146
  192. package/backend/coverage/lcov-report/src/common/common.module.ts.html +0 -121
  193. package/backend/coverage/lcov-report/src/common/index.html +0 -116
  194. package/backend/coverage/lcov-report/src/common/interceptors/etag-cache.interceptor.ts.html +0 -337
  195. package/backend/coverage/lcov-report/src/common/interceptors/index.html +0 -116
  196. package/backend/coverage/lcov-report/src/common/middleware/cache.middleware.ts.html +0 -265
  197. package/backend/coverage/lcov-report/src/common/middleware/index.html +0 -116
  198. package/backend/coverage/lcov-report/src/context-generation/context-generation.module.ts.html +0 -118
  199. package/backend/coverage/lcov-report/src/context-generation/context-generation.service.ts.html +0 -1501
  200. package/backend/coverage/lcov-report/src/context-generation/index.html +0 -131
  201. package/backend/coverage/lcov-report/src/context-snippets/context-snippets.controller.ts.html +0 -427
  202. package/backend/coverage/lcov-report/src/context-snippets/context-snippets.module.ts.html +0 -142
  203. package/backend/coverage/lcov-report/src/context-snippets/context-snippets.service.ts.html +0 -442
  204. package/backend/coverage/lcov-report/src/context-snippets/dto/context-snippet.dto.ts.html +0 -211
  205. package/backend/coverage/lcov-report/src/context-snippets/dto/index.html +0 -116
  206. package/backend/coverage/lcov-report/src/context-snippets/index.html +0 -146
  207. package/backend/coverage/lcov-report/src/context-templates/context-templates.controller.ts.html +0 -724
  208. package/backend/coverage/lcov-report/src/context-templates/context-templates.module.ts.html +0 -142
  209. package/backend/coverage/lcov-report/src/context-templates/context-templates.service.ts.html +0 -1015
  210. package/backend/coverage/lcov-report/src/context-templates/dto/context-template.dto.ts.html +0 -511
  211. package/backend/coverage/lcov-report/src/context-templates/dto/index.html +0 -116
  212. package/backend/coverage/lcov-report/src/context-templates/index.html +0 -146
  213. package/backend/coverage/lcov-report/src/core-entities/ai-action.entity.ts.html +0 -613
  214. package/backend/coverage/lcov-report/src/core-entities/application-state.entity.ts.html +0 -124
  215. package/backend/coverage/lcov-report/src/core-entities/base.entity.ts.html +0 -211
  216. package/backend/coverage/lcov-report/src/core-entities/context-snippet.entity.ts.html +0 -190
  217. package/backend/coverage/lcov-report/src/core-entities/context-template.entity.ts.html +0 -439
  218. package/backend/coverage/lcov-report/src/core-entities/custom-snippet.entity.ts.html +0 -205
  219. package/backend/coverage/lcov-report/src/core-entities/custom-variable.entity.ts.html +0 -241
  220. package/backend/coverage/lcov-report/src/core-entities/enums.ts.html +0 -553
  221. package/backend/coverage/lcov-report/src/core-entities/execution-log.entity.ts.html +0 -208
  222. package/backend/coverage/lcov-report/src/core-entities/index.html +0 -371
  223. package/backend/coverage/lcov-report/src/core-entities/index.ts.html +0 -136
  224. package/backend/coverage/lcov-report/src/core-entities/llm-call-log.entity.ts.html +0 -388
  225. package/backend/coverage/lcov-report/src/core-entities/mcp-config.entity.ts.html +0 -256
  226. package/backend/coverage/lcov-report/src/core-entities/mcp-tool.entity.ts.html +0 -256
  227. package/backend/coverage/lcov-report/src/core-entities/project.entity.ts.html +0 -181
  228. package/backend/coverage/lcov-report/src/core-entities/session-input.entity.ts.html +0 -745
  229. package/backend/coverage/lcov-report/src/core-entities/session.entity.ts.html +0 -688
  230. package/backend/coverage/lcov-report/src/core-entities/system-prompt.entity.ts.html +0 -349
  231. package/backend/coverage/lcov-report/src/core-entities/tool-hook.entity.ts.html +0 -235
  232. package/backend/coverage/lcov-report/src/custom-snippets/custom-snippets.controller.ts.html +0 -442
  233. package/backend/coverage/lcov-report/src/custom-snippets/custom-snippets.module.ts.html +0 -124
  234. package/backend/coverage/lcov-report/src/custom-snippets/custom-snippets.service.ts.html +0 -304
  235. package/backend/coverage/lcov-report/src/custom-snippets/dto/custom-snippet.dto.ts.html +0 -205
  236. package/backend/coverage/lcov-report/src/custom-snippets/dto/index.html +0 -116
  237. package/backend/coverage/lcov-report/src/custom-snippets/index.html +0 -146
  238. package/backend/coverage/lcov-report/src/custom-variables/custom-variables.controller.ts.html +0 -463
  239. package/backend/coverage/lcov-report/src/custom-variables/custom-variables.module.ts.html +0 -124
  240. package/backend/coverage/lcov-report/src/custom-variables/custom-variables.service.ts.html +0 -310
  241. package/backend/coverage/lcov-report/src/custom-variables/dto/custom-variable.dto.ts.html +0 -244
  242. package/backend/coverage/lcov-report/src/custom-variables/dto/index.html +0 -116
  243. package/backend/coverage/lcov-report/src/custom-variables/index.html +0 -146
  244. package/backend/coverage/lcov-report/src/events/events.gateway.ts.html +0 -295
  245. package/backend/coverage/lcov-report/src/events/events.module.ts.html +0 -109
  246. package/backend/coverage/lcov-report/src/events/index.html +0 -146
  247. package/backend/coverage/lcov-report/src/events/websocket.events.ts.html +0 -466
  248. package/backend/coverage/lcov-report/src/execution-logs/dto/execution-log.dto.ts.html +0 -130
  249. package/backend/coverage/lcov-report/src/execution-logs/dto/index.html +0 -116
  250. package/backend/coverage/lcov-report/src/execution-logs/execution-logs.controller.ts.html +0 -130
  251. package/backend/coverage/lcov-report/src/execution-logs/execution-logs.module.ts.html +0 -124
  252. package/backend/coverage/lcov-report/src/execution-logs/execution-logs.service.ts.html +0 -238
  253. package/backend/coverage/lcov-report/src/execution-logs/index.html +0 -146
  254. package/backend/coverage/lcov-report/src/gemini/gemini-llm.provider.ts.html +0 -553
  255. package/backend/coverage/lcov-report/src/gemini/gemini.module.ts.html +0 -109
  256. package/backend/coverage/lcov-report/src/gemini/index.html +0 -131
  257. package/backend/coverage/lcov-report/src/global-config/dto/index.html +0 -116
  258. package/backend/coverage/lcov-report/src/global-config/dto/update-global-config.dto.ts.html +0 -367
  259. package/backend/coverage/lcov-report/src/global-config/global-config.controller.ts.html +0 -220
  260. package/backend/coverage/lcov-report/src/global-config/global-config.module.ts.html +0 -115
  261. package/backend/coverage/lcov-report/src/global-config/global-config.service.ts.html +0 -397
  262. package/backend/coverage/lcov-report/src/global-config/index.html +0 -146
  263. package/backend/coverage/lcov-report/src/http-exception.filter.ts.html +0 -340
  264. package/backend/coverage/lcov-report/src/index.html +0 -206
  265. package/backend/coverage/lcov-report/src/interactive-chat/chat.module.ts.html +0 -187
  266. package/backend/coverage/lcov-report/src/interactive-chat/chat.service.ts.html +0 -1825
  267. package/backend/coverage/lcov-report/src/interactive-chat/index.html +0 -146
  268. package/backend/coverage/lcov-report/src/interactive-chat/streaming.controller.ts.html +0 -343
  269. package/backend/coverage/lcov-report/src/llm-call-logs/dto/index.html +0 -116
  270. package/backend/coverage/lcov-report/src/llm-call-logs/dto/llm-call-log.dto.ts.html +0 -214
  271. package/backend/coverage/lcov-report/src/llm-call-logs/index.html +0 -146
  272. package/backend/coverage/lcov-report/src/llm-call-logs/llm-call-logs.controller.ts.html +0 -634
  273. package/backend/coverage/lcov-report/src/llm-call-logs/llm-call-logs.module.ts.html +0 -124
  274. package/backend/coverage/lcov-report/src/llm-call-logs/llm-call-logs.service.ts.html +0 -643
  275. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/apply-diff.handler.ts.html +0 -1090
  276. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/ask-user.handler.ts.html +0 -433
  277. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/create-file.handler.ts.html +0 -757
  278. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/delete-file.handler.ts.html +0 -586
  279. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/discard-messages.handler.ts.html +0 -1153
  280. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/dto/apply-diff.args.dto.ts.html +0 -124
  281. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/dto/ask-user.args.dto.ts.html +0 -103
  282. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/dto/create-file.args.dto.ts.html +0 -124
  283. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/dto/delete-file.args.dto.ts.html +0 -106
  284. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/dto/execute-code.args.dto.ts.html +0 -106
  285. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/dto/final.args.dto.ts.html +0 -118
  286. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/dto/generate-title.args.dto.ts.html +0 -190
  287. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/dto/get-session-history.args.dto.ts.html +0 -196
  288. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/dto/howto.args.dto.ts.html +0 -91
  289. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/dto/index.html +0 -356
  290. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/dto/new-session.args.dto.ts.html +0 -106
  291. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/dto/overwrite-file.args.dto.ts.html +0 -124
  292. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/dto/patch.args.dto.ts.html +0 -124
  293. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/dto/quick-edit.args.dto.ts.html +0 -214
  294. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/dto/request-context.args.dto.ts.html +0 -202
  295. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/dto/run-command.args.dto.ts.html +0 -151
  296. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/dto/sanitizer.decorator.ts.html +0 -181
  297. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/dto/write-todo.args.dto.ts.html +0 -130
  298. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/execute-code.handler.ts.html +0 -631
  299. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/final.handler.ts.html +0 -469
  300. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/generate-title.handler.ts.html +0 -448
  301. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/get-messages.handler.ts.html +0 -1351
  302. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/get-session-history.handler.ts.html +0 -868
  303. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/howto.handler.ts.html +0 -481
  304. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/index.html +0 -416
  305. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/invoke-subagent.handler.ts.html +0 -580
  306. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/list-sub-agents.handler.ts.html +0 -352
  307. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/matchers/context-aware.matcher.ts.html +0 -1054
  308. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/matchers/exact.matcher.ts.html +0 -331
  309. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/matchers/hybrid.matcher.ts.html +0 -403
  310. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/matchers/index.html +0 -176
  311. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/matchers/index.ts.html +0 -100
  312. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/matchers/normalized.matcher.ts.html +0 -724
  313. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/mcp-tool-action.handler.ts.html +0 -358
  314. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/new-session.handler.ts.html +0 -379
  315. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/overwrite-file.handler.ts.html +0 -838
  316. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/patch.handler.ts.html +0 -1702
  317. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/quick-edit.handler.ts.html +0 -1459
  318. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/request-context.handler.ts.html +0 -679
  319. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/run-command.handler.ts.html +0 -964
  320. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/write-todo.handler.ts.html +0 -625
  321. package/backend/coverage/lcov-report/src/llm-orchestration/errors/handler-validation.error.ts.html +0 -103
  322. package/backend/coverage/lcov-report/src/llm-orchestration/errors/index.html +0 -116
  323. package/backend/coverage/lcov-report/src/llm-orchestration/history-compression.service.ts.html +0 -1645
  324. package/backend/coverage/lcov-report/src/llm-orchestration/hooks/follow-up-post-execution.hook.ts.html +0 -238
  325. package/backend/coverage/lcov-report/src/llm-orchestration/hooks/frontend-notification.hook.ts.html +0 -181
  326. package/backend/coverage/lcov-report/src/llm-orchestration/hooks/index.html +0 -161
  327. package/backend/coverage/lcov-report/src/llm-orchestration/hooks/invalid-tool-feedback.hook.ts.html +0 -313
  328. package/backend/coverage/lcov-report/src/llm-orchestration/hooks/yolo-mode-post-execution.hook.ts.html +0 -466
  329. package/backend/coverage/lcov-report/src/llm-orchestration/index.html +0 -176
  330. package/backend/coverage/lcov-report/src/llm-orchestration/llm-orchestration.interfaces.ts.html +0 -319
  331. package/backend/coverage/lcov-report/src/llm-orchestration/llm-orchestration.module.ts.html +0 -706
  332. package/backend/coverage/lcov-report/src/llm-orchestration/llm-turn-processor.service.ts.html +0 -1150
  333. package/backend/coverage/lcov-report/src/llm-orchestration/parser/index.html +0 -131
  334. package/backend/coverage/lcov-report/src/llm-orchestration/parser/llm-output-parser.service.ts.html +0 -658
  335. package/backend/coverage/lcov-report/src/llm-orchestration/parser/parsing.constants.ts.html +0 -127
  336. package/backend/coverage/lcov-report/src/llm-orchestration/tool-schema.service.ts.html +0 -547
  337. package/backend/coverage/lcov-report/src/llm-provider/alibaba-llm.provider.ts.html +0 -1681
  338. package/backend/coverage/lcov-report/src/llm-provider/index.html +0 -236
  339. package/backend/coverage/lcov-report/src/llm-provider/llm-provider.controller.ts.html +0 -187
  340. package/backend/coverage/lcov-report/src/llm-provider/llm-provider.interface.ts.html +0 -361
  341. package/backend/coverage/lcov-report/src/llm-provider/llm-provider.module.ts.html +0 -175
  342. package/backend/coverage/lcov-report/src/llm-provider/ollama-llm.provider.ts.html +0 -1780
  343. package/backend/coverage/lcov-report/src/llm-provider/openai-llm.provider.ts.html +0 -1867
  344. package/backend/coverage/lcov-report/src/llm-provider/openrouter-llm.provider.ts.html +0 -1891
  345. package/backend/coverage/lcov-report/src/llm-provider/proxy-llm.provider.ts.html +0 -304
  346. package/backend/coverage/lcov-report/src/llm-provider/zai-llm.provider.ts.html +0 -1666
  347. package/backend/coverage/lcov-report/src/llm-responses/dto/index.html +0 -131
  348. package/backend/coverage/lcov-report/src/llm-responses/dto/submit-llm-response.dto.ts.html +0 -436
  349. package/backend/coverage/lcov-report/src/llm-responses/dto/sync-conversation.dto.ts.html +0 -319
  350. package/backend/coverage/lcov-report/src/llm-responses/index.html +0 -146
  351. package/backend/coverage/lcov-report/src/llm-responses/llm-responses.controller.ts.html +0 -283
  352. package/backend/coverage/lcov-report/src/llm-responses/llm-responses.module.ts.html +0 -184
  353. package/backend/coverage/lcov-report/src/llm-responses/llm-responses.service.ts.html +0 -1474
  354. package/backend/coverage/lcov-report/src/main.ts.html +0 -463
  355. package/backend/coverage/lcov-report/src/mcp/dto/batch-update-mcp-tools.dto.ts.html +0 -145
  356. package/backend/coverage/lcov-report/src/mcp/dto/create-mcp-config.dto.ts.html +0 -127
  357. package/backend/coverage/lcov-report/src/mcp/dto/index.html +0 -146
  358. package/backend/coverage/lcov-report/src/mcp/dto/update-mcp-config.dto.ts.html +0 -112
  359. package/backend/coverage/lcov-report/src/mcp/index.html +0 -146
  360. package/backend/coverage/lcov-report/src/mcp/mcp.controller.ts.html +0 -340
  361. package/backend/coverage/lcov-report/src/mcp/mcp.module.ts.html +0 -124
  362. package/backend/coverage/lcov-report/src/mcp/mcp.service.ts.html +0 -1345
  363. package/backend/coverage/lcov-report/src/message-bus/dto/index.html +0 -116
  364. package/backend/coverage/lcov-report/src/message-bus/dto/submit-message.dto.ts.html +0 -109
  365. package/backend/coverage/lcov-report/src/message-bus/index.html +0 -146
  366. package/backend/coverage/lcov-report/src/message-bus/message-bus.controller.ts.html +0 -148
  367. package/backend/coverage/lcov-report/src/message-bus/message-bus.module.ts.html +0 -115
  368. package/backend/coverage/lcov-report/src/message-bus/message-bus.service.ts.html +0 -151
  369. package/backend/coverage/lcov-report/src/projects/dto/index.html +0 -116
  370. package/backend/coverage/lcov-report/src/projects/dto/project.dto.ts.html +0 -196
  371. package/backend/coverage/lcov-report/src/projects/index.html +0 -146
  372. package/backend/coverage/lcov-report/src/projects/projects.controller.ts.html +0 -322
  373. package/backend/coverage/lcov-report/src/projects/projects.module.ts.html +0 -124
  374. package/backend/coverage/lcov-report/src/projects/projects.service.ts.html +0 -235
  375. package/backend/coverage/lcov-report/src/seeding/context-snippet-seeding.service.ts.html +0 -280
  376. package/backend/coverage/lcov-report/src/seeding/context-template-seeding.service.ts.html +0 -439
  377. package/backend/coverage/lcov-report/src/seeding/custom-snippet-seeding.service.ts.html +0 -271
  378. package/backend/coverage/lcov-report/src/seeding/custom-variable-seeding.service.ts.html +0 -271
  379. package/backend/coverage/lcov-report/src/seeding/data/context-snippets/compress.ts.html +0 -172
  380. package/backend/coverage/lcov-report/src/seeding/data/context-snippets/index.html +0 -116
  381. package/backend/coverage/lcov-report/src/seeding/data/context-templates/default-followup_ad-hoc-focused-context.ts.html +0 -157
  382. package/backend/coverage/lcov-report/src/seeding/data/context-templates/default-initial_condensed-project-context.ts.html +0 -148
  383. package/backend/coverage/lcov-report/src/seeding/data/context-templates/default-initial_full-project-context.ts.html +0 -151
  384. package/backend/coverage/lcov-report/src/seeding/data/context-templates/index.html +0 -161
  385. package/backend/coverage/lcov-report/src/seeding/data/context-templates/open-pr-command.ts.html +0 -247
  386. package/backend/coverage/lcov-report/src/seeding/data/custom-snippets/default_rglob.ts.html +0 -94
  387. package/backend/coverage/lcov-report/src/seeding/data/custom-snippets/eta-for.ts.html +0 -100
  388. package/backend/coverage/lcov-report/src/seeding/data/custom-snippets/eta-if.ts.html +0 -97
  389. package/backend/coverage/lcov-report/src/seeding/data/custom-snippets/eta-ifelse.ts.html +0 -100
  390. package/backend/coverage/lcov-report/src/seeding/data/custom-snippets/everest-playwright-auth.ts.html +0 -304
  391. package/backend/coverage/lcov-report/src/seeding/data/custom-snippets/git-diff.ts.html +0 -94
  392. package/backend/coverage/lcov-report/src/seeding/data/custom-snippets/index.html +0 -341
  393. package/backend/coverage/lcov-report/src/seeding/data/custom-snippets/it-mcp.ts.html +0 -100
  394. package/backend/coverage/lcov-report/src/seeding/data/custom-snippets/it-tools.ts.html +0 -97
  395. package/backend/coverage/lcov-report/src/seeding/data/custom-snippets/rg-exclude.ts.html +0 -94
  396. package/backend/coverage/lcov-report/src/seeding/data/custom-snippets/rg-search-glob.ts.html +0 -94
  397. package/backend/coverage/lcov-report/src/seeding/data/custom-snippets/rg-search.ts.html +0 -94
  398. package/backend/coverage/lcov-report/src/seeding/data/custom-snippets/run-command.ts.html +0 -94
  399. package/backend/coverage/lcov-report/src/seeding/data/custom-snippets/tree.ts.html +0 -94
  400. package/backend/coverage/lcov-report/src/seeding/data/custom-snippets/usr-adhoc-incl.ts.html +0 -100
  401. package/backend/coverage/lcov-report/src/seeding/data/custom-snippets/usr-cmd-output-incl.ts.html +0 -94
  402. package/backend/coverage/lcov-report/src/seeding/data/custom-snippets/usr-input-incl.ts.html +0 -94
  403. package/backend/coverage/lcov-report/src/seeding/data/custom-variables/default-auto-execute-code.ts.html +0 -94
  404. package/backend/coverage/lcov-report/src/seeding/data/custom-variables/default-plan-mode.ts.html +0 -97
  405. package/backend/coverage/lcov-report/src/seeding/data/custom-variables/index.html +0 -131
  406. package/backend/coverage/lcov-report/src/seeding/data/mcp-configs/default-configs.ts.html +0 -121
  407. package/backend/coverage/lcov-report/src/seeding/data/mcp-configs/index.html +0 -116
  408. package/backend/coverage/lcov-report/src/seeding/data/sub-agents/browser-use.ts.html +0 -115
  409. package/backend/coverage/lcov-report/src/seeding/data/sub-agents/explore-codebase.ts.html +0 -136
  410. package/backend/coverage/lcov-report/src/seeding/data/sub-agents/index.html +0 -131
  411. package/backend/coverage/lcov-report/src/seeding/data/system-prompts/browser-use-agent.ts.html +0 -190
  412. package/backend/coverage/lcov-report/src/seeding/data/system-prompts/default_native_tool_agent.ts.html +0 -421
  413. package/backend/coverage/lcov-report/src/seeding/data/system-prompts/explore-codebase-agent.ts.html +0 -265
  414. package/backend/coverage/lcov-report/src/seeding/data/system-prompts/index.html +0 -161
  415. package/backend/coverage/lcov-report/src/seeding/data/system-prompts/master-agent.ts.html +0 -388
  416. package/backend/coverage/lcov-report/src/seeding/data/tool-hooks/eslint-hook.ts.html +0 -265
  417. package/backend/coverage/lcov-report/src/seeding/data/tool-hooks/example-hook.ts.html +0 -274
  418. package/backend/coverage/lcov-report/src/seeding/data/tool-hooks/index.html +0 -146
  419. package/backend/coverage/lcov-report/src/seeding/data/tool-hooks/readme.ts.html +0 -250
  420. package/backend/coverage/lcov-report/src/seeding/index.html +0 -236
  421. package/backend/coverage/lcov-report/src/seeding/mcp-config-seeding.service.ts.html +0 -193
  422. package/backend/coverage/lcov-report/src/seeding/seeding.module.ts.html +0 -211
  423. package/backend/coverage/lcov-report/src/seeding/seeding.service.ts.html +0 -187
  424. package/backend/coverage/lcov-report/src/seeding/sub-agent-seeding.service.ts.html +0 -742
  425. package/backend/coverage/lcov-report/src/seeding/system-prompt-seeding.service.ts.html +0 -397
  426. package/backend/coverage/lcov-report/src/session-followup/index.html +0 -131
  427. package/backend/coverage/lcov-report/src/session-followup/session-followup.module.ts.html +0 -130
  428. package/backend/coverage/lcov-report/src/session-followup/session-followup.service.ts.html +0 -718
  429. package/backend/coverage/lcov-report/src/session-inputs/dto/index.html +0 -116
  430. package/backend/coverage/lcov-report/src/session-inputs/dto/session-input.dto.ts.html +0 -577
  431. package/backend/coverage/lcov-report/src/session-inputs/index.html +0 -176
  432. package/backend/coverage/lcov-report/src/session-inputs/session-input-context.service.ts.html +0 -832
  433. package/backend/coverage/lcov-report/src/session-inputs/session-input.subscriber.ts.html +0 -220
  434. package/backend/coverage/lcov-report/src/session-inputs/session-inputs.controller.ts.html +0 -685
  435. package/backend/coverage/lcov-report/src/session-inputs/session-inputs.module.ts.html +0 -229
  436. package/backend/coverage/lcov-report/src/session-inputs/session-inputs.service.ts.html +0 -1981
  437. package/backend/coverage/lcov-report/src/session-transfer/index.html +0 -131
  438. package/backend/coverage/lcov-report/src/session-transfer/session-transfer.module.ts.html +0 -160
  439. package/backend/coverage/lcov-report/src/session-transfer/session-transfer.service.ts.html +0 -883
  440. package/backend/coverage/lcov-report/src/sessions/dto/index.html +0 -116
  441. package/backend/coverage/lcov-report/src/sessions/dto/session.dto.ts.html +0 -769
  442. package/backend/coverage/lcov-report/src/sessions/index.html +0 -146
  443. package/backend/coverage/lcov-report/src/sessions/sessions.controller.ts.html +0 -1306
  444. package/backend/coverage/lcov-report/src/sessions/sessions.module.ts.html +0 -220
  445. package/backend/coverage/lcov-report/src/sessions/sessions.service.ts.html +0 -2797
  446. package/backend/coverage/lcov-report/src/sub-agents/dto/create-sub-agent.dto.ts.html +0 -355
  447. package/backend/coverage/lcov-report/src/sub-agents/dto/index.html +0 -131
  448. package/backend/coverage/lcov-report/src/sub-agents/dto/update-sub-agent.dto.ts.html +0 -295
  449. package/backend/coverage/lcov-report/src/sub-agents/index.html +0 -221
  450. package/backend/coverage/lcov-report/src/sub-agents/sub-agent-run.entity.ts.html +0 -463
  451. package/backend/coverage/lcov-report/src/sub-agents/sub-agent-runner.service.ts.html +0 -2428
  452. package/backend/coverage/lcov-report/src/sub-agents/sub-agent-runs.controller.ts.html +0 -580
  453. package/backend/coverage/lcov-report/src/sub-agents/sub-agent-runs.service.ts.html +0 -550
  454. package/backend/coverage/lcov-report/src/sub-agents/sub-agent.entity.ts.html +0 -475
  455. package/backend/coverage/lcov-report/src/sub-agents/sub-agents.controller.ts.html +0 -373
  456. package/backend/coverage/lcov-report/src/sub-agents/sub-agents.module.ts.html +0 -205
  457. package/backend/coverage/lcov-report/src/sub-agents/sub-agents.service.ts.html +0 -619
  458. package/backend/coverage/lcov-report/src/syntax-validation/index.html +0 -131
  459. package/backend/coverage/lcov-report/src/syntax-validation/syntax-validation.module.ts.html +0 -109
  460. package/backend/coverage/lcov-report/src/syntax-validation/syntax-validation.service.ts.html +0 -724
  461. package/backend/coverage/lcov-report/src/system-prompts/dto/index.html +0 -176
  462. package/backend/coverage/lcov-report/src/system-prompts/dto/set-enabled-mcp-tools.dto.ts.html +0 -157
  463. package/backend/coverage/lcov-report/src/system-prompts/dto/set-enabled-tools.dto.ts.html +0 -148
  464. package/backend/coverage/lcov-report/src/system-prompts/dto/system-prompt.dto.ts.html +0 -517
  465. package/backend/coverage/lcov-report/src/system-prompts/dto/toggle-mcp-tool.dto.ts.html +0 -121
  466. package/backend/coverage/lcov-report/src/system-prompts/dto/toggle-tool.dto.ts.html +0 -118
  467. package/backend/coverage/lcov-report/src/system-prompts/index.html +0 -146
  468. package/backend/coverage/lcov-report/src/system-prompts/system-prompts.controller.ts.html +0 -1060
  469. package/backend/coverage/lcov-report/src/system-prompts/system-prompts.module.ts.html +0 -160
  470. package/backend/coverage/lcov-report/src/system-prompts/system-prompts.service.ts.html +0 -2254
  471. package/backend/coverage/lcov-report/src/timeout.interceptor.ts.html +0 -178
  472. package/backend/coverage/lcov-report/src/tool-hooks/dto/create-tool-hook.dto.ts.html +0 -181
  473. package/backend/coverage/lcov-report/src/tool-hooks/dto/index.html +0 -131
  474. package/backend/coverage/lcov-report/src/tool-hooks/dto/update-tool-hook.dto.ts.html +0 -178
  475. package/backend/coverage/lcov-report/src/tool-hooks/index.html +0 -146
  476. package/backend/coverage/lcov-report/src/tool-hooks/tool-hooks.controller.ts.html +0 -481
  477. package/backend/coverage/lcov-report/src/tool-hooks/tool-hooks.module.ts.html +0 -127
  478. package/backend/coverage/lcov-report/src/tool-hooks/tool-hooks.service.ts.html +0 -1222
  479. package/backend/coverage/lcov-report/src/tracing.ts.html +0 -214
  480. package/backend/coverage/lcov-report/src/types/express-multer.d.ts.html +0 -130
  481. package/backend/coverage/lcov-report/src/types/index.html +0 -116
  482. package/backend/coverage/lcov-report/src/utils/ai-format-generator.ts.html +0 -253
  483. package/backend/coverage/lcov-report/src/utils/fuzzy-search.ts.html +0 -310
  484. package/backend/coverage/lcov-report/src/utils/index.html +0 -191
  485. package/backend/coverage/lcov-report/src/utils/index.ts.html +0 -100
  486. package/backend/coverage/lcov-report/src/utils/short-id.ts.html +0 -109
  487. package/backend/coverage/lcov-report/src/utils/spawn-with-kill.ts.html +0 -412
  488. package/backend/coverage/lcov-report/src/utils/trace.decorator.ts.html +0 -223
  489. package/backend/coverage/lcov-report/src/visual-editor/index.html +0 -146
  490. package/backend/coverage/lcov-report/src/visual-editor/visual-editor.controller.ts.html +0 -409
  491. package/backend/coverage/lcov-report/src/visual-editor/visual-editor.dto.ts.html +0 -130
  492. package/backend/coverage/lcov-report/src/visual-editor/visual-editor.module.ts.html +0 -118
  493. package/backend/coverage/lcov-report/src/workspace/dto/file-tree.dto.ts.html +0 -112
  494. package/backend/coverage/lcov-report/src/workspace/dto/index.html +0 -131
  495. package/backend/coverage/lcov-report/src/workspace/dto/search-workspace.dto.ts.html +0 -193
  496. package/backend/coverage/lcov-report/src/workspace/index.html +0 -146
  497. package/backend/coverage/lcov-report/src/workspace/workspace.controller.ts.html +0 -394
  498. package/backend/coverage/lcov-report/src/workspace/workspace.module.ts.html +0 -121
  499. package/backend/coverage/lcov-report/src/workspace/workspace.service.ts.html +0 -1027
  500. package/backend/coverage/lcov.info +0 -20220
  501. package/backend/packages/tokenpatch/CODEMAP.md +0 -25
  502. package/daemon/CODEMAP.md +0 -23
  503. package/visual-editor-proxy/CODEMAP.md +0 -21
@@ -1,1534 +0,0 @@
1
-
2
- <!doctype html>
3
- <html lang="en">
4
-
5
- <head>
6
- <title>Code coverage report for src/ai-actions/ai-actions.service.ts</title>
7
- <meta charset="utf-8" />
8
- <link rel="stylesheet" href="../../prettify.css" />
9
- <link rel="stylesheet" href="../../base.css" />
10
- <link rel="shortcut icon" type="image/x-icon" href="../../favicon.png" />
11
- <meta name="viewport" content="width=device-width, initial-scale=1" />
12
- <style type='text/css'>
13
- .coverage-summary .sorter {
14
- background-image: url(../../sort-arrow-sprite.png);
15
- }
16
- </style>
17
- </head>
18
-
19
- <body>
20
- <div class='wrapper'>
21
- <div class='pad1'>
22
- <h1><a href="../../index.html">All files</a> / <a href="index.html">src/ai-actions</a> ai-actions.service.ts</h1>
23
- <div class='clearfix'>
24
-
25
- <div class='fl pad1y space-right2'>
26
- <span class="strong">71.36% </span>
27
- <span class="quiet">Statements</span>
28
- <span class='fraction'>152/213</span>
29
- </div>
30
-
31
-
32
- <div class='fl pad1y space-right2'>
33
- <span class="strong">60.31% </span>
34
- <span class="quiet">Branches</span>
35
- <span class='fraction'>38/63</span>
36
- </div>
37
-
38
-
39
- <div class='fl pad1y space-right2'>
40
- <span class="strong">75% </span>
41
- <span class="quiet">Functions</span>
42
- <span class='fraction'>12/16</span>
43
- </div>
44
-
45
-
46
- <div class='fl pad1y space-right2'>
47
- <span class="strong">71.09% </span>
48
- <span class="quiet">Lines</span>
49
- <span class='fraction'>150/211</span>
50
- </div>
51
-
52
-
53
- </div>
54
- <p class="quiet">
55
- Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
56
- </p>
57
- <template id="filterTemplate">
58
- <div class="quiet">
59
- Filter:
60
- <input type="search" id="fileSearch">
61
- </div>
62
- </template>
63
- </div>
64
- <div class='status-line medium'></div>
65
- <pre><table class="coverage">
66
- <tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
67
- <a name='L2'></a><a href='#L2'>2</a>
68
- <a name='L3'></a><a href='#L3'>3</a>
69
- <a name='L4'></a><a href='#L4'>4</a>
70
- <a name='L5'></a><a href='#L5'>5</a>
71
- <a name='L6'></a><a href='#L6'>6</a>
72
- <a name='L7'></a><a href='#L7'>7</a>
73
- <a name='L8'></a><a href='#L8'>8</a>
74
- <a name='L9'></a><a href='#L9'>9</a>
75
- <a name='L10'></a><a href='#L10'>10</a>
76
- <a name='L11'></a><a href='#L11'>11</a>
77
- <a name='L12'></a><a href='#L12'>12</a>
78
- <a name='L13'></a><a href='#L13'>13</a>
79
- <a name='L14'></a><a href='#L14'>14</a>
80
- <a name='L15'></a><a href='#L15'>15</a>
81
- <a name='L16'></a><a href='#L16'>16</a>
82
- <a name='L17'></a><a href='#L17'>17</a>
83
- <a name='L18'></a><a href='#L18'>18</a>
84
- <a name='L19'></a><a href='#L19'>19</a>
85
- <a name='L20'></a><a href='#L20'>20</a>
86
- <a name='L21'></a><a href='#L21'>21</a>
87
- <a name='L22'></a><a href='#L22'>22</a>
88
- <a name='L23'></a><a href='#L23'>23</a>
89
- <a name='L24'></a><a href='#L24'>24</a>
90
- <a name='L25'></a><a href='#L25'>25</a>
91
- <a name='L26'></a><a href='#L26'>26</a>
92
- <a name='L27'></a><a href='#L27'>27</a>
93
- <a name='L28'></a><a href='#L28'>28</a>
94
- <a name='L29'></a><a href='#L29'>29</a>
95
- <a name='L30'></a><a href='#L30'>30</a>
96
- <a name='L31'></a><a href='#L31'>31</a>
97
- <a name='L32'></a><a href='#L32'>32</a>
98
- <a name='L33'></a><a href='#L33'>33</a>
99
- <a name='L34'></a><a href='#L34'>34</a>
100
- <a name='L35'></a><a href='#L35'>35</a>
101
- <a name='L36'></a><a href='#L36'>36</a>
102
- <a name='L37'></a><a href='#L37'>37</a>
103
- <a name='L38'></a><a href='#L38'>38</a>
104
- <a name='L39'></a><a href='#L39'>39</a>
105
- <a name='L40'></a><a href='#L40'>40</a>
106
- <a name='L41'></a><a href='#L41'>41</a>
107
- <a name='L42'></a><a href='#L42'>42</a>
108
- <a name='L43'></a><a href='#L43'>43</a>
109
- <a name='L44'></a><a href='#L44'>44</a>
110
- <a name='L45'></a><a href='#L45'>45</a>
111
- <a name='L46'></a><a href='#L46'>46</a>
112
- <a name='L47'></a><a href='#L47'>47</a>
113
- <a name='L48'></a><a href='#L48'>48</a>
114
- <a name='L49'></a><a href='#L49'>49</a>
115
- <a name='L50'></a><a href='#L50'>50</a>
116
- <a name='L51'></a><a href='#L51'>51</a>
117
- <a name='L52'></a><a href='#L52'>52</a>
118
- <a name='L53'></a><a href='#L53'>53</a>
119
- <a name='L54'></a><a href='#L54'>54</a>
120
- <a name='L55'></a><a href='#L55'>55</a>
121
- <a name='L56'></a><a href='#L56'>56</a>
122
- <a name='L57'></a><a href='#L57'>57</a>
123
- <a name='L58'></a><a href='#L58'>58</a>
124
- <a name='L59'></a><a href='#L59'>59</a>
125
- <a name='L60'></a><a href='#L60'>60</a>
126
- <a name='L61'></a><a href='#L61'>61</a>
127
- <a name='L62'></a><a href='#L62'>62</a>
128
- <a name='L63'></a><a href='#L63'>63</a>
129
- <a name='L64'></a><a href='#L64'>64</a>
130
- <a name='L65'></a><a href='#L65'>65</a>
131
- <a name='L66'></a><a href='#L66'>66</a>
132
- <a name='L67'></a><a href='#L67'>67</a>
133
- <a name='L68'></a><a href='#L68'>68</a>
134
- <a name='L69'></a><a href='#L69'>69</a>
135
- <a name='L70'></a><a href='#L70'>70</a>
136
- <a name='L71'></a><a href='#L71'>71</a>
137
- <a name='L72'></a><a href='#L72'>72</a>
138
- <a name='L73'></a><a href='#L73'>73</a>
139
- <a name='L74'></a><a href='#L74'>74</a>
140
- <a name='L75'></a><a href='#L75'>75</a>
141
- <a name='L76'></a><a href='#L76'>76</a>
142
- <a name='L77'></a><a href='#L77'>77</a>
143
- <a name='L78'></a><a href='#L78'>78</a>
144
- <a name='L79'></a><a href='#L79'>79</a>
145
- <a name='L80'></a><a href='#L80'>80</a>
146
- <a name='L81'></a><a href='#L81'>81</a>
147
- <a name='L82'></a><a href='#L82'>82</a>
148
- <a name='L83'></a><a href='#L83'>83</a>
149
- <a name='L84'></a><a href='#L84'>84</a>
150
- <a name='L85'></a><a href='#L85'>85</a>
151
- <a name='L86'></a><a href='#L86'>86</a>
152
- <a name='L87'></a><a href='#L87'>87</a>
153
- <a name='L88'></a><a href='#L88'>88</a>
154
- <a name='L89'></a><a href='#L89'>89</a>
155
- <a name='L90'></a><a href='#L90'>90</a>
156
- <a name='L91'></a><a href='#L91'>91</a>
157
- <a name='L92'></a><a href='#L92'>92</a>
158
- <a name='L93'></a><a href='#L93'>93</a>
159
- <a name='L94'></a><a href='#L94'>94</a>
160
- <a name='L95'></a><a href='#L95'>95</a>
161
- <a name='L96'></a><a href='#L96'>96</a>
162
- <a name='L97'></a><a href='#L97'>97</a>
163
- <a name='L98'></a><a href='#L98'>98</a>
164
- <a name='L99'></a><a href='#L99'>99</a>
165
- <a name='L100'></a><a href='#L100'>100</a>
166
- <a name='L101'></a><a href='#L101'>101</a>
167
- <a name='L102'></a><a href='#L102'>102</a>
168
- <a name='L103'></a><a href='#L103'>103</a>
169
- <a name='L104'></a><a href='#L104'>104</a>
170
- <a name='L105'></a><a href='#L105'>105</a>
171
- <a name='L106'></a><a href='#L106'>106</a>
172
- <a name='L107'></a><a href='#L107'>107</a>
173
- <a name='L108'></a><a href='#L108'>108</a>
174
- <a name='L109'></a><a href='#L109'>109</a>
175
- <a name='L110'></a><a href='#L110'>110</a>
176
- <a name='L111'></a><a href='#L111'>111</a>
177
- <a name='L112'></a><a href='#L112'>112</a>
178
- <a name='L113'></a><a href='#L113'>113</a>
179
- <a name='L114'></a><a href='#L114'>114</a>
180
- <a name='L115'></a><a href='#L115'>115</a>
181
- <a name='L116'></a><a href='#L116'>116</a>
182
- <a name='L117'></a><a href='#L117'>117</a>
183
- <a name='L118'></a><a href='#L118'>118</a>
184
- <a name='L119'></a><a href='#L119'>119</a>
185
- <a name='L120'></a><a href='#L120'>120</a>
186
- <a name='L121'></a><a href='#L121'>121</a>
187
- <a name='L122'></a><a href='#L122'>122</a>
188
- <a name='L123'></a><a href='#L123'>123</a>
189
- <a name='L124'></a><a href='#L124'>124</a>
190
- <a name='L125'></a><a href='#L125'>125</a>
191
- <a name='L126'></a><a href='#L126'>126</a>
192
- <a name='L127'></a><a href='#L127'>127</a>
193
- <a name='L128'></a><a href='#L128'>128</a>
194
- <a name='L129'></a><a href='#L129'>129</a>
195
- <a name='L130'></a><a href='#L130'>130</a>
196
- <a name='L131'></a><a href='#L131'>131</a>
197
- <a name='L132'></a><a href='#L132'>132</a>
198
- <a name='L133'></a><a href='#L133'>133</a>
199
- <a name='L134'></a><a href='#L134'>134</a>
200
- <a name='L135'></a><a href='#L135'>135</a>
201
- <a name='L136'></a><a href='#L136'>136</a>
202
- <a name='L137'></a><a href='#L137'>137</a>
203
- <a name='L138'></a><a href='#L138'>138</a>
204
- <a name='L139'></a><a href='#L139'>139</a>
205
- <a name='L140'></a><a href='#L140'>140</a>
206
- <a name='L141'></a><a href='#L141'>141</a>
207
- <a name='L142'></a><a href='#L142'>142</a>
208
- <a name='L143'></a><a href='#L143'>143</a>
209
- <a name='L144'></a><a href='#L144'>144</a>
210
- <a name='L145'></a><a href='#L145'>145</a>
211
- <a name='L146'></a><a href='#L146'>146</a>
212
- <a name='L147'></a><a href='#L147'>147</a>
213
- <a name='L148'></a><a href='#L148'>148</a>
214
- <a name='L149'></a><a href='#L149'>149</a>
215
- <a name='L150'></a><a href='#L150'>150</a>
216
- <a name='L151'></a><a href='#L151'>151</a>
217
- <a name='L152'></a><a href='#L152'>152</a>
218
- <a name='L153'></a><a href='#L153'>153</a>
219
- <a name='L154'></a><a href='#L154'>154</a>
220
- <a name='L155'></a><a href='#L155'>155</a>
221
- <a name='L156'></a><a href='#L156'>156</a>
222
- <a name='L157'></a><a href='#L157'>157</a>
223
- <a name='L158'></a><a href='#L158'>158</a>
224
- <a name='L159'></a><a href='#L159'>159</a>
225
- <a name='L160'></a><a href='#L160'>160</a>
226
- <a name='L161'></a><a href='#L161'>161</a>
227
- <a name='L162'></a><a href='#L162'>162</a>
228
- <a name='L163'></a><a href='#L163'>163</a>
229
- <a name='L164'></a><a href='#L164'>164</a>
230
- <a name='L165'></a><a href='#L165'>165</a>
231
- <a name='L166'></a><a href='#L166'>166</a>
232
- <a name='L167'></a><a href='#L167'>167</a>
233
- <a name='L168'></a><a href='#L168'>168</a>
234
- <a name='L169'></a><a href='#L169'>169</a>
235
- <a name='L170'></a><a href='#L170'>170</a>
236
- <a name='L171'></a><a href='#L171'>171</a>
237
- <a name='L172'></a><a href='#L172'>172</a>
238
- <a name='L173'></a><a href='#L173'>173</a>
239
- <a name='L174'></a><a href='#L174'>174</a>
240
- <a name='L175'></a><a href='#L175'>175</a>
241
- <a name='L176'></a><a href='#L176'>176</a>
242
- <a name='L177'></a><a href='#L177'>177</a>
243
- <a name='L178'></a><a href='#L178'>178</a>
244
- <a name='L179'></a><a href='#L179'>179</a>
245
- <a name='L180'></a><a href='#L180'>180</a>
246
- <a name='L181'></a><a href='#L181'>181</a>
247
- <a name='L182'></a><a href='#L182'>182</a>
248
- <a name='L183'></a><a href='#L183'>183</a>
249
- <a name='L184'></a><a href='#L184'>184</a>
250
- <a name='L185'></a><a href='#L185'>185</a>
251
- <a name='L186'></a><a href='#L186'>186</a>
252
- <a name='L187'></a><a href='#L187'>187</a>
253
- <a name='L188'></a><a href='#L188'>188</a>
254
- <a name='L189'></a><a href='#L189'>189</a>
255
- <a name='L190'></a><a href='#L190'>190</a>
256
- <a name='L191'></a><a href='#L191'>191</a>
257
- <a name='L192'></a><a href='#L192'>192</a>
258
- <a name='L193'></a><a href='#L193'>193</a>
259
- <a name='L194'></a><a href='#L194'>194</a>
260
- <a name='L195'></a><a href='#L195'>195</a>
261
- <a name='L196'></a><a href='#L196'>196</a>
262
- <a name='L197'></a><a href='#L197'>197</a>
263
- <a name='L198'></a><a href='#L198'>198</a>
264
- <a name='L199'></a><a href='#L199'>199</a>
265
- <a name='L200'></a><a href='#L200'>200</a>
266
- <a name='L201'></a><a href='#L201'>201</a>
267
- <a name='L202'></a><a href='#L202'>202</a>
268
- <a name='L203'></a><a href='#L203'>203</a>
269
- <a name='L204'></a><a href='#L204'>204</a>
270
- <a name='L205'></a><a href='#L205'>205</a>
271
- <a name='L206'></a><a href='#L206'>206</a>
272
- <a name='L207'></a><a href='#L207'>207</a>
273
- <a name='L208'></a><a href='#L208'>208</a>
274
- <a name='L209'></a><a href='#L209'>209</a>
275
- <a name='L210'></a><a href='#L210'>210</a>
276
- <a name='L211'></a><a href='#L211'>211</a>
277
- <a name='L212'></a><a href='#L212'>212</a>
278
- <a name='L213'></a><a href='#L213'>213</a>
279
- <a name='L214'></a><a href='#L214'>214</a>
280
- <a name='L215'></a><a href='#L215'>215</a>
281
- <a name='L216'></a><a href='#L216'>216</a>
282
- <a name='L217'></a><a href='#L217'>217</a>
283
- <a name='L218'></a><a href='#L218'>218</a>
284
- <a name='L219'></a><a href='#L219'>219</a>
285
- <a name='L220'></a><a href='#L220'>220</a>
286
- <a name='L221'></a><a href='#L221'>221</a>
287
- <a name='L222'></a><a href='#L222'>222</a>
288
- <a name='L223'></a><a href='#L223'>223</a>
289
- <a name='L224'></a><a href='#L224'>224</a>
290
- <a name='L225'></a><a href='#L225'>225</a>
291
- <a name='L226'></a><a href='#L226'>226</a>
292
- <a name='L227'></a><a href='#L227'>227</a>
293
- <a name='L228'></a><a href='#L228'>228</a>
294
- <a name='L229'></a><a href='#L229'>229</a>
295
- <a name='L230'></a><a href='#L230'>230</a>
296
- <a name='L231'></a><a href='#L231'>231</a>
297
- <a name='L232'></a><a href='#L232'>232</a>
298
- <a name='L233'></a><a href='#L233'>233</a>
299
- <a name='L234'></a><a href='#L234'>234</a>
300
- <a name='L235'></a><a href='#L235'>235</a>
301
- <a name='L236'></a><a href='#L236'>236</a>
302
- <a name='L237'></a><a href='#L237'>237</a>
303
- <a name='L238'></a><a href='#L238'>238</a>
304
- <a name='L239'></a><a href='#L239'>239</a>
305
- <a name='L240'></a><a href='#L240'>240</a>
306
- <a name='L241'></a><a href='#L241'>241</a>
307
- <a name='L242'></a><a href='#L242'>242</a>
308
- <a name='L243'></a><a href='#L243'>243</a>
309
- <a name='L244'></a><a href='#L244'>244</a>
310
- <a name='L245'></a><a href='#L245'>245</a>
311
- <a name='L246'></a><a href='#L246'>246</a>
312
- <a name='L247'></a><a href='#L247'>247</a>
313
- <a name='L248'></a><a href='#L248'>248</a>
314
- <a name='L249'></a><a href='#L249'>249</a>
315
- <a name='L250'></a><a href='#L250'>250</a>
316
- <a name='L251'></a><a href='#L251'>251</a>
317
- <a name='L252'></a><a href='#L252'>252</a>
318
- <a name='L253'></a><a href='#L253'>253</a>
319
- <a name='L254'></a><a href='#L254'>254</a>
320
- <a name='L255'></a><a href='#L255'>255</a>
321
- <a name='L256'></a><a href='#L256'>256</a>
322
- <a name='L257'></a><a href='#L257'>257</a>
323
- <a name='L258'></a><a href='#L258'>258</a>
324
- <a name='L259'></a><a href='#L259'>259</a>
325
- <a name='L260'></a><a href='#L260'>260</a>
326
- <a name='L261'></a><a href='#L261'>261</a>
327
- <a name='L262'></a><a href='#L262'>262</a>
328
- <a name='L263'></a><a href='#L263'>263</a>
329
- <a name='L264'></a><a href='#L264'>264</a>
330
- <a name='L265'></a><a href='#L265'>265</a>
331
- <a name='L266'></a><a href='#L266'>266</a>
332
- <a name='L267'></a><a href='#L267'>267</a>
333
- <a name='L268'></a><a href='#L268'>268</a>
334
- <a name='L269'></a><a href='#L269'>269</a>
335
- <a name='L270'></a><a href='#L270'>270</a>
336
- <a name='L271'></a><a href='#L271'>271</a>
337
- <a name='L272'></a><a href='#L272'>272</a>
338
- <a name='L273'></a><a href='#L273'>273</a>
339
- <a name='L274'></a><a href='#L274'>274</a>
340
- <a name='L275'></a><a href='#L275'>275</a>
341
- <a name='L276'></a><a href='#L276'>276</a>
342
- <a name='L277'></a><a href='#L277'>277</a>
343
- <a name='L278'></a><a href='#L278'>278</a>
344
- <a name='L279'></a><a href='#L279'>279</a>
345
- <a name='L280'></a><a href='#L280'>280</a>
346
- <a name='L281'></a><a href='#L281'>281</a>
347
- <a name='L282'></a><a href='#L282'>282</a>
348
- <a name='L283'></a><a href='#L283'>283</a>
349
- <a name='L284'></a><a href='#L284'>284</a>
350
- <a name='L285'></a><a href='#L285'>285</a>
351
- <a name='L286'></a><a href='#L286'>286</a>
352
- <a name='L287'></a><a href='#L287'>287</a>
353
- <a name='L288'></a><a href='#L288'>288</a>
354
- <a name='L289'></a><a href='#L289'>289</a>
355
- <a name='L290'></a><a href='#L290'>290</a>
356
- <a name='L291'></a><a href='#L291'>291</a>
357
- <a name='L292'></a><a href='#L292'>292</a>
358
- <a name='L293'></a><a href='#L293'>293</a>
359
- <a name='L294'></a><a href='#L294'>294</a>
360
- <a name='L295'></a><a href='#L295'>295</a>
361
- <a name='L296'></a><a href='#L296'>296</a>
362
- <a name='L297'></a><a href='#L297'>297</a>
363
- <a name='L298'></a><a href='#L298'>298</a>
364
- <a name='L299'></a><a href='#L299'>299</a>
365
- <a name='L300'></a><a href='#L300'>300</a>
366
- <a name='L301'></a><a href='#L301'>301</a>
367
- <a name='L302'></a><a href='#L302'>302</a>
368
- <a name='L303'></a><a href='#L303'>303</a>
369
- <a name='L304'></a><a href='#L304'>304</a>
370
- <a name='L305'></a><a href='#L305'>305</a>
371
- <a name='L306'></a><a href='#L306'>306</a>
372
- <a name='L307'></a><a href='#L307'>307</a>
373
- <a name='L308'></a><a href='#L308'>308</a>
374
- <a name='L309'></a><a href='#L309'>309</a>
375
- <a name='L310'></a><a href='#L310'>310</a>
376
- <a name='L311'></a><a href='#L311'>311</a>
377
- <a name='L312'></a><a href='#L312'>312</a>
378
- <a name='L313'></a><a href='#L313'>313</a>
379
- <a name='L314'></a><a href='#L314'>314</a>
380
- <a name='L315'></a><a href='#L315'>315</a>
381
- <a name='L316'></a><a href='#L316'>316</a>
382
- <a name='L317'></a><a href='#L317'>317</a>
383
- <a name='L318'></a><a href='#L318'>318</a>
384
- <a name='L319'></a><a href='#L319'>319</a>
385
- <a name='L320'></a><a href='#L320'>320</a>
386
- <a name='L321'></a><a href='#L321'>321</a>
387
- <a name='L322'></a><a href='#L322'>322</a>
388
- <a name='L323'></a><a href='#L323'>323</a>
389
- <a name='L324'></a><a href='#L324'>324</a>
390
- <a name='L325'></a><a href='#L325'>325</a>
391
- <a name='L326'></a><a href='#L326'>326</a>
392
- <a name='L327'></a><a href='#L327'>327</a>
393
- <a name='L328'></a><a href='#L328'>328</a>
394
- <a name='L329'></a><a href='#L329'>329</a>
395
- <a name='L330'></a><a href='#L330'>330</a>
396
- <a name='L331'></a><a href='#L331'>331</a>
397
- <a name='L332'></a><a href='#L332'>332</a>
398
- <a name='L333'></a><a href='#L333'>333</a>
399
- <a name='L334'></a><a href='#L334'>334</a>
400
- <a name='L335'></a><a href='#L335'>335</a>
401
- <a name='L336'></a><a href='#L336'>336</a>
402
- <a name='L337'></a><a href='#L337'>337</a>
403
- <a name='L338'></a><a href='#L338'>338</a>
404
- <a name='L339'></a><a href='#L339'>339</a>
405
- <a name='L340'></a><a href='#L340'>340</a>
406
- <a name='L341'></a><a href='#L341'>341</a>
407
- <a name='L342'></a><a href='#L342'>342</a>
408
- <a name='L343'></a><a href='#L343'>343</a>
409
- <a name='L344'></a><a href='#L344'>344</a>
410
- <a name='L345'></a><a href='#L345'>345</a>
411
- <a name='L346'></a><a href='#L346'>346</a>
412
- <a name='L347'></a><a href='#L347'>347</a>
413
- <a name='L348'></a><a href='#L348'>348</a>
414
- <a name='L349'></a><a href='#L349'>349</a>
415
- <a name='L350'></a><a href='#L350'>350</a>
416
- <a name='L351'></a><a href='#L351'>351</a>
417
- <a name='L352'></a><a href='#L352'>352</a>
418
- <a name='L353'></a><a href='#L353'>353</a>
419
- <a name='L354'></a><a href='#L354'>354</a>
420
- <a name='L355'></a><a href='#L355'>355</a>
421
- <a name='L356'></a><a href='#L356'>356</a>
422
- <a name='L357'></a><a href='#L357'>357</a>
423
- <a name='L358'></a><a href='#L358'>358</a>
424
- <a name='L359'></a><a href='#L359'>359</a>
425
- <a name='L360'></a><a href='#L360'>360</a>
426
- <a name='L361'></a><a href='#L361'>361</a>
427
- <a name='L362'></a><a href='#L362'>362</a>
428
- <a name='L363'></a><a href='#L363'>363</a>
429
- <a name='L364'></a><a href='#L364'>364</a>
430
- <a name='L365'></a><a href='#L365'>365</a>
431
- <a name='L366'></a><a href='#L366'>366</a>
432
- <a name='L367'></a><a href='#L367'>367</a>
433
- <a name='L368'></a><a href='#L368'>368</a>
434
- <a name='L369'></a><a href='#L369'>369</a>
435
- <a name='L370'></a><a href='#L370'>370</a>
436
- <a name='L371'></a><a href='#L371'>371</a>
437
- <a name='L372'></a><a href='#L372'>372</a>
438
- <a name='L373'></a><a href='#L373'>373</a>
439
- <a name='L374'></a><a href='#L374'>374</a>
440
- <a name='L375'></a><a href='#L375'>375</a>
441
- <a name='L376'></a><a href='#L376'>376</a>
442
- <a name='L377'></a><a href='#L377'>377</a>
443
- <a name='L378'></a><a href='#L378'>378</a>
444
- <a name='L379'></a><a href='#L379'>379</a>
445
- <a name='L380'></a><a href='#L380'>380</a>
446
- <a name='L381'></a><a href='#L381'>381</a>
447
- <a name='L382'></a><a href='#L382'>382</a>
448
- <a name='L383'></a><a href='#L383'>383</a>
449
- <a name='L384'></a><a href='#L384'>384</a>
450
- <a name='L385'></a><a href='#L385'>385</a>
451
- <a name='L386'></a><a href='#L386'>386</a>
452
- <a name='L387'></a><a href='#L387'>387</a>
453
- <a name='L388'></a><a href='#L388'>388</a>
454
- <a name='L389'></a><a href='#L389'>389</a>
455
- <a name='L390'></a><a href='#L390'>390</a>
456
- <a name='L391'></a><a href='#L391'>391</a>
457
- <a name='L392'></a><a href='#L392'>392</a>
458
- <a name='L393'></a><a href='#L393'>393</a>
459
- <a name='L394'></a><a href='#L394'>394</a>
460
- <a name='L395'></a><a href='#L395'>395</a>
461
- <a name='L396'></a><a href='#L396'>396</a>
462
- <a name='L397'></a><a href='#L397'>397</a>
463
- <a name='L398'></a><a href='#L398'>398</a>
464
- <a name='L399'></a><a href='#L399'>399</a>
465
- <a name='L400'></a><a href='#L400'>400</a>
466
- <a name='L401'></a><a href='#L401'>401</a>
467
- <a name='L402'></a><a href='#L402'>402</a>
468
- <a name='L403'></a><a href='#L403'>403</a>
469
- <a name='L404'></a><a href='#L404'>404</a>
470
- <a name='L405'></a><a href='#L405'>405</a>
471
- <a name='L406'></a><a href='#L406'>406</a>
472
- <a name='L407'></a><a href='#L407'>407</a>
473
- <a name='L408'></a><a href='#L408'>408</a>
474
- <a name='L409'></a><a href='#L409'>409</a>
475
- <a name='L410'></a><a href='#L410'>410</a>
476
- <a name='L411'></a><a href='#L411'>411</a>
477
- <a name='L412'></a><a href='#L412'>412</a>
478
- <a name='L413'></a><a href='#L413'>413</a>
479
- <a name='L414'></a><a href='#L414'>414</a>
480
- <a name='L415'></a><a href='#L415'>415</a>
481
- <a name='L416'></a><a href='#L416'>416</a>
482
- <a name='L417'></a><a href='#L417'>417</a>
483
- <a name='L418'></a><a href='#L418'>418</a>
484
- <a name='L419'></a><a href='#L419'>419</a>
485
- <a name='L420'></a><a href='#L420'>420</a>
486
- <a name='L421'></a><a href='#L421'>421</a>
487
- <a name='L422'></a><a href='#L422'>422</a>
488
- <a name='L423'></a><a href='#L423'>423</a>
489
- <a name='L424'></a><a href='#L424'>424</a>
490
- <a name='L425'></a><a href='#L425'>425</a>
491
- <a name='L426'></a><a href='#L426'>426</a>
492
- <a name='L427'></a><a href='#L427'>427</a>
493
- <a name='L428'></a><a href='#L428'>428</a>
494
- <a name='L429'></a><a href='#L429'>429</a>
495
- <a name='L430'></a><a href='#L430'>430</a>
496
- <a name='L431'></a><a href='#L431'>431</a>
497
- <a name='L432'></a><a href='#L432'>432</a>
498
- <a name='L433'></a><a href='#L433'>433</a>
499
- <a name='L434'></a><a href='#L434'>434</a>
500
- <a name='L435'></a><a href='#L435'>435</a>
501
- <a name='L436'></a><a href='#L436'>436</a>
502
- <a name='L437'></a><a href='#L437'>437</a>
503
- <a name='L438'></a><a href='#L438'>438</a>
504
- <a name='L439'></a><a href='#L439'>439</a>
505
- <a name='L440'></a><a href='#L440'>440</a>
506
- <a name='L441'></a><a href='#L441'>441</a>
507
- <a name='L442'></a><a href='#L442'>442</a>
508
- <a name='L443'></a><a href='#L443'>443</a>
509
- <a name='L444'></a><a href='#L444'>444</a>
510
- <a name='L445'></a><a href='#L445'>445</a>
511
- <a name='L446'></a><a href='#L446'>446</a>
512
- <a name='L447'></a><a href='#L447'>447</a>
513
- <a name='L448'></a><a href='#L448'>448</a>
514
- <a name='L449'></a><a href='#L449'>449</a>
515
- <a name='L450'></a><a href='#L450'>450</a>
516
- <a name='L451'></a><a href='#L451'>451</a>
517
- <a name='L452'></a><a href='#L452'>452</a>
518
- <a name='L453'></a><a href='#L453'>453</a>
519
- <a name='L454'></a><a href='#L454'>454</a>
520
- <a name='L455'></a><a href='#L455'>455</a>
521
- <a name='L456'></a><a href='#L456'>456</a>
522
- <a name='L457'></a><a href='#L457'>457</a>
523
- <a name='L458'></a><a href='#L458'>458</a>
524
- <a name='L459'></a><a href='#L459'>459</a>
525
- <a name='L460'></a><a href='#L460'>460</a>
526
- <a name='L461'></a><a href='#L461'>461</a>
527
- <a name='L462'></a><a href='#L462'>462</a>
528
- <a name='L463'></a><a href='#L463'>463</a>
529
- <a name='L464'></a><a href='#L464'>464</a>
530
- <a name='L465'></a><a href='#L465'>465</a>
531
- <a name='L466'></a><a href='#L466'>466</a>
532
- <a name='L467'></a><a href='#L467'>467</a>
533
- <a name='L468'></a><a href='#L468'>468</a>
534
- <a name='L469'></a><a href='#L469'>469</a>
535
- <a name='L470'></a><a href='#L470'>470</a>
536
- <a name='L471'></a><a href='#L471'>471</a>
537
- <a name='L472'></a><a href='#L472'>472</a>
538
- <a name='L473'></a><a href='#L473'>473</a>
539
- <a name='L474'></a><a href='#L474'>474</a>
540
- <a name='L475'></a><a href='#L475'>475</a>
541
- <a name='L476'></a><a href='#L476'>476</a>
542
- <a name='L477'></a><a href='#L477'>477</a>
543
- <a name='L478'></a><a href='#L478'>478</a>
544
- <a name='L479'></a><a href='#L479'>479</a>
545
- <a name='L480'></a><a href='#L480'>480</a>
546
- <a name='L481'></a><a href='#L481'>481</a>
547
- <a name='L482'></a><a href='#L482'>482</a>
548
- <a name='L483'></a><a href='#L483'>483</a>
549
- <a name='L484'></a><a href='#L484'>484</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">19x</span>
550
- <span class="cline-any cline-neutral">&nbsp;</span>
551
- <span class="cline-any cline-neutral">&nbsp;</span>
552
- <span class="cline-any cline-neutral">&nbsp;</span>
553
- <span class="cline-any cline-neutral">&nbsp;</span>
554
- <span class="cline-any cline-neutral">&nbsp;</span>
555
- <span class="cline-any cline-neutral">&nbsp;</span>
556
- <span class="cline-any cline-yes">19x</span>
557
- <span class="cline-any cline-yes">19x</span>
558
- <span class="cline-any cline-yes">19x</span>
559
- <span class="cline-any cline-yes">19x</span>
560
- <span class="cline-any cline-yes">19x</span>
561
- <span class="cline-any cline-yes">19x</span>
562
- <span class="cline-any cline-yes">19x</span>
563
- <span class="cline-any cline-yes">19x</span>
564
- <span class="cline-any cline-yes">19x</span>
565
- <span class="cline-any cline-yes">19x</span>
566
- <span class="cline-any cline-yes">19x</span>
567
- <span class="cline-any cline-neutral">&nbsp;</span>
568
- <span class="cline-any cline-yes">19x</span>
569
- <span class="cline-any cline-neutral">&nbsp;</span>
570
- <span class="cline-any cline-neutral">&nbsp;</span>
571
- <span class="cline-any cline-yes">19x</span>
572
- <span class="cline-any cline-yes">19x</span>
573
- <span class="cline-any cline-yes">19x</span>
574
- <span class="cline-any cline-yes">19x</span>
575
- <span class="cline-any cline-yes">19x</span>
576
- <span class="cline-any cline-yes">19x</span>
577
- <span class="cline-any cline-yes">19x</span>
578
- <span class="cline-any cline-yes">19x</span>
579
- <span class="cline-any cline-yes">19x</span>
580
- <span class="cline-any cline-yes">19x</span>
581
- <span class="cline-any cline-yes">19x</span>
582
- <span class="cline-any cline-neutral">&nbsp;</span>
583
- <span class="cline-any cline-neutral">&nbsp;</span>
584
- <span class="cline-any cline-neutral">&nbsp;</span>
585
- <span class="cline-any cline-yes">19x</span>
586
- <span class="cline-any cline-yes">19x</span>
587
- <span class="cline-any cline-yes">19x</span>
588
- <span class="cline-any cline-yes">19x</span>
589
- <span class="cline-any cline-yes">19x</span>
590
- <span class="cline-any cline-yes">19x</span>
591
- <span class="cline-any cline-yes">19x</span>
592
- <span class="cline-any cline-yes">19x</span>
593
- <span class="cline-any cline-yes">19x</span>
594
- <span class="cline-any cline-yes">19x</span>
595
- <span class="cline-any cline-yes">19x</span>
596
- <span class="cline-any cline-yes">19x</span>
597
- <span class="cline-any cline-yes">19x</span>
598
- <span class="cline-any cline-neutral">&nbsp;</span>
599
- <span class="cline-any cline-neutral">&nbsp;</span>
600
- <span class="cline-any cline-neutral">&nbsp;</span>
601
- <span class="cline-any cline-neutral">&nbsp;</span>
602
- <span class="cline-any cline-neutral">&nbsp;</span>
603
- <span class="cline-any cline-neutral">&nbsp;</span>
604
- <span class="cline-any cline-neutral">&nbsp;</span>
605
- <span class="cline-any cline-neutral">&nbsp;</span>
606
- <span class="cline-any cline-neutral">&nbsp;</span>
607
- <span class="cline-any cline-neutral">&nbsp;</span>
608
- <span class="cline-any cline-neutral">&nbsp;</span>
609
- <span class="cline-any cline-neutral">&nbsp;</span>
610
- <span class="cline-any cline-neutral">&nbsp;</span>
611
- <span class="cline-any cline-neutral">&nbsp;</span>
612
- <span class="cline-any cline-neutral">&nbsp;</span>
613
- <span class="cline-any cline-neutral">&nbsp;</span>
614
- <span class="cline-any cline-neutral">&nbsp;</span>
615
- <span class="cline-any cline-neutral">&nbsp;</span>
616
- <span class="cline-any cline-neutral">&nbsp;</span>
617
- <span class="cline-any cline-yes">19x</span>
618
- <span class="cline-any cline-yes">27x</span>
619
- <span class="cline-any cline-yes">27x</span>
620
- <span class="cline-any cline-neutral">&nbsp;</span>
621
- <span class="cline-any cline-neutral">&nbsp;</span>
622
- <span class="cline-any cline-neutral">&nbsp;</span>
623
- <span class="cline-any cline-neutral">&nbsp;</span>
624
- <span class="cline-any cline-yes">27x</span>
625
- <span class="cline-any cline-neutral">&nbsp;</span>
626
- <span class="cline-any cline-yes">27x</span>
627
- <span class="cline-any cline-yes">27x</span>
628
- <span class="cline-any cline-yes">27x</span>
629
- <span class="cline-any cline-neutral">&nbsp;</span>
630
- <span class="cline-any cline-neutral">&nbsp;</span>
631
- <span class="cline-any cline-neutral">&nbsp;</span>
632
- <span class="cline-any cline-neutral">&nbsp;</span>
633
- <span class="cline-any cline-yes">2x</span>
634
- <span class="cline-any cline-yes">2x</span>
635
- <span class="cline-any cline-no">&nbsp;</span>
636
- <span class="cline-any cline-neutral">&nbsp;</span>
637
- <span class="cline-any cline-neutral">&nbsp;</span>
638
- <span class="cline-any cline-neutral">&nbsp;</span>
639
- <span class="cline-any cline-yes">2x</span>
640
- <span class="cline-any cline-neutral">&nbsp;</span>
641
- <span class="cline-any cline-yes">2x</span>
642
- <span class="cline-any cline-no">&nbsp;</span>
643
- <span class="cline-any cline-no">&nbsp;</span>
644
- <span class="cline-any cline-neutral">&nbsp;</span>
645
- <span class="cline-any cline-neutral">&nbsp;</span>
646
- <span class="cline-any cline-neutral">&nbsp;</span>
647
- <span class="cline-any cline-yes">2x</span>
648
- <span class="cline-any cline-neutral">&nbsp;</span>
649
- <span class="cline-any cline-neutral">&nbsp;</span>
650
- <span class="cline-any cline-neutral">&nbsp;</span>
651
- <span class="cline-any cline-no">&nbsp;</span>
652
- <span class="cline-any cline-no">&nbsp;</span>
653
- <span class="cline-any cline-no">&nbsp;</span>
654
- <span class="cline-any cline-no">&nbsp;</span>
655
- <span class="cline-any cline-no">&nbsp;</span>
656
- <span class="cline-any cline-no">&nbsp;</span>
657
- <span class="cline-any cline-neutral">&nbsp;</span>
658
- <span class="cline-any cline-no">&nbsp;</span>
659
- <span class="cline-any cline-no">&nbsp;</span>
660
- <span class="cline-any cline-neutral">&nbsp;</span>
661
- <span class="cline-any cline-neutral">&nbsp;</span>
662
- <span class="cline-any cline-neutral">&nbsp;</span>
663
- <span class="cline-any cline-neutral">&nbsp;</span>
664
- <span class="cline-any cline-neutral">&nbsp;</span>
665
- <span class="cline-any cline-neutral">&nbsp;</span>
666
- <span class="cline-any cline-yes">2x</span>
667
- <span class="cline-any cline-yes">2x</span>
668
- <span class="cline-any cline-neutral">&nbsp;</span>
669
- <span class="cline-any cline-yes">2x</span>
670
- <span class="cline-any cline-yes">2x</span>
671
- <span class="cline-any cline-yes">2x</span>
672
- <span class="cline-any cline-yes">2x</span>
673
- <span class="cline-any cline-neutral">&nbsp;</span>
674
- <span class="cline-any cline-no">&nbsp;</span>
675
- <span class="cline-any cline-no">&nbsp;</span>
676
- <span class="cline-any cline-neutral">&nbsp;</span>
677
- <span class="cline-any cline-neutral">&nbsp;</span>
678
- <span class="cline-any cline-neutral">&nbsp;</span>
679
- <span class="cline-any cline-neutral">&nbsp;</span>
680
- <span class="cline-any cline-neutral">&nbsp;</span>
681
- <span class="cline-any cline-neutral">&nbsp;</span>
682
- <span class="cline-any cline-no">&nbsp;</span>
683
- <span class="cline-any cline-no">&nbsp;</span>
684
- <span class="cline-any cline-no">&nbsp;</span>
685
- <span class="cline-any cline-no">&nbsp;</span>
686
- <span class="cline-any cline-no">&nbsp;</span>
687
- <span class="cline-any cline-neutral">&nbsp;</span>
688
- <span class="cline-any cline-no">&nbsp;</span>
689
- <span class="cline-any cline-no">&nbsp;</span>
690
- <span class="cline-any cline-no">&nbsp;</span>
691
- <span class="cline-any cline-neutral">&nbsp;</span>
692
- <span class="cline-any cline-neutral">&nbsp;</span>
693
- <span class="cline-any cline-neutral">&nbsp;</span>
694
- <span class="cline-any cline-no">&nbsp;</span>
695
- <span class="cline-any cline-neutral">&nbsp;</span>
696
- <span class="cline-any cline-neutral">&nbsp;</span>
697
- <span class="cline-any cline-neutral">&nbsp;</span>
698
- <span class="cline-any cline-neutral">&nbsp;</span>
699
- <span class="cline-any cline-neutral">&nbsp;</span>
700
- <span class="cline-any cline-neutral">&nbsp;</span>
701
- <span class="cline-any cline-neutral">&nbsp;</span>
702
- <span class="cline-any cline-yes">19x</span>
703
- <span class="cline-any cline-yes">4x</span>
704
- <span class="cline-any cline-neutral">&nbsp;</span>
705
- <span class="cline-any cline-neutral">&nbsp;</span>
706
- <span class="cline-any cline-neutral">&nbsp;</span>
707
- <span class="cline-any cline-yes">4x</span>
708
- <span class="cline-any cline-yes">1x</span>
709
- <span class="cline-any cline-neutral">&nbsp;</span>
710
- <span class="cline-any cline-neutral">&nbsp;</span>
711
- <span class="cline-any cline-yes">3x</span>
712
- <span class="cline-any cline-yes">1x</span>
713
- <span class="cline-any cline-neutral">&nbsp;</span>
714
- <span class="cline-any cline-neutral">&nbsp;</span>
715
- <span class="cline-any cline-neutral">&nbsp;</span>
716
- <span class="cline-any cline-neutral">&nbsp;</span>
717
- <span class="cline-any cline-yes">2x</span>
718
- <span class="cline-any cline-yes">2x</span>
719
- <span class="cline-any cline-neutral">&nbsp;</span>
720
- <span class="cline-any cline-yes">1x</span>
721
- <span class="cline-any cline-yes">1x</span>
722
- <span class="cline-any cline-neutral">&nbsp;</span>
723
- <span class="cline-any cline-yes">1x</span>
724
- <span class="cline-any cline-neutral">&nbsp;</span>
725
- <span class="cline-any cline-neutral">&nbsp;</span>
726
- <span class="cline-any cline-neutral">&nbsp;</span>
727
- <span class="cline-any cline-yes">1x</span>
728
- <span class="cline-any cline-neutral">&nbsp;</span>
729
- <span class="cline-any cline-neutral">&nbsp;</span>
730
- <span class="cline-any cline-neutral">&nbsp;</span>
731
- <span class="cline-any cline-neutral">&nbsp;</span>
732
- <span class="cline-any cline-neutral">&nbsp;</span>
733
- <span class="cline-any cline-neutral">&nbsp;</span>
734
- <span class="cline-any cline-yes">19x</span>
735
- <span class="cline-any cline-no">&nbsp;</span>
736
- <span class="cline-any cline-neutral">&nbsp;</span>
737
- <span class="cline-any cline-neutral">&nbsp;</span>
738
- <span class="cline-any cline-no">&nbsp;</span>
739
- <span class="cline-any cline-no">&nbsp;</span>
740
- <span class="cline-any cline-neutral">&nbsp;</span>
741
- <span class="cline-any cline-neutral">&nbsp;</span>
742
- <span class="cline-any cline-neutral">&nbsp;</span>
743
- <span class="cline-any cline-neutral">&nbsp;</span>
744
- <span class="cline-any cline-no">&nbsp;</span>
745
- <span class="cline-any cline-neutral">&nbsp;</span>
746
- <span class="cline-any cline-neutral">&nbsp;</span>
747
- <span class="cline-any cline-neutral">&nbsp;</span>
748
- <span class="cline-any cline-neutral">&nbsp;</span>
749
- <span class="cline-any cline-neutral">&nbsp;</span>
750
- <span class="cline-any cline-neutral">&nbsp;</span>
751
- <span class="cline-any cline-neutral">&nbsp;</span>
752
- <span class="cline-any cline-yes">19x</span>
753
- <span class="cline-any cline-yes">32x</span>
754
- <span class="cline-any cline-neutral">&nbsp;</span>
755
- <span class="cline-any cline-neutral">&nbsp;</span>
756
- <span class="cline-any cline-neutral">&nbsp;</span>
757
- <span class="cline-any cline-yes">32x</span>
758
- <span class="cline-any cline-no">&nbsp;</span>
759
- <span class="cline-any cline-neutral">&nbsp;</span>
760
- <span class="cline-any cline-yes">32x</span>
761
- <span class="cline-any cline-neutral">&nbsp;</span>
762
- <span class="cline-any cline-neutral">&nbsp;</span>
763
- <span class="cline-any cline-neutral">&nbsp;</span>
764
- <span class="cline-any cline-yes">19x</span>
765
- <span class="cline-any cline-yes">7x</span>
766
- <span class="cline-any cline-neutral">&nbsp;</span>
767
- <span class="cline-any cline-yes">7x</span>
768
- <span class="cline-any cline-yes">2x</span>
769
- <span class="cline-any cline-neutral">&nbsp;</span>
770
- <span class="cline-any cline-neutral">&nbsp;</span>
771
- <span class="cline-any cline-neutral">&nbsp;</span>
772
- <span class="cline-any cline-neutral">&nbsp;</span>
773
- <span class="cline-any cline-yes">5x</span>
774
- <span class="cline-any cline-yes">5x</span>
775
- <span class="cline-any cline-neutral">&nbsp;</span>
776
- <span class="cline-any cline-neutral">&nbsp;</span>
777
- <span class="cline-any cline-neutral">&nbsp;</span>
778
- <span class="cline-any cline-yes">19x</span>
779
- <span class="cline-any cline-yes">4x</span>
780
- <span class="cline-any cline-neutral">&nbsp;</span>
781
- <span class="cline-any cline-yes">4x</span>
782
- <span class="cline-any cline-neutral">&nbsp;</span>
783
- <span class="cline-any cline-neutral">&nbsp;</span>
784
- <span class="cline-any cline-neutral">&nbsp;</span>
785
- <span class="cline-any cline-yes">2x</span>
786
- <span class="cline-any cline-neutral">&nbsp;</span>
787
- <span class="cline-any cline-neutral">&nbsp;</span>
788
- <span class="cline-any cline-neutral">&nbsp;</span>
789
- <span class="cline-any cline-neutral">&nbsp;</span>
790
- <span class="cline-any cline-yes">2x</span>
791
- <span class="cline-any cline-yes">2x</span>
792
- <span class="cline-any cline-neutral">&nbsp;</span>
793
- <span class="cline-any cline-neutral">&nbsp;</span>
794
- <span class="cline-any cline-neutral">&nbsp;</span>
795
- <span class="cline-any cline-yes">19x</span>
796
- <span class="cline-any cline-yes">3x</span>
797
- <span class="cline-any cline-neutral">&nbsp;</span>
798
- <span class="cline-any cline-yes">3x</span>
799
- <span class="cline-any cline-yes">2x</span>
800
- <span class="cline-any cline-neutral">&nbsp;</span>
801
- <span class="cline-any cline-neutral">&nbsp;</span>
802
- <span class="cline-any cline-neutral">&nbsp;</span>
803
- <span class="cline-any cline-neutral">&nbsp;</span>
804
- <span class="cline-any cline-yes">1x</span>
805
- <span class="cline-any cline-yes">1x</span>
806
- <span class="cline-any cline-neutral">&nbsp;</span>
807
- <span class="cline-any cline-neutral">&nbsp;</span>
808
- <span class="cline-any cline-yes">1x</span>
809
- <span class="cline-any cline-neutral">&nbsp;</span>
810
- <span class="cline-any cline-neutral">&nbsp;</span>
811
- <span class="cline-any cline-neutral">&nbsp;</span>
812
- <span class="cline-any cline-yes">19x</span>
813
- <span class="cline-any cline-yes">12x</span>
814
- <span class="cline-any cline-neutral">&nbsp;</span>
815
- <span class="cline-any cline-yes">12x</span>
816
- <span class="cline-any cline-yes">1x</span>
817
- <span class="cline-any cline-neutral">&nbsp;</span>
818
- <span class="cline-any cline-neutral">&nbsp;</span>
819
- <span class="cline-any cline-neutral">&nbsp;</span>
820
- <span class="cline-any cline-neutral">&nbsp;</span>
821
- <span class="cline-any cline-yes">11x</span>
822
- <span class="cline-any cline-yes">11x</span>
823
- <span class="cline-any cline-yes">11x</span>
824
- <span class="cline-any cline-neutral">&nbsp;</span>
825
- <span class="cline-any cline-yes">11x</span>
826
- <span class="cline-any cline-yes">11x</span>
827
- <span class="cline-any cline-neutral">&nbsp;</span>
828
- <span class="cline-any cline-neutral">&nbsp;</span>
829
- <span class="cline-any cline-yes">11x</span>
830
- <span class="cline-any cline-neutral">&nbsp;</span>
831
- <span class="cline-any cline-yes">2x</span>
832
- <span class="cline-any cline-no">&nbsp;</span>
833
- <span class="cline-any cline-neutral">&nbsp;</span>
834
- <span class="cline-any cline-yes">2x</span>
835
- <span class="cline-any cline-neutral">&nbsp;</span>
836
- <span class="cline-any cline-yes">1x</span>
837
- <span class="cline-any cline-neutral">&nbsp;</span>
838
- <span class="cline-any cline-neutral">&nbsp;</span>
839
- <span class="cline-any cline-neutral">&nbsp;</span>
840
- <span class="cline-any cline-yes">1x</span>
841
- <span class="cline-any cline-neutral">&nbsp;</span>
842
- <span class="cline-any cline-neutral">&nbsp;</span>
843
- <span class="cline-any cline-neutral">&nbsp;</span>
844
- <span class="cline-any cline-yes">1x</span>
845
- <span class="cline-any cline-yes">1x</span>
846
- <span class="cline-any cline-yes">1x</span>
847
- <span class="cline-any cline-neutral">&nbsp;</span>
848
- <span class="cline-any cline-neutral">&nbsp;</span>
849
- <span class="cline-any cline-neutral">&nbsp;</span>
850
- <span class="cline-any cline-neutral">&nbsp;</span>
851
- <span class="cline-any cline-yes">4x</span>
852
- <span class="cline-any cline-no">&nbsp;</span>
853
- <span class="cline-any cline-neutral">&nbsp;</span>
854
- <span class="cline-any cline-neutral">&nbsp;</span>
855
- <span class="cline-any cline-yes">4x</span>
856
- <span class="cline-any cline-yes">3x</span>
857
- <span class="cline-any cline-neutral">&nbsp;</span>
858
- <span class="cline-any cline-neutral">&nbsp;</span>
859
- <span class="cline-any cline-neutral">&nbsp;</span>
860
- <span class="cline-any cline-neutral">&nbsp;</span>
861
- <span class="cline-any cline-yes">3x</span>
862
- <span class="cline-any cline-neutral">&nbsp;</span>
863
- <span class="cline-any cline-neutral">&nbsp;</span>
864
- <span class="cline-any cline-yes">1x</span>
865
- <span class="cline-any cline-yes">1x</span>
866
- <span class="cline-any cline-neutral">&nbsp;</span>
867
- <span class="cline-any cline-yes">4x</span>
868
- <span class="cline-any cline-yes">4x</span>
869
- <span class="cline-any cline-neutral">&nbsp;</span>
870
- <span class="cline-any cline-yes">1x</span>
871
- <span class="cline-any cline-no">&nbsp;</span>
872
- <span class="cline-any cline-yes">1x</span>
873
- <span class="cline-any cline-neutral">&nbsp;</span>
874
- <span class="cline-any cline-yes">1x</span>
875
- <span class="cline-any cline-neutral">&nbsp;</span>
876
- <span class="cline-any cline-neutral">&nbsp;</span>
877
- <span class="cline-any cline-neutral">&nbsp;</span>
878
- <span class="cline-any cline-neutral">&nbsp;</span>
879
- <span class="cline-any cline-yes">1x</span>
880
- <span class="cline-any cline-neutral">&nbsp;</span>
881
- <span class="cline-any cline-neutral">&nbsp;</span>
882
- <span class="cline-any cline-neutral">&nbsp;</span>
883
- <span class="cline-any cline-neutral">&nbsp;</span>
884
- <span class="cline-any cline-no">&nbsp;</span>
885
- <span class="cline-any cline-no">&nbsp;</span>
886
- <span class="cline-any cline-no">&nbsp;</span>
887
- <span class="cline-any cline-neutral">&nbsp;</span>
888
- <span class="cline-any cline-no">&nbsp;</span>
889
- <span class="cline-any cline-no">&nbsp;</span>
890
- <span class="cline-any cline-neutral">&nbsp;</span>
891
- <span class="cline-any cline-no">&nbsp;</span>
892
- <span class="cline-any cline-neutral">&nbsp;</span>
893
- <span class="cline-any cline-neutral">&nbsp;</span>
894
- <span class="cline-any cline-neutral">&nbsp;</span>
895
- <span class="cline-any cline-yes">1x</span>
896
- <span class="cline-any cline-yes">1x</span>
897
- <span class="cline-any cline-neutral">&nbsp;</span>
898
- <span class="cline-any cline-yes">2x</span>
899
- <span class="cline-any cline-no">&nbsp;</span>
900
- <span class="cline-any cline-yes">2x</span>
901
- <span class="cline-any cline-yes">2x</span>
902
- <span class="cline-any cline-yes">1x</span>
903
- <span class="cline-any cline-neutral">&nbsp;</span>
904
- <span class="cline-any cline-neutral">&nbsp;</span>
905
- <span class="cline-any cline-yes">1x</span>
906
- <span class="cline-any cline-no">&nbsp;</span>
907
- <span class="cline-any cline-neutral">&nbsp;</span>
908
- <span class="cline-any cline-yes">1x</span>
909
- <span class="cline-any cline-neutral">&nbsp;</span>
910
- <span class="cline-any cline-neutral">&nbsp;</span>
911
- <span class="cline-any cline-yes">1x</span>
912
- <span class="cline-any cline-yes">1x</span>
913
- <span class="cline-any cline-neutral">&nbsp;</span>
914
- <span class="cline-any cline-yes">2x</span>
915
- <span class="cline-any cline-yes">2x</span>
916
- <span class="cline-any cline-yes">2x</span>
917
- <span class="cline-any cline-neutral">&nbsp;</span>
918
- <span class="cline-any cline-no">&nbsp;</span>
919
- <span class="cline-any cline-neutral">&nbsp;</span>
920
- <span class="cline-any cline-neutral">&nbsp;</span>
921
- <span class="cline-any cline-neutral">&nbsp;</span>
922
- <span class="cline-any cline-yes">9x</span>
923
- <span class="cline-any cline-neutral">&nbsp;</span>
924
- <span class="cline-any cline-neutral">&nbsp;</span>
925
- <span class="cline-any cline-neutral">&nbsp;</span>
926
- <span class="cline-any cline-yes">2x</span>
927
- <span class="cline-any cline-neutral">&nbsp;</span>
928
- <span class="cline-any cline-neutral">&nbsp;</span>
929
- <span class="cline-any cline-neutral">&nbsp;</span>
930
- <span class="cline-any cline-yes">2x</span>
931
- <span class="cline-any cline-yes">2x</span>
932
- <span class="cline-any cline-yes">2x</span>
933
- <span class="cline-any cline-neutral">&nbsp;</span>
934
- <span class="cline-any cline-neutral">&nbsp;</span>
935
- <span class="cline-any cline-yes">11x</span>
936
- <span class="cline-any cline-neutral">&nbsp;</span>
937
- <span class="cline-any cline-neutral">&nbsp;</span>
938
- <span class="cline-any cline-neutral">&nbsp;</span>
939
- <span class="cline-any cline-yes">11x</span>
940
- <span class="cline-any cline-neutral">&nbsp;</span>
941
- <span class="cline-any cline-neutral">&nbsp;</span>
942
- <span class="cline-any cline-neutral">&nbsp;</span>
943
- <span class="cline-any cline-neutral">&nbsp;</span>
944
- <span class="cline-any cline-neutral">&nbsp;</span>
945
- <span class="cline-any cline-neutral">&nbsp;</span>
946
- <span class="cline-any cline-neutral">&nbsp;</span>
947
- <span class="cline-any cline-yes">11x</span>
948
- <span class="cline-any cline-yes">11x</span>
949
- <span class="cline-any cline-neutral">&nbsp;</span>
950
- <span class="cline-any cline-yes">11x</span>
951
- <span class="cline-any cline-neutral">&nbsp;</span>
952
- <span class="cline-any cline-neutral">&nbsp;</span>
953
- <span class="cline-any cline-neutral">&nbsp;</span>
954
- <span class="cline-any cline-yes">19x</span>
955
- <span class="cline-any cline-no">&nbsp;</span>
956
- <span class="cline-any cline-neutral">&nbsp;</span>
957
- <span class="cline-any cline-neutral">&nbsp;</span>
958
- <span class="cline-any cline-no">&nbsp;</span>
959
- <span class="cline-any cline-no">&nbsp;</span>
960
- <span class="cline-any cline-neutral">&nbsp;</span>
961
- <span class="cline-any cline-neutral">&nbsp;</span>
962
- <span class="cline-any cline-no">&nbsp;</span>
963
- <span class="cline-any cline-neutral">&nbsp;</span>
964
- <span class="cline-any cline-neutral">&nbsp;</span>
965
- <span class="cline-any cline-neutral">&nbsp;</span>
966
- <span class="cline-any cline-neutral">&nbsp;</span>
967
- <span class="cline-any cline-yes">19x</span>
968
- <span class="cline-any cline-yes">2x</span>
969
- <span class="cline-any cline-neutral">&nbsp;</span>
970
- <span class="cline-any cline-yes">2x</span>
971
- <span class="cline-any cline-yes">1x</span>
972
- <span class="cline-any cline-neutral">&nbsp;</span>
973
- <span class="cline-any cline-neutral">&nbsp;</span>
974
- <span class="cline-any cline-neutral">&nbsp;</span>
975
- <span class="cline-any cline-neutral">&nbsp;</span>
976
- <span class="cline-any cline-yes">1x</span>
977
- <span class="cline-any cline-yes">1x</span>
978
- <span class="cline-any cline-neutral">&nbsp;</span>
979
- <span class="cline-any cline-neutral">&nbsp;</span>
980
- <span class="cline-any cline-neutral">&nbsp;</span>
981
- <span class="cline-any cline-neutral">&nbsp;</span>
982
- <span class="cline-any cline-no">&nbsp;</span>
983
- <span class="cline-any cline-no">&nbsp;</span>
984
- <span class="cline-any cline-no">&nbsp;</span>
985
- <span class="cline-any cline-neutral">&nbsp;</span>
986
- <span class="cline-any cline-neutral">&nbsp;</span>
987
- <span class="cline-any cline-neutral">&nbsp;</span>
988
- <span class="cline-any cline-neutral">&nbsp;</span>
989
- <span class="cline-any cline-neutral">&nbsp;</span>
990
- <span class="cline-any cline-no">&nbsp;</span>
991
- <span class="cline-any cline-no">&nbsp;</span>
992
- <span class="cline-any cline-no">&nbsp;</span>
993
- <span class="cline-any cline-neutral">&nbsp;</span>
994
- <span class="cline-any cline-no">&nbsp;</span>
995
- <span class="cline-any cline-neutral">&nbsp;</span>
996
- <span class="cline-any cline-neutral">&nbsp;</span>
997
- <span class="cline-any cline-neutral">&nbsp;</span>
998
- <span class="cline-any cline-neutral">&nbsp;</span>
999
- <span class="cline-any cline-no">&nbsp;</span>
1000
- <span class="cline-any cline-neutral">&nbsp;</span>
1001
- <span class="cline-any cline-no">&nbsp;</span>
1002
- <span class="cline-any cline-no">&nbsp;</span>
1003
- <span class="cline-any cline-neutral">&nbsp;</span>
1004
- <span class="cline-any cline-neutral">&nbsp;</span>
1005
- <span class="cline-any cline-neutral">&nbsp;</span>
1006
- <span class="cline-any cline-no">&nbsp;</span>
1007
- <span class="cline-any cline-no">&nbsp;</span>
1008
- <span class="cline-any cline-neutral">&nbsp;</span>
1009
- <span class="cline-any cline-neutral">&nbsp;</span>
1010
- <span class="cline-any cline-neutral">&nbsp;</span>
1011
- <span class="cline-any cline-no">&nbsp;</span>
1012
- <span class="cline-any cline-no">&nbsp;</span>
1013
- <span class="cline-any cline-neutral">&nbsp;</span>
1014
- <span class="cline-any cline-no">&nbsp;</span>
1015
- <span class="cline-any cline-neutral">&nbsp;</span>
1016
- <span class="cline-any cline-neutral">&nbsp;</span>
1017
- <span class="cline-any cline-neutral">&nbsp;</span>
1018
- <span class="cline-any cline-neutral">&nbsp;</span>
1019
- <span class="cline-any cline-neutral">&nbsp;</span>
1020
- <span class="cline-any cline-no">&nbsp;</span>
1021
- <span class="cline-any cline-neutral">&nbsp;</span>
1022
- <span class="cline-any cline-neutral">&nbsp;</span>
1023
- <span class="cline-any cline-neutral">&nbsp;</span>
1024
- <span class="cline-any cline-neutral">&nbsp;</span>
1025
- <span class="cline-any cline-neutral">&nbsp;</span>
1026
- <span class="cline-any cline-neutral">&nbsp;</span>
1027
- <span class="cline-any cline-no">&nbsp;</span>
1028
- <span class="cline-any cline-neutral">&nbsp;</span>
1029
- <span class="cline-any cline-no">&nbsp;</span>
1030
- <span class="cline-any cline-neutral">&nbsp;</span>
1031
- <span class="cline-any cline-neutral">&nbsp;</span>
1032
- <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import {
1033
- Injectable,
1034
- NotFoundException,
1035
- BadRequestException,
1036
- Logger,
1037
- InternalServerErrorException,
1038
- } from '@nestjs/common';
1039
- import { InjectRepository } from '@nestjs/typeorm';
1040
- import { Repository } from 'typeorm';
1041
- import * as fs from 'fs/promises';
1042
- import * as path from 'path';
1043
- import { AIAction, SessionInput, ExecutionLog } from '../core-entities';
1044
- import { ExecutionLogsService } from '../execution-logs/execution-logs.service';
1045
- import { Trace } from '../utils';
1046
- import { EventsGateway } from '../events/events.gateway';
1047
- import { exec } from 'child_process';
1048
- import { promisify } from 'util';
1049
- import * as crypto from 'crypto';
1050
- &nbsp;
1051
- const execAsync = promisify(exec);
1052
- &nbsp;
1053
- // Enum for AIAction statuses to avoid magic strings
1054
- export enum AIActionStatus {
1055
- PROPOSED = 'proposed',
1056
- AWAITING_CONTEXT = 'awaiting_context',
1057
- AWAITING_HANDOVER = 'awaiting_handover',
1058
- APPROVED_FOR_APPLY = 'approved_for_apply',
1059
- REJECTED_BEFORE_APPLY = 'rejected_before_apply',
1060
- APPLIED_PENDING_REVIEW = 'applied_pending_review',
1061
- CONFIRMED_KEPT = 'confirmed_kept',
1062
- CONFIRMED_REVERTED = 'confirmed_reverted',
1063
- EXECUTION_FAILED = 'execution_failed',
1064
- REVERT_FAILED = 'revert_failed',
1065
- }
1066
- &nbsp;
1067
- // Re-introduced from the old parser module to fix test breakages
1068
- export enum AIActionType {
1069
- CREATE_FILE = 'create_file',
1070
- OVERWRITE_FILE = 'overwrite_file',
1071
- DELETE_FILE = 'delete_file',
1072
- RUN_COMMAND = 'run_command',
1073
- REQUEST_CONTEXT = 'request_context',
1074
- FINAL = 'final',
1075
- QUICK_EDIT = 'quick_edit',
1076
- APPLY_DIFF = 'apply_diff',
1077
- PATCH = 'patch',
1078
- NEW_SESSION = 'new_session',
1079
- WRITE_TODO = 'write_todo',
1080
- EXECUTE_CODE = 'execute_code',
1081
- }
1082
- &nbsp;
1083
- export interface ActionResult {
1084
- action_id: string;
1085
- status: string;
1086
- logs: ExecutionLog[];
1087
- }
1088
- &nbsp;
1089
- export interface DiscardedActionInfo {
1090
- action_id: string;
1091
- status: string; // Should always be 'rejected_before_apply'
1092
- }
1093
- &nbsp;
1094
- export interface ConfirmedActionInfo {
1095
- action_id: string;
1096
- status: string; // Should always be 'confirmed_kept'
1097
- }
1098
- &nbsp;
1099
- @Injectable()
1100
- export class AIActionsService {
1101
- private readonly logger = new Logger(AIActionsService.name);
1102
- private readonly projectRoot: string =
1103
- process.env.REPOBURG_PROJECT_PATH || process.cwd();
1104
- &nbsp;
1105
- constructor(
1106
- @InjectRepository(AIAction)
1107
- private aiActionsRepository: Repository&lt;AIAction&gt;,
1108
- @InjectRepository(SessionInput) // To verify inputId existence
1109
- private sessionInputsRepository: Repository&lt;SessionInput&gt;,
1110
- private executionLogsService: ExecutionLogsService,
1111
- private readonly eventsGateway: EventsGateway,
1112
- ) {}
1113
- &nbsp;
1114
- // --- Start of Consolidated Logic from ActionExecutionService ---
1115
- private resolveAndValidatePath(unsafePath: string): string {
1116
- const normalizedPath = path.normalize(unsafePath);
1117
- <span class="missing-if-branch" title="if path not taken" >I</span>if (path.isAbsolute(normalizedPath)) {
1118
- <span class="cstat-no" title="statement not covered" > throw new BadRequestException(</span>
1119
- `Absolute paths are not allowed: ${unsafePath}`,
1120
- );
1121
- }
1122
- const resolvedPath = path.resolve(this.projectRoot, normalizedPath);
1123
- &nbsp;
1124
- <span class="missing-if-branch" title="if path not taken" >I</span>if (!resolvedPath.startsWith(this.projectRoot)) {
1125
- <span class="cstat-no" title="statement not covered" > this.logger.warn(`Path traversal attempt detected: ${unsafePath}`);</span>
1126
- <span class="cstat-no" title="statement not covered" > throw new BadRequestException(</span>
1127
- `Path traversal is not allowed. Access denied for path: ${unsafePath}`,
1128
- );
1129
- }
1130
- return resolvedPath;
1131
- }
1132
- &nbsp;
1133
- private <span class="fstat-no" title="function not covered" >async </span>createFile(filePath: string, content: string): Promise&lt;void&gt; {
1134
- const safePath = <span class="cstat-no" title="statement not covered" >this.resolveAndValidatePath(filePath);</span>
1135
- const dir = <span class="cstat-no" title="statement not covered" >path.dirname(safePath);</span>
1136
- <span class="cstat-no" title="statement not covered" > try {</span>
1137
- <span class="cstat-no" title="statement not covered" > await fs.mkdir(dir, { recursive: true });</span>
1138
- <span class="cstat-no" title="statement not covered" > await fs.writeFile(safePath, content, 'utf8');</span>
1139
- <span class="cstat-no" title="statement not covered" > this.logger.log(`Created file: ${safePath}`);</span>
1140
- } catch (error) {
1141
- <span class="cstat-no" title="statement not covered" > this.logger.error(`Error creating file ${safePath}: ${error.message}`);</span>
1142
- <span class="cstat-no" title="statement not covered" > throw new InternalServerErrorException(</span>
1143
- `Failed to create file "${filePath}": ${error.message}`,
1144
- );
1145
- }
1146
- }
1147
- &nbsp;
1148
- private async editFile(filePath: string, newContent: string): Promise&lt;void&gt; {
1149
- const safePath = this.resolveAndValidatePath(filePath);
1150
- try {
1151
- // For edit, ensure directory exists, then write. This handles cases where edit implies creation.
1152
- const dir = path.dirname(safePath);
1153
- await fs.mkdir(dir, { recursive: true });
1154
- await fs.writeFile(safePath, newContent, 'utf8');
1155
- this.logger.log(`Edited file: ${safePath}`);
1156
- } catch (error) {
1157
- <span class="cstat-no" title="statement not covered" > this.logger.error(`Error editing file ${safePath}: ${error.message}`);</span>
1158
- <span class="cstat-no" title="statement not covered" > throw new InternalServerErrorException(</span>
1159
- `Failed to edit file "${filePath}": ${error.message}`,
1160
- );
1161
- }
1162
- }
1163
- &nbsp;
1164
- private <span class="fstat-no" title="function not covered" >async </span>deleteFile(filePath: string): Promise&lt;void&gt; {
1165
- const safePath = <span class="cstat-no" title="statement not covered" >this.resolveAndValidatePath(filePath);</span>
1166
- <span class="cstat-no" title="statement not covered" > try {</span>
1167
- <span class="cstat-no" title="statement not covered" > await fs.access(safePath); </span>// Check if file exists
1168
- <span class="cstat-no" title="statement not covered" > await fs.unlink(safePath);</span>
1169
- <span class="cstat-no" title="statement not covered" > this.logger.log(`Deleted file: ${safePath}`);</span>
1170
- } catch (error) {
1171
- <span class="cstat-no" title="statement not covered" > this.logger.error(`Error deleting file ${safePath}: ${error.message}`);</span>
1172
- <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (error.code === 'ENOENT') {</span>
1173
- <span class="cstat-no" title="statement not covered" > throw new NotFoundException(</span>
1174
- `File not found, cannot delete: "${filePath}"`,
1175
- );
1176
- }
1177
- <span class="cstat-no" title="statement not covered" > throw new InternalServerErrorException(</span>
1178
- `Failed to delete file "${filePath}": ${error.message}`,
1179
- );
1180
- }
1181
- }
1182
- // --- End of Consolidated Logic ---
1183
- &nbsp;
1184
- @Trace()
1185
- async revertToStudioState(inputId: string): Promise&lt;void&gt; {
1186
- const sessionInput = await this.sessionInputsRepository.findOneBy({
1187
- id: inputId,
1188
- });
1189
- &nbsp;
1190
- if (!sessionInput) {
1191
- throw new NotFoundException(`SessionInput with ID ${inputId} not found.`);
1192
- }
1193
- &nbsp;
1194
- if (!sessionInput.raw_studio_request_body) {
1195
- throw new BadRequestException(
1196
- 'No raw studio state available to revert to for this turn.',
1197
- );
1198
- }
1199
- &nbsp;
1200
- try {
1201
- const requestBody = JSON.parse(sessionInput.raw_studio_request_body);
1202
- &nbsp;
1203
- this.logger.log(`Broadcasting 'update-chat' event for input ${inputId}`);
1204
- this.eventsGateway.sendToAll('update-chat', { requestBody });
1205
- } catch (error) {
1206
- this.logger.error(
1207
- `Failed to parse and broadcast stored studio state for input ${inputId}`,
1208
- error,
1209
- );
1210
- throw new InternalServerErrorException(
1211
- 'Failed to parse stored studio state.',
1212
- );
1213
- }
1214
- }
1215
- &nbsp;
1216
- @Trace()
1217
- <span class="fstat-no" title="function not covered" > async </span>findAllByInputId(inputId: string): Promise&lt;AIAction[]&gt; {
1218
- const sessionInput = <span class="cstat-no" title="statement not covered" >await this.sessionInputsRepository.findOneBy({</span>
1219
- id: inputId,
1220
- });
1221
- <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (!sessionInput) {</span>
1222
- <span class="cstat-no" title="statement not covered" > throw new NotFoundException(</span>
1223
- `SessionInput with ID "${inputId}" not found. Cannot retrieve actions.`,
1224
- );
1225
- }
1226
- &nbsp;
1227
- <span class="cstat-no" title="statement not covered" > return this.aiActionsRepository.find({</span>
1228
- where: { input_id: inputId },
1229
- order: { order_of_execution: 'ASC', created_at: 'ASC' },
1230
- relations: ['executionLogs'],
1231
- });
1232
- }
1233
- &nbsp;
1234
- @Trace()
1235
- async findOne(actionId: string): Promise&lt;AIAction&gt; {
1236
- const action = await this.aiActionsRepository.findOne({
1237
- where: { id: actionId },
1238
- relations: ['executionLogs'],
1239
- });
1240
- <span class="missing-if-branch" title="if path not taken" >I</span>if (!action) {
1241
- <span class="cstat-no" title="statement not covered" > throw new NotFoundException(`AIAction with ID "${actionId}" not found`);</span>
1242
- }
1243
- return action;
1244
- }
1245
- &nbsp;
1246
- @Trace()
1247
- async approveAction(actionId: string): Promise&lt;AIAction&gt; {
1248
- const action = await this.findOne(actionId);
1249
- &nbsp;
1250
- if (action.status !== AIActionStatus.PROPOSED) {
1251
- throw new BadRequestException(
1252
- `Action with ID "${actionId}" cannot be approved. Status is "${action.status}", but must be "${AIActionStatus.PROPOSED}".`,
1253
- );
1254
- }
1255
- &nbsp;
1256
- action.status = AIActionStatus.APPROVED_FOR_APPLY;
1257
- return this.aiActionsRepository.save(action);
1258
- }
1259
- &nbsp;
1260
- @Trace()
1261
- async discardAction(actionId: string): Promise&lt;AIAction&gt; {
1262
- const action = await this.findOne(actionId);
1263
- &nbsp;
1264
- if (
1265
- action.status !== AIActionStatus.PROPOSED &amp;&amp;
1266
- action.status !== AIActionStatus.APPROVED_FOR_APPLY
1267
- ) {
1268
- throw new BadRequestException(
1269
- `Action with ID "${actionId}" cannot be discarded. Status is "${action.status}", but must be "${AIActionStatus.PROPOSED}" or "${AIActionStatus.APPROVED_FOR_APPLY}".`,
1270
- );
1271
- }
1272
- &nbsp;
1273
- action.status = AIActionStatus.REJECTED_BEFORE_APPLY;
1274
- return this.aiActionsRepository.save(action);
1275
- }
1276
- &nbsp;
1277
- @Trace()
1278
- async confirmKeepAction(actionId: string): Promise&lt;AIAction&gt; {
1279
- const action = await this.findOne(actionId);
1280
- &nbsp;
1281
- if (action.status !== AIActionStatus.APPLIED_PENDING_REVIEW) {
1282
- throw new BadRequestException(
1283
- `Action with ID "${actionId}" cannot be confirmed. Status is "${action.status}", but must be "${AIActionStatus.APPLIED_PENDING_REVIEW}".`,
1284
- );
1285
- }
1286
- &nbsp;
1287
- action.status = AIActionStatus.CONFIRMED_KEPT;
1288
- this.logger.log(
1289
- `Action ID ${actionId} confirmed kept. Status: ${action.status}`,
1290
- );
1291
- return this.aiActionsRepository.save(action);
1292
- }
1293
- &nbsp;
1294
- @Trace()
1295
- async revertAction(actionId: string): Promise&lt;AIAction&gt; {
1296
- const action = await this.findOne(actionId); // findOne already loads executionLogs
1297
- &nbsp;
1298
- if (action.status !== AIActionStatus.APPLIED_PENDING_REVIEW) {
1299
- throw new BadRequestException(
1300
- `Action with ID "${actionId}" cannot be reverted. Status is "${action.status}", but must be "${AIActionStatus.APPLIED_PENDING_REVIEW}".`,
1301
- );
1302
- }
1303
- &nbsp;
1304
- let revertSucceeded = false;
1305
- let revertOutcomeMessage = `Reverting action type: ${action.action_type}`;
1306
- let errorDetails: string | undefined = undefined;
1307
- &nbsp;
1308
- try {
1309
- this.logger.log(
1310
- `Attempting to revert action ID ${action.id}, type ${action.action_type}`,
1311
- );
1312
- switch (action.action_type) {
1313
- case 'quick_edit':
1314
- <span class="missing-if-branch" title="if path not taken" >I</span>if (!action.file_path) {
1315
- <span class="cstat-no" title="statement not covered" > throw new Error('Missing file_path for quick_edit revert.');</span>
1316
- }
1317
- if (action.original_content_for_revert === null) {
1318
- // This is an invalid state for quick_edit, which always acts on existing files.
1319
- throw new Error(
1320
- 'Invalid state: quick_edit action is missing original content for revert.',
1321
- );
1322
- }
1323
- await this.editFile(
1324
- action.file_path,
1325
- action.original_content_for_revert,
1326
- );
1327
- revertOutcomeMessage = `File "${action.file_path}" content reverted from quick_edit.`;
1328
- revertSucceeded = true;
1329
- break;
1330
- case 'overwrite_file':
1331
- case 'apply_diff':
1332
- case 'patch':
1333
- case 'write_todo':
1334
- <span class="missing-if-branch" title="if path not taken" >I</span>if (!action.file_path)
1335
- <span class="cstat-no" title="statement not covered" > throw new Error(</span>
1336
- `Missing file_path for ${action.action_type} revert.`,
1337
- );
1338
- if (action.original_content_for_revert !== null) {
1339
- await this.editFile(
1340
- // Use editFile to restore; this will ensure directory exists
1341
- action.file_path,
1342
- action.original_content_for_revert,
1343
- );
1344
- revertOutcomeMessage = `File "${action.file_path}" content reverted to original.`;
1345
- } else {
1346
- // Original content was null, implies file was created by 'overwrite' or 'apply_diff'. Revert by deleting.
1347
- await this.deleteFile(action.file_path);
1348
- revertOutcomeMessage = `File "${action.file_path}" (created by ${action.action_type}) was deleted.`;
1349
- }
1350
- revertSucceeded = true;
1351
- break;
1352
- case 'delete_file':
1353
- <span class="missing-if-branch" title="if path not taken" >I</span>if (!action.file_path)
1354
- <span class="cstat-no" title="statement not covered" > throw new Error('Missing file_path for delete_file revert.');</span>
1355
- if (action.original_content_for_revert !== null) {
1356
- // If there was original content, recreate file with it.
1357
- await this.createFile(
1358
- // Use createFile to restore; this will ensure directory exists
1359
- action.file_path,
1360
- action.original_content_for_revert,
1361
- );
1362
- revertOutcomeMessage = `Deleted file "${action.file_path}" restored with original content.`;
1363
- } else <span class="missing-if-branch" title="else path not taken" >E</span>{
1364
- // If original_content_for_revert is null, it implies an empty or non-existent file was deleted.
1365
- // Reverting means ensuring it remains non-existent.
1366
- // Attempt to delete (might fail if already gone, which is fine).
1367
- <span class="cstat-no" title="statement not covered" > try {</span>
1368
- <span class="cstat-no" title="statement not covered" > await this.deleteFile(action.file_path);</span>
1369
- <span class="cstat-no" title="statement not covered" > revertOutcomeMessage = `Ensured file "${action.file_path}" (originally non-existent or empty) remains deleted.`;</span>
1370
- } catch (e) {
1371
- <span class="cstat-no" title="statement not covered" > if (e instanceof NotFoundException) {</span>
1372
- <span class="cstat-no" title="statement not covered" > revertOutcomeMessage = `File "${action.file_path}" was already non-existent as expected for revert.`;</span>
1373
- } else {
1374
- <span class="cstat-no" title="statement not covered" > throw e; </span>// Re-throw other errors
1375
- }
1376
- }
1377
- }
1378
- revertSucceeded = true;
1379
- break;
1380
- case 'create_file':
1381
- <span class="missing-if-branch" title="if path not taken" >I</span>if (!action.file_path)
1382
- <span class="cstat-no" title="statement not covered" > throw new Error('Missing file_path for create_file revert.');</span>
1383
- try {
1384
- await this.deleteFile(action.file_path);
1385
- revertOutcomeMessage = `Created file "${action.file_path}" deleted.`;
1386
- } catch (e) {
1387
- // If file not found, it's already "reverted" in a sense
1388
- <span class="missing-if-branch" title="if path not taken" >I</span>if (e instanceof NotFoundException) {
1389
- <span class="cstat-no" title="statement not covered" > revertOutcomeMessage = `Created file "${action.file_path}" was already deleted/not found.`;</span>
1390
- } else {
1391
- throw e; // Re-throw other errors
1392
- }
1393
- }
1394
- revertSucceeded = true;
1395
- break;
1396
- case 'run_command':
1397
- revertOutcomeMessage = `Command "${action.command_string}" cannot be automatically reverted.`;
1398
- revertSucceeded = false; // Explicitly false as it's not truly reverted
1399
- break;
1400
- <span class="branch-8 cbranch-no" title="branch not covered" > default:</span>
1401
- <span class="cstat-no" title="statement not covered" > throw new Error(</span>
1402
- `Unsupported action_type for revert: "${action.action_type}"`,
1403
- );
1404
- }
1405
- this.logger.log(
1406
- `Revert attempt for action ID ${action.id} resulted in success: ${revertSucceeded}. Message: ${revertOutcomeMessage}`,
1407
- );
1408
- } catch (error) {
1409
- this.logger.error(
1410
- `Failed to revert action ID ${action.id}: ${error.message}`,
1411
- error.stack,
1412
- );
1413
- revertOutcomeMessage = `Failed to revert action: ${error.message}`;
1414
- errorDetails = error.message;
1415
- revertSucceeded = false;
1416
- }
1417
- &nbsp;
1418
- action.status = revertSucceeded
1419
- ? AIActionStatus.CONFIRMED_REVERTED
1420
- : AIActionStatus.REVERT_FAILED;
1421
- &nbsp;
1422
- const log = await this.executionLogsService.createLog({
1423
- action_id: action.id,
1424
- output: revertSucceeded ? revertOutcomeMessage : undefined,
1425
- error_message: !revertSucceeded
1426
- ? errorDetails || revertOutcomeMessage
1427
- : undefined,
1428
- });
1429
- &nbsp;
1430
- action.executionLogs = [...(action.executionLogs || <span class="branch-1 cbranch-no" title="branch not covered" >[])</span>, log];
1431
- await this.aiActionsRepository.save(action);
1432
- &nbsp;
1433
- return action;
1434
- }
1435
- &nbsp;
1436
- @Trace()
1437
- <span class="fstat-no" title="function not covered" > async </span>deleteAllByInputId(inputId: string): Promise&lt;void&gt; {
1438
- const actions = <span class="cstat-no" title="statement not covered" >await this.aiActionsRepository.find({</span>
1439
- where: { input_id: inputId },
1440
- });
1441
- <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (actions.length &gt; 0) {</span>
1442
- <span class="cstat-no" title="statement not covered" > this.logger.log(</span>
1443
- `Deleting ${actions.length} actions for input ID ${inputId}`,
1444
- );
1445
- <span class="cstat-no" title="statement not covered" > await this.aiActionsRepository.remove(actions);</span>
1446
- }
1447
- }
1448
- &nbsp;
1449
- @Trace()
1450
- async reExecuteAction(actionId: string): Promise&lt;AIAction&gt; {
1451
- const action = await this.findOne(actionId);
1452
- &nbsp;
1453
- if (action.action_type !== AIActionType.EXECUTE_CODE) {
1454
- throw new BadRequestException(
1455
- `Action with ID "${actionId}" is not of type EXECUTE_CODE. Only code execution actions can be re-run.`,
1456
- );
1457
- }
1458
- &nbsp;
1459
- if (!action.content) {
1460
- throw new BadRequestException(
1461
- `Action with ID "${actionId}" has no content (code) to execute.`,
1462
- );
1463
- }
1464
- &nbsp;
1465
- const tempDir = <span class="cstat-no" title="statement not covered" >path.join(this.projectRoot, '.repoburg', 'temp');</span>
1466
- const randomId = <span class="cstat-no" title="statement not covered" >crypto.randomBytes(8).toString('hex');</span>
1467
- const tempFilePath = <span class="cstat-no" title="statement not covered" >path.join(tempDir, `exec-rerun-${randomId}.ts`);</span>
1468
- &nbsp;
1469
- let unifiedOutput: string;
1470
- // let executionStatus = 'SUCCESS'; // Unused
1471
- let errorDetails: string | undefined;
1472
- &nbsp;
1473
- <span class="cstat-no" title="statement not covered" > try {</span>
1474
- <span class="cstat-no" title="statement not covered" > await fs.mkdir(tempDir, { recursive: true });</span>
1475
- <span class="cstat-no" title="statement not covered" > await fs.writeFile(tempFilePath, action.content, 'utf-8');</span>
1476
- &nbsp;
1477
- const { stdout, stderr } = <span class="cstat-no" title="statement not covered" >await execAsync(`npx tsx "${tempFilePath}"`, {</span>
1478
- cwd: this.projectRoot,
1479
- maxBuffer: 10 * 1024 * 1024,
1480
- timeout: 30000, // 30 seconds timeout
1481
- });
1482
- <span class="cstat-no" title="statement not covered" > unifiedOutput = stdout || stderr || '(Script produced no output)';</span>
1483
- } catch (error) {
1484
- const execError = <span class="cstat-no" title="statement not covered" >error as any;</span>
1485
- <span class="cstat-no" title="statement not covered" > unifiedOutput = `EXECUTION FAILED: ${execError.message}\n\nSTDOUT:\n${</span>
1486
- execError.stdout || 'N/A'
1487
- }\n\nSTDERR:\n${execError.stderr || 'N/A'}`;
1488
- // executionStatus = 'FAILURE';
1489
- <span class="cstat-no" title="statement not covered" > errorDetails = execError.message;</span>
1490
- <span class="cstat-no" title="statement not covered" > this.logger.error(</span>
1491
- `Error re-executing code action ${actionId}: ${unifiedOutput}`,
1492
- );
1493
- } finally {
1494
- <span class="cstat-no" title="statement not covered" > try {</span>
1495
- <span class="cstat-no" title="statement not covered" > await fs.unlink(tempFilePath);</span>
1496
- } catch (cleanupErr) {
1497
- <span class="cstat-no" title="statement not covered" > this.logger.warn(</span>
1498
- `Failed to delete temp file ${tempFilePath}: ${cleanupErr}`,
1499
- );
1500
- }
1501
- }
1502
- &nbsp;
1503
- const log = <span class="cstat-no" title="statement not covered" >await this.executionLogsService.createLog({</span>
1504
- action_id: action.id,
1505
- output: unifiedOutput,
1506
- error_message: errorDetails,
1507
- });
1508
- &nbsp;
1509
- // Refresh action with new logs
1510
- <span class="cstat-no" title="statement not covered" > action.executionLogs = [...(action.executionLogs || []), log];</span>
1511
- &nbsp;
1512
- <span class="cstat-no" title="statement not covered" > return action;</span>
1513
- }
1514
- }
1515
- &nbsp;</pre></td></tr></table></pre>
1516
-
1517
- <div class='push'></div><!-- for sticky footer -->
1518
- </div><!-- /wrapper -->
1519
- <div class='footer quiet pad2 space-top1 center small'>
1520
- Code coverage generated by
1521
- <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
1522
- at 2026-05-09T01:03:45.353Z
1523
- </div>
1524
- <script src="../../prettify.js"></script>
1525
- <script>
1526
- window.onload = function () {
1527
- prettyPrint();
1528
- };
1529
- </script>
1530
- <script src="../../sorter.js"></script>
1531
- <script src="../../block-navigation.js"></script>
1532
- </body>
1533
- </html>
1534
-