repoburg 1.3.148 → 1.3.149
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/.claude/settings.local.json +0 -7
- package/.playwright-mcp/console-2026-05-12T09-54-31-560Z.log +0 -13
- package/.playwright-mcp/console-2026-05-12T10-04-14-892Z.log +0 -13
- package/.playwright-mcp/console-2026-05-12T10-50-32-398Z.log +0 -14
- package/.playwright-mcp/console-2026-05-12T12-50-09-889Z.log +0 -13
- package/.playwright-mcp/console-2026-05-12T12-58-49-817Z.log +0 -60
- package/.playwright-mcp/console-2026-05-13T18-41-50-654Z.log +0 -13
- package/.playwright-mcp/console-2026-05-13T18-54-58-000Z.log +0 -13
- package/.playwright-mcp/console-2026-05-13T19-13-30-875Z.log +0 -95
- package/.playwright-mcp/console-2026-05-13T20-09-13-456Z.log +0 -17
- package/.playwright-mcp/console-2026-05-13T20-21-01-662Z.log +0 -13
- package/.playwright-mcp/console-2026-05-13T20-22-00-038Z.log +0 -15
- package/.playwright-mcp/console-2026-05-13T20-26-26-665Z.log +0 -28
- package/.playwright-mcp/console-2026-05-13T20-35-49-544Z.log +0 -26
- package/.playwright-mcp/console-2026-05-13T20-38-10-958Z.log +0 -676
- package/.playwright-mcp/console-2026-05-14T21-27-06-074Z.log +0 -69
- package/.playwright-mcp/console-2026-05-14T22-13-07-470Z.log +0 -101
- package/.playwright-mcp/console-2026-05-14T23-58-12-858Z.log +0 -28
- package/.playwright-mcp/console-2026-05-15T00-15-00-760Z.log +0 -81
- package/.playwright-mcp/page-2026-05-12T09-54-32-920Z.yml +0 -223
- package/.playwright-mcp/page-2026-05-12T09-54-42-067Z.yml +0 -190
- package/.playwright-mcp/page-2026-05-12T09-55-12-019Z.yml +0 -389
- package/.playwright-mcp/page-2026-05-12T09-55-49-065Z.yml +0 -428
- package/.playwright-mcp/page-2026-05-12T09-56-06-607Z.yml +0 -389
- package/.playwright-mcp/page-2026-05-12T09-56-23-371Z.yml +0 -196
- package/.playwright-mcp/page-2026-05-12T09-56-55-792Z.yml +0 -389
- package/.playwright-mcp/page-2026-05-12T10-04-15-716Z.yml +0 -164
- package/.playwright-mcp/page-2026-05-12T10-04-43-994Z.yml +0 -190
- package/.playwright-mcp/page-2026-05-12T10-05-04-616Z.yml +0 -389
- package/.playwright-mcp/page-2026-05-12T10-05-27-643Z.yml +0 -428
- package/.playwright-mcp/page-2026-05-12T10-05-47-851Z.yml +0 -389
- package/.playwright-mcp/page-2026-05-12T10-06-13-429Z.yml +0 -196
- package/.playwright-mcp/page-2026-05-12T10-06-58-147Z.yml +0 -389
- package/.playwright-mcp/page-2026-05-12T10-08-20-216Z.yml +0 -428
- package/.playwright-mcp/page-2026-05-12T10-08-38-177Z.yml +0 -389
- package/.playwright-mcp/page-2026-05-12T10-09-01-851Z.yml +0 -196
- package/.playwright-mcp/page-2026-05-12T10-09-24-888Z.yml +0 -389
- package/.playwright-mcp/page-2026-05-12T10-50-33-049Z.yml +0 -212
- package/.playwright-mcp/page-2026-05-12T10-50-48-496Z.yml +0 -196
- package/.playwright-mcp/page-2026-05-12T10-51-51-308Z.yml +0 -196
- package/.playwright-mcp/page-2026-05-12T10-52-07-379Z.yml +0 -196
- package/.playwright-mcp/page-2026-05-12T12-50-10-589Z.yml +0 -143
- package/.playwright-mcp/page-2026-05-12T12-50-25-461Z.yml +0 -196
- package/.playwright-mcp/page-2026-05-12T12-51-11-190Z.yml +0 -394
- package/.playwright-mcp/page-2026-05-12T12-52-21-138Z.yml +0 -524
- package/.playwright-mcp/page-2026-05-12T12-53-42-423Z.yml +0 -431
- package/.playwright-mcp/page-2026-05-12T12-54-18-549Z.yml +0 -196
- package/.playwright-mcp/page-2026-05-12T12-54-26-818Z.yml +0 -390
- package/.playwright-mcp/page-2026-05-12T12-55-32-697Z.yml +0 -520
- package/.playwright-mcp/page-2026-05-12T12-58-50-450Z.yml +0 -164
- package/.playwright-mcp/page-2026-05-12T12-59-12-954Z.yml +0 -196
- package/.playwright-mcp/page-2026-05-12T12-59-38-479Z.yml +0 -394
- package/.playwright-mcp/page-2026-05-12T13-01-17-580Z.yml +0 -524
- package/.playwright-mcp/page-2026-05-12T13-01-58-447Z.yml +0 -271
- package/.playwright-mcp/page-2026-05-12T13-03-12-109Z.yml +0 -394
- package/.playwright-mcp/page-2026-05-13T18-41-51-436Z.yml +0 -159
- package/.playwright-mcp/page-2026-05-13T18-42-27-482Z.yml +0 -4814
- package/.playwright-mcp/page-2026-05-13T18-54-58-644Z.yml +0 -154
- package/.playwright-mcp/page-2026-05-13T18-56-11-217Z.yml +0 -1560
- package/.playwright-mcp/page-2026-05-13T18-56-32-205Z.yml +0 -1560
- package/.playwright-mcp/page-2026-05-13T19-13-31-457Z.yml +0 -164
- package/.playwright-mcp/page-2026-05-13T19-14-26-248Z.yml +0 -1560
- package/.playwright-mcp/page-2026-05-13T19-15-02-355Z.yml +0 -1560
- package/.playwright-mcp/page-2026-05-13T20-09-14-478Z.yml +0 -149
- package/.playwright-mcp/page-2026-05-13T20-10-49-292Z.yml +0 -4814
- package/.playwright-mcp/page-2026-05-13T20-21-02-852Z.yml +0 -143
- package/.playwright-mcp/page-2026-05-13T20-22-01-084Z.yml +0 -143
- package/.playwright-mcp/page-2026-05-13T20-22-09-334Z.yml +0 -1561
- package/.playwright-mcp/page-2026-05-13T20-26-27-690Z.yml +0 -143
- package/.playwright-mcp/page-2026-05-13T20-26-53-324Z.yml +0 -1561
- package/.playwright-mcp/page-2026-05-13T20-27-35-395Z.yml +0 -1561
- package/.playwright-mcp/page-2026-05-13T20-35-50-708Z.yml +0 -149
- package/.playwright-mcp/page-2026-05-13T20-37-41-379Z.yml +0 -0
- package/.playwright-mcp/page-2026-05-13T20-38-12-049Z.yml +0 -149
- package/.playwright-mcp/page-2026-05-13T20-38-19-708Z.yml +0 -1561
- package/.playwright-mcp/page-2026-05-14T21-27-07-278Z.yml +0 -164
- package/.playwright-mcp/page-2026-05-14T22-13-07-628Z.yml +0 -5
- package/.playwright-mcp/page-2026-05-14T22-13-27-676Z.yml +0 -1561
- package/.playwright-mcp/page-2026-05-14T23-58-13-064Z.yml +0 -3
- package/.playwright-mcp/page-2026-05-14T23-58-33-500Z.yml +0 -1561
- package/.playwright-mcp/page-2026-05-15T00-15-00-945Z.yml +0 -3
- package/.run/backend _ build.run.xml +0 -12
- package/.run/backend _ lint.run.xml +0 -12
- package/.run/backend _ test.run.xml +0 -12
- package/.run/frontend _ build.run.xml +0 -12
- package/.run/frontend _ lint_fix.run.xml +0 -12
- package/CODEMAP.md +0 -53
- package/backend/.repoburg/hooks/README.md +0 -53
- package/backend/.repoburg/hooks/eslint-hook.ts +0 -46
- package/backend/.repoburg/hooks/example-hook.ts +0 -62
- package/backend/CODEMAP.md +0 -48
- package/backend/README.md +0 -3
- package/backend/coverage/clover.xml +0 -12003
- package/backend/coverage/coverage-final.json +0 -313
- package/backend/coverage/lcov-report/base.css +0 -224
- package/backend/coverage/lcov-report/block-navigation.js +0 -87
- package/backend/coverage/lcov-report/favicon.png +0 -0
- package/backend/coverage/lcov-report/index.html +0 -1301
- package/backend/coverage/lcov-report/packages/gemini-core/examples/index.html +0 -116
- package/backend/coverage/lcov-report/packages/gemini-core/examples/simple.ts.html +0 -445
- package/backend/coverage/lcov-report/packages/gemini-core/index.html +0 -116
- package/backend/coverage/lcov-report/packages/gemini-core/index.ts.html +0 -127
- package/backend/coverage/lcov-report/packages/gemini-core/src/code_assist/codeAssist.ts.html +0 -193
- package/backend/coverage/lcov-report/packages/gemini-core/src/code_assist/converter.ts.html +0 -832
- package/backend/coverage/lcov-report/packages/gemini-core/src/code_assist/index.html +0 -206
- package/backend/coverage/lcov-report/packages/gemini-core/src/code_assist/oauth-credential-storage.ts.html +0 -469
- package/backend/coverage/lcov-report/packages/gemini-core/src/code_assist/oauth2.ts.html +0 -1705
- package/backend/coverage/lcov-report/packages/gemini-core/src/code_assist/server.ts.html +0 -790
- package/backend/coverage/lcov-report/packages/gemini-core/src/code_assist/setup.ts.html +0 -454
- package/backend/coverage/lcov-report/packages/gemini-core/src/code_assist/types.ts.html +0 -685
- package/backend/coverage/lcov-report/packages/gemini-core/src/config/config.ts.html +0 -307
- package/backend/coverage/lcov-report/packages/gemini-core/src/config/index.html +0 -146
- package/backend/coverage/lcov-report/packages/gemini-core/src/config/models.ts.html +0 -151
- package/backend/coverage/lcov-report/packages/gemini-core/src/config/storage.ts.html +0 -172
- package/backend/coverage/lcov-report/packages/gemini-core/src/core/contentGenerator.ts.html +0 -490
- package/backend/coverage/lcov-report/packages/gemini-core/src/core/geminiChat.ts.html +0 -1237
- package/backend/coverage/lcov-report/packages/gemini-core/src/core/geminiRequest.ts.html +0 -139
- package/backend/coverage/lcov-report/packages/gemini-core/src/core/index.html +0 -176
- package/backend/coverage/lcov-report/packages/gemini-core/src/core/prompts.ts.html +0 -409
- package/backend/coverage/lcov-report/packages/gemini-core/src/core/tokenLimits.ts.html +0 -181
- package/backend/coverage/lcov-report/packages/gemini-core/src/index.html +0 -116
- package/backend/coverage/lcov-report/packages/gemini-core/src/index.ts.html +0 -187
- package/backend/coverage/lcov-report/packages/gemini-core/src/mcp/token-storage/base-token-storage.ts.html +0 -229
- package/backend/coverage/lcov-report/packages/gemini-core/src/mcp/token-storage/file-token-storage.ts.html +0 -634
- package/backend/coverage/lcov-report/packages/gemini-core/src/mcp/token-storage/hybrid-token-storage.ts.html +0 -373
- package/backend/coverage/lcov-report/packages/gemini-core/src/mcp/token-storage/index.html +0 -191
- package/backend/coverage/lcov-report/packages/gemini-core/src/mcp/token-storage/index.ts.html +0 -124
- package/backend/coverage/lcov-report/packages/gemini-core/src/mcp/token-storage/keychain-token-storage.ts.html +0 -835
- package/backend/coverage/lcov-report/packages/gemini-core/src/mcp/token-storage/types.ts.html +0 -211
- package/backend/coverage/lcov-report/packages/gemini-core/src/utils/errors.ts.html +0 -421
- package/backend/coverage/lcov-report/packages/gemini-core/src/utils/index.html +0 -191
- package/backend/coverage/lcov-report/packages/gemini-core/src/utils/partUtils.ts.html +0 -592
- package/backend/coverage/lcov-report/packages/gemini-core/src/utils/quotaErrorDetection.ts.html +0 -388
- package/backend/coverage/lcov-report/packages/gemini-core/src/utils/retry.ts.html +0 -877
- package/backend/coverage/lcov-report/packages/gemini-core/src/utils/session.ts.html +0 -112
- package/backend/coverage/lcov-report/packages/gemini-core/src/utils/userAccountManager.ts.html +0 -502
- package/backend/coverage/lcov-report/packages/tokenpatch/index.html +0 -161
- package/backend/coverage/lcov-report/packages/tokenpatch/index.ts.html +0 -415
- package/backend/coverage/lcov-report/packages/tokenpatch/parser.ts.html +0 -139
- package/backend/coverage/lcov-report/packages/tokenpatch/patcher.ts.html +0 -1249
- package/backend/coverage/lcov-report/packages/tokenpatch/strategies/index.html +0 -131
- package/backend/coverage/lcov-report/packages/tokenpatch/strategies/tiktoken-tokenizer.ts.html +0 -187
- package/backend/coverage/lcov-report/packages/tokenpatch/strategies/tree-sitter-tokenizer.ts.html +0 -193
- package/backend/coverage/lcov-report/packages/tokenpatch/tokens.ts.html +0 -178
- package/backend/coverage/lcov-report/prettify.css +0 -1
- package/backend/coverage/lcov-report/prettify.js +0 -2
- package/backend/coverage/lcov-report/sort-arrow-sprite.png +0 -0
- package/backend/coverage/lcov-report/sorter.js +0 -210
- package/backend/coverage/lcov-report/src/ai-actions/ai-action-batch.service.ts.html +0 -1549
- package/backend/coverage/lcov-report/src/ai-actions/ai-actions.controller.ts.html +0 -904
- package/backend/coverage/lcov-report/src/ai-actions/ai-actions.module.ts.html +0 -175
- package/backend/coverage/lcov-report/src/ai-actions/ai-actions.service.ts.html +0 -1534
- package/backend/coverage/lcov-report/src/ai-actions/index.html +0 -161
- package/backend/coverage/lcov-report/src/app.controller.ts.html +0 -151
- package/backend/coverage/lcov-report/src/app.module.ts.html +0 -451
- package/backend/coverage/lcov-report/src/app.service.ts.html +0 -163
- package/backend/coverage/lcov-report/src/application-state/application-state.controller.ts.html +0 -1609
- package/backend/coverage/lcov-report/src/application-state/application-state.module.ts.html +0 -136
- package/backend/coverage/lcov-report/src/application-state/application-state.service.ts.html +0 -2281
- package/backend/coverage/lcov-report/src/application-state/dto/index.html +0 -416
- package/backend/coverage/lcov-report/src/application-state/dto/set-alibaba-config.dto.ts.html +0 -109
- package/backend/coverage/lcov-report/src/application-state/dto/set-auto-context-fetch-enabled.dto.ts.html +0 -118
- package/backend/coverage/lcov-report/src/application-state/dto/set-auto-send-to-ai-studio-enabled.dto.ts.html +0 -109
- package/backend/coverage/lcov-report/src/application-state/dto/set-context-token-limit.dto.ts.html +0 -124
- package/backend/coverage/lcov-report/src/application-state/dto/set-execution-strategy.dto.ts.html +0 -121
- package/backend/coverage/lcov-report/src/application-state/dto/set-followup-token-limit.dto.ts.html +0 -124
- package/backend/coverage/lcov-report/src/application-state/dto/set-history-compression-enabled.dto.ts.html +0 -115
- package/backend/coverage/lcov-report/src/application-state/dto/set-llm-retry-enabled.dto.ts.html +0 -115
- package/backend/coverage/lcov-report/src/application-state/dto/set-llm-retry-max-attempts.dto.ts.html +0 -127
- package/backend/coverage/lcov-report/src/application-state/dto/set-manual-llm-enabled.dto.ts.html +0 -118
- package/backend/coverage/lcov-report/src/application-state/dto/set-ollama-config.dto.ts.html +0 -109
- package/backend/coverage/lcov-report/src/application-state/dto/set-openai-config.dto.ts.html +0 -139
- package/backend/coverage/lcov-report/src/application-state/dto/set-openrouter-config.dto.ts.html +0 -109
- package/backend/coverage/lcov-report/src/application-state/dto/set-streaming-enabled.dto.ts.html +0 -109
- package/backend/coverage/lcov-report/src/application-state/dto/set-syntax-validation-enabled.dto.ts.html +0 -118
- package/backend/coverage/lcov-report/src/application-state/dto/set-theme.dto.ts.html +0 -124
- package/backend/coverage/lcov-report/src/application-state/dto/set-tools-enabled.dto.ts.html +0 -118
- package/backend/coverage/lcov-report/src/application-state/dto/set-websocket-enabled.dto.ts.html +0 -109
- package/backend/coverage/lcov-report/src/application-state/dto/set-yolo-mode-message.dto.ts.html +0 -124
- package/backend/coverage/lcov-report/src/application-state/dto/set-yolo-mode.dto.ts.html +0 -118
- package/backend/coverage/lcov-report/src/application-state/dto/set-zai-config.dto.ts.html +0 -109
- package/backend/coverage/lcov-report/src/application-state/index.html +0 -146
- package/backend/coverage/lcov-report/src/common/cache/cache-invalidation.service.ts.html +0 -1297
- package/backend/coverage/lcov-report/src/common/cache/cache-invalidation.subscriber.ts.html +0 -712
- package/backend/coverage/lcov-report/src/common/cache/etag-cache.service.ts.html +0 -379
- package/backend/coverage/lcov-report/src/common/cache/index.html +0 -146
- package/backend/coverage/lcov-report/src/common/common.module.ts.html +0 -121
- package/backend/coverage/lcov-report/src/common/index.html +0 -116
- package/backend/coverage/lcov-report/src/common/interceptors/etag-cache.interceptor.ts.html +0 -337
- package/backend/coverage/lcov-report/src/common/interceptors/index.html +0 -116
- package/backend/coverage/lcov-report/src/common/middleware/cache.middleware.ts.html +0 -265
- package/backend/coverage/lcov-report/src/common/middleware/index.html +0 -116
- package/backend/coverage/lcov-report/src/context-generation/context-generation.module.ts.html +0 -118
- package/backend/coverage/lcov-report/src/context-generation/context-generation.service.ts.html +0 -1501
- package/backend/coverage/lcov-report/src/context-generation/index.html +0 -131
- package/backend/coverage/lcov-report/src/context-snippets/context-snippets.controller.ts.html +0 -427
- package/backend/coverage/lcov-report/src/context-snippets/context-snippets.module.ts.html +0 -142
- package/backend/coverage/lcov-report/src/context-snippets/context-snippets.service.ts.html +0 -442
- package/backend/coverage/lcov-report/src/context-snippets/dto/context-snippet.dto.ts.html +0 -211
- package/backend/coverage/lcov-report/src/context-snippets/dto/index.html +0 -116
- package/backend/coverage/lcov-report/src/context-snippets/index.html +0 -146
- package/backend/coverage/lcov-report/src/context-templates/context-templates.controller.ts.html +0 -724
- package/backend/coverage/lcov-report/src/context-templates/context-templates.module.ts.html +0 -142
- package/backend/coverage/lcov-report/src/context-templates/context-templates.service.ts.html +0 -1015
- package/backend/coverage/lcov-report/src/context-templates/dto/context-template.dto.ts.html +0 -511
- package/backend/coverage/lcov-report/src/context-templates/dto/index.html +0 -116
- package/backend/coverage/lcov-report/src/context-templates/index.html +0 -146
- package/backend/coverage/lcov-report/src/core-entities/ai-action.entity.ts.html +0 -613
- package/backend/coverage/lcov-report/src/core-entities/application-state.entity.ts.html +0 -124
- package/backend/coverage/lcov-report/src/core-entities/base.entity.ts.html +0 -211
- package/backend/coverage/lcov-report/src/core-entities/context-snippet.entity.ts.html +0 -190
- package/backend/coverage/lcov-report/src/core-entities/context-template.entity.ts.html +0 -439
- package/backend/coverage/lcov-report/src/core-entities/custom-snippet.entity.ts.html +0 -205
- package/backend/coverage/lcov-report/src/core-entities/custom-variable.entity.ts.html +0 -241
- package/backend/coverage/lcov-report/src/core-entities/enums.ts.html +0 -553
- package/backend/coverage/lcov-report/src/core-entities/execution-log.entity.ts.html +0 -208
- package/backend/coverage/lcov-report/src/core-entities/index.html +0 -371
- package/backend/coverage/lcov-report/src/core-entities/index.ts.html +0 -136
- package/backend/coverage/lcov-report/src/core-entities/llm-call-log.entity.ts.html +0 -388
- package/backend/coverage/lcov-report/src/core-entities/mcp-config.entity.ts.html +0 -256
- package/backend/coverage/lcov-report/src/core-entities/mcp-tool.entity.ts.html +0 -256
- package/backend/coverage/lcov-report/src/core-entities/project.entity.ts.html +0 -181
- package/backend/coverage/lcov-report/src/core-entities/session-input.entity.ts.html +0 -745
- package/backend/coverage/lcov-report/src/core-entities/session.entity.ts.html +0 -688
- package/backend/coverage/lcov-report/src/core-entities/system-prompt.entity.ts.html +0 -349
- package/backend/coverage/lcov-report/src/core-entities/tool-hook.entity.ts.html +0 -235
- package/backend/coverage/lcov-report/src/custom-snippets/custom-snippets.controller.ts.html +0 -442
- package/backend/coverage/lcov-report/src/custom-snippets/custom-snippets.module.ts.html +0 -124
- package/backend/coverage/lcov-report/src/custom-snippets/custom-snippets.service.ts.html +0 -304
- package/backend/coverage/lcov-report/src/custom-snippets/dto/custom-snippet.dto.ts.html +0 -205
- package/backend/coverage/lcov-report/src/custom-snippets/dto/index.html +0 -116
- package/backend/coverage/lcov-report/src/custom-snippets/index.html +0 -146
- package/backend/coverage/lcov-report/src/custom-variables/custom-variables.controller.ts.html +0 -463
- package/backend/coverage/lcov-report/src/custom-variables/custom-variables.module.ts.html +0 -124
- package/backend/coverage/lcov-report/src/custom-variables/custom-variables.service.ts.html +0 -310
- package/backend/coverage/lcov-report/src/custom-variables/dto/custom-variable.dto.ts.html +0 -244
- package/backend/coverage/lcov-report/src/custom-variables/dto/index.html +0 -116
- package/backend/coverage/lcov-report/src/custom-variables/index.html +0 -146
- package/backend/coverage/lcov-report/src/events/events.gateway.ts.html +0 -295
- package/backend/coverage/lcov-report/src/events/events.module.ts.html +0 -109
- package/backend/coverage/lcov-report/src/events/index.html +0 -146
- package/backend/coverage/lcov-report/src/events/websocket.events.ts.html +0 -466
- package/backend/coverage/lcov-report/src/execution-logs/dto/execution-log.dto.ts.html +0 -130
- package/backend/coverage/lcov-report/src/execution-logs/dto/index.html +0 -116
- package/backend/coverage/lcov-report/src/execution-logs/execution-logs.controller.ts.html +0 -130
- package/backend/coverage/lcov-report/src/execution-logs/execution-logs.module.ts.html +0 -124
- package/backend/coverage/lcov-report/src/execution-logs/execution-logs.service.ts.html +0 -238
- package/backend/coverage/lcov-report/src/execution-logs/index.html +0 -146
- package/backend/coverage/lcov-report/src/gemini/gemini-llm.provider.ts.html +0 -553
- package/backend/coverage/lcov-report/src/gemini/gemini.module.ts.html +0 -109
- package/backend/coverage/lcov-report/src/gemini/index.html +0 -131
- package/backend/coverage/lcov-report/src/global-config/dto/index.html +0 -116
- package/backend/coverage/lcov-report/src/global-config/dto/update-global-config.dto.ts.html +0 -367
- package/backend/coverage/lcov-report/src/global-config/global-config.controller.ts.html +0 -220
- package/backend/coverage/lcov-report/src/global-config/global-config.module.ts.html +0 -115
- package/backend/coverage/lcov-report/src/global-config/global-config.service.ts.html +0 -397
- package/backend/coverage/lcov-report/src/global-config/index.html +0 -146
- package/backend/coverage/lcov-report/src/http-exception.filter.ts.html +0 -340
- package/backend/coverage/lcov-report/src/index.html +0 -206
- package/backend/coverage/lcov-report/src/interactive-chat/chat.module.ts.html +0 -187
- package/backend/coverage/lcov-report/src/interactive-chat/chat.service.ts.html +0 -1825
- package/backend/coverage/lcov-report/src/interactive-chat/index.html +0 -146
- package/backend/coverage/lcov-report/src/interactive-chat/streaming.controller.ts.html +0 -343
- package/backend/coverage/lcov-report/src/llm-call-logs/dto/index.html +0 -116
- package/backend/coverage/lcov-report/src/llm-call-logs/dto/llm-call-log.dto.ts.html +0 -214
- package/backend/coverage/lcov-report/src/llm-call-logs/index.html +0 -146
- package/backend/coverage/lcov-report/src/llm-call-logs/llm-call-logs.controller.ts.html +0 -634
- package/backend/coverage/lcov-report/src/llm-call-logs/llm-call-logs.module.ts.html +0 -124
- package/backend/coverage/lcov-report/src/llm-call-logs/llm-call-logs.service.ts.html +0 -643
- package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/apply-diff.handler.ts.html +0 -1090
- package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/ask-user.handler.ts.html +0 -433
- package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/create-file.handler.ts.html +0 -757
- package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/delete-file.handler.ts.html +0 -586
- package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/discard-messages.handler.ts.html +0 -1153
- package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/dto/apply-diff.args.dto.ts.html +0 -124
- package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/dto/ask-user.args.dto.ts.html +0 -103
- package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/dto/create-file.args.dto.ts.html +0 -124
- package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/dto/delete-file.args.dto.ts.html +0 -106
- package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/dto/execute-code.args.dto.ts.html +0 -106
- package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/dto/final.args.dto.ts.html +0 -118
- package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/dto/generate-title.args.dto.ts.html +0 -190
- package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/dto/get-session-history.args.dto.ts.html +0 -196
- package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/dto/howto.args.dto.ts.html +0 -91
- package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/dto/index.html +0 -356
- package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/dto/new-session.args.dto.ts.html +0 -106
- package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/dto/overwrite-file.args.dto.ts.html +0 -124
- package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/dto/patch.args.dto.ts.html +0 -124
- package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/dto/quick-edit.args.dto.ts.html +0 -214
- package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/dto/request-context.args.dto.ts.html +0 -202
- package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/dto/run-command.args.dto.ts.html +0 -151
- package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/dto/sanitizer.decorator.ts.html +0 -181
- package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/dto/write-todo.args.dto.ts.html +0 -130
- package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/execute-code.handler.ts.html +0 -631
- package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/final.handler.ts.html +0 -469
- package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/generate-title.handler.ts.html +0 -448
- package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/get-messages.handler.ts.html +0 -1351
- package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/get-session-history.handler.ts.html +0 -868
- package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/howto.handler.ts.html +0 -481
- package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/index.html +0 -416
- package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/invoke-subagent.handler.ts.html +0 -580
- package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/list-sub-agents.handler.ts.html +0 -352
- package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/matchers/context-aware.matcher.ts.html +0 -1054
- package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/matchers/exact.matcher.ts.html +0 -331
- package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/matchers/hybrid.matcher.ts.html +0 -403
- package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/matchers/index.html +0 -176
- package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/matchers/index.ts.html +0 -100
- package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/matchers/normalized.matcher.ts.html +0 -724
- package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/mcp-tool-action.handler.ts.html +0 -358
- package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/new-session.handler.ts.html +0 -379
- package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/overwrite-file.handler.ts.html +0 -838
- package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/patch.handler.ts.html +0 -1702
- package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/quick-edit.handler.ts.html +0 -1459
- package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/request-context.handler.ts.html +0 -679
- package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/run-command.handler.ts.html +0 -964
- package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/write-todo.handler.ts.html +0 -625
- package/backend/coverage/lcov-report/src/llm-orchestration/errors/handler-validation.error.ts.html +0 -103
- package/backend/coverage/lcov-report/src/llm-orchestration/errors/index.html +0 -116
- package/backend/coverage/lcov-report/src/llm-orchestration/history-compression.service.ts.html +0 -1645
- package/backend/coverage/lcov-report/src/llm-orchestration/hooks/follow-up-post-execution.hook.ts.html +0 -238
- package/backend/coverage/lcov-report/src/llm-orchestration/hooks/frontend-notification.hook.ts.html +0 -181
- package/backend/coverage/lcov-report/src/llm-orchestration/hooks/index.html +0 -161
- package/backend/coverage/lcov-report/src/llm-orchestration/hooks/invalid-tool-feedback.hook.ts.html +0 -313
- package/backend/coverage/lcov-report/src/llm-orchestration/hooks/yolo-mode-post-execution.hook.ts.html +0 -466
- package/backend/coverage/lcov-report/src/llm-orchestration/index.html +0 -176
- package/backend/coverage/lcov-report/src/llm-orchestration/llm-orchestration.interfaces.ts.html +0 -319
- package/backend/coverage/lcov-report/src/llm-orchestration/llm-orchestration.module.ts.html +0 -706
- package/backend/coverage/lcov-report/src/llm-orchestration/llm-turn-processor.service.ts.html +0 -1150
- package/backend/coverage/lcov-report/src/llm-orchestration/parser/index.html +0 -131
- package/backend/coverage/lcov-report/src/llm-orchestration/parser/llm-output-parser.service.ts.html +0 -658
- package/backend/coverage/lcov-report/src/llm-orchestration/parser/parsing.constants.ts.html +0 -127
- package/backend/coverage/lcov-report/src/llm-orchestration/tool-schema.service.ts.html +0 -547
- package/backend/coverage/lcov-report/src/llm-provider/alibaba-llm.provider.ts.html +0 -1681
- package/backend/coverage/lcov-report/src/llm-provider/index.html +0 -236
- package/backend/coverage/lcov-report/src/llm-provider/llm-provider.controller.ts.html +0 -187
- package/backend/coverage/lcov-report/src/llm-provider/llm-provider.interface.ts.html +0 -361
- package/backend/coverage/lcov-report/src/llm-provider/llm-provider.module.ts.html +0 -175
- package/backend/coverage/lcov-report/src/llm-provider/ollama-llm.provider.ts.html +0 -1780
- package/backend/coverage/lcov-report/src/llm-provider/openai-llm.provider.ts.html +0 -1867
- package/backend/coverage/lcov-report/src/llm-provider/openrouter-llm.provider.ts.html +0 -1891
- package/backend/coverage/lcov-report/src/llm-provider/proxy-llm.provider.ts.html +0 -304
- package/backend/coverage/lcov-report/src/llm-provider/zai-llm.provider.ts.html +0 -1666
- package/backend/coverage/lcov-report/src/llm-responses/dto/index.html +0 -131
- package/backend/coverage/lcov-report/src/llm-responses/dto/submit-llm-response.dto.ts.html +0 -436
- package/backend/coverage/lcov-report/src/llm-responses/dto/sync-conversation.dto.ts.html +0 -319
- package/backend/coverage/lcov-report/src/llm-responses/index.html +0 -146
- package/backend/coverage/lcov-report/src/llm-responses/llm-responses.controller.ts.html +0 -283
- package/backend/coverage/lcov-report/src/llm-responses/llm-responses.module.ts.html +0 -184
- package/backend/coverage/lcov-report/src/llm-responses/llm-responses.service.ts.html +0 -1474
- package/backend/coverage/lcov-report/src/main.ts.html +0 -463
- package/backend/coverage/lcov-report/src/mcp/dto/batch-update-mcp-tools.dto.ts.html +0 -145
- package/backend/coverage/lcov-report/src/mcp/dto/create-mcp-config.dto.ts.html +0 -127
- package/backend/coverage/lcov-report/src/mcp/dto/index.html +0 -146
- package/backend/coverage/lcov-report/src/mcp/dto/update-mcp-config.dto.ts.html +0 -112
- package/backend/coverage/lcov-report/src/mcp/index.html +0 -146
- package/backend/coverage/lcov-report/src/mcp/mcp.controller.ts.html +0 -340
- package/backend/coverage/lcov-report/src/mcp/mcp.module.ts.html +0 -124
- package/backend/coverage/lcov-report/src/mcp/mcp.service.ts.html +0 -1345
- package/backend/coverage/lcov-report/src/message-bus/dto/index.html +0 -116
- package/backend/coverage/lcov-report/src/message-bus/dto/submit-message.dto.ts.html +0 -109
- package/backend/coverage/lcov-report/src/message-bus/index.html +0 -146
- package/backend/coverage/lcov-report/src/message-bus/message-bus.controller.ts.html +0 -148
- package/backend/coverage/lcov-report/src/message-bus/message-bus.module.ts.html +0 -115
- package/backend/coverage/lcov-report/src/message-bus/message-bus.service.ts.html +0 -151
- package/backend/coverage/lcov-report/src/projects/dto/index.html +0 -116
- package/backend/coverage/lcov-report/src/projects/dto/project.dto.ts.html +0 -196
- package/backend/coverage/lcov-report/src/projects/index.html +0 -146
- package/backend/coverage/lcov-report/src/projects/projects.controller.ts.html +0 -322
- package/backend/coverage/lcov-report/src/projects/projects.module.ts.html +0 -124
- package/backend/coverage/lcov-report/src/projects/projects.service.ts.html +0 -235
- package/backend/coverage/lcov-report/src/seeding/context-snippet-seeding.service.ts.html +0 -280
- package/backend/coverage/lcov-report/src/seeding/context-template-seeding.service.ts.html +0 -439
- package/backend/coverage/lcov-report/src/seeding/custom-snippet-seeding.service.ts.html +0 -271
- package/backend/coverage/lcov-report/src/seeding/custom-variable-seeding.service.ts.html +0 -271
- package/backend/coverage/lcov-report/src/seeding/data/context-snippets/compress.ts.html +0 -172
- package/backend/coverage/lcov-report/src/seeding/data/context-snippets/index.html +0 -116
- package/backend/coverage/lcov-report/src/seeding/data/context-templates/default-followup_ad-hoc-focused-context.ts.html +0 -157
- package/backend/coverage/lcov-report/src/seeding/data/context-templates/default-initial_condensed-project-context.ts.html +0 -148
- package/backend/coverage/lcov-report/src/seeding/data/context-templates/default-initial_full-project-context.ts.html +0 -151
- package/backend/coverage/lcov-report/src/seeding/data/context-templates/index.html +0 -161
- package/backend/coverage/lcov-report/src/seeding/data/context-templates/open-pr-command.ts.html +0 -247
- package/backend/coverage/lcov-report/src/seeding/data/custom-snippets/default_rglob.ts.html +0 -94
- package/backend/coverage/lcov-report/src/seeding/data/custom-snippets/eta-for.ts.html +0 -100
- package/backend/coverage/lcov-report/src/seeding/data/custom-snippets/eta-if.ts.html +0 -97
- package/backend/coverage/lcov-report/src/seeding/data/custom-snippets/eta-ifelse.ts.html +0 -100
- package/backend/coverage/lcov-report/src/seeding/data/custom-snippets/everest-playwright-auth.ts.html +0 -304
- package/backend/coverage/lcov-report/src/seeding/data/custom-snippets/git-diff.ts.html +0 -94
- package/backend/coverage/lcov-report/src/seeding/data/custom-snippets/index.html +0 -341
- package/backend/coverage/lcov-report/src/seeding/data/custom-snippets/it-mcp.ts.html +0 -100
- package/backend/coverage/lcov-report/src/seeding/data/custom-snippets/it-tools.ts.html +0 -97
- package/backend/coverage/lcov-report/src/seeding/data/custom-snippets/rg-exclude.ts.html +0 -94
- package/backend/coverage/lcov-report/src/seeding/data/custom-snippets/rg-search-glob.ts.html +0 -94
- package/backend/coverage/lcov-report/src/seeding/data/custom-snippets/rg-search.ts.html +0 -94
- package/backend/coverage/lcov-report/src/seeding/data/custom-snippets/run-command.ts.html +0 -94
- package/backend/coverage/lcov-report/src/seeding/data/custom-snippets/tree.ts.html +0 -94
- package/backend/coverage/lcov-report/src/seeding/data/custom-snippets/usr-adhoc-incl.ts.html +0 -100
- package/backend/coverage/lcov-report/src/seeding/data/custom-snippets/usr-cmd-output-incl.ts.html +0 -94
- package/backend/coverage/lcov-report/src/seeding/data/custom-snippets/usr-input-incl.ts.html +0 -94
- package/backend/coverage/lcov-report/src/seeding/data/custom-variables/default-auto-execute-code.ts.html +0 -94
- package/backend/coverage/lcov-report/src/seeding/data/custom-variables/default-plan-mode.ts.html +0 -97
- package/backend/coverage/lcov-report/src/seeding/data/custom-variables/index.html +0 -131
- package/backend/coverage/lcov-report/src/seeding/data/mcp-configs/default-configs.ts.html +0 -121
- package/backend/coverage/lcov-report/src/seeding/data/mcp-configs/index.html +0 -116
- package/backend/coverage/lcov-report/src/seeding/data/sub-agents/browser-use.ts.html +0 -115
- package/backend/coverage/lcov-report/src/seeding/data/sub-agents/explore-codebase.ts.html +0 -136
- package/backend/coverage/lcov-report/src/seeding/data/sub-agents/index.html +0 -131
- package/backend/coverage/lcov-report/src/seeding/data/system-prompts/browser-use-agent.ts.html +0 -190
- package/backend/coverage/lcov-report/src/seeding/data/system-prompts/default_native_tool_agent.ts.html +0 -421
- package/backend/coverage/lcov-report/src/seeding/data/system-prompts/explore-codebase-agent.ts.html +0 -265
- package/backend/coverage/lcov-report/src/seeding/data/system-prompts/index.html +0 -161
- package/backend/coverage/lcov-report/src/seeding/data/system-prompts/master-agent.ts.html +0 -388
- package/backend/coverage/lcov-report/src/seeding/data/tool-hooks/eslint-hook.ts.html +0 -265
- package/backend/coverage/lcov-report/src/seeding/data/tool-hooks/example-hook.ts.html +0 -274
- package/backend/coverage/lcov-report/src/seeding/data/tool-hooks/index.html +0 -146
- package/backend/coverage/lcov-report/src/seeding/data/tool-hooks/readme.ts.html +0 -250
- package/backend/coverage/lcov-report/src/seeding/index.html +0 -236
- package/backend/coverage/lcov-report/src/seeding/mcp-config-seeding.service.ts.html +0 -193
- package/backend/coverage/lcov-report/src/seeding/seeding.module.ts.html +0 -211
- package/backend/coverage/lcov-report/src/seeding/seeding.service.ts.html +0 -187
- package/backend/coverage/lcov-report/src/seeding/sub-agent-seeding.service.ts.html +0 -742
- package/backend/coverage/lcov-report/src/seeding/system-prompt-seeding.service.ts.html +0 -397
- package/backend/coverage/lcov-report/src/session-followup/index.html +0 -131
- package/backend/coverage/lcov-report/src/session-followup/session-followup.module.ts.html +0 -130
- package/backend/coverage/lcov-report/src/session-followup/session-followup.service.ts.html +0 -718
- package/backend/coverage/lcov-report/src/session-inputs/dto/index.html +0 -116
- package/backend/coverage/lcov-report/src/session-inputs/dto/session-input.dto.ts.html +0 -577
- package/backend/coverage/lcov-report/src/session-inputs/index.html +0 -176
- package/backend/coverage/lcov-report/src/session-inputs/session-input-context.service.ts.html +0 -832
- package/backend/coverage/lcov-report/src/session-inputs/session-input.subscriber.ts.html +0 -220
- package/backend/coverage/lcov-report/src/session-inputs/session-inputs.controller.ts.html +0 -685
- package/backend/coverage/lcov-report/src/session-inputs/session-inputs.module.ts.html +0 -229
- package/backend/coverage/lcov-report/src/session-inputs/session-inputs.service.ts.html +0 -1981
- package/backend/coverage/lcov-report/src/session-transfer/index.html +0 -131
- package/backend/coverage/lcov-report/src/session-transfer/session-transfer.module.ts.html +0 -160
- package/backend/coverage/lcov-report/src/session-transfer/session-transfer.service.ts.html +0 -883
- package/backend/coverage/lcov-report/src/sessions/dto/index.html +0 -116
- package/backend/coverage/lcov-report/src/sessions/dto/session.dto.ts.html +0 -769
- package/backend/coverage/lcov-report/src/sessions/index.html +0 -146
- package/backend/coverage/lcov-report/src/sessions/sessions.controller.ts.html +0 -1306
- package/backend/coverage/lcov-report/src/sessions/sessions.module.ts.html +0 -220
- package/backend/coverage/lcov-report/src/sessions/sessions.service.ts.html +0 -2797
- package/backend/coverage/lcov-report/src/sub-agents/dto/create-sub-agent.dto.ts.html +0 -355
- package/backend/coverage/lcov-report/src/sub-agents/dto/index.html +0 -131
- package/backend/coverage/lcov-report/src/sub-agents/dto/update-sub-agent.dto.ts.html +0 -295
- package/backend/coverage/lcov-report/src/sub-agents/index.html +0 -221
- package/backend/coverage/lcov-report/src/sub-agents/sub-agent-run.entity.ts.html +0 -463
- package/backend/coverage/lcov-report/src/sub-agents/sub-agent-runner.service.ts.html +0 -2428
- package/backend/coverage/lcov-report/src/sub-agents/sub-agent-runs.controller.ts.html +0 -580
- package/backend/coverage/lcov-report/src/sub-agents/sub-agent-runs.service.ts.html +0 -550
- package/backend/coverage/lcov-report/src/sub-agents/sub-agent.entity.ts.html +0 -475
- package/backend/coverage/lcov-report/src/sub-agents/sub-agents.controller.ts.html +0 -373
- package/backend/coverage/lcov-report/src/sub-agents/sub-agents.module.ts.html +0 -205
- package/backend/coverage/lcov-report/src/sub-agents/sub-agents.service.ts.html +0 -619
- package/backend/coverage/lcov-report/src/syntax-validation/index.html +0 -131
- package/backend/coverage/lcov-report/src/syntax-validation/syntax-validation.module.ts.html +0 -109
- package/backend/coverage/lcov-report/src/syntax-validation/syntax-validation.service.ts.html +0 -724
- package/backend/coverage/lcov-report/src/system-prompts/dto/index.html +0 -176
- package/backend/coverage/lcov-report/src/system-prompts/dto/set-enabled-mcp-tools.dto.ts.html +0 -157
- package/backend/coverage/lcov-report/src/system-prompts/dto/set-enabled-tools.dto.ts.html +0 -148
- package/backend/coverage/lcov-report/src/system-prompts/dto/system-prompt.dto.ts.html +0 -517
- package/backend/coverage/lcov-report/src/system-prompts/dto/toggle-mcp-tool.dto.ts.html +0 -121
- package/backend/coverage/lcov-report/src/system-prompts/dto/toggle-tool.dto.ts.html +0 -118
- package/backend/coverage/lcov-report/src/system-prompts/index.html +0 -146
- package/backend/coverage/lcov-report/src/system-prompts/system-prompts.controller.ts.html +0 -1060
- package/backend/coverage/lcov-report/src/system-prompts/system-prompts.module.ts.html +0 -160
- package/backend/coverage/lcov-report/src/system-prompts/system-prompts.service.ts.html +0 -2254
- package/backend/coverage/lcov-report/src/timeout.interceptor.ts.html +0 -178
- package/backend/coverage/lcov-report/src/tool-hooks/dto/create-tool-hook.dto.ts.html +0 -181
- package/backend/coverage/lcov-report/src/tool-hooks/dto/index.html +0 -131
- package/backend/coverage/lcov-report/src/tool-hooks/dto/update-tool-hook.dto.ts.html +0 -178
- package/backend/coverage/lcov-report/src/tool-hooks/index.html +0 -146
- package/backend/coverage/lcov-report/src/tool-hooks/tool-hooks.controller.ts.html +0 -481
- package/backend/coverage/lcov-report/src/tool-hooks/tool-hooks.module.ts.html +0 -127
- package/backend/coverage/lcov-report/src/tool-hooks/tool-hooks.service.ts.html +0 -1222
- package/backend/coverage/lcov-report/src/tracing.ts.html +0 -214
- package/backend/coverage/lcov-report/src/types/express-multer.d.ts.html +0 -130
- package/backend/coverage/lcov-report/src/types/index.html +0 -116
- package/backend/coverage/lcov-report/src/utils/ai-format-generator.ts.html +0 -253
- package/backend/coverage/lcov-report/src/utils/fuzzy-search.ts.html +0 -310
- package/backend/coverage/lcov-report/src/utils/index.html +0 -191
- package/backend/coverage/lcov-report/src/utils/index.ts.html +0 -100
- package/backend/coverage/lcov-report/src/utils/short-id.ts.html +0 -109
- package/backend/coverage/lcov-report/src/utils/spawn-with-kill.ts.html +0 -412
- package/backend/coverage/lcov-report/src/utils/trace.decorator.ts.html +0 -223
- package/backend/coverage/lcov-report/src/visual-editor/index.html +0 -146
- package/backend/coverage/lcov-report/src/visual-editor/visual-editor.controller.ts.html +0 -409
- package/backend/coverage/lcov-report/src/visual-editor/visual-editor.dto.ts.html +0 -130
- package/backend/coverage/lcov-report/src/visual-editor/visual-editor.module.ts.html +0 -118
- package/backend/coverage/lcov-report/src/workspace/dto/file-tree.dto.ts.html +0 -112
- package/backend/coverage/lcov-report/src/workspace/dto/index.html +0 -131
- package/backend/coverage/lcov-report/src/workspace/dto/search-workspace.dto.ts.html +0 -193
- package/backend/coverage/lcov-report/src/workspace/index.html +0 -146
- package/backend/coverage/lcov-report/src/workspace/workspace.controller.ts.html +0 -394
- package/backend/coverage/lcov-report/src/workspace/workspace.module.ts.html +0 -121
- package/backend/coverage/lcov-report/src/workspace/workspace.service.ts.html +0 -1027
- package/backend/coverage/lcov.info +0 -20220
- package/backend/packages/tokenpatch/CODEMAP.md +0 -25
- package/daemon/CODEMAP.md +0 -23
- package/visual-editor-proxy/CODEMAP.md +0 -21
|
@@ -1,1345 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
<!doctype html>
|
|
3
|
-
<html lang="en">
|
|
4
|
-
|
|
5
|
-
<head>
|
|
6
|
-
<title>Code coverage report for src/mcp/mcp.service.ts</title>
|
|
7
|
-
<meta charset="utf-8" />
|
|
8
|
-
<link rel="stylesheet" href="../../prettify.css" />
|
|
9
|
-
<link rel="stylesheet" href="../../base.css" />
|
|
10
|
-
<link rel="shortcut icon" type="image/x-icon" href="../../favicon.png" />
|
|
11
|
-
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
12
|
-
<style type='text/css'>
|
|
13
|
-
.coverage-summary .sorter {
|
|
14
|
-
background-image: url(../../sort-arrow-sprite.png);
|
|
15
|
-
}
|
|
16
|
-
</style>
|
|
17
|
-
</head>
|
|
18
|
-
|
|
19
|
-
<body>
|
|
20
|
-
<div class='wrapper'>
|
|
21
|
-
<div class='pad1'>
|
|
22
|
-
<h1><a href="../../index.html">All files</a> / <a href="index.html">src/mcp</a> mcp.service.ts</h1>
|
|
23
|
-
<div class='clearfix'>
|
|
24
|
-
|
|
25
|
-
<div class='fl pad1y space-right2'>
|
|
26
|
-
<span class="strong">62.85% </span>
|
|
27
|
-
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>110/175</span>
|
|
29
|
-
</div>
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
<div class='fl pad1y space-right2'>
|
|
33
|
-
<span class="strong">46.93% </span>
|
|
34
|
-
<span class="quiet">Branches</span>
|
|
35
|
-
<span class='fraction'>23/49</span>
|
|
36
|
-
</div>
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
<div class='fl pad1y space-right2'>
|
|
40
|
-
<span class="strong">70.37% </span>
|
|
41
|
-
<span class="quiet">Functions</span>
|
|
42
|
-
<span class='fraction'>19/27</span>
|
|
43
|
-
</div>
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
<div class='fl pad1y space-right2'>
|
|
47
|
-
<span class="strong">62.73% </span>
|
|
48
|
-
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>101/161</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></td><td class="line-coverage quiet"><span class="cline-any cline-yes">22x</span>
|
|
487
|
-
<span class="cline-any cline-neutral"> </span>
|
|
488
|
-
<span class="cline-any cline-neutral"> </span>
|
|
489
|
-
<span class="cline-any cline-neutral"> </span>
|
|
490
|
-
<span class="cline-any cline-neutral"> </span>
|
|
491
|
-
<span class="cline-any cline-neutral"> </span>
|
|
492
|
-
<span class="cline-any cline-neutral"> </span>
|
|
493
|
-
<span class="cline-any cline-neutral"> </span>
|
|
494
|
-
<span class="cline-any cline-yes">22x</span>
|
|
495
|
-
<span class="cline-any cline-yes">22x</span>
|
|
496
|
-
<span class="cline-any cline-yes">22x</span>
|
|
497
|
-
<span class="cline-any cline-yes">22x</span>
|
|
498
|
-
<span class="cline-any cline-yes">22x</span>
|
|
499
|
-
<span class="cline-any cline-neutral"> </span>
|
|
500
|
-
<span class="cline-any cline-neutral"> </span>
|
|
501
|
-
<span class="cline-any cline-neutral"> </span>
|
|
502
|
-
<span class="cline-any cline-neutral"> </span>
|
|
503
|
-
<span class="cline-any cline-neutral"> </span>
|
|
504
|
-
<span class="cline-any cline-neutral"> </span>
|
|
505
|
-
<span class="cline-any cline-neutral"> </span>
|
|
506
|
-
<span class="cline-any cline-neutral"> </span>
|
|
507
|
-
<span class="cline-any cline-neutral"> </span>
|
|
508
|
-
<span class="cline-any cline-neutral"> </span>
|
|
509
|
-
<span class="cline-any cline-neutral"> </span>
|
|
510
|
-
<span class="cline-any cline-yes">22x</span>
|
|
511
|
-
<span class="cline-any cline-yes">27x</span>
|
|
512
|
-
<span class="cline-any cline-yes">27x</span>
|
|
513
|
-
<span class="cline-any cline-neutral"> </span>
|
|
514
|
-
<span class="cline-any cline-neutral"> </span>
|
|
515
|
-
<span class="cline-any cline-neutral"> </span>
|
|
516
|
-
<span class="cline-any cline-yes">27x</span>
|
|
517
|
-
<span class="cline-any cline-neutral"> </span>
|
|
518
|
-
<span class="cline-any cline-yes">27x</span>
|
|
519
|
-
<span class="cline-any cline-neutral"> </span>
|
|
520
|
-
<span class="cline-any cline-neutral"> </span>
|
|
521
|
-
<span class="cline-any cline-neutral"> </span>
|
|
522
|
-
<span class="cline-any cline-yes">7x</span>
|
|
523
|
-
<span class="cline-any cline-yes">7x</span>
|
|
524
|
-
<span class="cline-any cline-neutral"> </span>
|
|
525
|
-
<span class="cline-any cline-neutral"> </span>
|
|
526
|
-
<span class="cline-any cline-yes">7x</span>
|
|
527
|
-
<span class="cline-any cline-yes">6x</span>
|
|
528
|
-
<span class="cline-any cline-neutral"> </span>
|
|
529
|
-
<span class="cline-any cline-neutral"> </span>
|
|
530
|
-
<span class="cline-any cline-yes">6x</span>
|
|
531
|
-
<span class="cline-any cline-neutral"> </span>
|
|
532
|
-
<span class="cline-any cline-neutral"> </span>
|
|
533
|
-
<span class="cline-any cline-yes">1x</span>
|
|
534
|
-
<span class="cline-any cline-yes">1x</span>
|
|
535
|
-
<span class="cline-any cline-neutral"> </span>
|
|
536
|
-
<span class="cline-any cline-neutral"> </span>
|
|
537
|
-
<span class="cline-any cline-neutral"> </span>
|
|
538
|
-
<span class="cline-any cline-neutral"> </span>
|
|
539
|
-
<span class="cline-any cline-yes">6x</span>
|
|
540
|
-
<span class="cline-any cline-yes">6x</span>
|
|
541
|
-
<span class="cline-any cline-neutral"> </span>
|
|
542
|
-
<span class="cline-any cline-no"> </span>
|
|
543
|
-
<span class="cline-any cline-neutral"> </span>
|
|
544
|
-
<span class="cline-any cline-neutral"> </span>
|
|
545
|
-
<span class="cline-any cline-neutral"> </span>
|
|
546
|
-
<span class="cline-any cline-neutral"> </span>
|
|
547
|
-
<span class="cline-any cline-neutral"> </span>
|
|
548
|
-
<span class="cline-any cline-yes">3x</span>
|
|
549
|
-
<span class="cline-any cline-yes">3x</span>
|
|
550
|
-
<span class="cline-any cline-no"> </span>
|
|
551
|
-
<span class="cline-any cline-no"> </span>
|
|
552
|
-
<span class="cline-any cline-neutral"> </span>
|
|
553
|
-
<span class="cline-any cline-yes">3x</span>
|
|
554
|
-
<span class="cline-any cline-yes">3x</span>
|
|
555
|
-
<span class="cline-any cline-yes">3x</span>
|
|
556
|
-
<span class="cline-any cline-yes">3x</span>
|
|
557
|
-
<span class="cline-any cline-neutral"> </span>
|
|
558
|
-
<span class="cline-any cline-neutral"> </span>
|
|
559
|
-
<span class="cline-any cline-neutral"> </span>
|
|
560
|
-
<span class="cline-any cline-neutral"> </span>
|
|
561
|
-
<span class="cline-any cline-yes">3x</span>
|
|
562
|
-
<span class="cline-any cline-neutral"> </span>
|
|
563
|
-
<span class="cline-any cline-yes">3x</span>
|
|
564
|
-
<span class="cline-any cline-yes">3x</span>
|
|
565
|
-
<span class="cline-any cline-no"> </span>
|
|
566
|
-
<span class="cline-any cline-neutral"> </span>
|
|
567
|
-
<span class="cline-any cline-neutral"> </span>
|
|
568
|
-
<span class="cline-any cline-yes">3x</span>
|
|
569
|
-
<span class="cline-any cline-neutral"> </span>
|
|
570
|
-
<span class="cline-any cline-neutral"> </span>
|
|
571
|
-
<span class="cline-any cline-yes">3x</span>
|
|
572
|
-
<span class="cline-any cline-neutral"> </span>
|
|
573
|
-
<span class="cline-any cline-yes">3x</span>
|
|
574
|
-
<span class="cline-any cline-neutral"> </span>
|
|
575
|
-
<span class="cline-any cline-yes">3x</span>
|
|
576
|
-
<span class="cline-any cline-neutral"> </span>
|
|
577
|
-
<span class="cline-any cline-neutral"> </span>
|
|
578
|
-
<span class="cline-any cline-neutral"> </span>
|
|
579
|
-
<span class="cline-any cline-neutral"> </span>
|
|
580
|
-
<span class="cline-any cline-neutral"> </span>
|
|
581
|
-
<span class="cline-any cline-neutral"> </span>
|
|
582
|
-
<span class="cline-any cline-yes">2x</span>
|
|
583
|
-
<span class="cline-any cline-yes">2x</span>
|
|
584
|
-
<span class="cline-any cline-no"> </span>
|
|
585
|
-
<span class="cline-any cline-no"> </span>
|
|
586
|
-
<span class="cline-any cline-no"> </span>
|
|
587
|
-
<span class="cline-any cline-no"> </span>
|
|
588
|
-
<span class="cline-any cline-neutral"> </span>
|
|
589
|
-
<span class="cline-any cline-no"> </span>
|
|
590
|
-
<span class="cline-any cline-neutral"> </span>
|
|
591
|
-
<span class="cline-any cline-neutral"> </span>
|
|
592
|
-
<span class="cline-any cline-neutral"> </span>
|
|
593
|
-
<span class="cline-any cline-neutral"> </span>
|
|
594
|
-
<span class="cline-any cline-neutral"> </span>
|
|
595
|
-
<span class="cline-any cline-neutral"> </span>
|
|
596
|
-
<span class="cline-any cline-neutral"> </span>
|
|
597
|
-
<span class="cline-any cline-yes">3x</span>
|
|
598
|
-
<span class="cline-any cline-neutral"> </span>
|
|
599
|
-
<span class="cline-any cline-yes">3x</span>
|
|
600
|
-
<span class="cline-any cline-neutral"> </span>
|
|
601
|
-
<span class="cline-any cline-yes">3x</span>
|
|
602
|
-
<span class="cline-any cline-neutral"> </span>
|
|
603
|
-
<span class="cline-any cline-neutral"> </span>
|
|
604
|
-
<span class="cline-any cline-yes">3x</span>
|
|
605
|
-
<span class="cline-any cline-neutral"> </span>
|
|
606
|
-
<span class="cline-any cline-neutral"> </span>
|
|
607
|
-
<span class="cline-any cline-yes">3x</span>
|
|
608
|
-
<span class="cline-any cline-no"> </span>
|
|
609
|
-
<span class="cline-any cline-neutral"> </span>
|
|
610
|
-
<span class="cline-any cline-neutral"> </span>
|
|
611
|
-
<span class="cline-any cline-no"> </span>
|
|
612
|
-
<span class="cline-any cline-no"> </span>
|
|
613
|
-
<span class="cline-any cline-no"> </span>
|
|
614
|
-
<span class="cline-any cline-no"> </span>
|
|
615
|
-
<span class="cline-any cline-neutral"> </span>
|
|
616
|
-
<span class="cline-any cline-no"> </span>
|
|
617
|
-
<span class="cline-any cline-no"> </span>
|
|
618
|
-
<span class="cline-any cline-no"> </span>
|
|
619
|
-
<span class="cline-any cline-neutral"> </span>
|
|
620
|
-
<span class="cline-any cline-neutral"> </span>
|
|
621
|
-
<span class="cline-any cline-no"> </span>
|
|
622
|
-
<span class="cline-any cline-neutral"> </span>
|
|
623
|
-
<span class="cline-any cline-neutral"> </span>
|
|
624
|
-
<span class="cline-any cline-neutral"> </span>
|
|
625
|
-
<span class="cline-any cline-neutral"> </span>
|
|
626
|
-
<span class="cline-any cline-neutral"> </span>
|
|
627
|
-
<span class="cline-any cline-neutral"> </span>
|
|
628
|
-
<span class="cline-any cline-neutral"> </span>
|
|
629
|
-
<span class="cline-any cline-neutral"> </span>
|
|
630
|
-
<span class="cline-any cline-neutral"> </span>
|
|
631
|
-
<span class="cline-any cline-neutral"> </span>
|
|
632
|
-
<span class="cline-any cline-no"> </span>
|
|
633
|
-
<span class="cline-any cline-neutral"> </span>
|
|
634
|
-
<span class="cline-any cline-no"> </span>
|
|
635
|
-
<span class="cline-any cline-no"> </span>
|
|
636
|
-
<span class="cline-any cline-no"> </span>
|
|
637
|
-
<span class="cline-any cline-neutral"> </span>
|
|
638
|
-
<span class="cline-any cline-no"> </span>
|
|
639
|
-
<span class="cline-any cline-no"> </span>
|
|
640
|
-
<span class="cline-any cline-neutral"> </span>
|
|
641
|
-
<span class="cline-any cline-neutral"> </span>
|
|
642
|
-
<span class="cline-any cline-no"> </span>
|
|
643
|
-
<span class="cline-any cline-neutral"> </span>
|
|
644
|
-
<span class="cline-any cline-neutral"> </span>
|
|
645
|
-
<span class="cline-any cline-neutral"> </span>
|
|
646
|
-
<span class="cline-any cline-neutral"> </span>
|
|
647
|
-
<span class="cline-any cline-neutral"> </span>
|
|
648
|
-
<span class="cline-any cline-neutral"> </span>
|
|
649
|
-
<span class="cline-any cline-yes">1x</span>
|
|
650
|
-
<span class="cline-any cline-yes">1x</span>
|
|
651
|
-
<span class="cline-any cline-neutral"> </span>
|
|
652
|
-
<span class="cline-any cline-no"> </span>
|
|
653
|
-
<span class="cline-any cline-neutral"> </span>
|
|
654
|
-
<span class="cline-any cline-neutral"> </span>
|
|
655
|
-
<span class="cline-any cline-yes">1x</span>
|
|
656
|
-
<span class="cline-any cline-yes">1x</span>
|
|
657
|
-
<span class="cline-any cline-no"> </span>
|
|
658
|
-
<span class="cline-any cline-neutral"> </span>
|
|
659
|
-
<span class="cline-any cline-neutral"> </span>
|
|
660
|
-
<span class="cline-any cline-neutral"> </span>
|
|
661
|
-
<span class="cline-any cline-neutral"> </span>
|
|
662
|
-
<span class="cline-any cline-yes">1x</span>
|
|
663
|
-
<span class="cline-any cline-yes">1x</span>
|
|
664
|
-
<span class="cline-any cline-no"> </span>
|
|
665
|
-
<span class="cline-any cline-neutral"> </span>
|
|
666
|
-
<span class="cline-any cline-neutral"> </span>
|
|
667
|
-
<span class="cline-any cline-neutral"> </span>
|
|
668
|
-
<span class="cline-any cline-neutral"> </span>
|
|
669
|
-
<span class="cline-any cline-yes">1x</span>
|
|
670
|
-
<span class="cline-any cline-neutral"> </span>
|
|
671
|
-
<span class="cline-any cline-neutral"> </span>
|
|
672
|
-
<span class="cline-any cline-yes">1x</span>
|
|
673
|
-
<span class="cline-any cline-no"> </span>
|
|
674
|
-
<span class="cline-any cline-neutral"> </span>
|
|
675
|
-
<span class="cline-any cline-neutral"> </span>
|
|
676
|
-
<span class="cline-any cline-neutral"> </span>
|
|
677
|
-
<span class="cline-any cline-neutral"> </span>
|
|
678
|
-
<span class="cline-any cline-yes">1x</span>
|
|
679
|
-
<span class="cline-any cline-neutral"> </span>
|
|
680
|
-
<span class="cline-any cline-neutral"> </span>
|
|
681
|
-
<span class="cline-any cline-neutral"> </span>
|
|
682
|
-
<span class="cline-any cline-neutral"> </span>
|
|
683
|
-
<span class="cline-any cline-neutral"> </span>
|
|
684
|
-
<span class="cline-any cline-neutral"> </span>
|
|
685
|
-
<span class="cline-any cline-neutral"> </span>
|
|
686
|
-
<span class="cline-any cline-yes">1x</span>
|
|
687
|
-
<span class="cline-any cline-yes">1x</span>
|
|
688
|
-
<span class="cline-any cline-yes">1x</span>
|
|
689
|
-
<span class="cline-any cline-neutral"> </span>
|
|
690
|
-
<span class="cline-any cline-neutral"> </span>
|
|
691
|
-
<span class="cline-any cline-neutral"> </span>
|
|
692
|
-
<span class="cline-any cline-neutral"> </span>
|
|
693
|
-
<span class="cline-any cline-neutral"> </span>
|
|
694
|
-
<span class="cline-any cline-neutral"> </span>
|
|
695
|
-
<span class="cline-any cline-yes">2x</span>
|
|
696
|
-
<span class="cline-any cline-neutral"> </span>
|
|
697
|
-
<span class="cline-any cline-neutral"> </span>
|
|
698
|
-
<span class="cline-any cline-yes">2x</span>
|
|
699
|
-
<span class="cline-any cline-no"> </span>
|
|
700
|
-
<span class="cline-any cline-neutral"> </span>
|
|
701
|
-
<span class="cline-any cline-neutral"> </span>
|
|
702
|
-
<span class="cline-any cline-neutral"> </span>
|
|
703
|
-
<span class="cline-any cline-neutral"> </span>
|
|
704
|
-
<span class="cline-any cline-yes">2x</span>
|
|
705
|
-
<span class="cline-any cline-yes">2x</span>
|
|
706
|
-
<span class="cline-any cline-neutral"> </span>
|
|
707
|
-
<span class="cline-any cline-yes">2x</span>
|
|
708
|
-
<span class="cline-any cline-yes">1x</span>
|
|
709
|
-
<span class="cline-any cline-neutral"> </span>
|
|
710
|
-
<span class="cline-any cline-yes">1x</span>
|
|
711
|
-
<span class="cline-any cline-neutral"> </span>
|
|
712
|
-
<span class="cline-any cline-neutral"> </span>
|
|
713
|
-
<span class="cline-any cline-neutral"> </span>
|
|
714
|
-
<span class="cline-any cline-yes">2x</span>
|
|
715
|
-
<span class="cline-any cline-neutral"> </span>
|
|
716
|
-
<span class="cline-any cline-neutral"> </span>
|
|
717
|
-
<span class="cline-any cline-neutral"> </span>
|
|
718
|
-
<span class="cline-any cline-yes">1x</span>
|
|
719
|
-
<span class="cline-any cline-neutral"> </span>
|
|
720
|
-
<span class="cline-any cline-neutral"> </span>
|
|
721
|
-
<span class="cline-any cline-yes">1x</span>
|
|
722
|
-
<span class="cline-any cline-no"> </span>
|
|
723
|
-
<span class="cline-any cline-neutral"> </span>
|
|
724
|
-
<span class="cline-any cline-neutral"> </span>
|
|
725
|
-
<span class="cline-any cline-neutral"> </span>
|
|
726
|
-
<span class="cline-any cline-neutral"> </span>
|
|
727
|
-
<span class="cline-any cline-yes">1x</span>
|
|
728
|
-
<span class="cline-any cline-yes">1x</span>
|
|
729
|
-
<span class="cline-any cline-yes">1x</span>
|
|
730
|
-
<span class="cline-any cline-neutral"> </span>
|
|
731
|
-
<span class="cline-any cline-neutral"> </span>
|
|
732
|
-
<span class="cline-any cline-neutral"> </span>
|
|
733
|
-
<span class="cline-any cline-neutral"> </span>
|
|
734
|
-
<span class="cline-any cline-neutral"> </span>
|
|
735
|
-
<span class="cline-any cline-neutral"> </span>
|
|
736
|
-
<span class="cline-any cline-yes">1x</span>
|
|
737
|
-
<span class="cline-any cline-no"> </span>
|
|
738
|
-
<span class="cline-any cline-neutral"> </span>
|
|
739
|
-
<span class="cline-any cline-yes">1x</span>
|
|
740
|
-
<span class="cline-any cline-neutral"> </span>
|
|
741
|
-
<span class="cline-any cline-neutral"> </span>
|
|
742
|
-
<span class="cline-any cline-neutral"> </span>
|
|
743
|
-
<span class="cline-any cline-yes">1x</span>
|
|
744
|
-
<span class="cline-any cline-neutral"> </span>
|
|
745
|
-
<span class="cline-any cline-neutral"> </span>
|
|
746
|
-
<span class="cline-any cline-neutral"> </span>
|
|
747
|
-
<span class="cline-any cline-yes">2x</span>
|
|
748
|
-
<span class="cline-any cline-neutral"> </span>
|
|
749
|
-
<span class="cline-any cline-neutral"> </span>
|
|
750
|
-
<span class="cline-any cline-yes">2x</span>
|
|
751
|
-
<span class="cline-any cline-neutral"> </span>
|
|
752
|
-
<span class="cline-any cline-neutral"> </span>
|
|
753
|
-
<span class="cline-any cline-neutral"> </span>
|
|
754
|
-
<span class="cline-any cline-yes">2x</span>
|
|
755
|
-
<span class="cline-any cline-yes">2x</span>
|
|
756
|
-
<span class="cline-any cline-no"> </span>
|
|
757
|
-
<span class="cline-any cline-no"> </span>
|
|
758
|
-
<span class="cline-any cline-neutral"> </span>
|
|
759
|
-
<span class="cline-any cline-no"> </span>
|
|
760
|
-
<span class="cline-any cline-neutral"> </span>
|
|
761
|
-
<span class="cline-any cline-neutral"> </span>
|
|
762
|
-
<span class="cline-any cline-neutral"> </span>
|
|
763
|
-
<span class="cline-any cline-neutral"> </span>
|
|
764
|
-
<span class="cline-any cline-neutral"> </span>
|
|
765
|
-
<span class="cline-any cline-neutral"> </span>
|
|
766
|
-
<span class="cline-any cline-neutral"> </span>
|
|
767
|
-
<span class="cline-any cline-neutral"> </span>
|
|
768
|
-
<span class="cline-any cline-yes">2x</span>
|
|
769
|
-
<span class="cline-any cline-neutral"> </span>
|
|
770
|
-
<span class="cline-any cline-neutral"> </span>
|
|
771
|
-
<span class="cline-any cline-neutral"> </span>
|
|
772
|
-
<span class="cline-any cline-neutral"> </span>
|
|
773
|
-
<span class="cline-any cline-neutral"> </span>
|
|
774
|
-
<span class="cline-any cline-neutral"> </span>
|
|
775
|
-
<span class="cline-any cline-neutral"> </span>
|
|
776
|
-
<span class="cline-any cline-neutral"> </span>
|
|
777
|
-
<span class="cline-any cline-neutral"> </span>
|
|
778
|
-
<span class="cline-any cline-neutral"> </span>
|
|
779
|
-
<span class="cline-any cline-neutral"> </span>
|
|
780
|
-
<span class="cline-any cline-neutral"> </span>
|
|
781
|
-
<span class="cline-any cline-no"> </span>
|
|
782
|
-
<span class="cline-any cline-neutral"> </span>
|
|
783
|
-
<span class="cline-any cline-neutral"> </span>
|
|
784
|
-
<span class="cline-any cline-neutral"> </span>
|
|
785
|
-
<span class="cline-any cline-neutral"> </span>
|
|
786
|
-
<span class="cline-any cline-neutral"> </span>
|
|
787
|
-
<span class="cline-any cline-no"> </span>
|
|
788
|
-
<span class="cline-any cline-no"> </span>
|
|
789
|
-
<span class="cline-any cline-no"> </span>
|
|
790
|
-
<span class="cline-any cline-no"> </span>
|
|
791
|
-
<span class="cline-any cline-no"> </span>
|
|
792
|
-
<span class="cline-any cline-neutral"> </span>
|
|
793
|
-
<span class="cline-any cline-neutral"> </span>
|
|
794
|
-
<span class="cline-any cline-no"> </span>
|
|
795
|
-
<span class="cline-any cline-no"> </span>
|
|
796
|
-
<span class="cline-any cline-no"> </span>
|
|
797
|
-
<span class="cline-any cline-no"> </span>
|
|
798
|
-
<span class="cline-any cline-neutral"> </span>
|
|
799
|
-
<span class="cline-any cline-no"> </span>
|
|
800
|
-
<span class="cline-any cline-neutral"> </span>
|
|
801
|
-
<span class="cline-any cline-neutral"> </span>
|
|
802
|
-
<span class="cline-any cline-no"> </span>
|
|
803
|
-
<span class="cline-any cline-neutral"> </span>
|
|
804
|
-
<span class="cline-any cline-neutral"> </span>
|
|
805
|
-
<span class="cline-any cline-neutral"> </span>
|
|
806
|
-
<span class="cline-any cline-neutral"> </span>
|
|
807
|
-
<span class="cline-any cline-yes">2x</span>
|
|
808
|
-
<span class="cline-any cline-yes">2x</span>
|
|
809
|
-
<span class="cline-any cline-neutral"> </span>
|
|
810
|
-
<span class="cline-any cline-yes">2x</span>
|
|
811
|
-
<span class="cline-any cline-yes">2x</span>
|
|
812
|
-
<span class="cline-any cline-neutral"> </span>
|
|
813
|
-
<span class="cline-any cline-neutral"> </span>
|
|
814
|
-
<span class="cline-any cline-no"> </span>
|
|
815
|
-
<span class="cline-any cline-no"> </span>
|
|
816
|
-
<span class="cline-any cline-no"> </span>
|
|
817
|
-
<span class="cline-any cline-no"> </span>
|
|
818
|
-
<span class="cline-any cline-neutral"> </span>
|
|
819
|
-
<span class="cline-any cline-no"> </span>
|
|
820
|
-
<span class="cline-any cline-no"> </span>
|
|
821
|
-
<span class="cline-any cline-no"> </span>
|
|
822
|
-
<span class="cline-any cline-no"> </span>
|
|
823
|
-
<span class="cline-any cline-no"> </span>
|
|
824
|
-
<span class="cline-any cline-no"> </span>
|
|
825
|
-
<span class="cline-any cline-no"> </span>
|
|
826
|
-
<span class="cline-any cline-neutral"> </span>
|
|
827
|
-
<span class="cline-any cline-neutral"> </span>
|
|
828
|
-
<span class="cline-any cline-neutral"> </span>
|
|
829
|
-
<span class="cline-any cline-no"> </span>
|
|
830
|
-
<span class="cline-any cline-neutral"> </span>
|
|
831
|
-
<span class="cline-any cline-no"> </span>
|
|
832
|
-
<span class="cline-any cline-neutral"> </span>
|
|
833
|
-
<span class="cline-any cline-neutral"> </span>
|
|
834
|
-
<span class="cline-any cline-neutral"> </span>
|
|
835
|
-
<span class="cline-any cline-neutral"> </span>
|
|
836
|
-
<span class="cline-any cline-neutral"> </span>
|
|
837
|
-
<span class="cline-any cline-neutral"> </span>
|
|
838
|
-
<span class="cline-any cline-neutral"> </span>
|
|
839
|
-
<span class="cline-any cline-yes">6x</span>
|
|
840
|
-
<span class="cline-any cline-neutral"> </span>
|
|
841
|
-
<span class="cline-any cline-neutral"> </span>
|
|
842
|
-
<span class="cline-any cline-yes">6x</span>
|
|
843
|
-
<span class="cline-any cline-neutral"> </span>
|
|
844
|
-
<span class="cline-any cline-yes">5x</span>
|
|
845
|
-
<span class="cline-any cline-neutral"> </span>
|
|
846
|
-
<span class="cline-any cline-neutral"> </span>
|
|
847
|
-
<span class="cline-any cline-yes">5x</span>
|
|
848
|
-
<span class="cline-any cline-neutral"> </span>
|
|
849
|
-
<span class="cline-any cline-yes">5x</span>
|
|
850
|
-
<span class="cline-any cline-yes">4x</span>
|
|
851
|
-
<span class="cline-any cline-yes">8x</span>
|
|
852
|
-
<span class="cline-any cline-yes">7x</span>
|
|
853
|
-
<span class="cline-any cline-neutral"> </span>
|
|
854
|
-
<span class="cline-any cline-neutral"> </span>
|
|
855
|
-
<span class="cline-any cline-neutral"> </span>
|
|
856
|
-
<span class="cline-any cline-neutral"> </span>
|
|
857
|
-
<span class="cline-any cline-neutral"> </span>
|
|
858
|
-
<span class="cline-any cline-neutral"> </span>
|
|
859
|
-
<span class="cline-any cline-neutral"> </span>
|
|
860
|
-
<span class="cline-any cline-neutral"> </span>
|
|
861
|
-
<span class="cline-any cline-yes">9x</span>
|
|
862
|
-
<span class="cline-any cline-neutral"> </span>
|
|
863
|
-
<span class="cline-any cline-neutral"> </span>
|
|
864
|
-
<span class="cline-any cline-yes">9x</span>
|
|
865
|
-
<span class="cline-any cline-neutral"> </span>
|
|
866
|
-
<span class="cline-any cline-yes">8x</span>
|
|
867
|
-
<span class="cline-any cline-neutral"> </span>
|
|
868
|
-
<span class="cline-any cline-neutral"> </span>
|
|
869
|
-
<span class="cline-any cline-yes">8x</span>
|
|
870
|
-
<span class="cline-any cline-neutral"> </span>
|
|
871
|
-
<span class="cline-any cline-neutral"> </span>
|
|
872
|
-
<span class="cline-any cline-yes">8x</span>
|
|
873
|
-
<span class="cline-any cline-neutral"> </span>
|
|
874
|
-
<span class="cline-any cline-yes">7x</span>
|
|
875
|
-
<span class="cline-any cline-yes">7x</span>
|
|
876
|
-
<span class="cline-any cline-yes">11x</span>
|
|
877
|
-
<span class="cline-any cline-neutral"> </span>
|
|
878
|
-
<span class="cline-any cline-neutral"> </span>
|
|
879
|
-
<span class="cline-any cline-yes">10x</span>
|
|
880
|
-
<span class="cline-any cline-yes">10x</span>
|
|
881
|
-
<span class="cline-any cline-yes">2x</span>
|
|
882
|
-
<span class="cline-any cline-neutral"> </span>
|
|
883
|
-
<span class="cline-any cline-neutral"> </span>
|
|
884
|
-
<span class="cline-any cline-yes">10x</span>
|
|
885
|
-
<span class="cline-any cline-yes">1x</span>
|
|
886
|
-
<span class="cline-any cline-neutral"> </span>
|
|
887
|
-
<span class="cline-any cline-neutral"> </span>
|
|
888
|
-
<span class="cline-any cline-yes">10x</span>
|
|
889
|
-
<span class="cline-any cline-neutral"> </span>
|
|
890
|
-
<span class="cline-any cline-neutral"> </span>
|
|
891
|
-
<span class="cline-any cline-neutral"> </span>
|
|
892
|
-
<span class="cline-any cline-neutral"> </span>
|
|
893
|
-
<span class="cline-any cline-neutral"> </span>
|
|
894
|
-
<span class="cline-any cline-neutral"> </span>
|
|
895
|
-
<span class="cline-any cline-neutral"> </span>
|
|
896
|
-
<span class="cline-any cline-neutral"> </span>
|
|
897
|
-
<span class="cline-any cline-neutral"> </span>
|
|
898
|
-
<span class="cline-any cline-neutral"> </span>
|
|
899
|
-
<span class="cline-any cline-neutral"> </span>
|
|
900
|
-
<span class="cline-any cline-yes">7x</span>
|
|
901
|
-
<span class="cline-any cline-neutral"> </span>
|
|
902
|
-
<span class="cline-any cline-neutral"> </span>
|
|
903
|
-
<span class="cline-any cline-yes">7x</span>
|
|
904
|
-
<span class="cline-any cline-neutral"> </span>
|
|
905
|
-
<span class="cline-any cline-neutral"> </span>
|
|
906
|
-
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">import {
|
|
907
|
-
BadRequestException,
|
|
908
|
-
Injectable,
|
|
909
|
-
Logger,
|
|
910
|
-
NotFoundException,
|
|
911
|
-
OnModuleDestroy,
|
|
912
|
-
OnModuleInit,
|
|
913
|
-
} from '@nestjs/common';
|
|
914
|
-
import { InjectRepository } from '@nestjs/typeorm';
|
|
915
|
-
import { In, Repository } from 'typeorm';
|
|
916
|
-
import { McpConfig, McpTool } from '../core-entities';
|
|
917
|
-
import { Client } from '@modelcontextprotocol/sdk/client/index.js';
|
|
918
|
-
import { StdioClientTransport } from '@modelcontextprotocol/sdk/client/stdio.js';
|
|
919
|
-
import { LlmFunctionTool } from '../llm-provider/llm-provider.interface';
|
|
920
|
-
|
|
921
|
-
// Local interface to match the shape of a tool from the MCP SDK
|
|
922
|
-
// Properties are optional to match the inferred type from the SDK.
|
|
923
|
-
interface McpSdkTool {
|
|
924
|
-
name?: string;
|
|
925
|
-
description?: string;
|
|
926
|
-
inputSchema?: Record<string, any>;
|
|
927
|
-
}
|
|
928
|
-
|
|
929
|
-
@Injectable()
|
|
930
|
-
export class McpService implements OnModuleInit, OnModuleDestroy {
|
|
931
|
-
private readonly logger = new Logger(McpService.name);
|
|
932
|
-
private readonly activeClients = new Map<string, Client>();
|
|
933
|
-
|
|
934
|
-
constructor(
|
|
935
|
-
@InjectRepository(McpConfig)
|
|
936
|
-
private readonly mcpConfigRepository: Repository<McpConfig>,
|
|
937
|
-
@InjectRepository(McpTool)
|
|
938
|
-
private readonly mcpToolRepository: Repository<McpTool>,
|
|
939
|
-
) {}
|
|
940
|
-
|
|
941
|
-
async onModuleInit() {
|
|
942
|
-
this.logger.log('Initializing MCP connections...');
|
|
943
|
-
const configs = await this.mcpConfigRepository.find({
|
|
944
|
-
where: { is_active: true },
|
|
945
|
-
});
|
|
946
|
-
if (configs.length === 0) {
|
|
947
|
-
this.logger.warn(
|
|
948
|
-
'No active MCP configurations found. MCP tools will be unavailable.',
|
|
949
|
-
);
|
|
950
|
-
return;
|
|
951
|
-
}
|
|
952
|
-
|
|
953
|
-
for (const config of configs) {
|
|
954
|
-
await this.connectToServer(config);
|
|
955
|
-
}
|
|
956
|
-
}
|
|
957
|
-
|
|
958
|
-
async onModuleDestroy() {
|
|
959
|
-
this.logger.log('Closing all active MCP connections...');
|
|
960
|
-
await Promise.all(
|
|
961
|
-
Array.from(this.activeClients.keys()).map(<span class="fstat-no" title="function not covered" >(s</span>erverName) =>
|
|
962
|
-
<span class="cstat-no" title="statement not covered" > this.disconnectFromServer(serverName),</span>
|
|
963
|
-
),
|
|
964
|
-
);
|
|
965
|
-
}
|
|
966
|
-
|
|
967
|
-
public async connectToServer(config: McpConfig) {
|
|
968
|
-
const { server_name, command, args, env } = config;
|
|
969
|
-
<span class="missing-if-branch" title="if path not taken" >I</span>if (this.activeClients.has(server_name)) {
|
|
970
|
-
<span class="cstat-no" title="statement not covered" > this.logger.log(`Already connected to ${server_name}. Skipping.`);</span>
|
|
971
|
-
<span class="cstat-no" title="statement not covered" > return;</span>
|
|
972
|
-
}
|
|
973
|
-
this.logger.log(`Attempting to connect to MCP server: ${server_name}`);
|
|
974
|
-
try {
|
|
975
|
-
const transport = new StdioClientTransport({ command, args, env });
|
|
976
|
-
const client = new Client({
|
|
977
|
-
name: `repoburg-backend-${server_name}`,
|
|
978
|
-
version: '1.0.0',
|
|
979
|
-
});
|
|
980
|
-
|
|
981
|
-
client.connect(transport);
|
|
982
|
-
|
|
983
|
-
const toolsResult = await client.listTools();
|
|
984
|
-
<span class="missing-if-branch" title="if path not taken" >I</span>if (!toolsResult || !toolsResult.tools) {
|
|
985
|
-
<span class="cstat-no" title="statement not covered" > throw new Error('Invalid or empty tool list received from server.');</span>
|
|
986
|
-
}
|
|
987
|
-
|
|
988
|
-
this.logger.log(
|
|
989
|
-
`Connected to ${server_name}. Discovered ${toolsResult.tools.length} tools.`,
|
|
990
|
-
);
|
|
991
|
-
this.activeClients.set(server_name, client);
|
|
992
|
-
|
|
993
|
-
await this.syncToolsToDb(server_name, toolsResult.tools as McpSdkTool[]);
|
|
994
|
-
} catch (e) {
|
|
995
|
-
this.logger.error(
|
|
996
|
-
`Failed to connect to MCP server "${server_name}": ${e.message}`,
|
|
997
|
-
);
|
|
998
|
-
}
|
|
999
|
-
}
|
|
1000
|
-
|
|
1001
|
-
public async disconnectFromServer(serverName: string) {
|
|
1002
|
-
const client = this.activeClients.get(serverName);
|
|
1003
|
-
<span class="missing-if-branch" title="if path not taken" >I</span>if (client) {
|
|
1004
|
-
<span class="cstat-no" title="statement not covered" > try {</span>
|
|
1005
|
-
<span class="cstat-no" title="statement not covered" > await client.close();</span>
|
|
1006
|
-
<span class="cstat-no" title="statement not covered" > this.activeClients.delete(serverName);</span>
|
|
1007
|
-
<span class="cstat-no" title="statement not covered" > this.logger.log(`Disconnected from ${serverName}`);</span>
|
|
1008
|
-
} catch (e) {
|
|
1009
|
-
<span class="cstat-no" title="statement not covered" > this.logger.error(</span>
|
|
1010
|
-
`Error disconnecting from ${serverName}: ${e.message}`,
|
|
1011
|
-
);
|
|
1012
|
-
}
|
|
1013
|
-
}
|
|
1014
|
-
}
|
|
1015
|
-
|
|
1016
|
-
private async syncToolsToDb(serverName: string, tools: McpSdkTool[]) {
|
|
1017
|
-
this.logger.log(`Syncing tools for server: ${serverName}`);
|
|
1018
|
-
|
|
1019
|
-
const validTools = tools.filter(
|
|
1020
|
-
(tool): tool is Required<Pick<McpSdkTool, 'name'>> & McpSdkTool =>
|
|
1021
|
-
!!tool.name,
|
|
1022
|
-
);
|
|
1023
|
-
|
|
1024
|
-
const existingTools = await this.mcpToolRepository.find({
|
|
1025
|
-
where: { server_name: serverName },
|
|
1026
|
-
});
|
|
1027
|
-
const existingToolsMap = new Map(
|
|
1028
|
-
existingTools.map(<span class="fstat-no" title="function not covered" >(t</span>) => <span class="cstat-no" title="statement not covered" >[t.tool_name, t])</span>,
|
|
1029
|
-
);
|
|
1030
|
-
|
|
1031
|
-
const toolsToSave: McpTool[] = <span class="cstat-no" title="statement not covered" >[];</span>
|
|
1032
|
-
<span class="cstat-no" title="statement not covered" > for (const sdkTool of validTools) {</span>
|
|
1033
|
-
const existingTool = <span class="cstat-no" title="statement not covered" >existingToolsMap.get(sdkTool.name);</span>
|
|
1034
|
-
<span class="cstat-no" title="statement not covered" > if (existingTool) {</span>
|
|
1035
|
-
// Update existing tool but preserve its active state
|
|
1036
|
-
<span class="cstat-no" title="statement not covered" > existingTool.description = sdkTool.description || '';</span>
|
|
1037
|
-
<span class="cstat-no" title="statement not covered" > existingTool.input_schema = sdkTool.inputSchema || {};</span>
|
|
1038
|
-
<span class="cstat-no" title="statement not covered" > toolsToSave.push(existingTool);</span>
|
|
1039
|
-
} else {
|
|
1040
|
-
// Create new tool, will default to is_active: true
|
|
1041
|
-
<span class="cstat-no" title="statement not covered" > toolsToSave.push(</span>
|
|
1042
|
-
this.mcpToolRepository.create({
|
|
1043
|
-
server_name: serverName,
|
|
1044
|
-
tool_name: sdkTool.name,
|
|
1045
|
-
description: sdkTool.description || '',
|
|
1046
|
-
input_schema: sdkTool.inputSchema || {},
|
|
1047
|
-
}),
|
|
1048
|
-
);
|
|
1049
|
-
}
|
|
1050
|
-
}
|
|
1051
|
-
|
|
1052
|
-
<span class="cstat-no" title="statement not covered" > await this.mcpToolRepository.save(toolsToSave);</span>
|
|
1053
|
-
|
|
1054
|
-
const newToolNames = <span class="cstat-no" title="statement not covered" >validTools.map(<span class="fstat-no" title="function not covered" >(t</span>) => <span class="cstat-no" title="statement not covered" >t.name)</span>;</span>
|
|
1055
|
-
const toolsToDelete = <span class="cstat-no" title="statement not covered" >existingTools.filter(</span>
|
|
1056
|
-
<span class="fstat-no" title="function not covered" > (t</span>) => <span class="cstat-no" title="statement not covered" >!newToolNames.includes(t.tool_name),</span>
|
|
1057
|
-
);
|
|
1058
|
-
<span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (toolsToDelete.length > 0) {</span>
|
|
1059
|
-
<span class="cstat-no" title="statement not covered" > await this.mcpToolRepository.remove(toolsToDelete);</span>
|
|
1060
|
-
}
|
|
1061
|
-
|
|
1062
|
-
<span class="cstat-no" title="statement not covered" > this.logger.log(</span>
|
|
1063
|
-
`Successfully synced tools for ${serverName}. Saved: ${toolsToSave.length}, Deleted: ${toolsToDelete.length}`,
|
|
1064
|
-
);
|
|
1065
|
-
}
|
|
1066
|
-
|
|
1067
|
-
public async createMcpConfig(configJson: string): Promise<McpConfig> {
|
|
1068
|
-
let parsedConfig: any;
|
|
1069
|
-
try {
|
|
1070
|
-
parsedConfig = JSON.parse(configJson);
|
|
1071
|
-
} catch (e) {
|
|
1072
|
-
<span class="cstat-no" title="statement not covered" > throw new BadRequestException('Invalid JSON format.');</span>
|
|
1073
|
-
}
|
|
1074
|
-
|
|
1075
|
-
const serverName = Object.keys(parsedConfig)[0];
|
|
1076
|
-
<span class="missing-if-branch" title="if path not taken" >I</span>if (!serverName) {
|
|
1077
|
-
<span class="cstat-no" title="statement not covered" > throw new BadRequestException(</span>
|
|
1078
|
-
'JSON must have a root key as the server name.',
|
|
1079
|
-
);
|
|
1080
|
-
}
|
|
1081
|
-
|
|
1082
|
-
const configData = parsedConfig[serverName];
|
|
1083
|
-
<span class="missing-if-branch" title="if path not taken" >I</span>if (!configData || !configData.command || !configData.args) {
|
|
1084
|
-
<span class="cstat-no" title="statement not covered" > throw new BadRequestException(</span>
|
|
1085
|
-
'Configuration must include "command" and "args" properties.',
|
|
1086
|
-
);
|
|
1087
|
-
}
|
|
1088
|
-
|
|
1089
|
-
const existingConfig = await this.mcpConfigRepository.findOneBy({
|
|
1090
|
-
server_name: serverName,
|
|
1091
|
-
});
|
|
1092
|
-
<span class="missing-if-branch" title="if path not taken" >I</span>if (existingConfig) {
|
|
1093
|
-
<span class="cstat-no" title="statement not covered" > throw new BadRequestException(</span>
|
|
1094
|
-
`A configuration for "${serverName}" already exists.`,
|
|
1095
|
-
);
|
|
1096
|
-
}
|
|
1097
|
-
|
|
1098
|
-
const newConfig = this.mcpConfigRepository.create({
|
|
1099
|
-
server_name: serverName,
|
|
1100
|
-
command: configData.command,
|
|
1101
|
-
args: configData.args,
|
|
1102
|
-
env: configData.env || <span class="branch-1 cbranch-no" title="branch not covered" >{},</span>
|
|
1103
|
-
is_active: true,
|
|
1104
|
-
});
|
|
1105
|
-
|
|
1106
|
-
const savedConfig = await this.mcpConfigRepository.save(newConfig);
|
|
1107
|
-
await this.connectToServer(savedConfig);
|
|
1108
|
-
return savedConfig;
|
|
1109
|
-
}
|
|
1110
|
-
|
|
1111
|
-
public async updateMcpConfigStatus(
|
|
1112
|
-
serverName: string,
|
|
1113
|
-
isActive: boolean,
|
|
1114
|
-
): Promise<McpConfig> {
|
|
1115
|
-
const config = await this.mcpConfigRepository.findOneBy({
|
|
1116
|
-
server_name: serverName,
|
|
1117
|
-
});
|
|
1118
|
-
<span class="missing-if-branch" title="if path not taken" >I</span>if (!config) {
|
|
1119
|
-
<span class="cstat-no" title="statement not covered" > throw new NotFoundException(</span>
|
|
1120
|
-
`MCP configuration for "${serverName}" not found.`,
|
|
1121
|
-
);
|
|
1122
|
-
}
|
|
1123
|
-
|
|
1124
|
-
config.is_active = isActive;
|
|
1125
|
-
await this.mcpConfigRepository.save(config);
|
|
1126
|
-
|
|
1127
|
-
if (isActive) {
|
|
1128
|
-
await this.connectToServer(config);
|
|
1129
|
-
} else {
|
|
1130
|
-
await this.disconnectFromServer(serverName);
|
|
1131
|
-
// Do not remove tools from DB, just mark them as inactive conceptually
|
|
1132
|
-
}
|
|
1133
|
-
|
|
1134
|
-
return config;
|
|
1135
|
-
}
|
|
1136
|
-
|
|
1137
|
-
public async deleteMcpConfig(serverName: string): Promise<void> {
|
|
1138
|
-
const config = await this.mcpConfigRepository.findOneBy({
|
|
1139
|
-
server_name: serverName,
|
|
1140
|
-
});
|
|
1141
|
-
<span class="missing-if-branch" title="if path not taken" >I</span>if (!config) {
|
|
1142
|
-
<span class="cstat-no" title="statement not covered" > throw new NotFoundException(</span>
|
|
1143
|
-
`MCP configuration for "${serverName}" not found.`,
|
|
1144
|
-
);
|
|
1145
|
-
}
|
|
1146
|
-
|
|
1147
|
-
await this.disconnectFromServer(serverName);
|
|
1148
|
-
await this.mcpToolRepository.delete({ server_name: serverName });
|
|
1149
|
-
await this.mcpConfigRepository.remove(config);
|
|
1150
|
-
}
|
|
1151
|
-
|
|
1152
|
-
public async batchUpdateToolStatus(
|
|
1153
|
-
toolIds: string[],
|
|
1154
|
-
isActive: boolean,
|
|
1155
|
-
): Promise<{ affected: number }> {
|
|
1156
|
-
<span class="missing-if-branch" title="if path not taken" >I</span>if (toolIds.length === 0) {
|
|
1157
|
-
<span class="cstat-no" title="statement not covered" > return { affected: 0 };</span>
|
|
1158
|
-
}
|
|
1159
|
-
const result = await this.mcpToolRepository.update(
|
|
1160
|
-
{ id: In(toolIds) },
|
|
1161
|
-
{ is_active: isActive },
|
|
1162
|
-
);
|
|
1163
|
-
return { affected: result.affected || 0 };
|
|
1164
|
-
}
|
|
1165
|
-
|
|
1166
|
-
public async getMcpServers(): Promise<any[]> {
|
|
1167
|
-
const configs = await this.mcpConfigRepository.find({
|
|
1168
|
-
order: { server_name: 'ASC' },
|
|
1169
|
-
});
|
|
1170
|
-
const tools = await this.mcpToolRepository.find({
|
|
1171
|
-
order: { tool_name: 'ASC' },
|
|
1172
|
-
});
|
|
1173
|
-
|
|
1174
|
-
const toolsByServer = new Map<string, any[]>();
|
|
1175
|
-
for (const tool of tools) {
|
|
1176
|
-
<span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (!toolsByServer.has(tool.server_name)) {</span>
|
|
1177
|
-
<span class="cstat-no" title="statement not covered" > toolsByServer.set(tool.server_name, []);</span>
|
|
1178
|
-
}
|
|
1179
|
-
<span class="cstat-no" title="statement not covered" > toolsByServer.get(tool.server_name).push({</span>
|
|
1180
|
-
id: tool.id,
|
|
1181
|
-
tool_name: tool.tool_name,
|
|
1182
|
-
description: tool.description,
|
|
1183
|
-
input_schema: tool.input_schema,
|
|
1184
|
-
is_active: tool.is_active,
|
|
1185
|
-
});
|
|
1186
|
-
}
|
|
1187
|
-
|
|
1188
|
-
return configs.map(<span class="fstat-no" title="function not covered" >(c</span>onfig) => (<span class="cstat-no" title="statement not covered" >{</span>
|
|
1189
|
-
server_name: config.server_name,
|
|
1190
|
-
description: `Tools available from the ${config.server_name} server.`,
|
|
1191
|
-
is_active: config.is_active,
|
|
1192
|
-
tools: toolsByServer.get(config.server_name) || [],
|
|
1193
|
-
}));
|
|
1194
|
-
}
|
|
1195
|
-
|
|
1196
|
-
public <span class="fstat-no" title="function not covered" >async </span>executeMcpTool(
|
|
1197
|
-
serverName: string,
|
|
1198
|
-
toolName: string,
|
|
1199
|
-
args: any,
|
|
1200
|
-
): Promise<{ stdout: string; stderr: string }> {
|
|
1201
|
-
<span class="cstat-no" title="statement not covered" > this.logger.log(</span>
|
|
1202
|
-
`Executing MCP tool: ${serverName}.${toolName} with args: ${JSON.stringify(
|
|
1203
|
-
args,
|
|
1204
|
-
)}`,
|
|
1205
|
-
);
|
|
1206
|
-
|
|
1207
|
-
const client = <span class="cstat-no" title="statement not covered" >this.activeClients.get(serverName);</span>
|
|
1208
|
-
<span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (!client) {</span>
|
|
1209
|
-
const errorMsg = <span class="cstat-no" title="statement not covered" >`No active MCP connection found for server: ${serverName}`;</span>
|
|
1210
|
-
<span class="cstat-no" title="statement not covered" > this.logger.error(errorMsg);</span>
|
|
1211
|
-
<span class="cstat-no" title="statement not covered" > return { stdout: '', stderr: errorMsg };</span>
|
|
1212
|
-
}
|
|
1213
|
-
|
|
1214
|
-
<span class="cstat-no" title="statement not covered" > try {</span>
|
|
1215
|
-
const result = <span class="cstat-no" title="statement not covered" >await client.callTool({ name: toolName, arguments: args });</span>
|
|
1216
|
-
const stdout = <span class="cstat-no" title="statement not covered" >JSON.stringify(result, null, 2);</span>
|
|
1217
|
-
<span class="cstat-no" title="statement not covered" > return { stdout, stderr: '' };</span>
|
|
1218
|
-
} catch (e) {
|
|
1219
|
-
<span class="cstat-no" title="statement not covered" > this.logger.error(</span>
|
|
1220
|
-
`Error calling tool ${toolName} on ${serverName}: ${e.message}`,
|
|
1221
|
-
);
|
|
1222
|
-
<span class="cstat-no" title="statement not covered" > return { stdout: '', stderr: e.message };</span>
|
|
1223
|
-
}
|
|
1224
|
-
}
|
|
1225
|
-
|
|
1226
|
-
public async getMcpToolsDefinition(): Promise<string> {
|
|
1227
|
-
const servers = await this.getMcpServers();
|
|
1228
|
-
const activeServers = servers.filter(<span class="fstat-no" title="function not covered" >(s</span>) => <span class="cstat-no" title="statement not covered" >s.is_active)</span>;
|
|
1229
|
-
|
|
1230
|
-
if (activeServers.length === 0) {
|
|
1231
|
-
return 'No active MCP servers are currently connected.';
|
|
1232
|
-
}
|
|
1233
|
-
|
|
1234
|
-
let definition = <span class="cstat-no" title="statement not covered" >'';</span>
|
|
1235
|
-
<span class="cstat-no" title="statement not covered" > for (const server of activeServers) {</span>
|
|
1236
|
-
const activeTools = <span class="cstat-no" title="statement not covered" >server.tools.filter(<span class="fstat-no" title="function not covered" >(t</span>) => <span class="cstat-no" title="statement not covered" >t.is_active)</span>;</span>
|
|
1237
|
-
<span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (activeTools.length === 0) <span class="cstat-no" title="statement not covered" >continue;</span></span>
|
|
1238
|
-
|
|
1239
|
-
<span class="cstat-no" title="statement not covered" > definition += `### Server: ${server.server_name}\n`;</span>
|
|
1240
|
-
<span class="cstat-no" title="statement not covered" > definition += `Description: ${server.description}\n`;</span>
|
|
1241
|
-
<span class="cstat-no" title="statement not covered" > definition += 'Tools:\n';</span>
|
|
1242
|
-
<span class="cstat-no" title="statement not covered" > for (const tool of activeTools) {</span>
|
|
1243
|
-
<span class="cstat-no" title="statement not covered" > definition += `- **${tool.tool_name}**\n`;</span>
|
|
1244
|
-
<span class="cstat-no" title="statement not covered" > definition += ` - Description: ${tool.description}\n`;</span>
|
|
1245
|
-
<span class="cstat-no" title="statement not covered" > definition += ` - Input Schema: \`${JSON.stringify(</span>
|
|
1246
|
-
tool.input_schema,
|
|
1247
|
-
)}\`\n`;
|
|
1248
|
-
}
|
|
1249
|
-
<span class="cstat-no" title="statement not covered" > definition += '\n';</span>
|
|
1250
|
-
}
|
|
1251
|
-
<span class="cstat-no" title="statement not covered" > return definition;</span>
|
|
1252
|
-
}
|
|
1253
|
-
|
|
1254
|
-
/**
|
|
1255
|
-
* Get all active MCP tool names in serverName__toolName format.
|
|
1256
|
-
* Used by SystemPromptsService to populate the MCP tool selection UI.
|
|
1257
|
-
*/
|
|
1258
|
-
public async getActiveMcpToolNames(): Promise<string[]> {
|
|
1259
|
-
const activeConfigs = await this.mcpConfigRepository.find({
|
|
1260
|
-
where: { is_active: true },
|
|
1261
|
-
});
|
|
1262
|
-
if (activeConfigs.length === 0) return [];
|
|
1263
|
-
|
|
1264
|
-
const activeTools = await this.mcpToolRepository.find({
|
|
1265
|
-
where: { is_active: true },
|
|
1266
|
-
});
|
|
1267
|
-
if (activeTools.length === 0) return [];
|
|
1268
|
-
|
|
1269
|
-
const activeServerNames = new Set(activeConfigs.map((c) => c.server_name));
|
|
1270
|
-
return activeTools
|
|
1271
|
-
.filter((t) => activeServerNames.has(t.server_name))
|
|
1272
|
-
.map((t) => `${t.server_name}__${t.tool_name}`);
|
|
1273
|
-
}
|
|
1274
|
-
|
|
1275
|
-
/**
|
|
1276
|
-
* Generate LlmFunctionTool definitions for all active MCP tools.
|
|
1277
|
-
* Each tool is named `{server_name}__{tool_name}` (double underscore).
|
|
1278
|
-
* These definitions are merged with built-in tool definitions for native tool calling.
|
|
1279
|
-
*/
|
|
1280
|
-
public async getActiveMcpToolDefinitions(): Promise<LlmFunctionTool[]> {
|
|
1281
|
-
const activeConfigs = await this.mcpConfigRepository.find({
|
|
1282
|
-
where: { is_active: true },
|
|
1283
|
-
});
|
|
1284
|
-
if (activeConfigs.length === 0) return [];
|
|
1285
|
-
|
|
1286
|
-
const activeTools = await this.mcpToolRepository.find({
|
|
1287
|
-
where: { is_active: true },
|
|
1288
|
-
});
|
|
1289
|
-
if (activeTools.length === 0) return [];
|
|
1290
|
-
|
|
1291
|
-
// Only include tools from active servers
|
|
1292
|
-
const activeServerNames = new Set(activeConfigs.map((c) => c.server_name));
|
|
1293
|
-
|
|
1294
|
-
const definitions: LlmFunctionTool[] = [];
|
|
1295
|
-
for (const tool of activeTools) {
|
|
1296
|
-
if (!activeServerNames.has(tool.server_name)) continue;
|
|
1297
|
-
|
|
1298
|
-
// Use input_schema directly if it's a valid object, otherwise fallback
|
|
1299
|
-
let parameters = tool.input_schema;
|
|
1300
|
-
if (!parameters || typeof parameters !== 'object') {
|
|
1301
|
-
parameters = { type: 'object', properties: {} };
|
|
1302
|
-
}
|
|
1303
|
-
// Ensure parameters has the required JSON Schema fields
|
|
1304
|
-
if (!parameters.type) {
|
|
1305
|
-
parameters = { type: 'object', ...parameters };
|
|
1306
|
-
}
|
|
1307
|
-
|
|
1308
|
-
definitions.push({
|
|
1309
|
-
type: 'function',
|
|
1310
|
-
function: {
|
|
1311
|
-
name: `${tool.server_name}__${tool.tool_name}`,
|
|
1312
|
-
description:
|
|
1313
|
-
tool.description ||
|
|
1314
|
-
`MCP tool: ${tool.server_name}.${tool.tool_name}`,
|
|
1315
|
-
parameters,
|
|
1316
|
-
},
|
|
1317
|
-
});
|
|
1318
|
-
}
|
|
1319
|
-
|
|
1320
|
-
this.logger.log(
|
|
1321
|
-
`Generated ${definitions.length} MCP tool definitions from ${activeServerNames.size} active servers.`,
|
|
1322
|
-
);
|
|
1323
|
-
return definitions;
|
|
1324
|
-
}
|
|
1325
|
-
}
|
|
1326
|
-
</pre></td></tr></table></pre>
|
|
1327
|
-
|
|
1328
|
-
<div class='push'></div><!-- for sticky footer -->
|
|
1329
|
-
</div><!-- /wrapper -->
|
|
1330
|
-
<div class='footer quiet pad2 space-top1 center small'>
|
|
1331
|
-
Code coverage generated by
|
|
1332
|
-
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
1333
|
-
at 2026-05-09T01:03:45.353Z
|
|
1334
|
-
</div>
|
|
1335
|
-
<script src="../../prettify.js"></script>
|
|
1336
|
-
<script>
|
|
1337
|
-
window.onload = function () {
|
|
1338
|
-
prettyPrint();
|
|
1339
|
-
};
|
|
1340
|
-
</script>
|
|
1341
|
-
<script src="../../sorter.js"></script>
|
|
1342
|
-
<script src="../../block-navigation.js"></script>
|
|
1343
|
-
</body>
|
|
1344
|
-
</html>
|
|
1345
|
-
|