repoburg 1.3.148 → 1.3.150

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 (515) hide show
  1. package/backend/dist/src/core-entities/session.entity.d.ts +1 -0
  2. package/backend/dist/src/core-entities/session.entity.js +8 -0
  3. package/backend/dist/src/core-entities/session.entity.js.map +1 -1
  4. package/backend/dist/src/interactive-chat/chat.service.js +9 -0
  5. package/backend/dist/src/interactive-chat/chat.service.js.map +1 -1
  6. package/backend/dist/src/main.js +3 -0
  7. package/backend/dist/src/main.js.map +1 -1
  8. package/backend/dist/src/sessions/dto/session.dto.d.ts +1 -0
  9. package/backend/dist/src/sessions/dto/session.dto.js +9 -0
  10. package/backend/dist/src/sessions/dto/session.dto.js.map +1 -1
  11. package/backend/dist/src/sessions/sessions.service.d.ts +1 -0
  12. package/backend/dist/src/sessions/sessions.service.js +7 -0
  13. package/backend/dist/src/sessions/sessions.service.js.map +1 -1
  14. package/backend/dist/src/sub-agents/sub-agent-runner.service.js +17 -0
  15. package/backend/dist/src/sub-agents/sub-agent-runner.service.js.map +1 -1
  16. package/backend/dist/tsconfig.build.tsbuildinfo +1 -1
  17. package/package.json +1 -1
  18. package/.claude/settings.local.json +0 -7
  19. package/.playwright-mcp/console-2026-05-12T09-54-31-560Z.log +0 -13
  20. package/.playwright-mcp/console-2026-05-12T10-04-14-892Z.log +0 -13
  21. package/.playwright-mcp/console-2026-05-12T10-50-32-398Z.log +0 -14
  22. package/.playwright-mcp/console-2026-05-12T12-50-09-889Z.log +0 -13
  23. package/.playwright-mcp/console-2026-05-12T12-58-49-817Z.log +0 -60
  24. package/.playwright-mcp/console-2026-05-13T18-41-50-654Z.log +0 -13
  25. package/.playwright-mcp/console-2026-05-13T18-54-58-000Z.log +0 -13
  26. package/.playwright-mcp/console-2026-05-13T19-13-30-875Z.log +0 -95
  27. package/.playwright-mcp/console-2026-05-13T20-09-13-456Z.log +0 -17
  28. package/.playwright-mcp/console-2026-05-13T20-21-01-662Z.log +0 -13
  29. package/.playwright-mcp/console-2026-05-13T20-22-00-038Z.log +0 -15
  30. package/.playwright-mcp/console-2026-05-13T20-26-26-665Z.log +0 -28
  31. package/.playwright-mcp/console-2026-05-13T20-35-49-544Z.log +0 -26
  32. package/.playwright-mcp/console-2026-05-13T20-38-10-958Z.log +0 -676
  33. package/.playwright-mcp/console-2026-05-14T21-27-06-074Z.log +0 -69
  34. package/.playwright-mcp/console-2026-05-14T22-13-07-470Z.log +0 -101
  35. package/.playwright-mcp/console-2026-05-14T23-58-12-858Z.log +0 -28
  36. package/.playwright-mcp/console-2026-05-15T00-15-00-760Z.log +0 -81
  37. package/.playwright-mcp/page-2026-05-12T09-54-32-920Z.yml +0 -223
  38. package/.playwright-mcp/page-2026-05-12T09-54-42-067Z.yml +0 -190
  39. package/.playwright-mcp/page-2026-05-12T09-55-12-019Z.yml +0 -389
  40. package/.playwright-mcp/page-2026-05-12T09-55-49-065Z.yml +0 -428
  41. package/.playwright-mcp/page-2026-05-12T09-56-06-607Z.yml +0 -389
  42. package/.playwright-mcp/page-2026-05-12T09-56-23-371Z.yml +0 -196
  43. package/.playwright-mcp/page-2026-05-12T09-56-55-792Z.yml +0 -389
  44. package/.playwright-mcp/page-2026-05-12T10-04-15-716Z.yml +0 -164
  45. package/.playwright-mcp/page-2026-05-12T10-04-43-994Z.yml +0 -190
  46. package/.playwright-mcp/page-2026-05-12T10-05-04-616Z.yml +0 -389
  47. package/.playwright-mcp/page-2026-05-12T10-05-27-643Z.yml +0 -428
  48. package/.playwright-mcp/page-2026-05-12T10-05-47-851Z.yml +0 -389
  49. package/.playwright-mcp/page-2026-05-12T10-06-13-429Z.yml +0 -196
  50. package/.playwright-mcp/page-2026-05-12T10-06-58-147Z.yml +0 -389
  51. package/.playwright-mcp/page-2026-05-12T10-08-20-216Z.yml +0 -428
  52. package/.playwright-mcp/page-2026-05-12T10-08-38-177Z.yml +0 -389
  53. package/.playwright-mcp/page-2026-05-12T10-09-01-851Z.yml +0 -196
  54. package/.playwright-mcp/page-2026-05-12T10-09-24-888Z.yml +0 -389
  55. package/.playwright-mcp/page-2026-05-12T10-50-33-049Z.yml +0 -212
  56. package/.playwright-mcp/page-2026-05-12T10-50-48-496Z.yml +0 -196
  57. package/.playwright-mcp/page-2026-05-12T10-51-51-308Z.yml +0 -196
  58. package/.playwright-mcp/page-2026-05-12T10-52-07-379Z.yml +0 -196
  59. package/.playwright-mcp/page-2026-05-12T12-50-10-589Z.yml +0 -143
  60. package/.playwright-mcp/page-2026-05-12T12-50-25-461Z.yml +0 -196
  61. package/.playwright-mcp/page-2026-05-12T12-51-11-190Z.yml +0 -394
  62. package/.playwright-mcp/page-2026-05-12T12-52-21-138Z.yml +0 -524
  63. package/.playwright-mcp/page-2026-05-12T12-53-42-423Z.yml +0 -431
  64. package/.playwright-mcp/page-2026-05-12T12-54-18-549Z.yml +0 -196
  65. package/.playwright-mcp/page-2026-05-12T12-54-26-818Z.yml +0 -390
  66. package/.playwright-mcp/page-2026-05-12T12-55-32-697Z.yml +0 -520
  67. package/.playwright-mcp/page-2026-05-12T12-58-50-450Z.yml +0 -164
  68. package/.playwright-mcp/page-2026-05-12T12-59-12-954Z.yml +0 -196
  69. package/.playwright-mcp/page-2026-05-12T12-59-38-479Z.yml +0 -394
  70. package/.playwright-mcp/page-2026-05-12T13-01-17-580Z.yml +0 -524
  71. package/.playwright-mcp/page-2026-05-12T13-01-58-447Z.yml +0 -271
  72. package/.playwright-mcp/page-2026-05-12T13-03-12-109Z.yml +0 -394
  73. package/.playwright-mcp/page-2026-05-13T18-41-51-436Z.yml +0 -159
  74. package/.playwright-mcp/page-2026-05-13T18-42-27-482Z.yml +0 -4814
  75. package/.playwright-mcp/page-2026-05-13T18-54-58-644Z.yml +0 -154
  76. package/.playwright-mcp/page-2026-05-13T18-56-11-217Z.yml +0 -1560
  77. package/.playwright-mcp/page-2026-05-13T18-56-32-205Z.yml +0 -1560
  78. package/.playwright-mcp/page-2026-05-13T19-13-31-457Z.yml +0 -164
  79. package/.playwright-mcp/page-2026-05-13T19-14-26-248Z.yml +0 -1560
  80. package/.playwright-mcp/page-2026-05-13T19-15-02-355Z.yml +0 -1560
  81. package/.playwright-mcp/page-2026-05-13T20-09-14-478Z.yml +0 -149
  82. package/.playwright-mcp/page-2026-05-13T20-10-49-292Z.yml +0 -4814
  83. package/.playwright-mcp/page-2026-05-13T20-21-02-852Z.yml +0 -143
  84. package/.playwright-mcp/page-2026-05-13T20-22-01-084Z.yml +0 -143
  85. package/.playwright-mcp/page-2026-05-13T20-22-09-334Z.yml +0 -1561
  86. package/.playwright-mcp/page-2026-05-13T20-26-27-690Z.yml +0 -143
  87. package/.playwright-mcp/page-2026-05-13T20-26-53-324Z.yml +0 -1561
  88. package/.playwright-mcp/page-2026-05-13T20-27-35-395Z.yml +0 -1561
  89. package/.playwright-mcp/page-2026-05-13T20-35-50-708Z.yml +0 -149
  90. package/.playwright-mcp/page-2026-05-13T20-37-41-379Z.yml +0 -0
  91. package/.playwright-mcp/page-2026-05-13T20-38-12-049Z.yml +0 -149
  92. package/.playwright-mcp/page-2026-05-13T20-38-19-708Z.yml +0 -1561
  93. package/.playwright-mcp/page-2026-05-14T21-27-07-278Z.yml +0 -164
  94. package/.playwright-mcp/page-2026-05-14T22-13-07-628Z.yml +0 -5
  95. package/.playwright-mcp/page-2026-05-14T22-13-27-676Z.yml +0 -1561
  96. package/.playwright-mcp/page-2026-05-14T23-58-13-064Z.yml +0 -3
  97. package/.playwright-mcp/page-2026-05-14T23-58-33-500Z.yml +0 -1561
  98. package/.playwright-mcp/page-2026-05-15T00-15-00-945Z.yml +0 -3
  99. package/.run/backend _ build.run.xml +0 -12
  100. package/.run/backend _ lint.run.xml +0 -12
  101. package/.run/backend _ test.run.xml +0 -12
  102. package/.run/frontend _ build.run.xml +0 -12
  103. package/.run/frontend _ lint_fix.run.xml +0 -12
  104. package/CODEMAP.md +0 -53
  105. package/backend/.repoburg/hooks/README.md +0 -53
  106. package/backend/.repoburg/hooks/eslint-hook.ts +0 -46
  107. package/backend/.repoburg/hooks/example-hook.ts +0 -62
  108. package/backend/CODEMAP.md +0 -48
  109. package/backend/README.md +0 -3
  110. package/backend/coverage/clover.xml +0 -12003
  111. package/backend/coverage/coverage-final.json +0 -313
  112. package/backend/coverage/lcov-report/base.css +0 -224
  113. package/backend/coverage/lcov-report/block-navigation.js +0 -87
  114. package/backend/coverage/lcov-report/favicon.png +0 -0
  115. package/backend/coverage/lcov-report/index.html +0 -1301
  116. package/backend/coverage/lcov-report/packages/gemini-core/examples/index.html +0 -116
  117. package/backend/coverage/lcov-report/packages/gemini-core/examples/simple.ts.html +0 -445
  118. package/backend/coverage/lcov-report/packages/gemini-core/index.html +0 -116
  119. package/backend/coverage/lcov-report/packages/gemini-core/index.ts.html +0 -127
  120. package/backend/coverage/lcov-report/packages/gemini-core/src/code_assist/codeAssist.ts.html +0 -193
  121. package/backend/coverage/lcov-report/packages/gemini-core/src/code_assist/converter.ts.html +0 -832
  122. package/backend/coverage/lcov-report/packages/gemini-core/src/code_assist/index.html +0 -206
  123. package/backend/coverage/lcov-report/packages/gemini-core/src/code_assist/oauth-credential-storage.ts.html +0 -469
  124. package/backend/coverage/lcov-report/packages/gemini-core/src/code_assist/oauth2.ts.html +0 -1705
  125. package/backend/coverage/lcov-report/packages/gemini-core/src/code_assist/server.ts.html +0 -790
  126. package/backend/coverage/lcov-report/packages/gemini-core/src/code_assist/setup.ts.html +0 -454
  127. package/backend/coverage/lcov-report/packages/gemini-core/src/code_assist/types.ts.html +0 -685
  128. package/backend/coverage/lcov-report/packages/gemini-core/src/config/config.ts.html +0 -307
  129. package/backend/coverage/lcov-report/packages/gemini-core/src/config/index.html +0 -146
  130. package/backend/coverage/lcov-report/packages/gemini-core/src/config/models.ts.html +0 -151
  131. package/backend/coverage/lcov-report/packages/gemini-core/src/config/storage.ts.html +0 -172
  132. package/backend/coverage/lcov-report/packages/gemini-core/src/core/contentGenerator.ts.html +0 -490
  133. package/backend/coverage/lcov-report/packages/gemini-core/src/core/geminiChat.ts.html +0 -1237
  134. package/backend/coverage/lcov-report/packages/gemini-core/src/core/geminiRequest.ts.html +0 -139
  135. package/backend/coverage/lcov-report/packages/gemini-core/src/core/index.html +0 -176
  136. package/backend/coverage/lcov-report/packages/gemini-core/src/core/prompts.ts.html +0 -409
  137. package/backend/coverage/lcov-report/packages/gemini-core/src/core/tokenLimits.ts.html +0 -181
  138. package/backend/coverage/lcov-report/packages/gemini-core/src/index.html +0 -116
  139. package/backend/coverage/lcov-report/packages/gemini-core/src/index.ts.html +0 -187
  140. package/backend/coverage/lcov-report/packages/gemini-core/src/mcp/token-storage/base-token-storage.ts.html +0 -229
  141. package/backend/coverage/lcov-report/packages/gemini-core/src/mcp/token-storage/file-token-storage.ts.html +0 -634
  142. package/backend/coverage/lcov-report/packages/gemini-core/src/mcp/token-storage/hybrid-token-storage.ts.html +0 -373
  143. package/backend/coverage/lcov-report/packages/gemini-core/src/mcp/token-storage/index.html +0 -191
  144. package/backend/coverage/lcov-report/packages/gemini-core/src/mcp/token-storage/index.ts.html +0 -124
  145. package/backend/coverage/lcov-report/packages/gemini-core/src/mcp/token-storage/keychain-token-storage.ts.html +0 -835
  146. package/backend/coverage/lcov-report/packages/gemini-core/src/mcp/token-storage/types.ts.html +0 -211
  147. package/backend/coverage/lcov-report/packages/gemini-core/src/utils/errors.ts.html +0 -421
  148. package/backend/coverage/lcov-report/packages/gemini-core/src/utils/index.html +0 -191
  149. package/backend/coverage/lcov-report/packages/gemini-core/src/utils/partUtils.ts.html +0 -592
  150. package/backend/coverage/lcov-report/packages/gemini-core/src/utils/quotaErrorDetection.ts.html +0 -388
  151. package/backend/coverage/lcov-report/packages/gemini-core/src/utils/retry.ts.html +0 -877
  152. package/backend/coverage/lcov-report/packages/gemini-core/src/utils/session.ts.html +0 -112
  153. package/backend/coverage/lcov-report/packages/gemini-core/src/utils/userAccountManager.ts.html +0 -502
  154. package/backend/coverage/lcov-report/packages/tokenpatch/index.html +0 -161
  155. package/backend/coverage/lcov-report/packages/tokenpatch/index.ts.html +0 -415
  156. package/backend/coverage/lcov-report/packages/tokenpatch/parser.ts.html +0 -139
  157. package/backend/coverage/lcov-report/packages/tokenpatch/patcher.ts.html +0 -1249
  158. package/backend/coverage/lcov-report/packages/tokenpatch/strategies/index.html +0 -131
  159. package/backend/coverage/lcov-report/packages/tokenpatch/strategies/tiktoken-tokenizer.ts.html +0 -187
  160. package/backend/coverage/lcov-report/packages/tokenpatch/strategies/tree-sitter-tokenizer.ts.html +0 -193
  161. package/backend/coverage/lcov-report/packages/tokenpatch/tokens.ts.html +0 -178
  162. package/backend/coverage/lcov-report/prettify.css +0 -1
  163. package/backend/coverage/lcov-report/prettify.js +0 -2
  164. package/backend/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  165. package/backend/coverage/lcov-report/sorter.js +0 -210
  166. package/backend/coverage/lcov-report/src/ai-actions/ai-action-batch.service.ts.html +0 -1549
  167. package/backend/coverage/lcov-report/src/ai-actions/ai-actions.controller.ts.html +0 -904
  168. package/backend/coverage/lcov-report/src/ai-actions/ai-actions.module.ts.html +0 -175
  169. package/backend/coverage/lcov-report/src/ai-actions/ai-actions.service.ts.html +0 -1534
  170. package/backend/coverage/lcov-report/src/ai-actions/index.html +0 -161
  171. package/backend/coverage/lcov-report/src/app.controller.ts.html +0 -151
  172. package/backend/coverage/lcov-report/src/app.module.ts.html +0 -451
  173. package/backend/coverage/lcov-report/src/app.service.ts.html +0 -163
  174. package/backend/coverage/lcov-report/src/application-state/application-state.controller.ts.html +0 -1609
  175. package/backend/coverage/lcov-report/src/application-state/application-state.module.ts.html +0 -136
  176. package/backend/coverage/lcov-report/src/application-state/application-state.service.ts.html +0 -2281
  177. package/backend/coverage/lcov-report/src/application-state/dto/index.html +0 -416
  178. package/backend/coverage/lcov-report/src/application-state/dto/set-alibaba-config.dto.ts.html +0 -109
  179. package/backend/coverage/lcov-report/src/application-state/dto/set-auto-context-fetch-enabled.dto.ts.html +0 -118
  180. package/backend/coverage/lcov-report/src/application-state/dto/set-auto-send-to-ai-studio-enabled.dto.ts.html +0 -109
  181. package/backend/coverage/lcov-report/src/application-state/dto/set-context-token-limit.dto.ts.html +0 -124
  182. package/backend/coverage/lcov-report/src/application-state/dto/set-execution-strategy.dto.ts.html +0 -121
  183. package/backend/coverage/lcov-report/src/application-state/dto/set-followup-token-limit.dto.ts.html +0 -124
  184. package/backend/coverage/lcov-report/src/application-state/dto/set-history-compression-enabled.dto.ts.html +0 -115
  185. package/backend/coverage/lcov-report/src/application-state/dto/set-llm-retry-enabled.dto.ts.html +0 -115
  186. package/backend/coverage/lcov-report/src/application-state/dto/set-llm-retry-max-attempts.dto.ts.html +0 -127
  187. package/backend/coverage/lcov-report/src/application-state/dto/set-manual-llm-enabled.dto.ts.html +0 -118
  188. package/backend/coverage/lcov-report/src/application-state/dto/set-ollama-config.dto.ts.html +0 -109
  189. package/backend/coverage/lcov-report/src/application-state/dto/set-openai-config.dto.ts.html +0 -139
  190. package/backend/coverage/lcov-report/src/application-state/dto/set-openrouter-config.dto.ts.html +0 -109
  191. package/backend/coverage/lcov-report/src/application-state/dto/set-streaming-enabled.dto.ts.html +0 -109
  192. package/backend/coverage/lcov-report/src/application-state/dto/set-syntax-validation-enabled.dto.ts.html +0 -118
  193. package/backend/coverage/lcov-report/src/application-state/dto/set-theme.dto.ts.html +0 -124
  194. package/backend/coverage/lcov-report/src/application-state/dto/set-tools-enabled.dto.ts.html +0 -118
  195. package/backend/coverage/lcov-report/src/application-state/dto/set-websocket-enabled.dto.ts.html +0 -109
  196. package/backend/coverage/lcov-report/src/application-state/dto/set-yolo-mode-message.dto.ts.html +0 -124
  197. package/backend/coverage/lcov-report/src/application-state/dto/set-yolo-mode.dto.ts.html +0 -118
  198. package/backend/coverage/lcov-report/src/application-state/dto/set-zai-config.dto.ts.html +0 -109
  199. package/backend/coverage/lcov-report/src/application-state/index.html +0 -146
  200. package/backend/coverage/lcov-report/src/common/cache/cache-invalidation.service.ts.html +0 -1297
  201. package/backend/coverage/lcov-report/src/common/cache/cache-invalidation.subscriber.ts.html +0 -712
  202. package/backend/coverage/lcov-report/src/common/cache/etag-cache.service.ts.html +0 -379
  203. package/backend/coverage/lcov-report/src/common/cache/index.html +0 -146
  204. package/backend/coverage/lcov-report/src/common/common.module.ts.html +0 -121
  205. package/backend/coverage/lcov-report/src/common/index.html +0 -116
  206. package/backend/coverage/lcov-report/src/common/interceptors/etag-cache.interceptor.ts.html +0 -337
  207. package/backend/coverage/lcov-report/src/common/interceptors/index.html +0 -116
  208. package/backend/coverage/lcov-report/src/common/middleware/cache.middleware.ts.html +0 -265
  209. package/backend/coverage/lcov-report/src/common/middleware/index.html +0 -116
  210. package/backend/coverage/lcov-report/src/context-generation/context-generation.module.ts.html +0 -118
  211. package/backend/coverage/lcov-report/src/context-generation/context-generation.service.ts.html +0 -1501
  212. package/backend/coverage/lcov-report/src/context-generation/index.html +0 -131
  213. package/backend/coverage/lcov-report/src/context-snippets/context-snippets.controller.ts.html +0 -427
  214. package/backend/coverage/lcov-report/src/context-snippets/context-snippets.module.ts.html +0 -142
  215. package/backend/coverage/lcov-report/src/context-snippets/context-snippets.service.ts.html +0 -442
  216. package/backend/coverage/lcov-report/src/context-snippets/dto/context-snippet.dto.ts.html +0 -211
  217. package/backend/coverage/lcov-report/src/context-snippets/dto/index.html +0 -116
  218. package/backend/coverage/lcov-report/src/context-snippets/index.html +0 -146
  219. package/backend/coverage/lcov-report/src/context-templates/context-templates.controller.ts.html +0 -724
  220. package/backend/coverage/lcov-report/src/context-templates/context-templates.module.ts.html +0 -142
  221. package/backend/coverage/lcov-report/src/context-templates/context-templates.service.ts.html +0 -1015
  222. package/backend/coverage/lcov-report/src/context-templates/dto/context-template.dto.ts.html +0 -511
  223. package/backend/coverage/lcov-report/src/context-templates/dto/index.html +0 -116
  224. package/backend/coverage/lcov-report/src/context-templates/index.html +0 -146
  225. package/backend/coverage/lcov-report/src/core-entities/ai-action.entity.ts.html +0 -613
  226. package/backend/coverage/lcov-report/src/core-entities/application-state.entity.ts.html +0 -124
  227. package/backend/coverage/lcov-report/src/core-entities/base.entity.ts.html +0 -211
  228. package/backend/coverage/lcov-report/src/core-entities/context-snippet.entity.ts.html +0 -190
  229. package/backend/coverage/lcov-report/src/core-entities/context-template.entity.ts.html +0 -439
  230. package/backend/coverage/lcov-report/src/core-entities/custom-snippet.entity.ts.html +0 -205
  231. package/backend/coverage/lcov-report/src/core-entities/custom-variable.entity.ts.html +0 -241
  232. package/backend/coverage/lcov-report/src/core-entities/enums.ts.html +0 -553
  233. package/backend/coverage/lcov-report/src/core-entities/execution-log.entity.ts.html +0 -208
  234. package/backend/coverage/lcov-report/src/core-entities/index.html +0 -371
  235. package/backend/coverage/lcov-report/src/core-entities/index.ts.html +0 -136
  236. package/backend/coverage/lcov-report/src/core-entities/llm-call-log.entity.ts.html +0 -388
  237. package/backend/coverage/lcov-report/src/core-entities/mcp-config.entity.ts.html +0 -256
  238. package/backend/coverage/lcov-report/src/core-entities/mcp-tool.entity.ts.html +0 -256
  239. package/backend/coverage/lcov-report/src/core-entities/project.entity.ts.html +0 -181
  240. package/backend/coverage/lcov-report/src/core-entities/session-input.entity.ts.html +0 -745
  241. package/backend/coverage/lcov-report/src/core-entities/session.entity.ts.html +0 -688
  242. package/backend/coverage/lcov-report/src/core-entities/system-prompt.entity.ts.html +0 -349
  243. package/backend/coverage/lcov-report/src/core-entities/tool-hook.entity.ts.html +0 -235
  244. package/backend/coverage/lcov-report/src/custom-snippets/custom-snippets.controller.ts.html +0 -442
  245. package/backend/coverage/lcov-report/src/custom-snippets/custom-snippets.module.ts.html +0 -124
  246. package/backend/coverage/lcov-report/src/custom-snippets/custom-snippets.service.ts.html +0 -304
  247. package/backend/coverage/lcov-report/src/custom-snippets/dto/custom-snippet.dto.ts.html +0 -205
  248. package/backend/coverage/lcov-report/src/custom-snippets/dto/index.html +0 -116
  249. package/backend/coverage/lcov-report/src/custom-snippets/index.html +0 -146
  250. package/backend/coverage/lcov-report/src/custom-variables/custom-variables.controller.ts.html +0 -463
  251. package/backend/coverage/lcov-report/src/custom-variables/custom-variables.module.ts.html +0 -124
  252. package/backend/coverage/lcov-report/src/custom-variables/custom-variables.service.ts.html +0 -310
  253. package/backend/coverage/lcov-report/src/custom-variables/dto/custom-variable.dto.ts.html +0 -244
  254. package/backend/coverage/lcov-report/src/custom-variables/dto/index.html +0 -116
  255. package/backend/coverage/lcov-report/src/custom-variables/index.html +0 -146
  256. package/backend/coverage/lcov-report/src/events/events.gateway.ts.html +0 -295
  257. package/backend/coverage/lcov-report/src/events/events.module.ts.html +0 -109
  258. package/backend/coverage/lcov-report/src/events/index.html +0 -146
  259. package/backend/coverage/lcov-report/src/events/websocket.events.ts.html +0 -466
  260. package/backend/coverage/lcov-report/src/execution-logs/dto/execution-log.dto.ts.html +0 -130
  261. package/backend/coverage/lcov-report/src/execution-logs/dto/index.html +0 -116
  262. package/backend/coverage/lcov-report/src/execution-logs/execution-logs.controller.ts.html +0 -130
  263. package/backend/coverage/lcov-report/src/execution-logs/execution-logs.module.ts.html +0 -124
  264. package/backend/coverage/lcov-report/src/execution-logs/execution-logs.service.ts.html +0 -238
  265. package/backend/coverage/lcov-report/src/execution-logs/index.html +0 -146
  266. package/backend/coverage/lcov-report/src/gemini/gemini-llm.provider.ts.html +0 -553
  267. package/backend/coverage/lcov-report/src/gemini/gemini.module.ts.html +0 -109
  268. package/backend/coverage/lcov-report/src/gemini/index.html +0 -131
  269. package/backend/coverage/lcov-report/src/global-config/dto/index.html +0 -116
  270. package/backend/coverage/lcov-report/src/global-config/dto/update-global-config.dto.ts.html +0 -367
  271. package/backend/coverage/lcov-report/src/global-config/global-config.controller.ts.html +0 -220
  272. package/backend/coverage/lcov-report/src/global-config/global-config.module.ts.html +0 -115
  273. package/backend/coverage/lcov-report/src/global-config/global-config.service.ts.html +0 -397
  274. package/backend/coverage/lcov-report/src/global-config/index.html +0 -146
  275. package/backend/coverage/lcov-report/src/http-exception.filter.ts.html +0 -340
  276. package/backend/coverage/lcov-report/src/index.html +0 -206
  277. package/backend/coverage/lcov-report/src/interactive-chat/chat.module.ts.html +0 -187
  278. package/backend/coverage/lcov-report/src/interactive-chat/chat.service.ts.html +0 -1825
  279. package/backend/coverage/lcov-report/src/interactive-chat/index.html +0 -146
  280. package/backend/coverage/lcov-report/src/interactive-chat/streaming.controller.ts.html +0 -343
  281. package/backend/coverage/lcov-report/src/llm-call-logs/dto/index.html +0 -116
  282. package/backend/coverage/lcov-report/src/llm-call-logs/dto/llm-call-log.dto.ts.html +0 -214
  283. package/backend/coverage/lcov-report/src/llm-call-logs/index.html +0 -146
  284. package/backend/coverage/lcov-report/src/llm-call-logs/llm-call-logs.controller.ts.html +0 -634
  285. package/backend/coverage/lcov-report/src/llm-call-logs/llm-call-logs.module.ts.html +0 -124
  286. package/backend/coverage/lcov-report/src/llm-call-logs/llm-call-logs.service.ts.html +0 -643
  287. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/apply-diff.handler.ts.html +0 -1090
  288. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/ask-user.handler.ts.html +0 -433
  289. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/create-file.handler.ts.html +0 -757
  290. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/delete-file.handler.ts.html +0 -586
  291. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/discard-messages.handler.ts.html +0 -1153
  292. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/dto/apply-diff.args.dto.ts.html +0 -124
  293. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/dto/ask-user.args.dto.ts.html +0 -103
  294. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/dto/create-file.args.dto.ts.html +0 -124
  295. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/dto/delete-file.args.dto.ts.html +0 -106
  296. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/dto/execute-code.args.dto.ts.html +0 -106
  297. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/dto/final.args.dto.ts.html +0 -118
  298. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/dto/generate-title.args.dto.ts.html +0 -190
  299. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/dto/get-session-history.args.dto.ts.html +0 -196
  300. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/dto/howto.args.dto.ts.html +0 -91
  301. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/dto/index.html +0 -356
  302. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/dto/new-session.args.dto.ts.html +0 -106
  303. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/dto/overwrite-file.args.dto.ts.html +0 -124
  304. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/dto/patch.args.dto.ts.html +0 -124
  305. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/dto/quick-edit.args.dto.ts.html +0 -214
  306. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/dto/request-context.args.dto.ts.html +0 -202
  307. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/dto/run-command.args.dto.ts.html +0 -151
  308. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/dto/sanitizer.decorator.ts.html +0 -181
  309. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/dto/write-todo.args.dto.ts.html +0 -130
  310. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/execute-code.handler.ts.html +0 -631
  311. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/final.handler.ts.html +0 -469
  312. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/generate-title.handler.ts.html +0 -448
  313. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/get-messages.handler.ts.html +0 -1351
  314. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/get-session-history.handler.ts.html +0 -868
  315. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/howto.handler.ts.html +0 -481
  316. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/index.html +0 -416
  317. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/invoke-subagent.handler.ts.html +0 -580
  318. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/list-sub-agents.handler.ts.html +0 -352
  319. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/matchers/context-aware.matcher.ts.html +0 -1054
  320. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/matchers/exact.matcher.ts.html +0 -331
  321. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/matchers/hybrid.matcher.ts.html +0 -403
  322. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/matchers/index.html +0 -176
  323. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/matchers/index.ts.html +0 -100
  324. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/matchers/normalized.matcher.ts.html +0 -724
  325. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/mcp-tool-action.handler.ts.html +0 -358
  326. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/new-session.handler.ts.html +0 -379
  327. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/overwrite-file.handler.ts.html +0 -838
  328. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/patch.handler.ts.html +0 -1702
  329. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/quick-edit.handler.ts.html +0 -1459
  330. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/request-context.handler.ts.html +0 -679
  331. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/run-command.handler.ts.html +0 -964
  332. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/write-todo.handler.ts.html +0 -625
  333. package/backend/coverage/lcov-report/src/llm-orchestration/errors/handler-validation.error.ts.html +0 -103
  334. package/backend/coverage/lcov-report/src/llm-orchestration/errors/index.html +0 -116
  335. package/backend/coverage/lcov-report/src/llm-orchestration/history-compression.service.ts.html +0 -1645
  336. package/backend/coverage/lcov-report/src/llm-orchestration/hooks/follow-up-post-execution.hook.ts.html +0 -238
  337. package/backend/coverage/lcov-report/src/llm-orchestration/hooks/frontend-notification.hook.ts.html +0 -181
  338. package/backend/coverage/lcov-report/src/llm-orchestration/hooks/index.html +0 -161
  339. package/backend/coverage/lcov-report/src/llm-orchestration/hooks/invalid-tool-feedback.hook.ts.html +0 -313
  340. package/backend/coverage/lcov-report/src/llm-orchestration/hooks/yolo-mode-post-execution.hook.ts.html +0 -466
  341. package/backend/coverage/lcov-report/src/llm-orchestration/index.html +0 -176
  342. package/backend/coverage/lcov-report/src/llm-orchestration/llm-orchestration.interfaces.ts.html +0 -319
  343. package/backend/coverage/lcov-report/src/llm-orchestration/llm-orchestration.module.ts.html +0 -706
  344. package/backend/coverage/lcov-report/src/llm-orchestration/llm-turn-processor.service.ts.html +0 -1150
  345. package/backend/coverage/lcov-report/src/llm-orchestration/parser/index.html +0 -131
  346. package/backend/coverage/lcov-report/src/llm-orchestration/parser/llm-output-parser.service.ts.html +0 -658
  347. package/backend/coverage/lcov-report/src/llm-orchestration/parser/parsing.constants.ts.html +0 -127
  348. package/backend/coverage/lcov-report/src/llm-orchestration/tool-schema.service.ts.html +0 -547
  349. package/backend/coverage/lcov-report/src/llm-provider/alibaba-llm.provider.ts.html +0 -1681
  350. package/backend/coverage/lcov-report/src/llm-provider/index.html +0 -236
  351. package/backend/coverage/lcov-report/src/llm-provider/llm-provider.controller.ts.html +0 -187
  352. package/backend/coverage/lcov-report/src/llm-provider/llm-provider.interface.ts.html +0 -361
  353. package/backend/coverage/lcov-report/src/llm-provider/llm-provider.module.ts.html +0 -175
  354. package/backend/coverage/lcov-report/src/llm-provider/ollama-llm.provider.ts.html +0 -1780
  355. package/backend/coverage/lcov-report/src/llm-provider/openai-llm.provider.ts.html +0 -1867
  356. package/backend/coverage/lcov-report/src/llm-provider/openrouter-llm.provider.ts.html +0 -1891
  357. package/backend/coverage/lcov-report/src/llm-provider/proxy-llm.provider.ts.html +0 -304
  358. package/backend/coverage/lcov-report/src/llm-provider/zai-llm.provider.ts.html +0 -1666
  359. package/backend/coverage/lcov-report/src/llm-responses/dto/index.html +0 -131
  360. package/backend/coverage/lcov-report/src/llm-responses/dto/submit-llm-response.dto.ts.html +0 -436
  361. package/backend/coverage/lcov-report/src/llm-responses/dto/sync-conversation.dto.ts.html +0 -319
  362. package/backend/coverage/lcov-report/src/llm-responses/index.html +0 -146
  363. package/backend/coverage/lcov-report/src/llm-responses/llm-responses.controller.ts.html +0 -283
  364. package/backend/coverage/lcov-report/src/llm-responses/llm-responses.module.ts.html +0 -184
  365. package/backend/coverage/lcov-report/src/llm-responses/llm-responses.service.ts.html +0 -1474
  366. package/backend/coverage/lcov-report/src/main.ts.html +0 -463
  367. package/backend/coverage/lcov-report/src/mcp/dto/batch-update-mcp-tools.dto.ts.html +0 -145
  368. package/backend/coverage/lcov-report/src/mcp/dto/create-mcp-config.dto.ts.html +0 -127
  369. package/backend/coverage/lcov-report/src/mcp/dto/index.html +0 -146
  370. package/backend/coverage/lcov-report/src/mcp/dto/update-mcp-config.dto.ts.html +0 -112
  371. package/backend/coverage/lcov-report/src/mcp/index.html +0 -146
  372. package/backend/coverage/lcov-report/src/mcp/mcp.controller.ts.html +0 -340
  373. package/backend/coverage/lcov-report/src/mcp/mcp.module.ts.html +0 -124
  374. package/backend/coverage/lcov-report/src/mcp/mcp.service.ts.html +0 -1345
  375. package/backend/coverage/lcov-report/src/message-bus/dto/index.html +0 -116
  376. package/backend/coverage/lcov-report/src/message-bus/dto/submit-message.dto.ts.html +0 -109
  377. package/backend/coverage/lcov-report/src/message-bus/index.html +0 -146
  378. package/backend/coverage/lcov-report/src/message-bus/message-bus.controller.ts.html +0 -148
  379. package/backend/coverage/lcov-report/src/message-bus/message-bus.module.ts.html +0 -115
  380. package/backend/coverage/lcov-report/src/message-bus/message-bus.service.ts.html +0 -151
  381. package/backend/coverage/lcov-report/src/projects/dto/index.html +0 -116
  382. package/backend/coverage/lcov-report/src/projects/dto/project.dto.ts.html +0 -196
  383. package/backend/coverage/lcov-report/src/projects/index.html +0 -146
  384. package/backend/coverage/lcov-report/src/projects/projects.controller.ts.html +0 -322
  385. package/backend/coverage/lcov-report/src/projects/projects.module.ts.html +0 -124
  386. package/backend/coverage/lcov-report/src/projects/projects.service.ts.html +0 -235
  387. package/backend/coverage/lcov-report/src/seeding/context-snippet-seeding.service.ts.html +0 -280
  388. package/backend/coverage/lcov-report/src/seeding/context-template-seeding.service.ts.html +0 -439
  389. package/backend/coverage/lcov-report/src/seeding/custom-snippet-seeding.service.ts.html +0 -271
  390. package/backend/coverage/lcov-report/src/seeding/custom-variable-seeding.service.ts.html +0 -271
  391. package/backend/coverage/lcov-report/src/seeding/data/context-snippets/compress.ts.html +0 -172
  392. package/backend/coverage/lcov-report/src/seeding/data/context-snippets/index.html +0 -116
  393. package/backend/coverage/lcov-report/src/seeding/data/context-templates/default-followup_ad-hoc-focused-context.ts.html +0 -157
  394. package/backend/coverage/lcov-report/src/seeding/data/context-templates/default-initial_condensed-project-context.ts.html +0 -148
  395. package/backend/coverage/lcov-report/src/seeding/data/context-templates/default-initial_full-project-context.ts.html +0 -151
  396. package/backend/coverage/lcov-report/src/seeding/data/context-templates/index.html +0 -161
  397. package/backend/coverage/lcov-report/src/seeding/data/context-templates/open-pr-command.ts.html +0 -247
  398. package/backend/coverage/lcov-report/src/seeding/data/custom-snippets/default_rglob.ts.html +0 -94
  399. package/backend/coverage/lcov-report/src/seeding/data/custom-snippets/eta-for.ts.html +0 -100
  400. package/backend/coverage/lcov-report/src/seeding/data/custom-snippets/eta-if.ts.html +0 -97
  401. package/backend/coverage/lcov-report/src/seeding/data/custom-snippets/eta-ifelse.ts.html +0 -100
  402. package/backend/coverage/lcov-report/src/seeding/data/custom-snippets/everest-playwright-auth.ts.html +0 -304
  403. package/backend/coverage/lcov-report/src/seeding/data/custom-snippets/git-diff.ts.html +0 -94
  404. package/backend/coverage/lcov-report/src/seeding/data/custom-snippets/index.html +0 -341
  405. package/backend/coverage/lcov-report/src/seeding/data/custom-snippets/it-mcp.ts.html +0 -100
  406. package/backend/coverage/lcov-report/src/seeding/data/custom-snippets/it-tools.ts.html +0 -97
  407. package/backend/coverage/lcov-report/src/seeding/data/custom-snippets/rg-exclude.ts.html +0 -94
  408. package/backend/coverage/lcov-report/src/seeding/data/custom-snippets/rg-search-glob.ts.html +0 -94
  409. package/backend/coverage/lcov-report/src/seeding/data/custom-snippets/rg-search.ts.html +0 -94
  410. package/backend/coverage/lcov-report/src/seeding/data/custom-snippets/run-command.ts.html +0 -94
  411. package/backend/coverage/lcov-report/src/seeding/data/custom-snippets/tree.ts.html +0 -94
  412. package/backend/coverage/lcov-report/src/seeding/data/custom-snippets/usr-adhoc-incl.ts.html +0 -100
  413. package/backend/coverage/lcov-report/src/seeding/data/custom-snippets/usr-cmd-output-incl.ts.html +0 -94
  414. package/backend/coverage/lcov-report/src/seeding/data/custom-snippets/usr-input-incl.ts.html +0 -94
  415. package/backend/coverage/lcov-report/src/seeding/data/custom-variables/default-auto-execute-code.ts.html +0 -94
  416. package/backend/coverage/lcov-report/src/seeding/data/custom-variables/default-plan-mode.ts.html +0 -97
  417. package/backend/coverage/lcov-report/src/seeding/data/custom-variables/index.html +0 -131
  418. package/backend/coverage/lcov-report/src/seeding/data/mcp-configs/default-configs.ts.html +0 -121
  419. package/backend/coverage/lcov-report/src/seeding/data/mcp-configs/index.html +0 -116
  420. package/backend/coverage/lcov-report/src/seeding/data/sub-agents/browser-use.ts.html +0 -115
  421. package/backend/coverage/lcov-report/src/seeding/data/sub-agents/explore-codebase.ts.html +0 -136
  422. package/backend/coverage/lcov-report/src/seeding/data/sub-agents/index.html +0 -131
  423. package/backend/coverage/lcov-report/src/seeding/data/system-prompts/browser-use-agent.ts.html +0 -190
  424. package/backend/coverage/lcov-report/src/seeding/data/system-prompts/default_native_tool_agent.ts.html +0 -421
  425. package/backend/coverage/lcov-report/src/seeding/data/system-prompts/explore-codebase-agent.ts.html +0 -265
  426. package/backend/coverage/lcov-report/src/seeding/data/system-prompts/index.html +0 -161
  427. package/backend/coverage/lcov-report/src/seeding/data/system-prompts/master-agent.ts.html +0 -388
  428. package/backend/coverage/lcov-report/src/seeding/data/tool-hooks/eslint-hook.ts.html +0 -265
  429. package/backend/coverage/lcov-report/src/seeding/data/tool-hooks/example-hook.ts.html +0 -274
  430. package/backend/coverage/lcov-report/src/seeding/data/tool-hooks/index.html +0 -146
  431. package/backend/coverage/lcov-report/src/seeding/data/tool-hooks/readme.ts.html +0 -250
  432. package/backend/coverage/lcov-report/src/seeding/index.html +0 -236
  433. package/backend/coverage/lcov-report/src/seeding/mcp-config-seeding.service.ts.html +0 -193
  434. package/backend/coverage/lcov-report/src/seeding/seeding.module.ts.html +0 -211
  435. package/backend/coverage/lcov-report/src/seeding/seeding.service.ts.html +0 -187
  436. package/backend/coverage/lcov-report/src/seeding/sub-agent-seeding.service.ts.html +0 -742
  437. package/backend/coverage/lcov-report/src/seeding/system-prompt-seeding.service.ts.html +0 -397
  438. package/backend/coverage/lcov-report/src/session-followup/index.html +0 -131
  439. package/backend/coverage/lcov-report/src/session-followup/session-followup.module.ts.html +0 -130
  440. package/backend/coverage/lcov-report/src/session-followup/session-followup.service.ts.html +0 -718
  441. package/backend/coverage/lcov-report/src/session-inputs/dto/index.html +0 -116
  442. package/backend/coverage/lcov-report/src/session-inputs/dto/session-input.dto.ts.html +0 -577
  443. package/backend/coverage/lcov-report/src/session-inputs/index.html +0 -176
  444. package/backend/coverage/lcov-report/src/session-inputs/session-input-context.service.ts.html +0 -832
  445. package/backend/coverage/lcov-report/src/session-inputs/session-input.subscriber.ts.html +0 -220
  446. package/backend/coverage/lcov-report/src/session-inputs/session-inputs.controller.ts.html +0 -685
  447. package/backend/coverage/lcov-report/src/session-inputs/session-inputs.module.ts.html +0 -229
  448. package/backend/coverage/lcov-report/src/session-inputs/session-inputs.service.ts.html +0 -1981
  449. package/backend/coverage/lcov-report/src/session-transfer/index.html +0 -131
  450. package/backend/coverage/lcov-report/src/session-transfer/session-transfer.module.ts.html +0 -160
  451. package/backend/coverage/lcov-report/src/session-transfer/session-transfer.service.ts.html +0 -883
  452. package/backend/coverage/lcov-report/src/sessions/dto/index.html +0 -116
  453. package/backend/coverage/lcov-report/src/sessions/dto/session.dto.ts.html +0 -769
  454. package/backend/coverage/lcov-report/src/sessions/index.html +0 -146
  455. package/backend/coverage/lcov-report/src/sessions/sessions.controller.ts.html +0 -1306
  456. package/backend/coverage/lcov-report/src/sessions/sessions.module.ts.html +0 -220
  457. package/backend/coverage/lcov-report/src/sessions/sessions.service.ts.html +0 -2797
  458. package/backend/coverage/lcov-report/src/sub-agents/dto/create-sub-agent.dto.ts.html +0 -355
  459. package/backend/coverage/lcov-report/src/sub-agents/dto/index.html +0 -131
  460. package/backend/coverage/lcov-report/src/sub-agents/dto/update-sub-agent.dto.ts.html +0 -295
  461. package/backend/coverage/lcov-report/src/sub-agents/index.html +0 -221
  462. package/backend/coverage/lcov-report/src/sub-agents/sub-agent-run.entity.ts.html +0 -463
  463. package/backend/coverage/lcov-report/src/sub-agents/sub-agent-runner.service.ts.html +0 -2428
  464. package/backend/coverage/lcov-report/src/sub-agents/sub-agent-runs.controller.ts.html +0 -580
  465. package/backend/coverage/lcov-report/src/sub-agents/sub-agent-runs.service.ts.html +0 -550
  466. package/backend/coverage/lcov-report/src/sub-agents/sub-agent.entity.ts.html +0 -475
  467. package/backend/coverage/lcov-report/src/sub-agents/sub-agents.controller.ts.html +0 -373
  468. package/backend/coverage/lcov-report/src/sub-agents/sub-agents.module.ts.html +0 -205
  469. package/backend/coverage/lcov-report/src/sub-agents/sub-agents.service.ts.html +0 -619
  470. package/backend/coverage/lcov-report/src/syntax-validation/index.html +0 -131
  471. package/backend/coverage/lcov-report/src/syntax-validation/syntax-validation.module.ts.html +0 -109
  472. package/backend/coverage/lcov-report/src/syntax-validation/syntax-validation.service.ts.html +0 -724
  473. package/backend/coverage/lcov-report/src/system-prompts/dto/index.html +0 -176
  474. package/backend/coverage/lcov-report/src/system-prompts/dto/set-enabled-mcp-tools.dto.ts.html +0 -157
  475. package/backend/coverage/lcov-report/src/system-prompts/dto/set-enabled-tools.dto.ts.html +0 -148
  476. package/backend/coverage/lcov-report/src/system-prompts/dto/system-prompt.dto.ts.html +0 -517
  477. package/backend/coverage/lcov-report/src/system-prompts/dto/toggle-mcp-tool.dto.ts.html +0 -121
  478. package/backend/coverage/lcov-report/src/system-prompts/dto/toggle-tool.dto.ts.html +0 -118
  479. package/backend/coverage/lcov-report/src/system-prompts/index.html +0 -146
  480. package/backend/coverage/lcov-report/src/system-prompts/system-prompts.controller.ts.html +0 -1060
  481. package/backend/coverage/lcov-report/src/system-prompts/system-prompts.module.ts.html +0 -160
  482. package/backend/coverage/lcov-report/src/system-prompts/system-prompts.service.ts.html +0 -2254
  483. package/backend/coverage/lcov-report/src/timeout.interceptor.ts.html +0 -178
  484. package/backend/coverage/lcov-report/src/tool-hooks/dto/create-tool-hook.dto.ts.html +0 -181
  485. package/backend/coverage/lcov-report/src/tool-hooks/dto/index.html +0 -131
  486. package/backend/coverage/lcov-report/src/tool-hooks/dto/update-tool-hook.dto.ts.html +0 -178
  487. package/backend/coverage/lcov-report/src/tool-hooks/index.html +0 -146
  488. package/backend/coverage/lcov-report/src/tool-hooks/tool-hooks.controller.ts.html +0 -481
  489. package/backend/coverage/lcov-report/src/tool-hooks/tool-hooks.module.ts.html +0 -127
  490. package/backend/coverage/lcov-report/src/tool-hooks/tool-hooks.service.ts.html +0 -1222
  491. package/backend/coverage/lcov-report/src/tracing.ts.html +0 -214
  492. package/backend/coverage/lcov-report/src/types/express-multer.d.ts.html +0 -130
  493. package/backend/coverage/lcov-report/src/types/index.html +0 -116
  494. package/backend/coverage/lcov-report/src/utils/ai-format-generator.ts.html +0 -253
  495. package/backend/coverage/lcov-report/src/utils/fuzzy-search.ts.html +0 -310
  496. package/backend/coverage/lcov-report/src/utils/index.html +0 -191
  497. package/backend/coverage/lcov-report/src/utils/index.ts.html +0 -100
  498. package/backend/coverage/lcov-report/src/utils/short-id.ts.html +0 -109
  499. package/backend/coverage/lcov-report/src/utils/spawn-with-kill.ts.html +0 -412
  500. package/backend/coverage/lcov-report/src/utils/trace.decorator.ts.html +0 -223
  501. package/backend/coverage/lcov-report/src/visual-editor/index.html +0 -146
  502. package/backend/coverage/lcov-report/src/visual-editor/visual-editor.controller.ts.html +0 -409
  503. package/backend/coverage/lcov-report/src/visual-editor/visual-editor.dto.ts.html +0 -130
  504. package/backend/coverage/lcov-report/src/visual-editor/visual-editor.module.ts.html +0 -118
  505. package/backend/coverage/lcov-report/src/workspace/dto/file-tree.dto.ts.html +0 -112
  506. package/backend/coverage/lcov-report/src/workspace/dto/index.html +0 -131
  507. package/backend/coverage/lcov-report/src/workspace/dto/search-workspace.dto.ts.html +0 -193
  508. package/backend/coverage/lcov-report/src/workspace/index.html +0 -146
  509. package/backend/coverage/lcov-report/src/workspace/workspace.controller.ts.html +0 -394
  510. package/backend/coverage/lcov-report/src/workspace/workspace.module.ts.html +0 -121
  511. package/backend/coverage/lcov-report/src/workspace/workspace.service.ts.html +0 -1027
  512. package/backend/coverage/lcov.info +0 -20220
  513. package/backend/packages/tokenpatch/CODEMAP.md +0 -25
  514. package/daemon/CODEMAP.md +0 -23
  515. package/visual-editor-proxy/CODEMAP.md +0 -21
@@ -1,1459 +0,0 @@
1
-
2
- <!doctype html>
3
- <html lang="en">
4
-
5
- <head>
6
- <title>Code coverage report for src/llm-orchestration/action-handlers/quick-edit.handler.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/llm-orchestration/action-handlers</a> quick-edit.handler.ts</h1>
23
- <div class='clearfix'>
24
-
25
- <div class='fl pad1y space-right2'>
26
- <span class="strong">65.78% </span>
27
- <span class="quiet">Statements</span>
28
- <span class='fraction'>75/114</span>
29
- </div>
30
-
31
-
32
- <div class='fl pad1y space-right2'>
33
- <span class="strong">56.41% </span>
34
- <span class="quiet">Branches</span>
35
- <span class='fraction'>22/39</span>
36
- </div>
37
-
38
-
39
- <div class='fl pad1y space-right2'>
40
- <span class="strong">69.23% </span>
41
- <span class="quiet">Functions</span>
42
- <span class='fraction'>9/13</span>
43
- </div>
44
-
45
-
46
- <div class='fl pad1y space-right2'>
47
- <span class="strong">65.17% </span>
48
- <span class="quiet">Lines</span>
49
- <span class='fraction'>73/112</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></td><td class="line-coverage quiet"><span class="cline-any cline-yes">7x</span>
525
- <span class="cline-any cline-neutral">&nbsp;</span>
526
- <span class="cline-any cline-neutral">&nbsp;</span>
527
- <span class="cline-any cline-neutral">&nbsp;</span>
528
- <span class="cline-any cline-neutral">&nbsp;</span>
529
- <span class="cline-any cline-neutral">&nbsp;</span>
530
- <span class="cline-any cline-neutral">&nbsp;</span>
531
- <span class="cline-any cline-yes">7x</span>
532
- <span class="cline-any cline-yes">7x</span>
533
- <span class="cline-any cline-yes">7x</span>
534
- <span class="cline-any cline-yes">7x</span>
535
- <span class="cline-any cline-yes">7x</span>
536
- <span class="cline-any cline-yes">7x</span>
537
- <span class="cline-any cline-neutral">&nbsp;</span>
538
- <span class="cline-any cline-neutral">&nbsp;</span>
539
- <span class="cline-any cline-neutral">&nbsp;</span>
540
- <span class="cline-any cline-neutral">&nbsp;</span>
541
- <span class="cline-any cline-neutral">&nbsp;</span>
542
- <span class="cline-any cline-neutral">&nbsp;</span>
543
- <span class="cline-any cline-neutral">&nbsp;</span>
544
- <span class="cline-any cline-yes">7x</span>
545
- <span class="cline-any cline-yes">7x</span>
546
- <span class="cline-any cline-yes">7x</span>
547
- <span class="cline-any cline-yes">7x</span>
548
- <span class="cline-any cline-yes">7x</span>
549
- <span class="cline-any cline-neutral">&nbsp;</span>
550
- <span class="cline-any cline-neutral">&nbsp;</span>
551
- <span class="cline-any cline-yes">7x</span>
552
- <span class="cline-any cline-yes">19x</span>
553
- <span class="cline-any cline-yes">19x</span>
554
- <span class="cline-any cline-yes">19x</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-neutral">&nbsp;</span>
559
- <span class="cline-any cline-neutral">&nbsp;</span>
560
- <span class="cline-any cline-neutral">&nbsp;</span>
561
- <span class="cline-any cline-neutral">&nbsp;</span>
562
- <span class="cline-any cline-neutral">&nbsp;</span>
563
- <span class="cline-any cline-yes">19x</span>
564
- <span class="cline-any cline-neutral">&nbsp;</span>
565
- <span class="cline-any cline-yes">19x</span>
566
- <span class="cline-any cline-neutral">&nbsp;</span>
567
- <span class="cline-any cline-neutral">&nbsp;</span>
568
- <span class="cline-any cline-neutral">&nbsp;</span>
569
- <span class="cline-any cline-no">&nbsp;</span>
570
- <span class="cline-any cline-neutral">&nbsp;</span>
571
- <span class="cline-any cline-neutral">&nbsp;</span>
572
- <span class="cline-any cline-neutral">&nbsp;</span>
573
- <span class="cline-any cline-neutral">&nbsp;</span>
574
- <span class="cline-any cline-neutral">&nbsp;</span>
575
- <span class="cline-any cline-neutral">&nbsp;</span>
576
- <span class="cline-any cline-neutral">&nbsp;</span>
577
- <span class="cline-any cline-neutral">&nbsp;</span>
578
- <span class="cline-any cline-neutral">&nbsp;</span>
579
- <span class="cline-any cline-neutral">&nbsp;</span>
580
- <span class="cline-any cline-neutral">&nbsp;</span>
581
- <span class="cline-any cline-neutral">&nbsp;</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-neutral">&nbsp;</span>
586
- <span class="cline-any cline-neutral">&nbsp;</span>
587
- <span class="cline-any cline-neutral">&nbsp;</span>
588
- <span class="cline-any cline-neutral">&nbsp;</span>
589
- <span class="cline-any cline-neutral">&nbsp;</span>
590
- <span class="cline-any cline-neutral">&nbsp;</span>
591
- <span class="cline-any cline-neutral">&nbsp;</span>
592
- <span class="cline-any cline-neutral">&nbsp;</span>
593
- <span class="cline-any cline-neutral">&nbsp;</span>
594
- <span class="cline-any cline-neutral">&nbsp;</span>
595
- <span class="cline-any cline-neutral">&nbsp;</span>
596
- <span class="cline-any cline-neutral">&nbsp;</span>
597
- <span class="cline-any cline-neutral">&nbsp;</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-yes">6x</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-neutral">&nbsp;</span>
618
- <span class="cline-any cline-neutral">&nbsp;</span>
619
- <span class="cline-any cline-neutral">&nbsp;</span>
620
- <span class="cline-any cline-yes">2x</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-neutral">&nbsp;</span>
625
- <span class="cline-any cline-neutral">&nbsp;</span>
626
- <span class="cline-any cline-neutral">&nbsp;</span>
627
- <span class="cline-any cline-neutral">&nbsp;</span>
628
- <span class="cline-any cline-neutral">&nbsp;</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-yes">2x</span>
632
- <span class="cline-any cline-neutral">&nbsp;</span>
633
- <span class="cline-any cline-neutral">&nbsp;</span>
634
- <span class="cline-any cline-neutral">&nbsp;</span>
635
- <span class="cline-any cline-neutral">&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-neutral">&nbsp;</span>
640
- <span class="cline-any cline-neutral">&nbsp;</span>
641
- <span class="cline-any cline-neutral">&nbsp;</span>
642
- <span class="cline-any cline-yes">2x</span>
643
- <span class="cline-any cline-neutral">&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-neutral">&nbsp;</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-neutral">&nbsp;</span>
652
- <span class="cline-any cline-neutral">&nbsp;</span>
653
- <span class="cline-any cline-neutral">&nbsp;</span>
654
- <span class="cline-any cline-neutral">&nbsp;</span>
655
- <span class="cline-any cline-neutral">&nbsp;</span>
656
- <span class="cline-any cline-yes">2x</span>
657
- <span class="cline-any cline-neutral">&nbsp;</span>
658
- <span class="cline-any cline-neutral">&nbsp;</span>
659
- <span class="cline-any cline-neutral">&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-neutral">&nbsp;</span>
667
- <span class="cline-any cline-neutral">&nbsp;</span>
668
- <span class="cline-any cline-neutral">&nbsp;</span>
669
- <span class="cline-any cline-neutral">&nbsp;</span>
670
- <span class="cline-any cline-neutral">&nbsp;</span>
671
- <span class="cline-any cline-neutral">&nbsp;</span>
672
- <span class="cline-any cline-neutral">&nbsp;</span>
673
- <span class="cline-any cline-neutral">&nbsp;</span>
674
- <span class="cline-any cline-neutral">&nbsp;</span>
675
- <span class="cline-any cline-neutral">&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-neutral">&nbsp;</span>
683
- <span class="cline-any cline-neutral">&nbsp;</span>
684
- <span class="cline-any cline-neutral">&nbsp;</span>
685
- <span class="cline-any cline-neutral">&nbsp;</span>
686
- <span class="cline-any cline-neutral">&nbsp;</span>
687
- <span class="cline-any cline-neutral">&nbsp;</span>
688
- <span class="cline-any cline-neutral">&nbsp;</span>
689
- <span class="cline-any cline-neutral">&nbsp;</span>
690
- <span class="cline-any cline-neutral">&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-neutral">&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-yes">2x</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-yes">9x</span>
702
- <span class="cline-any cline-yes">9x</span>
703
- <span class="cline-any cline-yes">1x</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">8x</span>
708
- <span class="cline-any cline-yes">8x</span>
709
- <span class="cline-any cline-yes">1x</span>
710
- <span class="cline-any cline-neutral">&nbsp;</span>
711
- <span class="cline-any cline-neutral">&nbsp;</span>
712
- <span class="cline-any cline-neutral">&nbsp;</span>
713
- <span class="cline-any cline-yes">7x</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-neutral">&nbsp;</span>
718
- <span class="cline-any cline-neutral">&nbsp;</span>
719
- <span class="cline-any cline-neutral">&nbsp;</span>
720
- <span class="cline-any cline-neutral">&nbsp;</span>
721
- <span class="cline-any cline-neutral">&nbsp;</span>
722
- <span class="cline-any cline-neutral">&nbsp;</span>
723
- <span class="cline-any cline-yes">13x</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-yes">13x</span>
727
- <span class="cline-any cline-yes">2x</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-yes">13x</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-neutral">&nbsp;</span>
735
- <span class="cline-any cline-neutral">&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-neutral">&nbsp;</span>
739
- <span class="cline-any cline-yes">13x</span>
740
- <span class="cline-any cline-yes">65x</span>
741
- <span class="cline-any cline-no">&nbsp;</span>
742
- <span class="cline-any cline-no">&nbsp;</span>
743
- <span class="cline-any cline-no">&nbsp;</span>
744
- <span class="cline-any cline-neutral">&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-yes">13x</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-neutral">&nbsp;</span>
753
- <span class="cline-any cline-neutral">&nbsp;</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">1x</span>
758
- <span class="cline-any cline-neutral">&nbsp;</span>
759
- <span class="cline-any cline-neutral">&nbsp;</span>
760
- <span class="cline-any cline-neutral">&nbsp;</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-neutral">&nbsp;</span>
765
- <span class="cline-any cline-neutral">&nbsp;</span>
766
- <span class="cline-any cline-neutral">&nbsp;</span>
767
- <span class="cline-any cline-neutral">&nbsp;</span>
768
- <span class="cline-any cline-neutral">&nbsp;</span>
769
- <span class="cline-any cline-neutral">&nbsp;</span>
770
- <span class="cline-any cline-no">&nbsp;</span>
771
- <span class="cline-any cline-no">&nbsp;</span>
772
- <span class="cline-any cline-neutral">&nbsp;</span>
773
- <span class="cline-any cline-neutral">&nbsp;</span>
774
- <span class="cline-any cline-neutral">&nbsp;</span>
775
- <span class="cline-any cline-no">&nbsp;</span>
776
- <span class="cline-any cline-no">&nbsp;</span>
777
- <span class="cline-any cline-neutral">&nbsp;</span>
778
- <span class="cline-any cline-neutral">&nbsp;</span>
779
- <span class="cline-any cline-neutral">&nbsp;</span>
780
- <span class="cline-any cline-neutral">&nbsp;</span>
781
- <span class="cline-any cline-neutral">&nbsp;</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-neutral">&nbsp;</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-neutral">&nbsp;</span>
791
- <span class="cline-any cline-neutral">&nbsp;</span>
792
- <span class="cline-any cline-neutral">&nbsp;</span>
793
- <span class="cline-any cline-no">&nbsp;</span>
794
- <span class="cline-any cline-neutral">&nbsp;</span>
795
- <span class="cline-any cline-no">&nbsp;</span>
796
- <span class="cline-any cline-neutral">&nbsp;</span>
797
- <span class="cline-any cline-no">&nbsp;</span>
798
- <span class="cline-any cline-no">&nbsp;</span>
799
- <span class="cline-any cline-no">&nbsp;</span>
800
- <span class="cline-any cline-neutral">&nbsp;</span>
801
- <span class="cline-any cline-no">&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-neutral">&nbsp;</span>
805
- <span class="cline-any cline-neutral">&nbsp;</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-neutral">&nbsp;</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-no">&nbsp;</span>
812
- <span class="cline-any cline-no">&nbsp;</span>
813
- <span class="cline-any cline-neutral">&nbsp;</span>
814
- <span class="cline-any cline-no">&nbsp;</span>
815
- <span class="cline-any cline-neutral">&nbsp;</span>
816
- <span class="cline-any cline-neutral">&nbsp;</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-neutral">&nbsp;</span>
822
- <span class="cline-any cline-neutral">&nbsp;</span>
823
- <span class="cline-any cline-yes">13x</span>
824
- <span class="cline-any cline-neutral">&nbsp;</span>
825
- <span class="cline-any cline-yes">13x</span>
826
- <span class="cline-any cline-yes">13x</span>
827
- <span class="cline-any cline-yes">13x</span>
828
- <span class="cline-any cline-yes">4x</span>
829
- <span class="cline-any cline-yes">4x</span>
830
- <span class="cline-any cline-neutral">&nbsp;</span>
831
- <span class="cline-any cline-yes">4x</span>
832
- <span class="cline-any cline-neutral">&nbsp;</span>
833
- <span class="cline-any cline-neutral">&nbsp;</span>
834
- <span class="cline-any cline-neutral">&nbsp;</span>
835
- <span class="cline-any cline-neutral">&nbsp;</span>
836
- <span class="cline-any cline-neutral">&nbsp;</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">9x</span>
841
- <span class="cline-any cline-yes">9x</span>
842
- <span class="cline-any cline-neutral">&nbsp;</span>
843
- <span class="cline-any cline-yes">7x</span>
844
- <span class="cline-any cline-neutral">&nbsp;</span>
845
- <span class="cline-any cline-neutral">&nbsp;</span>
846
- <span class="cline-any cline-yes">1x</span>
847
- <span class="cline-any cline-yes">1x</span>
848
- <span class="cline-any cline-neutral">&nbsp;</span>
849
- <span class="cline-any cline-no">&nbsp;</span>
850
- <span class="cline-any cline-neutral">&nbsp;</span>
851
- <span class="cline-any cline-neutral">&nbsp;</span>
852
- <span class="cline-any cline-yes">7x</span>
853
- <span class="cline-any cline-yes">1x</span>
854
- <span class="cline-any cline-yes">1x</span>
855
- <span class="cline-any cline-neutral">&nbsp;</span>
856
- <span class="cline-any cline-neutral">&nbsp;</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-neutral">&nbsp;</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">6x</span>
865
- <span class="cline-any cline-neutral">&nbsp;</span>
866
- <span class="cline-any cline-neutral">&nbsp;</span>
867
- <span class="cline-any cline-neutral">&nbsp;</span>
868
- <span class="cline-any cline-neutral">&nbsp;</span>
869
- <span class="cline-any cline-yes">6x</span>
870
- <span class="cline-any cline-no">&nbsp;</span>
871
- <span class="cline-any cline-neutral">&nbsp;</span>
872
- <span class="cline-any cline-neutral">&nbsp;</span>
873
- <span class="cline-any cline-neutral">&nbsp;</span>
874
- <span class="cline-any cline-neutral">&nbsp;</span>
875
- <span class="cline-any cline-neutral">&nbsp;</span>
876
- <span class="cline-any cline-no">&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-neutral">&nbsp;</span>
880
- <span class="cline-any cline-neutral">&nbsp;</span>
881
- <span class="cline-any cline-no">&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-neutral">&nbsp;</span>
885
- <span class="cline-any cline-neutral">&nbsp;</span>
886
- <span class="cline-any cline-neutral">&nbsp;</span>
887
- <span class="cline-any cline-neutral">&nbsp;</span>
888
- <span class="cline-any cline-neutral">&nbsp;</span>
889
- <span class="cline-any cline-neutral">&nbsp;</span>
890
- <span class="cline-any cline-neutral">&nbsp;</span>
891
- <span class="cline-any cline-yes">6x</span>
892
- <span class="cline-any cline-neutral">&nbsp;</span>
893
- <span class="cline-any cline-yes">6x</span>
894
- <span class="cline-any cline-neutral">&nbsp;</span>
895
- <span class="cline-any cline-yes">3x</span>
896
- <span class="cline-any cline-yes">3x</span>
897
- <span class="cline-any cline-neutral">&nbsp;</span>
898
- <span class="cline-any cline-yes">1x</span>
899
- <span class="cline-any cline-yes">1x</span>
900
- <span class="cline-any cline-neutral">&nbsp;</span>
901
- <span class="cline-any cline-yes">1x</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-yes">1x</span>
905
- <span class="cline-any cline-yes">1x</span>
906
- <span class="cline-any cline-neutral">&nbsp;</span>
907
- <span class="cline-any cline-neutral">&nbsp;</span>
908
- <span class="cline-any cline-yes">6x</span>
909
- <span class="cline-any cline-no">&nbsp;</span>
910
- <span class="cline-any cline-neutral">&nbsp;</span>
911
- <span class="cline-any cline-no">&nbsp;</span>
912
- <span class="cline-any cline-neutral">&nbsp;</span>
913
- <span class="cline-any cline-neutral">&nbsp;</span>
914
- <span class="cline-any cline-neutral">&nbsp;</span>
915
- <span class="cline-any cline-neutral">&nbsp;</span>
916
- <span class="cline-any cline-neutral">&nbsp;</span>
917
- <span class="cline-any cline-neutral">&nbsp;</span>
918
- <span class="cline-any cline-neutral">&nbsp;</span>
919
- <span class="cline-any cline-neutral">&nbsp;</span>
920
- <span class="cline-any cline-yes">6x</span>
921
- <span class="cline-any cline-yes">6x</span>
922
- <span class="cline-any cline-neutral">&nbsp;</span>
923
- <span class="cline-any cline-neutral">&nbsp;</span>
924
- <span class="cline-any cline-yes">6x</span>
925
- <span class="cline-any cline-neutral">&nbsp;</span>
926
- <span class="cline-any cline-no">&nbsp;</span>
927
- <span class="cline-any cline-neutral">&nbsp;</span>
928
- <span class="cline-any cline-no">&nbsp;</span>
929
- <span class="cline-any cline-no">&nbsp;</span>
930
- <span class="cline-any cline-neutral">&nbsp;</span>
931
- <span class="cline-any cline-neutral">&nbsp;</span>
932
- <span class="cline-any cline-neutral">&nbsp;</span>
933
- <span class="cline-any cline-neutral">&nbsp;</span>
934
- <span class="cline-any cline-no">&nbsp;</span>
935
- <span class="cline-any cline-no">&nbsp;</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-no">&nbsp;</span>
940
- <span class="cline-any cline-no">&nbsp;</span>
941
- <span class="cline-any cline-no">&nbsp;</span>
942
- <span class="cline-any cline-no">&nbsp;</span>
943
- <span class="cline-any cline-no">&nbsp;</span>
944
- <span class="cline-any cline-neutral">&nbsp;</span>
945
- <span class="cline-any cline-no">&nbsp;</span>
946
- <span class="cline-any cline-no">&nbsp;</span>
947
- <span class="cline-any cline-neutral">&nbsp;</span>
948
- <span class="cline-any cline-no">&nbsp;</span>
949
- <span class="cline-any cline-neutral">&nbsp;</span>
950
- <span class="cline-any cline-neutral">&nbsp;</span>
951
- <span class="cline-any cline-no">&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-neutral">&nbsp;</span>
955
- <span class="cline-any cline-neutral">&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-neutral">&nbsp;</span>
959
- <span class="cline-any cline-neutral">&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-yes">6x</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-neutral">&nbsp;</span>
968
- <span class="cline-any cline-neutral">&nbsp;</span>
969
- <span class="cline-any cline-neutral">&nbsp;</span>
970
- <span class="cline-any cline-neutral">&nbsp;</span>
971
- <span class="cline-any cline-neutral">&nbsp;</span>
972
- <span class="cline-any cline-neutral">&nbsp;</span>
973
- <span class="cline-any cline-no">&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-no">&nbsp;</span>
977
- <span class="cline-any cline-neutral">&nbsp;</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-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import {
983
- BadRequestException,
984
- Injectable,
985
- InternalServerErrorException,
986
- Logger,
987
- Optional,
988
- } from '@nestjs/common';
989
- import * as fs from 'fs/promises';
990
- import * as fsSync from 'fs';
991
- import * as path from 'path';
992
- import * as os from 'os';
993
- import { plainToClass } from 'class-transformer';
994
- import { validate } from 'class-validator';
995
- import { ActionHandler } from './action-handler.interface';
996
- import {
997
- ActionExecutionResult,
998
- PlanExecutionContext,
999
- ToolMetadata,
1000
- } from '../llm-orchestration.interfaces';
1001
- &nbsp;
1002
- import { QuickEditArgsDto } from './dto/quick-edit.args.dto';
1003
- import { generateToolCall, generateToolCallJson } from '../../utils';
1004
- import { HybridMatcher } from './matchers/hybrid.matcher';
1005
- import { SyntaxValidationService } from '../../syntax-validation/syntax-validation.service';
1006
- import { ApplicationStateService } from '../../application-state/application-state.service';
1007
- &nbsp;
1008
- @Injectable()
1009
- export class QuickEditHandler implements ActionHandler {
1010
- readonly toolName = 'quick_edit';
1011
- private readonly logger = new Logger(QuickEditHandler.name);
1012
- private readonly projectRoot: string =
1013
- process.env.REPOBURG_PROJECT_PATH || process.cwd();
1014
- private readonly hybridMatcher = new HybridMatcher();
1015
- private readonly logDir: string =
1016
- process.env.QUICK_EDIT_LOG_DIR ||
1017
- <span class="branch-1 cbranch-no" title="branch not covered" > path.join(os.homedir(), '.repoburg/quick-edit-logs');</span>
1018
- &nbsp;
1019
- constructor(
1020
- @Optional()
1021
- private readonly syntaxValidator?: SyntaxValidationService,
1022
- @Optional()
1023
- private readonly appStateService?: ApplicationStateService,
1024
- ) {}
1025
- &nbsp;
1026
- <span class="fstat-no" title="function not covered" > getMetadata(</span>): ToolMetadata {
1027
- <span class="cstat-no" title="statement not covered" > return {</span>
1028
- name: this.toolName,
1029
- description: this.getDefinition(true),
1030
- arguments: [
1031
- {
1032
- name: 'file_path',
1033
- type: 'string',
1034
- description: 'The relative path to file to be modified.',
1035
- required: true,
1036
- },
1037
- {
1038
- name: 'action',
1039
- type: 'string',
1040
- description:
1041
- "The operation to perform. Allowed values: 'insert_after', 'insert_before', 'replace', 'delete_block'. Defaults to 'replace'.",
1042
- required: false,
1043
- },
1044
- {
1045
- name: 'search_block',
1046
- type: 'string',
1047
- description:
1048
- 'A unique and exact block of code to locate the position for the edit.',
1049
- required: true,
1050
- },
1051
- {
1052
- name: 'new_content',
1053
- type: 'string',
1054
- description:
1055
- "The new code to be added. Required for 'insert_after', 'insert_before', and 'replace'.",
1056
- required: false,
1057
- },
1058
- ],
1059
- };
1060
- }
1061
- &nbsp;
1062
- /**
1063
- * Generates a tool call example in the specified format.
1064
- * @param toolCall - The tool call object to format
1065
- * @param useJson - If true, uses JSON format; otherwise uses XML-style format
1066
- * @returns Formatted tool call string
1067
- */
1068
- private generateExample(
1069
- toolCall: Record&lt;string, any&gt;,
1070
- useJson: boolean = <span class="branch-0 cbranch-no" title="branch not covered" >false,</span>
1071
- ): string {
1072
- return useJson
1073
- ? <span class="branch-0 cbranch-no" title="branch not covered" >generateToolCallJson(toolCall)</span>
1074
- : generateToolCall(toolCall);
1075
- }
1076
- &nbsp;
1077
- getDefinition(useJsonFormat: boolean = false): string {
1078
- const insertAfterExample = this.generateExample(
1079
- {
1080
- tool_name: this.toolName,
1081
- file_path: 'src/components/Header.tsx',
1082
- action: 'insert_after',
1083
- search_block: `import React from 'react';`,
1084
- new_content: `import { useTheme } from '@emotion/react';`,
1085
- },
1086
- useJsonFormat,
1087
- );
1088
- &nbsp;
1089
- const replaceExample = this.generateExample(
1090
- {
1091
- tool_name: this.toolName,
1092
- file_path: 'src/config.ts',
1093
- action: 'replace',
1094
- search_block: `export const API_TIMEOUT = 5000;`,
1095
- new_content: `export const API_TIMEOUT = 10000; // Increased timeout`,
1096
- },
1097
- useJsonFormat,
1098
- );
1099
- &nbsp;
1100
- const deleteExample = this.generateExample(
1101
- {
1102
- tool_name: this.toolName,
1103
- file_path: 'src/utils/legacy.js',
1104
- action: 'delete_block',
1105
- search_block: `
1106
- function oldUnusedFunction() {
1107
- return 'hello';
1108
- }
1109
- `.trim(),
1110
- },
1111
- useJsonFormat,
1112
- );
1113
- &nbsp;
1114
- const definition = `
1115
- -------------
1116
- ### ${this.toolName}
1117
- Makes small, targeted changes to a file by finding a unique block of text and inserting, replacing, or deleting it.
1118
- &nbsp;
1119
- **Best Practices:**
1120
- - Include 3-5 lines surrounding code you want to edit
1121
- - Use unique identifiers (variable names, function names) in your search block
1122
- - Avoid selecting large blocks (&gt;10 lines) - smaller is more reliable
1123
- - Verify your search block matches the file exactly character-for-character
1124
- - When code appears multiple times, include more surrounding context to disambiguate
1125
- &nbsp;
1126
- **Common Pitfalls:**
1127
- - Search block with trailing characters the LLM added (e.g., "value;xyz")
1128
- - Extra whitespace or indentation not present in file
1129
- - Selecting only common patterns (imports, exports) that appear multiple times
1130
- - Including code that was already edited in a previous action
1131
- &nbsp;
1132
- **When to use quick_edit vs overwrite_file:**
1133
- - Use quick_edit for small, targeted changes (1-10 lines)
1134
- - Use overwrite_file for large replacements, complete file rewrites, or when search block cannot be unique
1135
- &nbsp;
1136
- #### Parameters
1137
- - "file_path": (string) The relative path to file to be modified.
1138
- - "action": (enum, optional) The operation to perform. Allowed values: 'insert_after', 'insert_before', 'replace', 'delete_block'. Defaults to 'replace'.
1139
- - "search_block": (string) A unique and exact block of code to locate the position for the edit.
1140
- - "new_content": (string, optional) The new code to be added. Required for 'insert_after', 'insert_before', and 'replace'.
1141
- &nbsp;
1142
- #### Example: Insert After
1143
- Explanation: Add an import statement after the React import.
1144
- ${insertAfterExample}
1145
- &nbsp;
1146
- #### Example: Replace
1147
- Explanation: Change the API timeout constant value.
1148
- ${replaceExample}
1149
- &nbsp;
1150
- #### Example: Delete
1151
- Explanation: Remove the old unused function.
1152
- ${deleteExample}
1153
- -------------
1154
- `;
1155
- return `\n${definition.trim()}\n`;
1156
- }
1157
- &nbsp;
1158
- private resolveAndValidatePath(unsafePath: string): string {
1159
- const normalizedPath = path.normalize(unsafePath);
1160
- if (path.isAbsolute(normalizedPath)) {
1161
- throw new BadRequestException(
1162
- `Absolute paths are not allowed: ${unsafePath}`,
1163
- );
1164
- }
1165
- const resolvedPath = path.resolve(this.projectRoot, normalizedPath);
1166
- if (!resolvedPath.startsWith(this.projectRoot)) {
1167
- throw new BadRequestException(
1168
- `Path traversal is not allowed: ${unsafePath}`,
1169
- );
1170
- }
1171
- return resolvedPath;
1172
- }
1173
- &nbsp;
1174
- /**
1175
- * Normalizes common parameter name mistakes before validation.
1176
- * Maps intuitive but incorrect names to the expected schema.
1177
- * @param args - The raw arguments from the LLM
1178
- * @returns Normalized arguments with correct parameter names
1179
- */
1180
- private normalizeArgs(args: Record&lt;string, any&gt;): Record&lt;string, any&gt; {
1181
- const normalized = { ...args };
1182
- &nbsp;
1183
- // Apply default value for action if missing or undefined
1184
- if (normalized.action === undefined || normalized.action === null) {
1185
- normalized.action = 'replace';
1186
- }
1187
- &nbsp;
1188
- // Map common parameter name mistakes to correct ones
1189
- const mappings: Record&lt;string, string&gt; = {
1190
- old_content: 'search_block',
1191
- search: 'search_block',
1192
- target: 'search_block',
1193
- replacement: 'new_content',
1194
- content: 'new_content',
1195
- };
1196
- &nbsp;
1197
- for (const [incorrect, correct] of Object.entries(mappings)) {
1198
- <span class="missing-if-branch" title="if path not taken" >I</span>if (incorrect in normalized &amp;&amp; <span class="branch-1 cbranch-no" title="branch not covered" >!(correct in normalized))</span> {
1199
- <span class="cstat-no" title="statement not covered" > normalized[correct] = normalized[incorrect];</span>
1200
- <span class="cstat-no" title="statement not covered" > delete normalized[incorrect];</span>
1201
- <span class="cstat-no" title="statement not covered" > this.logger.debug(</span>
1202
- `Auto-corrected parameter name: "${incorrect}" → "${correct}"`,
1203
- );
1204
- }
1205
- }
1206
- &nbsp;
1207
- return normalized;
1208
- }
1209
- &nbsp;
1210
- /**
1211
- * Format error message when file is not found.
1212
- */
1213
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
1214
- private formatNotFoundMessage(filePath: string, searchBlock: string): string {
1215
- return `File \`${filePath}\` not found. Use \`request_context\` to verify the file path and content.`;
1216
- }
1217
- &nbsp;
1218
- /**
1219
- * Format error message with candidate matches.
1220
- * Provides concise information to help the LLM choose the correct block.
1221
- */
1222
- private <span class="fstat-no" title="function not covered" >formatErrorWithCandidates(</span>
1223
- filePath: string,
1224
- searchBlock: string,
1225
- matchResult: any,
1226
- ): string {
1227
- // No candidates at all
1228
- <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (!matchResult.candidates || matchResult.candidates.length === 0) {</span>
1229
- <span class="cstat-no" title="statement not covered" > return `Search block not found in \`${filePath}\`. Use \`request_context\` to read the file and verify content.`;</span>
1230
- }
1231
- &nbsp;
1232
- // Multiple candidates found - short message
1233
- const count = <span class="cstat-no" title="statement not covered" >matchResult.candidates.length;</span>
1234
- <span class="cstat-no" title="statement not covered" > return `Found **${count} possible matches** for your search block in \`${filePath}\`. Include more surrounding lines or use \`request_context\` to uniquely identify the correct location.`;</span>
1235
- }
1236
- &nbsp;
1237
- /**
1238
- * Writes a detailed log file when search block matching fails.
1239
- * Creates a separate log file for each failure with a timestamp-based filename.
1240
- * @param action - The action being performed
1241
- * @param searchBlock - The search block that failed to match
1242
- * @param filePath - The relative path to the file
1243
- * @param fileContent - The full content of the file before modification
1244
- */
1245
- private <span class="fstat-no" title="function not covered" >async </span>writeMatchFailureLog(
1246
- action: string,
1247
- searchBlock: string,
1248
- filePath: string,
1249
- fileContent: string,
1250
- ): Promise&lt;void&gt; {
1251
- <span class="cstat-no" title="statement not covered" > try {</span>
1252
- // Use fsSync.promises to avoid test mocks interfering with logging
1253
- <span class="cstat-no" title="statement not covered" > await fsSync.promises.mkdir(this.logDir, { recursive: true });</span>
1254
- &nbsp;
1255
- const timestamp = <span class="cstat-no" title="statement not covered" >new Date().toISOString().replace(/[:.]/g, '-');</span>
1256
- const logFileName = <span class="cstat-no" title="statement not covered" >`quick-edit-failure-${timestamp}.txt`;</span>
1257
- const logFilePath = <span class="cstat-no" title="statement not covered" >path.join(this.logDir, logFileName);</span>
1258
- &nbsp;
1259
- const logContent = <span class="cstat-no" title="statement not covered" >`Timestamp: ${new Date().toISOString()}</span>
1260
- Action: ${action}
1261
- FilePath: ${filePath}
1262
- &nbsp;
1263
- Search Block:
1264
- ${searchBlock}
1265
- &nbsp;
1266
- File Content Before Modification:
1267
- ${fileContent}`;
1268
- &nbsp;
1269
- <span class="cstat-no" title="statement not covered" > await fsSync.promises.writeFile(logFilePath, logContent, 'utf8');</span>
1270
- <span class="cstat-no" title="statement not covered" > this.logger.debug(`Match failure log written to: ${logFilePath}`);</span>
1271
- } catch (error) {
1272
- <span class="cstat-no" title="statement not covered" > this.logger.error(`Failed to write match failure log: ${error.message}`);</span>
1273
- }
1274
- }
1275
- &nbsp;
1276
- async execute(
1277
- args: { [key: string]: any },
1278
- _context: PlanExecutionContext,
1279
- ): Promise&lt;ActionExecutionResult&gt; {
1280
- // Auto-correct common parameter name mistakes before validation
1281
- const normalizedArgs = this.normalizeArgs(args);
1282
- &nbsp;
1283
- const validatedArgs = plainToClass(QuickEditArgsDto, normalizedArgs);
1284
- const errors = await validate(validatedArgs);
1285
- if (errors.length &gt; 0) {
1286
- const errorMessages = errors
1287
- .map((err) =&gt; Object.values(err.constraints || <span class="branch-1 cbranch-no" title="branch not covered" >{})</span>.join(', '))
1288
- .join('; ');
1289
- return {
1290
- status: 'FAILURE',
1291
- summary: `Invalid arguments for ${this.toolName}.`,
1292
- error_message: errorMessages,
1293
- persisted_args: args,
1294
- execution_log: { output: '', error_message: errorMessages },
1295
- };
1296
- }
1297
- &nbsp;
1298
- const { file_path, action, search_block, new_content } = validatedArgs;
1299
- const safePath = this.resolveAndValidatePath(file_path);
1300
- &nbsp;
1301
- const originalContent = await fs
1302
- .readFile(safePath, 'utf8')
1303
- .catch((error) =&gt; {
1304
- if (error.code === 'ENOENT') {
1305
- return null;
1306
- }
1307
- <span class="cstat-no" title="statement not covered" > throw error;</span>
1308
- });
1309
- &nbsp;
1310
- if (originalContent === null) {
1311
- const errorMessage = this.formatNotFoundMessage(file_path, search_block);
1312
- return {
1313
- status: 'FAILURE',
1314
- summary: `Quick edit on "${file_path}" failed: File not found.`,
1315
- error_message: errorMessage,
1316
- persisted_args: validatedArgs,
1317
- execution_log: { output: '', error_message: errorMessage },
1318
- };
1319
- }
1320
- &nbsp;
1321
- // Use hybrid matching algorithm
1322
- const matchResult = this.hybridMatcher.findBestMatch(
1323
- search_block,
1324
- originalContent,
1325
- );
1326
- &nbsp;
1327
- <span class="missing-if-branch" title="if path not taken" >I</span>if (!matchResult.found || !matchResult.unique) {
1328
- <span class="cstat-no" title="statement not covered" > await this.writeMatchFailureLog(</span>
1329
- action,
1330
- search_block,
1331
- file_path,
1332
- originalContent,
1333
- );
1334
- const errorMessage = <span class="cstat-no" title="statement not covered" >this.formatErrorWithCandidates(</span>
1335
- file_path,
1336
- search_block,
1337
- matchResult,
1338
- );
1339
- <span class="cstat-no" title="statement not covered" > return {</span>
1340
- status: 'FAILURE',
1341
- summary: `Quick edit on "${file_path}" failed: Match issue.`,
1342
- error_message: errorMessage,
1343
- persisted_args: validatedArgs,
1344
- execution_log: { output: '', error_message: errorMessage },
1345
- };
1346
- }
1347
- &nbsp;
1348
- let newFileContent: string;
1349
- const { before, after } = matchResult;
1350
- &nbsp;
1351
- switch (action) {
1352
- case 'replace':
1353
- newFileContent = `${before}${new_content}${after}`;
1354
- break;
1355
- case 'insert_after':
1356
- newFileContent = `${before}${search_block}\n${new_content}${after}`;
1357
- break;
1358
- case 'insert_before':
1359
- newFileContent = `${before}${new_content}\n${search_block}${after}`;
1360
- break;
1361
- case 'delete_block':
1362
- newFileContent = `${before}${after}`;
1363
- break;
1364
- }
1365
- // Check if content is identical after edit
1366
- <span class="missing-if-branch" title="if path not taken" >I</span>if (newFileContent === originalContent) {
1367
- const noChangeMessage = <span class="cstat-no" title="statement not covered" >`The quick_edit operation on "${file_path}" resulted in no changes. The new content is identical to the original content. This typically means your edit didn't change anything (e.g., replacing with the same content, or inserting duplicate content). Please review your edit and ensure you're making the intended changes.`;</span>
1368
- &nbsp;
1369
- <span class="cstat-no" title="statement not covered" > return {</span>
1370
- status: 'FAILURE',
1371
- summary: `Quick edit on "${file_path}" produced no changes.`,
1372
- error_message: noChangeMessage,
1373
- persisted_args: validatedArgs,
1374
- execution_log: { output: '', error_message: noChangeMessage },
1375
- };
1376
- }
1377
- &nbsp;
1378
- try {
1379
- await fs.writeFile(safePath, newFileContent, 'utf8');
1380
- &nbsp;
1381
- // Syntax validation after quick edit
1382
- <span class="missing-if-branch" title="if path not taken" >I</span>if (this.syntaxValidator &amp;&amp; <span class="branch-1 cbranch-no" title="branch not covered" >this.appStateService)</span> {
1383
- const isValidationEnabled =
1384
- <span class="cstat-no" title="statement not covered" > await this.appStateService.getSyntaxValidationEnabled();</span>
1385
- &nbsp;
1386
- <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (isValidationEnabled) {</span>
1387
- const validationError = <span class="cstat-no" title="statement not covered" >await this.syntaxValidator.validate(</span>
1388
- file_path,
1389
- newFileContent,
1390
- );
1391
- &nbsp;
1392
- <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (validationError) {</span>
1393
- <span class="cstat-no" title="statement not covered" > this.logger.warn(</span>
1394
- `Syntax validation failed for quick edit on "${file_path}"`,
1395
- );
1396
- let errorMessage =
1397
- <span class="cstat-no" title="statement not covered" > this.syntaxValidator.formatErrors(validationError);</span>
1398
- <span class="cstat-no" title="statement not covered" > errorMessage += `\n**CORRECTION:** Your \`quick_edit\` introduced syntax errors. The original file content has been restored. `;</span>
1399
- <span class="cstat-no" title="statement not covered" > errorMessage += `Please ensure your edit maintains syntactically valid code. `;</span>
1400
- <span class="cstat-no" title="statement not covered" > errorMessage += `Common issues: missing closing braces in inserted code, mismatched quotes, or broken imports. `;</span>
1401
- <span class="cstat-no" title="statement not covered" > errorMessage += `Use \`request_context\` to verify the file state and try again with a corrected \`search_block\` or \`new_content\`.`;</span>
1402
- // Restore original content to prevent corruption
1403
- <span class="cstat-no" title="statement not covered" > if (originalContent !== null) {</span>
1404
- <span class="cstat-no" title="statement not covered" > await fs.writeFile(safePath, originalContent, 'utf8');</span>
1405
- } else {
1406
- <span class="cstat-no" title="statement not covered" > await fs.unlink(safePath).catch(<span class="fstat-no" title="function not covered" >() =</span>&gt; {});</span>
1407
- }
1408
- &nbsp;
1409
- <span class="cstat-no" title="statement not covered" > return {</span>
1410
- status: 'FAILURE',
1411
- summary: `File "${file_path}" contains syntax errors after quick_edit and was reverted.`,
1412
- error_message: errorMessage,
1413
- persisted_args: validatedArgs,
1414
- execution_log: { output: '', error_message: errorMessage },
1415
- };
1416
- }
1417
- }
1418
- }
1419
- &nbsp;
1420
- return {
1421
- status: 'SUCCESS',
1422
- summary: `File "${file_path}" successfully modified with quick_edit.`,
1423
- persisted_args: { ...validatedArgs, content: newFileContent },
1424
- original_content_for_revert: originalContent,
1425
- execution_log: {
1426
- output: `${file_path} has been modified.`,
1427
- error_message: '',
1428
- },
1429
- };
1430
- } catch (error) {
1431
- <span class="cstat-no" title="statement not covered" > this.logger.error(</span>
1432
- `Failed to write file for quick edit at ${file_path}: ${error.message}`,
1433
- );
1434
- <span class="cstat-no" title="statement not covered" > throw new InternalServerErrorException(</span>
1435
- `Failed to quick_edit file "${file_path}": ${error.message}`,
1436
- );
1437
- }
1438
- }
1439
- }
1440
- &nbsp;</pre></td></tr></table></pre>
1441
-
1442
- <div class='push'></div><!-- for sticky footer -->
1443
- </div><!-- /wrapper -->
1444
- <div class='footer quiet pad2 space-top1 center small'>
1445
- Code coverage generated by
1446
- <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
1447
- at 2026-05-09T01:03:45.353Z
1448
- </div>
1449
- <script src="../../../prettify.js"></script>
1450
- <script>
1451
- window.onload = function () {
1452
- prettyPrint();
1453
- };
1454
- </script>
1455
- <script src="../../../sorter.js"></script>
1456
- <script src="../../../block-navigation.js"></script>
1457
- </body>
1458
- </html>
1459
-