repoburg 1.3.148 → 1.3.150
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/backend/dist/src/core-entities/session.entity.d.ts +1 -0
- package/backend/dist/src/core-entities/session.entity.js +8 -0
- package/backend/dist/src/core-entities/session.entity.js.map +1 -1
- package/backend/dist/src/interactive-chat/chat.service.js +9 -0
- package/backend/dist/src/interactive-chat/chat.service.js.map +1 -1
- package/backend/dist/src/main.js +3 -0
- package/backend/dist/src/main.js.map +1 -1
- package/backend/dist/src/sessions/dto/session.dto.d.ts +1 -0
- package/backend/dist/src/sessions/dto/session.dto.js +9 -0
- package/backend/dist/src/sessions/dto/session.dto.js.map +1 -1
- package/backend/dist/src/sessions/sessions.service.d.ts +1 -0
- package/backend/dist/src/sessions/sessions.service.js +7 -0
- package/backend/dist/src/sessions/sessions.service.js.map +1 -1
- package/backend/dist/src/sub-agents/sub-agent-runner.service.js +17 -0
- package/backend/dist/src/sub-agents/sub-agent-runner.service.js.map +1 -1
- package/backend/dist/tsconfig.build.tsbuildinfo +1 -1
- 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,1780 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
<!doctype html>
|
|
3
|
-
<html lang="en">
|
|
4
|
-
|
|
5
|
-
<head>
|
|
6
|
-
<title>Code coverage report for src/llm-provider/ollama-llm.provider.ts</title>
|
|
7
|
-
<meta charset="utf-8" />
|
|
8
|
-
<link rel="stylesheet" href="../../prettify.css" />
|
|
9
|
-
<link rel="stylesheet" href="../../base.css" />
|
|
10
|
-
<link rel="shortcut icon" type="image/x-icon" href="../../favicon.png" />
|
|
11
|
-
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
12
|
-
<style type='text/css'>
|
|
13
|
-
.coverage-summary .sorter {
|
|
14
|
-
background-image: url(../../sort-arrow-sprite.png);
|
|
15
|
-
}
|
|
16
|
-
</style>
|
|
17
|
-
</head>
|
|
18
|
-
|
|
19
|
-
<body>
|
|
20
|
-
<div class='wrapper'>
|
|
21
|
-
<div class='pad1'>
|
|
22
|
-
<h1><a href="../../index.html">All files</a> / <a href="index.html">src/llm-provider</a> ollama-llm.provider.ts</h1>
|
|
23
|
-
<div class='clearfix'>
|
|
24
|
-
|
|
25
|
-
<div class='fl pad1y space-right2'>
|
|
26
|
-
<span class="strong">69.4% </span>
|
|
27
|
-
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>152/219</span>
|
|
29
|
-
</div>
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
<div class='fl pad1y space-right2'>
|
|
33
|
-
<span class="strong">56.3% </span>
|
|
34
|
-
<span class="quiet">Branches</span>
|
|
35
|
-
<span class='fraction'>67/119</span>
|
|
36
|
-
</div>
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
<div class='fl pad1y space-right2'>
|
|
40
|
-
<span class="strong">70% </span>
|
|
41
|
-
<span class="quiet">Functions</span>
|
|
42
|
-
<span class='fraction'>14/20</span>
|
|
43
|
-
</div>
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
<div class='fl pad1y space-right2'>
|
|
47
|
-
<span class="strong">69.71% </span>
|
|
48
|
-
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>145/208</span>
|
|
50
|
-
</div>
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
</div>
|
|
54
|
-
<p class="quiet">
|
|
55
|
-
Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
|
|
56
|
-
</p>
|
|
57
|
-
<template id="filterTemplate">
|
|
58
|
-
<div class="quiet">
|
|
59
|
-
Filter:
|
|
60
|
-
<input type="search" id="fileSearch">
|
|
61
|
-
</div>
|
|
62
|
-
</template>
|
|
63
|
-
</div>
|
|
64
|
-
<div class='status-line medium'></div>
|
|
65
|
-
<pre><table class="coverage">
|
|
66
|
-
<tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
|
|
67
|
-
<a name='L2'></a><a href='#L2'>2</a>
|
|
68
|
-
<a name='L3'></a><a href='#L3'>3</a>
|
|
69
|
-
<a name='L4'></a><a href='#L4'>4</a>
|
|
70
|
-
<a name='L5'></a><a href='#L5'>5</a>
|
|
71
|
-
<a name='L6'></a><a href='#L6'>6</a>
|
|
72
|
-
<a name='L7'></a><a href='#L7'>7</a>
|
|
73
|
-
<a name='L8'></a><a href='#L8'>8</a>
|
|
74
|
-
<a name='L9'></a><a href='#L9'>9</a>
|
|
75
|
-
<a name='L10'></a><a href='#L10'>10</a>
|
|
76
|
-
<a name='L11'></a><a href='#L11'>11</a>
|
|
77
|
-
<a name='L12'></a><a href='#L12'>12</a>
|
|
78
|
-
<a name='L13'></a><a href='#L13'>13</a>
|
|
79
|
-
<a name='L14'></a><a href='#L14'>14</a>
|
|
80
|
-
<a name='L15'></a><a href='#L15'>15</a>
|
|
81
|
-
<a name='L16'></a><a href='#L16'>16</a>
|
|
82
|
-
<a name='L17'></a><a href='#L17'>17</a>
|
|
83
|
-
<a name='L18'></a><a href='#L18'>18</a>
|
|
84
|
-
<a name='L19'></a><a href='#L19'>19</a>
|
|
85
|
-
<a name='L20'></a><a href='#L20'>20</a>
|
|
86
|
-
<a name='L21'></a><a href='#L21'>21</a>
|
|
87
|
-
<a name='L22'></a><a href='#L22'>22</a>
|
|
88
|
-
<a name='L23'></a><a href='#L23'>23</a>
|
|
89
|
-
<a name='L24'></a><a href='#L24'>24</a>
|
|
90
|
-
<a name='L25'></a><a href='#L25'>25</a>
|
|
91
|
-
<a name='L26'></a><a href='#L26'>26</a>
|
|
92
|
-
<a name='L27'></a><a href='#L27'>27</a>
|
|
93
|
-
<a name='L28'></a><a href='#L28'>28</a>
|
|
94
|
-
<a name='L29'></a><a href='#L29'>29</a>
|
|
95
|
-
<a name='L30'></a><a href='#L30'>30</a>
|
|
96
|
-
<a name='L31'></a><a href='#L31'>31</a>
|
|
97
|
-
<a name='L32'></a><a href='#L32'>32</a>
|
|
98
|
-
<a name='L33'></a><a href='#L33'>33</a>
|
|
99
|
-
<a name='L34'></a><a href='#L34'>34</a>
|
|
100
|
-
<a name='L35'></a><a href='#L35'>35</a>
|
|
101
|
-
<a name='L36'></a><a href='#L36'>36</a>
|
|
102
|
-
<a name='L37'></a><a href='#L37'>37</a>
|
|
103
|
-
<a name='L38'></a><a href='#L38'>38</a>
|
|
104
|
-
<a name='L39'></a><a href='#L39'>39</a>
|
|
105
|
-
<a name='L40'></a><a href='#L40'>40</a>
|
|
106
|
-
<a name='L41'></a><a href='#L41'>41</a>
|
|
107
|
-
<a name='L42'></a><a href='#L42'>42</a>
|
|
108
|
-
<a name='L43'></a><a href='#L43'>43</a>
|
|
109
|
-
<a name='L44'></a><a href='#L44'>44</a>
|
|
110
|
-
<a name='L45'></a><a href='#L45'>45</a>
|
|
111
|
-
<a name='L46'></a><a href='#L46'>46</a>
|
|
112
|
-
<a name='L47'></a><a href='#L47'>47</a>
|
|
113
|
-
<a name='L48'></a><a href='#L48'>48</a>
|
|
114
|
-
<a name='L49'></a><a href='#L49'>49</a>
|
|
115
|
-
<a name='L50'></a><a href='#L50'>50</a>
|
|
116
|
-
<a name='L51'></a><a href='#L51'>51</a>
|
|
117
|
-
<a name='L52'></a><a href='#L52'>52</a>
|
|
118
|
-
<a name='L53'></a><a href='#L53'>53</a>
|
|
119
|
-
<a name='L54'></a><a href='#L54'>54</a>
|
|
120
|
-
<a name='L55'></a><a href='#L55'>55</a>
|
|
121
|
-
<a name='L56'></a><a href='#L56'>56</a>
|
|
122
|
-
<a name='L57'></a><a href='#L57'>57</a>
|
|
123
|
-
<a name='L58'></a><a href='#L58'>58</a>
|
|
124
|
-
<a name='L59'></a><a href='#L59'>59</a>
|
|
125
|
-
<a name='L60'></a><a href='#L60'>60</a>
|
|
126
|
-
<a name='L61'></a><a href='#L61'>61</a>
|
|
127
|
-
<a name='L62'></a><a href='#L62'>62</a>
|
|
128
|
-
<a name='L63'></a><a href='#L63'>63</a>
|
|
129
|
-
<a name='L64'></a><a href='#L64'>64</a>
|
|
130
|
-
<a name='L65'></a><a href='#L65'>65</a>
|
|
131
|
-
<a name='L66'></a><a href='#L66'>66</a>
|
|
132
|
-
<a name='L67'></a><a href='#L67'>67</a>
|
|
133
|
-
<a name='L68'></a><a href='#L68'>68</a>
|
|
134
|
-
<a name='L69'></a><a href='#L69'>69</a>
|
|
135
|
-
<a name='L70'></a><a href='#L70'>70</a>
|
|
136
|
-
<a name='L71'></a><a href='#L71'>71</a>
|
|
137
|
-
<a name='L72'></a><a href='#L72'>72</a>
|
|
138
|
-
<a name='L73'></a><a href='#L73'>73</a>
|
|
139
|
-
<a name='L74'></a><a href='#L74'>74</a>
|
|
140
|
-
<a name='L75'></a><a href='#L75'>75</a>
|
|
141
|
-
<a name='L76'></a><a href='#L76'>76</a>
|
|
142
|
-
<a name='L77'></a><a href='#L77'>77</a>
|
|
143
|
-
<a name='L78'></a><a href='#L78'>78</a>
|
|
144
|
-
<a name='L79'></a><a href='#L79'>79</a>
|
|
145
|
-
<a name='L80'></a><a href='#L80'>80</a>
|
|
146
|
-
<a name='L81'></a><a href='#L81'>81</a>
|
|
147
|
-
<a name='L82'></a><a href='#L82'>82</a>
|
|
148
|
-
<a name='L83'></a><a href='#L83'>83</a>
|
|
149
|
-
<a name='L84'></a><a href='#L84'>84</a>
|
|
150
|
-
<a name='L85'></a><a href='#L85'>85</a>
|
|
151
|
-
<a name='L86'></a><a href='#L86'>86</a>
|
|
152
|
-
<a name='L87'></a><a href='#L87'>87</a>
|
|
153
|
-
<a name='L88'></a><a href='#L88'>88</a>
|
|
154
|
-
<a name='L89'></a><a href='#L89'>89</a>
|
|
155
|
-
<a name='L90'></a><a href='#L90'>90</a>
|
|
156
|
-
<a name='L91'></a><a href='#L91'>91</a>
|
|
157
|
-
<a name='L92'></a><a href='#L92'>92</a>
|
|
158
|
-
<a name='L93'></a><a href='#L93'>93</a>
|
|
159
|
-
<a name='L94'></a><a href='#L94'>94</a>
|
|
160
|
-
<a name='L95'></a><a href='#L95'>95</a>
|
|
161
|
-
<a name='L96'></a><a href='#L96'>96</a>
|
|
162
|
-
<a name='L97'></a><a href='#L97'>97</a>
|
|
163
|
-
<a name='L98'></a><a href='#L98'>98</a>
|
|
164
|
-
<a name='L99'></a><a href='#L99'>99</a>
|
|
165
|
-
<a name='L100'></a><a href='#L100'>100</a>
|
|
166
|
-
<a name='L101'></a><a href='#L101'>101</a>
|
|
167
|
-
<a name='L102'></a><a href='#L102'>102</a>
|
|
168
|
-
<a name='L103'></a><a href='#L103'>103</a>
|
|
169
|
-
<a name='L104'></a><a href='#L104'>104</a>
|
|
170
|
-
<a name='L105'></a><a href='#L105'>105</a>
|
|
171
|
-
<a name='L106'></a><a href='#L106'>106</a>
|
|
172
|
-
<a name='L107'></a><a href='#L107'>107</a>
|
|
173
|
-
<a name='L108'></a><a href='#L108'>108</a>
|
|
174
|
-
<a name='L109'></a><a href='#L109'>109</a>
|
|
175
|
-
<a name='L110'></a><a href='#L110'>110</a>
|
|
176
|
-
<a name='L111'></a><a href='#L111'>111</a>
|
|
177
|
-
<a name='L112'></a><a href='#L112'>112</a>
|
|
178
|
-
<a name='L113'></a><a href='#L113'>113</a>
|
|
179
|
-
<a name='L114'></a><a href='#L114'>114</a>
|
|
180
|
-
<a name='L115'></a><a href='#L115'>115</a>
|
|
181
|
-
<a name='L116'></a><a href='#L116'>116</a>
|
|
182
|
-
<a name='L117'></a><a href='#L117'>117</a>
|
|
183
|
-
<a name='L118'></a><a href='#L118'>118</a>
|
|
184
|
-
<a name='L119'></a><a href='#L119'>119</a>
|
|
185
|
-
<a name='L120'></a><a href='#L120'>120</a>
|
|
186
|
-
<a name='L121'></a><a href='#L121'>121</a>
|
|
187
|
-
<a name='L122'></a><a href='#L122'>122</a>
|
|
188
|
-
<a name='L123'></a><a href='#L123'>123</a>
|
|
189
|
-
<a name='L124'></a><a href='#L124'>124</a>
|
|
190
|
-
<a name='L125'></a><a href='#L125'>125</a>
|
|
191
|
-
<a name='L126'></a><a href='#L126'>126</a>
|
|
192
|
-
<a name='L127'></a><a href='#L127'>127</a>
|
|
193
|
-
<a name='L128'></a><a href='#L128'>128</a>
|
|
194
|
-
<a name='L129'></a><a href='#L129'>129</a>
|
|
195
|
-
<a name='L130'></a><a href='#L130'>130</a>
|
|
196
|
-
<a name='L131'></a><a href='#L131'>131</a>
|
|
197
|
-
<a name='L132'></a><a href='#L132'>132</a>
|
|
198
|
-
<a name='L133'></a><a href='#L133'>133</a>
|
|
199
|
-
<a name='L134'></a><a href='#L134'>134</a>
|
|
200
|
-
<a name='L135'></a><a href='#L135'>135</a>
|
|
201
|
-
<a name='L136'></a><a href='#L136'>136</a>
|
|
202
|
-
<a name='L137'></a><a href='#L137'>137</a>
|
|
203
|
-
<a name='L138'></a><a href='#L138'>138</a>
|
|
204
|
-
<a name='L139'></a><a href='#L139'>139</a>
|
|
205
|
-
<a name='L140'></a><a href='#L140'>140</a>
|
|
206
|
-
<a name='L141'></a><a href='#L141'>141</a>
|
|
207
|
-
<a name='L142'></a><a href='#L142'>142</a>
|
|
208
|
-
<a name='L143'></a><a href='#L143'>143</a>
|
|
209
|
-
<a name='L144'></a><a href='#L144'>144</a>
|
|
210
|
-
<a name='L145'></a><a href='#L145'>145</a>
|
|
211
|
-
<a name='L146'></a><a href='#L146'>146</a>
|
|
212
|
-
<a name='L147'></a><a href='#L147'>147</a>
|
|
213
|
-
<a name='L148'></a><a href='#L148'>148</a>
|
|
214
|
-
<a name='L149'></a><a href='#L149'>149</a>
|
|
215
|
-
<a name='L150'></a><a href='#L150'>150</a>
|
|
216
|
-
<a name='L151'></a><a href='#L151'>151</a>
|
|
217
|
-
<a name='L152'></a><a href='#L152'>152</a>
|
|
218
|
-
<a name='L153'></a><a href='#L153'>153</a>
|
|
219
|
-
<a name='L154'></a><a href='#L154'>154</a>
|
|
220
|
-
<a name='L155'></a><a href='#L155'>155</a>
|
|
221
|
-
<a name='L156'></a><a href='#L156'>156</a>
|
|
222
|
-
<a name='L157'></a><a href='#L157'>157</a>
|
|
223
|
-
<a name='L158'></a><a href='#L158'>158</a>
|
|
224
|
-
<a name='L159'></a><a href='#L159'>159</a>
|
|
225
|
-
<a name='L160'></a><a href='#L160'>160</a>
|
|
226
|
-
<a name='L161'></a><a href='#L161'>161</a>
|
|
227
|
-
<a name='L162'></a><a href='#L162'>162</a>
|
|
228
|
-
<a name='L163'></a><a href='#L163'>163</a>
|
|
229
|
-
<a name='L164'></a><a href='#L164'>164</a>
|
|
230
|
-
<a name='L165'></a><a href='#L165'>165</a>
|
|
231
|
-
<a name='L166'></a><a href='#L166'>166</a>
|
|
232
|
-
<a name='L167'></a><a href='#L167'>167</a>
|
|
233
|
-
<a name='L168'></a><a href='#L168'>168</a>
|
|
234
|
-
<a name='L169'></a><a href='#L169'>169</a>
|
|
235
|
-
<a name='L170'></a><a href='#L170'>170</a>
|
|
236
|
-
<a name='L171'></a><a href='#L171'>171</a>
|
|
237
|
-
<a name='L172'></a><a href='#L172'>172</a>
|
|
238
|
-
<a name='L173'></a><a href='#L173'>173</a>
|
|
239
|
-
<a name='L174'></a><a href='#L174'>174</a>
|
|
240
|
-
<a name='L175'></a><a href='#L175'>175</a>
|
|
241
|
-
<a name='L176'></a><a href='#L176'>176</a>
|
|
242
|
-
<a name='L177'></a><a href='#L177'>177</a>
|
|
243
|
-
<a name='L178'></a><a href='#L178'>178</a>
|
|
244
|
-
<a name='L179'></a><a href='#L179'>179</a>
|
|
245
|
-
<a name='L180'></a><a href='#L180'>180</a>
|
|
246
|
-
<a name='L181'></a><a href='#L181'>181</a>
|
|
247
|
-
<a name='L182'></a><a href='#L182'>182</a>
|
|
248
|
-
<a name='L183'></a><a href='#L183'>183</a>
|
|
249
|
-
<a name='L184'></a><a href='#L184'>184</a>
|
|
250
|
-
<a name='L185'></a><a href='#L185'>185</a>
|
|
251
|
-
<a name='L186'></a><a href='#L186'>186</a>
|
|
252
|
-
<a name='L187'></a><a href='#L187'>187</a>
|
|
253
|
-
<a name='L188'></a><a href='#L188'>188</a>
|
|
254
|
-
<a name='L189'></a><a href='#L189'>189</a>
|
|
255
|
-
<a name='L190'></a><a href='#L190'>190</a>
|
|
256
|
-
<a name='L191'></a><a href='#L191'>191</a>
|
|
257
|
-
<a name='L192'></a><a href='#L192'>192</a>
|
|
258
|
-
<a name='L193'></a><a href='#L193'>193</a>
|
|
259
|
-
<a name='L194'></a><a href='#L194'>194</a>
|
|
260
|
-
<a name='L195'></a><a href='#L195'>195</a>
|
|
261
|
-
<a name='L196'></a><a href='#L196'>196</a>
|
|
262
|
-
<a name='L197'></a><a href='#L197'>197</a>
|
|
263
|
-
<a name='L198'></a><a href='#L198'>198</a>
|
|
264
|
-
<a name='L199'></a><a href='#L199'>199</a>
|
|
265
|
-
<a name='L200'></a><a href='#L200'>200</a>
|
|
266
|
-
<a name='L201'></a><a href='#L201'>201</a>
|
|
267
|
-
<a name='L202'></a><a href='#L202'>202</a>
|
|
268
|
-
<a name='L203'></a><a href='#L203'>203</a>
|
|
269
|
-
<a name='L204'></a><a href='#L204'>204</a>
|
|
270
|
-
<a name='L205'></a><a href='#L205'>205</a>
|
|
271
|
-
<a name='L206'></a><a href='#L206'>206</a>
|
|
272
|
-
<a name='L207'></a><a href='#L207'>207</a>
|
|
273
|
-
<a name='L208'></a><a href='#L208'>208</a>
|
|
274
|
-
<a name='L209'></a><a href='#L209'>209</a>
|
|
275
|
-
<a name='L210'></a><a href='#L210'>210</a>
|
|
276
|
-
<a name='L211'></a><a href='#L211'>211</a>
|
|
277
|
-
<a name='L212'></a><a href='#L212'>212</a>
|
|
278
|
-
<a name='L213'></a><a href='#L213'>213</a>
|
|
279
|
-
<a name='L214'></a><a href='#L214'>214</a>
|
|
280
|
-
<a name='L215'></a><a href='#L215'>215</a>
|
|
281
|
-
<a name='L216'></a><a href='#L216'>216</a>
|
|
282
|
-
<a name='L217'></a><a href='#L217'>217</a>
|
|
283
|
-
<a name='L218'></a><a href='#L218'>218</a>
|
|
284
|
-
<a name='L219'></a><a href='#L219'>219</a>
|
|
285
|
-
<a name='L220'></a><a href='#L220'>220</a>
|
|
286
|
-
<a name='L221'></a><a href='#L221'>221</a>
|
|
287
|
-
<a name='L222'></a><a href='#L222'>222</a>
|
|
288
|
-
<a name='L223'></a><a href='#L223'>223</a>
|
|
289
|
-
<a name='L224'></a><a href='#L224'>224</a>
|
|
290
|
-
<a name='L225'></a><a href='#L225'>225</a>
|
|
291
|
-
<a name='L226'></a><a href='#L226'>226</a>
|
|
292
|
-
<a name='L227'></a><a href='#L227'>227</a>
|
|
293
|
-
<a name='L228'></a><a href='#L228'>228</a>
|
|
294
|
-
<a name='L229'></a><a href='#L229'>229</a>
|
|
295
|
-
<a name='L230'></a><a href='#L230'>230</a>
|
|
296
|
-
<a name='L231'></a><a href='#L231'>231</a>
|
|
297
|
-
<a name='L232'></a><a href='#L232'>232</a>
|
|
298
|
-
<a name='L233'></a><a href='#L233'>233</a>
|
|
299
|
-
<a name='L234'></a><a href='#L234'>234</a>
|
|
300
|
-
<a name='L235'></a><a href='#L235'>235</a>
|
|
301
|
-
<a name='L236'></a><a href='#L236'>236</a>
|
|
302
|
-
<a name='L237'></a><a href='#L237'>237</a>
|
|
303
|
-
<a name='L238'></a><a href='#L238'>238</a>
|
|
304
|
-
<a name='L239'></a><a href='#L239'>239</a>
|
|
305
|
-
<a name='L240'></a><a href='#L240'>240</a>
|
|
306
|
-
<a name='L241'></a><a href='#L241'>241</a>
|
|
307
|
-
<a name='L242'></a><a href='#L242'>242</a>
|
|
308
|
-
<a name='L243'></a><a href='#L243'>243</a>
|
|
309
|
-
<a name='L244'></a><a href='#L244'>244</a>
|
|
310
|
-
<a name='L245'></a><a href='#L245'>245</a>
|
|
311
|
-
<a name='L246'></a><a href='#L246'>246</a>
|
|
312
|
-
<a name='L247'></a><a href='#L247'>247</a>
|
|
313
|
-
<a name='L248'></a><a href='#L248'>248</a>
|
|
314
|
-
<a name='L249'></a><a href='#L249'>249</a>
|
|
315
|
-
<a name='L250'></a><a href='#L250'>250</a>
|
|
316
|
-
<a name='L251'></a><a href='#L251'>251</a>
|
|
317
|
-
<a name='L252'></a><a href='#L252'>252</a>
|
|
318
|
-
<a name='L253'></a><a href='#L253'>253</a>
|
|
319
|
-
<a name='L254'></a><a href='#L254'>254</a>
|
|
320
|
-
<a name='L255'></a><a href='#L255'>255</a>
|
|
321
|
-
<a name='L256'></a><a href='#L256'>256</a>
|
|
322
|
-
<a name='L257'></a><a href='#L257'>257</a>
|
|
323
|
-
<a name='L258'></a><a href='#L258'>258</a>
|
|
324
|
-
<a name='L259'></a><a href='#L259'>259</a>
|
|
325
|
-
<a name='L260'></a><a href='#L260'>260</a>
|
|
326
|
-
<a name='L261'></a><a href='#L261'>261</a>
|
|
327
|
-
<a name='L262'></a><a href='#L262'>262</a>
|
|
328
|
-
<a name='L263'></a><a href='#L263'>263</a>
|
|
329
|
-
<a name='L264'></a><a href='#L264'>264</a>
|
|
330
|
-
<a name='L265'></a><a href='#L265'>265</a>
|
|
331
|
-
<a name='L266'></a><a href='#L266'>266</a>
|
|
332
|
-
<a name='L267'></a><a href='#L267'>267</a>
|
|
333
|
-
<a name='L268'></a><a href='#L268'>268</a>
|
|
334
|
-
<a name='L269'></a><a href='#L269'>269</a>
|
|
335
|
-
<a name='L270'></a><a href='#L270'>270</a>
|
|
336
|
-
<a name='L271'></a><a href='#L271'>271</a>
|
|
337
|
-
<a name='L272'></a><a href='#L272'>272</a>
|
|
338
|
-
<a name='L273'></a><a href='#L273'>273</a>
|
|
339
|
-
<a name='L274'></a><a href='#L274'>274</a>
|
|
340
|
-
<a name='L275'></a><a href='#L275'>275</a>
|
|
341
|
-
<a name='L276'></a><a href='#L276'>276</a>
|
|
342
|
-
<a name='L277'></a><a href='#L277'>277</a>
|
|
343
|
-
<a name='L278'></a><a href='#L278'>278</a>
|
|
344
|
-
<a name='L279'></a><a href='#L279'>279</a>
|
|
345
|
-
<a name='L280'></a><a href='#L280'>280</a>
|
|
346
|
-
<a name='L281'></a><a href='#L281'>281</a>
|
|
347
|
-
<a name='L282'></a><a href='#L282'>282</a>
|
|
348
|
-
<a name='L283'></a><a href='#L283'>283</a>
|
|
349
|
-
<a name='L284'></a><a href='#L284'>284</a>
|
|
350
|
-
<a name='L285'></a><a href='#L285'>285</a>
|
|
351
|
-
<a name='L286'></a><a href='#L286'>286</a>
|
|
352
|
-
<a name='L287'></a><a href='#L287'>287</a>
|
|
353
|
-
<a name='L288'></a><a href='#L288'>288</a>
|
|
354
|
-
<a name='L289'></a><a href='#L289'>289</a>
|
|
355
|
-
<a name='L290'></a><a href='#L290'>290</a>
|
|
356
|
-
<a name='L291'></a><a href='#L291'>291</a>
|
|
357
|
-
<a name='L292'></a><a href='#L292'>292</a>
|
|
358
|
-
<a name='L293'></a><a href='#L293'>293</a>
|
|
359
|
-
<a name='L294'></a><a href='#L294'>294</a>
|
|
360
|
-
<a name='L295'></a><a href='#L295'>295</a>
|
|
361
|
-
<a name='L296'></a><a href='#L296'>296</a>
|
|
362
|
-
<a name='L297'></a><a href='#L297'>297</a>
|
|
363
|
-
<a name='L298'></a><a href='#L298'>298</a>
|
|
364
|
-
<a name='L299'></a><a href='#L299'>299</a>
|
|
365
|
-
<a name='L300'></a><a href='#L300'>300</a>
|
|
366
|
-
<a name='L301'></a><a href='#L301'>301</a>
|
|
367
|
-
<a name='L302'></a><a href='#L302'>302</a>
|
|
368
|
-
<a name='L303'></a><a href='#L303'>303</a>
|
|
369
|
-
<a name='L304'></a><a href='#L304'>304</a>
|
|
370
|
-
<a name='L305'></a><a href='#L305'>305</a>
|
|
371
|
-
<a name='L306'></a><a href='#L306'>306</a>
|
|
372
|
-
<a name='L307'></a><a href='#L307'>307</a>
|
|
373
|
-
<a name='L308'></a><a href='#L308'>308</a>
|
|
374
|
-
<a name='L309'></a><a href='#L309'>309</a>
|
|
375
|
-
<a name='L310'></a><a href='#L310'>310</a>
|
|
376
|
-
<a name='L311'></a><a href='#L311'>311</a>
|
|
377
|
-
<a name='L312'></a><a href='#L312'>312</a>
|
|
378
|
-
<a name='L313'></a><a href='#L313'>313</a>
|
|
379
|
-
<a name='L314'></a><a href='#L314'>314</a>
|
|
380
|
-
<a name='L315'></a><a href='#L315'>315</a>
|
|
381
|
-
<a name='L316'></a><a href='#L316'>316</a>
|
|
382
|
-
<a name='L317'></a><a href='#L317'>317</a>
|
|
383
|
-
<a name='L318'></a><a href='#L318'>318</a>
|
|
384
|
-
<a name='L319'></a><a href='#L319'>319</a>
|
|
385
|
-
<a name='L320'></a><a href='#L320'>320</a>
|
|
386
|
-
<a name='L321'></a><a href='#L321'>321</a>
|
|
387
|
-
<a name='L322'></a><a href='#L322'>322</a>
|
|
388
|
-
<a name='L323'></a><a href='#L323'>323</a>
|
|
389
|
-
<a name='L324'></a><a href='#L324'>324</a>
|
|
390
|
-
<a name='L325'></a><a href='#L325'>325</a>
|
|
391
|
-
<a name='L326'></a><a href='#L326'>326</a>
|
|
392
|
-
<a name='L327'></a><a href='#L327'>327</a>
|
|
393
|
-
<a name='L328'></a><a href='#L328'>328</a>
|
|
394
|
-
<a name='L329'></a><a href='#L329'>329</a>
|
|
395
|
-
<a name='L330'></a><a href='#L330'>330</a>
|
|
396
|
-
<a name='L331'></a><a href='#L331'>331</a>
|
|
397
|
-
<a name='L332'></a><a href='#L332'>332</a>
|
|
398
|
-
<a name='L333'></a><a href='#L333'>333</a>
|
|
399
|
-
<a name='L334'></a><a href='#L334'>334</a>
|
|
400
|
-
<a name='L335'></a><a href='#L335'>335</a>
|
|
401
|
-
<a name='L336'></a><a href='#L336'>336</a>
|
|
402
|
-
<a name='L337'></a><a href='#L337'>337</a>
|
|
403
|
-
<a name='L338'></a><a href='#L338'>338</a>
|
|
404
|
-
<a name='L339'></a><a href='#L339'>339</a>
|
|
405
|
-
<a name='L340'></a><a href='#L340'>340</a>
|
|
406
|
-
<a name='L341'></a><a href='#L341'>341</a>
|
|
407
|
-
<a name='L342'></a><a href='#L342'>342</a>
|
|
408
|
-
<a name='L343'></a><a href='#L343'>343</a>
|
|
409
|
-
<a name='L344'></a><a href='#L344'>344</a>
|
|
410
|
-
<a name='L345'></a><a href='#L345'>345</a>
|
|
411
|
-
<a name='L346'></a><a href='#L346'>346</a>
|
|
412
|
-
<a name='L347'></a><a href='#L347'>347</a>
|
|
413
|
-
<a name='L348'></a><a href='#L348'>348</a>
|
|
414
|
-
<a name='L349'></a><a href='#L349'>349</a>
|
|
415
|
-
<a name='L350'></a><a href='#L350'>350</a>
|
|
416
|
-
<a name='L351'></a><a href='#L351'>351</a>
|
|
417
|
-
<a name='L352'></a><a href='#L352'>352</a>
|
|
418
|
-
<a name='L353'></a><a href='#L353'>353</a>
|
|
419
|
-
<a name='L354'></a><a href='#L354'>354</a>
|
|
420
|
-
<a name='L355'></a><a href='#L355'>355</a>
|
|
421
|
-
<a name='L356'></a><a href='#L356'>356</a>
|
|
422
|
-
<a name='L357'></a><a href='#L357'>357</a>
|
|
423
|
-
<a name='L358'></a><a href='#L358'>358</a>
|
|
424
|
-
<a name='L359'></a><a href='#L359'>359</a>
|
|
425
|
-
<a name='L360'></a><a href='#L360'>360</a>
|
|
426
|
-
<a name='L361'></a><a href='#L361'>361</a>
|
|
427
|
-
<a name='L362'></a><a href='#L362'>362</a>
|
|
428
|
-
<a name='L363'></a><a href='#L363'>363</a>
|
|
429
|
-
<a name='L364'></a><a href='#L364'>364</a>
|
|
430
|
-
<a name='L365'></a><a href='#L365'>365</a>
|
|
431
|
-
<a name='L366'></a><a href='#L366'>366</a>
|
|
432
|
-
<a name='L367'></a><a href='#L367'>367</a>
|
|
433
|
-
<a name='L368'></a><a href='#L368'>368</a>
|
|
434
|
-
<a name='L369'></a><a href='#L369'>369</a>
|
|
435
|
-
<a name='L370'></a><a href='#L370'>370</a>
|
|
436
|
-
<a name='L371'></a><a href='#L371'>371</a>
|
|
437
|
-
<a name='L372'></a><a href='#L372'>372</a>
|
|
438
|
-
<a name='L373'></a><a href='#L373'>373</a>
|
|
439
|
-
<a name='L374'></a><a href='#L374'>374</a>
|
|
440
|
-
<a name='L375'></a><a href='#L375'>375</a>
|
|
441
|
-
<a name='L376'></a><a href='#L376'>376</a>
|
|
442
|
-
<a name='L377'></a><a href='#L377'>377</a>
|
|
443
|
-
<a name='L378'></a><a href='#L378'>378</a>
|
|
444
|
-
<a name='L379'></a><a href='#L379'>379</a>
|
|
445
|
-
<a name='L380'></a><a href='#L380'>380</a>
|
|
446
|
-
<a name='L381'></a><a href='#L381'>381</a>
|
|
447
|
-
<a name='L382'></a><a href='#L382'>382</a>
|
|
448
|
-
<a name='L383'></a><a href='#L383'>383</a>
|
|
449
|
-
<a name='L384'></a><a href='#L384'>384</a>
|
|
450
|
-
<a name='L385'></a><a href='#L385'>385</a>
|
|
451
|
-
<a name='L386'></a><a href='#L386'>386</a>
|
|
452
|
-
<a name='L387'></a><a href='#L387'>387</a>
|
|
453
|
-
<a name='L388'></a><a href='#L388'>388</a>
|
|
454
|
-
<a name='L389'></a><a href='#L389'>389</a>
|
|
455
|
-
<a name='L390'></a><a href='#L390'>390</a>
|
|
456
|
-
<a name='L391'></a><a href='#L391'>391</a>
|
|
457
|
-
<a name='L392'></a><a href='#L392'>392</a>
|
|
458
|
-
<a name='L393'></a><a href='#L393'>393</a>
|
|
459
|
-
<a name='L394'></a><a href='#L394'>394</a>
|
|
460
|
-
<a name='L395'></a><a href='#L395'>395</a>
|
|
461
|
-
<a name='L396'></a><a href='#L396'>396</a>
|
|
462
|
-
<a name='L397'></a><a href='#L397'>397</a>
|
|
463
|
-
<a name='L398'></a><a href='#L398'>398</a>
|
|
464
|
-
<a name='L399'></a><a href='#L399'>399</a>
|
|
465
|
-
<a name='L400'></a><a href='#L400'>400</a>
|
|
466
|
-
<a name='L401'></a><a href='#L401'>401</a>
|
|
467
|
-
<a name='L402'></a><a href='#L402'>402</a>
|
|
468
|
-
<a name='L403'></a><a href='#L403'>403</a>
|
|
469
|
-
<a name='L404'></a><a href='#L404'>404</a>
|
|
470
|
-
<a name='L405'></a><a href='#L405'>405</a>
|
|
471
|
-
<a name='L406'></a><a href='#L406'>406</a>
|
|
472
|
-
<a name='L407'></a><a href='#L407'>407</a>
|
|
473
|
-
<a name='L408'></a><a href='#L408'>408</a>
|
|
474
|
-
<a name='L409'></a><a href='#L409'>409</a>
|
|
475
|
-
<a name='L410'></a><a href='#L410'>410</a>
|
|
476
|
-
<a name='L411'></a><a href='#L411'>411</a>
|
|
477
|
-
<a name='L412'></a><a href='#L412'>412</a>
|
|
478
|
-
<a name='L413'></a><a href='#L413'>413</a>
|
|
479
|
-
<a name='L414'></a><a href='#L414'>414</a>
|
|
480
|
-
<a name='L415'></a><a href='#L415'>415</a>
|
|
481
|
-
<a name='L416'></a><a href='#L416'>416</a>
|
|
482
|
-
<a name='L417'></a><a href='#L417'>417</a>
|
|
483
|
-
<a name='L418'></a><a href='#L418'>418</a>
|
|
484
|
-
<a name='L419'></a><a href='#L419'>419</a>
|
|
485
|
-
<a name='L420'></a><a href='#L420'>420</a>
|
|
486
|
-
<a name='L421'></a><a href='#L421'>421</a>
|
|
487
|
-
<a name='L422'></a><a href='#L422'>422</a>
|
|
488
|
-
<a name='L423'></a><a href='#L423'>423</a>
|
|
489
|
-
<a name='L424'></a><a href='#L424'>424</a>
|
|
490
|
-
<a name='L425'></a><a href='#L425'>425</a>
|
|
491
|
-
<a name='L426'></a><a href='#L426'>426</a>
|
|
492
|
-
<a name='L427'></a><a href='#L427'>427</a>
|
|
493
|
-
<a name='L428'></a><a href='#L428'>428</a>
|
|
494
|
-
<a name='L429'></a><a href='#L429'>429</a>
|
|
495
|
-
<a name='L430'></a><a href='#L430'>430</a>
|
|
496
|
-
<a name='L431'></a><a href='#L431'>431</a>
|
|
497
|
-
<a name='L432'></a><a href='#L432'>432</a>
|
|
498
|
-
<a name='L433'></a><a href='#L433'>433</a>
|
|
499
|
-
<a name='L434'></a><a href='#L434'>434</a>
|
|
500
|
-
<a name='L435'></a><a href='#L435'>435</a>
|
|
501
|
-
<a name='L436'></a><a href='#L436'>436</a>
|
|
502
|
-
<a name='L437'></a><a href='#L437'>437</a>
|
|
503
|
-
<a name='L438'></a><a href='#L438'>438</a>
|
|
504
|
-
<a name='L439'></a><a href='#L439'>439</a>
|
|
505
|
-
<a name='L440'></a><a href='#L440'>440</a>
|
|
506
|
-
<a name='L441'></a><a href='#L441'>441</a>
|
|
507
|
-
<a name='L442'></a><a href='#L442'>442</a>
|
|
508
|
-
<a name='L443'></a><a href='#L443'>443</a>
|
|
509
|
-
<a name='L444'></a><a href='#L444'>444</a>
|
|
510
|
-
<a name='L445'></a><a href='#L445'>445</a>
|
|
511
|
-
<a name='L446'></a><a href='#L446'>446</a>
|
|
512
|
-
<a name='L447'></a><a href='#L447'>447</a>
|
|
513
|
-
<a name='L448'></a><a href='#L448'>448</a>
|
|
514
|
-
<a name='L449'></a><a href='#L449'>449</a>
|
|
515
|
-
<a name='L450'></a><a href='#L450'>450</a>
|
|
516
|
-
<a name='L451'></a><a href='#L451'>451</a>
|
|
517
|
-
<a name='L452'></a><a href='#L452'>452</a>
|
|
518
|
-
<a name='L453'></a><a href='#L453'>453</a>
|
|
519
|
-
<a name='L454'></a><a href='#L454'>454</a>
|
|
520
|
-
<a name='L455'></a><a href='#L455'>455</a>
|
|
521
|
-
<a name='L456'></a><a href='#L456'>456</a>
|
|
522
|
-
<a name='L457'></a><a href='#L457'>457</a>
|
|
523
|
-
<a name='L458'></a><a href='#L458'>458</a>
|
|
524
|
-
<a name='L459'></a><a href='#L459'>459</a>
|
|
525
|
-
<a name='L460'></a><a href='#L460'>460</a>
|
|
526
|
-
<a name='L461'></a><a href='#L461'>461</a>
|
|
527
|
-
<a name='L462'></a><a href='#L462'>462</a>
|
|
528
|
-
<a name='L463'></a><a href='#L463'>463</a>
|
|
529
|
-
<a name='L464'></a><a href='#L464'>464</a>
|
|
530
|
-
<a name='L465'></a><a href='#L465'>465</a>
|
|
531
|
-
<a name='L466'></a><a href='#L466'>466</a>
|
|
532
|
-
<a name='L467'></a><a href='#L467'>467</a>
|
|
533
|
-
<a name='L468'></a><a href='#L468'>468</a>
|
|
534
|
-
<a name='L469'></a><a href='#L469'>469</a>
|
|
535
|
-
<a name='L470'></a><a href='#L470'>470</a>
|
|
536
|
-
<a name='L471'></a><a href='#L471'>471</a>
|
|
537
|
-
<a name='L472'></a><a href='#L472'>472</a>
|
|
538
|
-
<a name='L473'></a><a href='#L473'>473</a>
|
|
539
|
-
<a name='L474'></a><a href='#L474'>474</a>
|
|
540
|
-
<a name='L475'></a><a href='#L475'>475</a>
|
|
541
|
-
<a name='L476'></a><a href='#L476'>476</a>
|
|
542
|
-
<a name='L477'></a><a href='#L477'>477</a>
|
|
543
|
-
<a name='L478'></a><a href='#L478'>478</a>
|
|
544
|
-
<a name='L479'></a><a href='#L479'>479</a>
|
|
545
|
-
<a name='L480'></a><a href='#L480'>480</a>
|
|
546
|
-
<a name='L481'></a><a href='#L481'>481</a>
|
|
547
|
-
<a name='L482'></a><a href='#L482'>482</a>
|
|
548
|
-
<a name='L483'></a><a href='#L483'>483</a>
|
|
549
|
-
<a name='L484'></a><a href='#L484'>484</a>
|
|
550
|
-
<a name='L485'></a><a href='#L485'>485</a>
|
|
551
|
-
<a name='L486'></a><a href='#L486'>486</a>
|
|
552
|
-
<a name='L487'></a><a href='#L487'>487</a>
|
|
553
|
-
<a name='L488'></a><a href='#L488'>488</a>
|
|
554
|
-
<a name='L489'></a><a href='#L489'>489</a>
|
|
555
|
-
<a name='L490'></a><a href='#L490'>490</a>
|
|
556
|
-
<a name='L491'></a><a href='#L491'>491</a>
|
|
557
|
-
<a name='L492'></a><a href='#L492'>492</a>
|
|
558
|
-
<a name='L493'></a><a href='#L493'>493</a>
|
|
559
|
-
<a name='L494'></a><a href='#L494'>494</a>
|
|
560
|
-
<a name='L495'></a><a href='#L495'>495</a>
|
|
561
|
-
<a name='L496'></a><a href='#L496'>496</a>
|
|
562
|
-
<a name='L497'></a><a href='#L497'>497</a>
|
|
563
|
-
<a name='L498'></a><a href='#L498'>498</a>
|
|
564
|
-
<a name='L499'></a><a href='#L499'>499</a>
|
|
565
|
-
<a name='L500'></a><a href='#L500'>500</a>
|
|
566
|
-
<a name='L501'></a><a href='#L501'>501</a>
|
|
567
|
-
<a name='L502'></a><a href='#L502'>502</a>
|
|
568
|
-
<a name='L503'></a><a href='#L503'>503</a>
|
|
569
|
-
<a name='L504'></a><a href='#L504'>504</a>
|
|
570
|
-
<a name='L505'></a><a href='#L505'>505</a>
|
|
571
|
-
<a name='L506'></a><a href='#L506'>506</a>
|
|
572
|
-
<a name='L507'></a><a href='#L507'>507</a>
|
|
573
|
-
<a name='L508'></a><a href='#L508'>508</a>
|
|
574
|
-
<a name='L509'></a><a href='#L509'>509</a>
|
|
575
|
-
<a name='L510'></a><a href='#L510'>510</a>
|
|
576
|
-
<a name='L511'></a><a href='#L511'>511</a>
|
|
577
|
-
<a name='L512'></a><a href='#L512'>512</a>
|
|
578
|
-
<a name='L513'></a><a href='#L513'>513</a>
|
|
579
|
-
<a name='L514'></a><a href='#L514'>514</a>
|
|
580
|
-
<a name='L515'></a><a href='#L515'>515</a>
|
|
581
|
-
<a name='L516'></a><a href='#L516'>516</a>
|
|
582
|
-
<a name='L517'></a><a href='#L517'>517</a>
|
|
583
|
-
<a name='L518'></a><a href='#L518'>518</a>
|
|
584
|
-
<a name='L519'></a><a href='#L519'>519</a>
|
|
585
|
-
<a name='L520'></a><a href='#L520'>520</a>
|
|
586
|
-
<a name='L521'></a><a href='#L521'>521</a>
|
|
587
|
-
<a name='L522'></a><a href='#L522'>522</a>
|
|
588
|
-
<a name='L523'></a><a href='#L523'>523</a>
|
|
589
|
-
<a name='L524'></a><a href='#L524'>524</a>
|
|
590
|
-
<a name='L525'></a><a href='#L525'>525</a>
|
|
591
|
-
<a name='L526'></a><a href='#L526'>526</a>
|
|
592
|
-
<a name='L527'></a><a href='#L527'>527</a>
|
|
593
|
-
<a name='L528'></a><a href='#L528'>528</a>
|
|
594
|
-
<a name='L529'></a><a href='#L529'>529</a>
|
|
595
|
-
<a name='L530'></a><a href='#L530'>530</a>
|
|
596
|
-
<a name='L531'></a><a href='#L531'>531</a>
|
|
597
|
-
<a name='L532'></a><a href='#L532'>532</a>
|
|
598
|
-
<a name='L533'></a><a href='#L533'>533</a>
|
|
599
|
-
<a name='L534'></a><a href='#L534'>534</a>
|
|
600
|
-
<a name='L535'></a><a href='#L535'>535</a>
|
|
601
|
-
<a name='L536'></a><a href='#L536'>536</a>
|
|
602
|
-
<a name='L537'></a><a href='#L537'>537</a>
|
|
603
|
-
<a name='L538'></a><a href='#L538'>538</a>
|
|
604
|
-
<a name='L539'></a><a href='#L539'>539</a>
|
|
605
|
-
<a name='L540'></a><a href='#L540'>540</a>
|
|
606
|
-
<a name='L541'></a><a href='#L541'>541</a>
|
|
607
|
-
<a name='L542'></a><a href='#L542'>542</a>
|
|
608
|
-
<a name='L543'></a><a href='#L543'>543</a>
|
|
609
|
-
<a name='L544'></a><a href='#L544'>544</a>
|
|
610
|
-
<a name='L545'></a><a href='#L545'>545</a>
|
|
611
|
-
<a name='L546'></a><a href='#L546'>546</a>
|
|
612
|
-
<a name='L547'></a><a href='#L547'>547</a>
|
|
613
|
-
<a name='L548'></a><a href='#L548'>548</a>
|
|
614
|
-
<a name='L549'></a><a href='#L549'>549</a>
|
|
615
|
-
<a name='L550'></a><a href='#L550'>550</a>
|
|
616
|
-
<a name='L551'></a><a href='#L551'>551</a>
|
|
617
|
-
<a name='L552'></a><a href='#L552'>552</a>
|
|
618
|
-
<a name='L553'></a><a href='#L553'>553</a>
|
|
619
|
-
<a name='L554'></a><a href='#L554'>554</a>
|
|
620
|
-
<a name='L555'></a><a href='#L555'>555</a>
|
|
621
|
-
<a name='L556'></a><a href='#L556'>556</a>
|
|
622
|
-
<a name='L557'></a><a href='#L557'>557</a>
|
|
623
|
-
<a name='L558'></a><a href='#L558'>558</a>
|
|
624
|
-
<a name='L559'></a><a href='#L559'>559</a>
|
|
625
|
-
<a name='L560'></a><a href='#L560'>560</a>
|
|
626
|
-
<a name='L561'></a><a href='#L561'>561</a>
|
|
627
|
-
<a name='L562'></a><a href='#L562'>562</a>
|
|
628
|
-
<a name='L563'></a><a href='#L563'>563</a>
|
|
629
|
-
<a name='L564'></a><a href='#L564'>564</a>
|
|
630
|
-
<a name='L565'></a><a href='#L565'>565</a>
|
|
631
|
-
<a name='L566'></a><a href='#L566'>566</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">7x</span>
|
|
632
|
-
<span class="cline-any cline-neutral"> </span>
|
|
633
|
-
<span class="cline-any cline-neutral"> </span>
|
|
634
|
-
<span class="cline-any cline-neutral"> </span>
|
|
635
|
-
<span class="cline-any cline-neutral"> </span>
|
|
636
|
-
<span class="cline-any cline-neutral"> </span>
|
|
637
|
-
<span class="cline-any cline-neutral"> </span>
|
|
638
|
-
<span class="cline-any cline-neutral"> </span>
|
|
639
|
-
<span class="cline-any cline-neutral"> </span>
|
|
640
|
-
<span class="cline-any cline-neutral"> </span>
|
|
641
|
-
<span class="cline-any cline-yes">7x</span>
|
|
642
|
-
<span class="cline-any cline-yes">7x</span>
|
|
643
|
-
<span class="cline-any cline-neutral"> </span>
|
|
644
|
-
<span class="cline-any cline-neutral"> </span>
|
|
645
|
-
<span class="cline-any cline-yes">7x</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-neutral"> </span>
|
|
650
|
-
<span class="cline-any cline-neutral"> </span>
|
|
651
|
-
<span class="cline-any cline-neutral"> </span>
|
|
652
|
-
<span class="cline-any cline-neutral"> </span>
|
|
653
|
-
<span class="cline-any cline-neutral"> </span>
|
|
654
|
-
<span class="cline-any cline-neutral"> </span>
|
|
655
|
-
<span class="cline-any cline-neutral"> </span>
|
|
656
|
-
<span class="cline-any cline-neutral"> </span>
|
|
657
|
-
<span class="cline-any cline-neutral"> </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-neutral"> </span>
|
|
663
|
-
<span class="cline-any cline-neutral"> </span>
|
|
664
|
-
<span class="cline-any cline-neutral"> </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">7x</span>
|
|
670
|
-
<span class="cline-any cline-yes">28x</span>
|
|
671
|
-
<span class="cline-any cline-yes">28x</span>
|
|
672
|
-
<span class="cline-any cline-yes">28x</span>
|
|
673
|
-
<span class="cline-any cline-neutral"> </span>
|
|
674
|
-
<span class="cline-any cline-neutral"> </span>
|
|
675
|
-
<span class="cline-any cline-yes">28x</span>
|
|
676
|
-
<span class="cline-any cline-yes">28x</span>
|
|
677
|
-
<span class="cline-any cline-neutral"> </span>
|
|
678
|
-
<span class="cline-any cline-neutral"> </span>
|
|
679
|
-
<span class="cline-any cline-neutral"> </span>
|
|
680
|
-
<span class="cline-any cline-yes">2x</span>
|
|
681
|
-
<span class="cline-any cline-yes">6x</span>
|
|
682
|
-
<span class="cline-any cline-neutral"> </span>
|
|
683
|
-
<span class="cline-any cline-yes">2x</span>
|
|
684
|
-
<span class="cline-any cline-neutral"> </span>
|
|
685
|
-
<span class="cline-any cline-neutral"> </span>
|
|
686
|
-
<span class="cline-any cline-yes">2x</span>
|
|
687
|
-
<span class="cline-any cline-neutral"> </span>
|
|
688
|
-
<span class="cline-any cline-neutral"> </span>
|
|
689
|
-
<span class="cline-any cline-neutral"> </span>
|
|
690
|
-
<span class="cline-any cline-yes">4x</span>
|
|
691
|
-
<span class="cline-any cline-neutral"> </span>
|
|
692
|
-
<span class="cline-any cline-yes">4x</span>
|
|
693
|
-
<span class="cline-any cline-neutral"> </span>
|
|
694
|
-
<span class="cline-any cline-neutral"> </span>
|
|
695
|
-
<span class="cline-any cline-neutral"> </span>
|
|
696
|
-
<span class="cline-any cline-neutral"> </span>
|
|
697
|
-
<span class="cline-any cline-neutral"> </span>
|
|
698
|
-
<span class="cline-any cline-yes">4x</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-yes">4x</span>
|
|
703
|
-
<span class="cline-any cline-yes">2x</span>
|
|
704
|
-
<span class="cline-any cline-neutral"> </span>
|
|
705
|
-
<span class="cline-any cline-neutral"> </span>
|
|
706
|
-
<span class="cline-any cline-neutral"> </span>
|
|
707
|
-
<span class="cline-any cline-neutral"> </span>
|
|
708
|
-
<span class="cline-any cline-neutral"> </span>
|
|
709
|
-
<span class="cline-any cline-neutral"> </span>
|
|
710
|
-
<span class="cline-any cline-neutral"> </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-neutral"> </span>
|
|
715
|
-
<span class="cline-any cline-neutral"> </span>
|
|
716
|
-
<span class="cline-any cline-neutral"> </span>
|
|
717
|
-
<span class="cline-any cline-yes">4x</span>
|
|
718
|
-
<span class="cline-any cline-no"> </span>
|
|
719
|
-
<span class="cline-any cline-neutral"> </span>
|
|
720
|
-
<span class="cline-any cline-neutral"> </span>
|
|
721
|
-
<span class="cline-any cline-yes">4x</span>
|
|
722
|
-
<span class="cline-any cline-neutral"> </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-neutral"> </span>
|
|
728
|
-
<span class="cline-any cline-neutral"> </span>
|
|
729
|
-
<span class="cline-any cline-neutral"> </span>
|
|
730
|
-
<span class="cline-any cline-neutral"> </span>
|
|
731
|
-
<span class="cline-any cline-neutral"> </span>
|
|
732
|
-
<span class="cline-any cline-yes">12x</span>
|
|
733
|
-
<span class="cline-any cline-yes">18x</span>
|
|
734
|
-
<span class="cline-any cline-yes">10x</span>
|
|
735
|
-
<span class="cline-any cline-neutral"> </span>
|
|
736
|
-
<span class="cline-any cline-neutral"> </span>
|
|
737
|
-
<span class="cline-any cline-neutral"> </span>
|
|
738
|
-
<span class="cline-any cline-neutral"> </span>
|
|
739
|
-
<span class="cline-any cline-yes">10x</span>
|
|
740
|
-
<span class="cline-any cline-yes">8x</span>
|
|
741
|
-
<span class="cline-any cline-yes">8x</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-yes">1x</span>
|
|
747
|
-
<span class="cline-any cline-neutral"> </span>
|
|
748
|
-
<span class="cline-any cline-neutral"> </span>
|
|
749
|
-
<span class="cline-any cline-yes">2x</span>
|
|
750
|
-
<span class="cline-any cline-neutral"> </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">18x</span>
|
|
755
|
-
<span class="cline-any cline-neutral"> </span>
|
|
756
|
-
<span class="cline-any cline-neutral"> </span>
|
|
757
|
-
<span class="cline-any cline-neutral"> </span>
|
|
758
|
-
<span class="cline-any cline-neutral"> </span>
|
|
759
|
-
<span class="cline-any cline-no"> </span>
|
|
760
|
-
<span class="cline-any cline-no"> </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-no"> </span>
|
|
765
|
-
<span class="cline-any cline-neutral"> </span>
|
|
766
|
-
<span class="cline-any cline-no"> </span>
|
|
767
|
-
<span class="cline-any cline-no"> </span>
|
|
768
|
-
<span class="cline-any cline-neutral"> </span>
|
|
769
|
-
<span class="cline-any cline-neutral"> </span>
|
|
770
|
-
<span class="cline-any cline-no"> </span>
|
|
771
|
-
<span class="cline-any cline-neutral"> </span>
|
|
772
|
-
<span class="cline-any cline-neutral"> </span>
|
|
773
|
-
<span class="cline-any cline-no"> </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-no"> </span>
|
|
780
|
-
<span class="cline-any cline-neutral"> </span>
|
|
781
|
-
<span class="cline-any cline-neutral"> </span>
|
|
782
|
-
<span class="cline-any cline-neutral"> </span>
|
|
783
|
-
<span class="cline-any cline-yes">12x</span>
|
|
784
|
-
<span class="cline-any cline-yes">12x</span>
|
|
785
|
-
<span class="cline-any cline-yes">1x</span>
|
|
786
|
-
<span class="cline-any cline-neutral"> </span>
|
|
787
|
-
<span class="cline-any cline-neutral"> </span>
|
|
788
|
-
<span class="cline-any cline-neutral"> </span>
|
|
789
|
-
<span class="cline-any cline-neutral"> </span>
|
|
790
|
-
<span class="cline-any cline-neutral"> </span>
|
|
791
|
-
<span class="cline-any cline-neutral"> </span>
|
|
792
|
-
<span class="cline-any cline-neutral"> </span>
|
|
793
|
-
<span class="cline-any cline-neutral"> </span>
|
|
794
|
-
<span class="cline-any cline-neutral"> </span>
|
|
795
|
-
<span class="cline-any cline-neutral"> </span>
|
|
796
|
-
<span class="cline-any cline-neutral"> </span>
|
|
797
|
-
<span class="cline-any cline-yes">11x</span>
|
|
798
|
-
<span class="cline-any cline-neutral"> </span>
|
|
799
|
-
<span class="cline-any cline-yes">11x</span>
|
|
800
|
-
<span class="cline-any cline-neutral"> </span>
|
|
801
|
-
<span class="cline-any cline-neutral"> </span>
|
|
802
|
-
<span class="cline-any cline-yes">11x</span>
|
|
803
|
-
<span class="cline-any cline-neutral"> </span>
|
|
804
|
-
<span class="cline-any cline-yes">11x</span>
|
|
805
|
-
<span class="cline-any cline-yes">11x</span>
|
|
806
|
-
<span class="cline-any cline-no"> </span>
|
|
807
|
-
<span class="cline-any cline-neutral"> </span>
|
|
808
|
-
<span class="cline-any cline-neutral"> </span>
|
|
809
|
-
<span class="cline-any cline-yes">11x</span>
|
|
810
|
-
<span class="cline-any cline-yes">2x</span>
|
|
811
|
-
<span class="cline-any cline-neutral"> </span>
|
|
812
|
-
<span class="cline-any cline-neutral"> </span>
|
|
813
|
-
<span class="cline-any cline-yes">2x</span>
|
|
814
|
-
<span class="cline-any cline-yes">2x</span>
|
|
815
|
-
<span class="cline-any cline-neutral"> </span>
|
|
816
|
-
<span class="cline-any cline-yes">9x</span>
|
|
817
|
-
<span class="cline-any cline-neutral"> </span>
|
|
818
|
-
<span class="cline-any cline-neutral"> </span>
|
|
819
|
-
<span class="cline-any cline-yes">11x</span>
|
|
820
|
-
<span class="cline-any cline-yes">11x</span>
|
|
821
|
-
<span class="cline-any cline-neutral"> </span>
|
|
822
|
-
<span class="cline-any cline-yes">11x</span>
|
|
823
|
-
<span class="cline-any cline-yes">11x</span>
|
|
824
|
-
<span class="cline-any cline-yes">11x</span>
|
|
825
|
-
<span class="cline-any cline-neutral"> </span>
|
|
826
|
-
<span class="cline-any cline-yes">11x</span>
|
|
827
|
-
<span class="cline-any cline-yes">11x</span>
|
|
828
|
-
<span class="cline-any cline-neutral"> </span>
|
|
829
|
-
<span class="cline-any cline-neutral"> </span>
|
|
830
|
-
<span class="cline-any cline-neutral"> </span>
|
|
831
|
-
<span class="cline-any cline-neutral"> </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-neutral"> </span>
|
|
840
|
-
<span class="cline-any cline-neutral"> </span>
|
|
841
|
-
<span class="cline-any cline-neutral"> </span>
|
|
842
|
-
<span class="cline-any cline-no"> </span>
|
|
843
|
-
<span class="cline-any cline-neutral"> </span>
|
|
844
|
-
<span class="cline-any cline-neutral"> </span>
|
|
845
|
-
<span class="cline-any cline-yes">11x</span>
|
|
846
|
-
<span class="cline-any cline-neutral"> </span>
|
|
847
|
-
<span class="cline-any cline-yes">11x</span>
|
|
848
|
-
<span class="cline-any cline-neutral"> </span>
|
|
849
|
-
<span class="cline-any cline-neutral"> </span>
|
|
850
|
-
<span class="cline-any cline-neutral"> </span>
|
|
851
|
-
<span class="cline-any cline-neutral"> </span>
|
|
852
|
-
<span class="cline-any cline-yes">11x</span>
|
|
853
|
-
<span class="cline-any cline-yes">1x</span>
|
|
854
|
-
<span class="cline-any cline-neutral"> </span>
|
|
855
|
-
<span class="cline-any cline-yes">10x</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-yes">11x</span>
|
|
860
|
-
<span class="cline-any cline-no"> </span>
|
|
861
|
-
<span class="cline-any cline-no"> </span>
|
|
862
|
-
<span class="cline-any cline-no"> </span>
|
|
863
|
-
<span class="cline-any cline-neutral"> </span>
|
|
864
|
-
<span class="cline-any cline-no"> </span>
|
|
865
|
-
<span class="cline-any cline-no"> </span>
|
|
866
|
-
<span class="cline-any cline-neutral"> </span>
|
|
867
|
-
<span class="cline-any cline-no"> </span>
|
|
868
|
-
<span class="cline-any cline-no"> </span>
|
|
869
|
-
<span class="cline-any cline-neutral"> </span>
|
|
870
|
-
<span class="cline-any cline-neutral"> </span>
|
|
871
|
-
<span class="cline-any cline-neutral"> </span>
|
|
872
|
-
<span class="cline-any cline-neutral"> </span>
|
|
873
|
-
<span class="cline-any cline-yes">11x</span>
|
|
874
|
-
<span class="cline-any cline-no"> </span>
|
|
875
|
-
<span class="cline-any cline-neutral"> </span>
|
|
876
|
-
<span class="cline-any cline-neutral"> </span>
|
|
877
|
-
<span class="cline-any cline-neutral"> </span>
|
|
878
|
-
<span class="cline-any cline-yes">11x</span>
|
|
879
|
-
<span class="cline-any cline-no"> </span>
|
|
880
|
-
<span class="cline-any cline-neutral"> </span>
|
|
881
|
-
<span class="cline-any cline-neutral"> </span>
|
|
882
|
-
<span class="cline-any cline-neutral"> </span>
|
|
883
|
-
<span class="cline-any cline-yes">11x</span>
|
|
884
|
-
<span class="cline-any cline-neutral"> </span>
|
|
885
|
-
<span class="cline-any cline-neutral"> </span>
|
|
886
|
-
<span class="cline-any cline-neutral"> </span>
|
|
887
|
-
<span class="cline-any cline-neutral"> </span>
|
|
888
|
-
<span class="cline-any cline-neutral"> </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-yes">9x</span>
|
|
894
|
-
<span class="cline-any cline-yes">2x</span>
|
|
895
|
-
<span class="cline-any cline-yes">2x</span>
|
|
896
|
-
<span class="cline-any cline-neutral"> </span>
|
|
897
|
-
<span class="cline-any cline-yes">2x</span>
|
|
898
|
-
<span class="cline-any cline-neutral"> </span>
|
|
899
|
-
<span class="cline-any cline-yes">2x</span>
|
|
900
|
-
<span class="cline-any cline-neutral"> </span>
|
|
901
|
-
<span class="cline-any cline-yes">2x</span>
|
|
902
|
-
<span class="cline-any cline-yes">2x</span>
|
|
903
|
-
<span class="cline-any cline-yes">2x</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>
|
|
907
|
-
<span class="cline-any cline-neutral"> </span>
|
|
908
|
-
<span class="cline-any cline-neutral"> </span>
|
|
909
|
-
<span class="cline-any cline-yes">2x</span>
|
|
910
|
-
<span class="cline-any cline-neutral"> </span>
|
|
911
|
-
<span class="cline-any cline-no"> </span>
|
|
912
|
-
<span class="cline-any cline-neutral"> </span>
|
|
913
|
-
<span class="cline-any cline-neutral"> </span>
|
|
914
|
-
<span class="cline-any cline-neutral"> </span>
|
|
915
|
-
<span class="cline-any cline-neutral"> </span>
|
|
916
|
-
<span class="cline-any cline-neutral"> </span>
|
|
917
|
-
<span class="cline-any cline-yes">2x</span>
|
|
918
|
-
<span class="cline-any cline-yes">2x</span>
|
|
919
|
-
<span class="cline-any cline-yes">2x</span>
|
|
920
|
-
<span class="cline-any cline-neutral"> </span>
|
|
921
|
-
<span class="cline-any cline-neutral"> </span>
|
|
922
|
-
<span class="cline-any cline-neutral"> </span>
|
|
923
|
-
<span class="cline-any cline-yes">7x</span>
|
|
924
|
-
<span class="cline-any cline-yes">1x</span>
|
|
925
|
-
<span class="cline-any cline-no"> </span>
|
|
926
|
-
<span class="cline-any cline-neutral"> </span>
|
|
927
|
-
<span class="cline-any cline-neutral"> </span>
|
|
928
|
-
<span class="cline-any cline-yes">1x</span>
|
|
929
|
-
<span class="cline-any cline-yes">1x</span>
|
|
930
|
-
<span class="cline-any cline-yes">1x</span>
|
|
931
|
-
<span class="cline-any cline-yes">1x</span>
|
|
932
|
-
<span class="cline-any cline-yes">1x</span>
|
|
933
|
-
<span class="cline-any cline-yes">1x</span>
|
|
934
|
-
<span class="cline-any cline-yes">1x</span>
|
|
935
|
-
<span class="cline-any cline-yes">1x</span>
|
|
936
|
-
<span class="cline-any cline-yes">1x</span>
|
|
937
|
-
<span class="cline-any cline-neutral"> </span>
|
|
938
|
-
<span class="cline-any cline-yes">1x</span>
|
|
939
|
-
<span class="cline-any cline-yes">1x</span>
|
|
940
|
-
<span class="cline-any cline-yes">2x</span>
|
|
941
|
-
<span class="cline-any cline-no"> </span>
|
|
942
|
-
<span class="cline-any cline-no"> </span>
|
|
943
|
-
<span class="cline-any cline-neutral"> </span>
|
|
944
|
-
<span class="cline-any cline-neutral"> </span>
|
|
945
|
-
<span class="cline-any cline-yes">2x</span>
|
|
946
|
-
<span class="cline-any cline-yes">2x</span>
|
|
947
|
-
<span class="cline-any cline-neutral"> </span>
|
|
948
|
-
<span class="cline-any cline-yes">2x</span>
|
|
949
|
-
<span class="cline-any cline-yes">2x</span>
|
|
950
|
-
<span class="cline-any cline-yes">2x</span>
|
|
951
|
-
<span class="cline-any cline-neutral"> </span>
|
|
952
|
-
<span class="cline-any cline-yes">2x</span>
|
|
953
|
-
<span class="cline-any cline-yes">2x</span>
|
|
954
|
-
<span class="cline-any cline-neutral"> </span>
|
|
955
|
-
<span class="cline-any cline-neutral"> </span>
|
|
956
|
-
<span class="cline-any cline-yes">2x</span>
|
|
957
|
-
<span class="cline-any cline-yes">2x</span>
|
|
958
|
-
<span class="cline-any cline-neutral"> </span>
|
|
959
|
-
<span class="cline-any cline-no"> </span>
|
|
960
|
-
<span class="cline-any cline-no"> </span>
|
|
961
|
-
<span class="cline-any cline-neutral"> </span>
|
|
962
|
-
<span class="cline-any cline-neutral"> </span>
|
|
963
|
-
<span class="cline-any cline-neutral"> </span>
|
|
964
|
-
<span class="cline-any cline-yes">2x</span>
|
|
965
|
-
<span class="cline-any cline-yes">1x</span>
|
|
966
|
-
<span class="cline-any cline-yes">1x</span>
|
|
967
|
-
<span class="cline-any cline-neutral"> </span>
|
|
968
|
-
<span class="cline-any cline-neutral"> </span>
|
|
969
|
-
<span class="cline-any cline-yes">1x</span>
|
|
970
|
-
<span class="cline-any cline-yes">1x</span>
|
|
971
|
-
<span class="cline-any cline-neutral"> </span>
|
|
972
|
-
<span class="cline-any cline-neutral"> </span>
|
|
973
|
-
<span class="cline-any cline-yes">1x</span>
|
|
974
|
-
<span class="cline-any cline-yes">1x</span>
|
|
975
|
-
<span class="cline-any cline-yes">1x</span>
|
|
976
|
-
<span class="cline-any cline-yes">1x</span>
|
|
977
|
-
<span class="cline-any cline-neutral"> </span>
|
|
978
|
-
<span class="cline-any cline-neutral"> </span>
|
|
979
|
-
<span class="cline-any cline-neutral"> </span>
|
|
980
|
-
<span class="cline-any cline-yes">1x</span>
|
|
981
|
-
<span class="cline-any cline-no"> </span>
|
|
982
|
-
<span class="cline-any cline-no"> </span>
|
|
983
|
-
<span class="cline-any cline-neutral"> </span>
|
|
984
|
-
<span class="cline-any cline-neutral"> </span>
|
|
985
|
-
<span class="cline-any cline-neutral"> </span>
|
|
986
|
-
<span class="cline-any cline-yes">1x</span>
|
|
987
|
-
<span class="cline-any cline-no"> </span>
|
|
988
|
-
<span class="cline-any cline-neutral"> </span>
|
|
989
|
-
<span class="cline-any cline-neutral"> </span>
|
|
990
|
-
<span class="cline-any cline-neutral"> </span>
|
|
991
|
-
<span class="cline-any cline-yes">1x</span>
|
|
992
|
-
<span class="cline-any cline-no"> </span>
|
|
993
|
-
<span class="cline-any cline-no"> </span>
|
|
994
|
-
<span class="cline-any cline-no"> </span>
|
|
995
|
-
<span class="cline-any cline-neutral"> </span>
|
|
996
|
-
<span class="cline-any cline-neutral"> </span>
|
|
997
|
-
<span class="cline-any cline-neutral"> </span>
|
|
998
|
-
<span class="cline-any cline-neutral"> </span>
|
|
999
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1000
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1001
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1002
|
-
<span class="cline-any cline-no"> </span>
|
|
1003
|
-
<span class="cline-any cline-no"> </span>
|
|
1004
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1005
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1006
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1007
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1008
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1009
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1010
|
-
<span class="cline-any cline-no"> </span>
|
|
1011
|
-
<span class="cline-any cline-no"> </span>
|
|
1012
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1013
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1014
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1015
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1016
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1017
|
-
<span class="cline-any cline-no"> </span>
|
|
1018
|
-
<span class="cline-any cline-no"> </span>
|
|
1019
|
-
<span class="cline-any cline-no"> </span>
|
|
1020
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1021
|
-
<span class="cline-any cline-no"> </span>
|
|
1022
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1023
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1024
|
-
<span class="cline-any cline-no"> </span>
|
|
1025
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1026
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1027
|
-
<span class="cline-any cline-no"> </span>
|
|
1028
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1029
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1030
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1031
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1032
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1033
|
-
<span class="cline-any cline-no"> </span>
|
|
1034
|
-
<span class="cline-any cline-no"> </span>
|
|
1035
|
-
<span class="cline-any cline-no"> </span>
|
|
1036
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1037
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1038
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1039
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1040
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1041
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1042
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1043
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1044
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1045
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1046
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1047
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1048
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1049
|
-
<span class="cline-any cline-no"> </span>
|
|
1050
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1051
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1052
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1053
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1054
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1055
|
-
<span class="cline-any cline-no"> </span>
|
|
1056
|
-
<span class="cline-any cline-no"> </span>
|
|
1057
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1058
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1059
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1060
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1061
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1062
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1063
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1064
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1065
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1066
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1067
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1068
|
-
<span class="cline-any cline-yes">6x</span>
|
|
1069
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1070
|
-
<span class="cline-any cline-yes">6x</span>
|
|
1071
|
-
<span class="cline-any cline-yes">6x</span>
|
|
1072
|
-
<span class="cline-any cline-yes">6x</span>
|
|
1073
|
-
<span class="cline-any cline-yes">6x</span>
|
|
1074
|
-
<span class="cline-any cline-yes">6x</span>
|
|
1075
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1076
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1077
|
-
<span class="cline-any cline-yes">6x</span>
|
|
1078
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1079
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1080
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1081
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1082
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1083
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1084
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1085
|
-
<span class="cline-any cline-no"> </span>
|
|
1086
|
-
<span class="cline-any cline-no"> </span>
|
|
1087
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1088
|
-
<span class="cline-any cline-no"> </span>
|
|
1089
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1090
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1091
|
-
<span class="cline-any cline-no"> </span>
|
|
1092
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1093
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1094
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1095
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1096
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1097
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1098
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1099
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1100
|
-
<span class="cline-any cline-yes">6x</span>
|
|
1101
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1102
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1103
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1104
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1105
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1106
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1107
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1108
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1109
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1110
|
-
<span class="cline-any cline-yes">5x</span>
|
|
1111
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1112
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1113
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1114
|
-
<span class="cline-any cline-yes">5x</span>
|
|
1115
|
-
<span class="cline-any cline-yes">5x</span>
|
|
1116
|
-
<span class="cline-any cline-yes">5x</span>
|
|
1117
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1118
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1119
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1120
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1121
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1122
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1123
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1124
|
-
<span class="cline-any cline-no"> </span>
|
|
1125
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1126
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1127
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1128
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1129
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1130
|
-
<span class="cline-any cline-yes">5x</span>
|
|
1131
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1132
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1133
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1134
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1135
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1136
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1137
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1138
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1139
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1140
|
-
<span class="cline-any cline-yes">6x</span>
|
|
1141
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1142
|
-
<span class="cline-any cline-yes">6x</span>
|
|
1143
|
-
<span class="cline-any cline-yes">4x</span>
|
|
1144
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1145
|
-
<span class="cline-any cline-yes">4x</span>
|
|
1146
|
-
<span class="cline-any cline-yes">4x</span>
|
|
1147
|
-
<span class="cline-any cline-yes">4x</span>
|
|
1148
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1149
|
-
<span class="cline-any cline-yes">4x</span>
|
|
1150
|
-
<span class="cline-any cline-yes">4x</span>
|
|
1151
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1152
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1153
|
-
<span class="cline-any cline-yes">4x</span>
|
|
1154
|
-
<span class="cline-any cline-yes">4x</span>
|
|
1155
|
-
<span class="cline-any cline-yes">4x</span>
|
|
1156
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1157
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1158
|
-
<span class="cline-any cline-yes">4x</span>
|
|
1159
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1160
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1161
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1162
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1163
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1164
|
-
<span class="cline-any cline-no"> </span>
|
|
1165
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1166
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1167
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1168
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1169
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1170
|
-
<span class="cline-any cline-yes">6x</span>
|
|
1171
|
-
<span class="cline-any cline-yes">6x</span>
|
|
1172
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1173
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1174
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1175
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1176
|
-
<span class="cline-any cline-yes">2x</span>
|
|
1177
|
-
<span class="cline-any cline-yes">2x</span>
|
|
1178
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1179
|
-
<span class="cline-any cline-no"> </span>
|
|
1180
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1181
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1182
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1183
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1184
|
-
<span class="cline-any cline-no"> </span>
|
|
1185
|
-
<span class="cline-any cline-no"> </span>
|
|
1186
|
-
<span class="cline-any cline-no"> </span>
|
|
1187
|
-
<span class="cline-any cline-no"> </span>
|
|
1188
|
-
<span class="cline-any cline-no"> </span>
|
|
1189
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1190
|
-
<span class="cline-any cline-no"> </span>
|
|
1191
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1192
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1193
|
-
<span class="cline-any cline-no"> </span>
|
|
1194
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1195
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1196
|
-
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">import { Injectable, Logger } from '@nestjs/common';
|
|
1197
|
-
import {
|
|
1198
|
-
LlmProvider,
|
|
1199
|
-
LlmProviderRequest,
|
|
1200
|
-
LlmContent,
|
|
1201
|
-
LlmModel,
|
|
1202
|
-
LlmResponse,
|
|
1203
|
-
LlmFunctionTool,
|
|
1204
|
-
LlmToolCall,
|
|
1205
|
-
} from './llm-provider.interface';
|
|
1206
|
-
import { ApplicationStateService } from '../application-state/application-state.service';
|
|
1207
|
-
import { LlmCallLogsService } from '../llm-call-logs/llm-call-logs.service';
|
|
1208
|
-
|
|
1209
|
-
// Hardcoded list of Ollama Cloud models
|
|
1210
|
-
const OLLAMA_CLOUD_MODELS = [
|
|
1211
|
-
'glm-5.1:cloud',
|
|
1212
|
-
'minimax-m2.7:cloud',
|
|
1213
|
-
'gemma4:31b-cloud',
|
|
1214
|
-
'qwen3.5:cloud',
|
|
1215
|
-
'nemotron-3-super:cloud',
|
|
1216
|
-
'qwen3-next:cloud',
|
|
1217
|
-
'kimi-k2.6:cloud',
|
|
1218
|
-
'kimi-k2.5:cloud',
|
|
1219
|
-
'glm-5:cloud',
|
|
1220
|
-
'nemotron-3-nano:cloud',
|
|
1221
|
-
'minimax-m2.5:cloud',
|
|
1222
|
-
'gemini-3-flash-preview:cloud',
|
|
1223
|
-
'glm-4.7:cloud',
|
|
1224
|
-
'deepseek-v3.2:cloud',
|
|
1225
|
-
'minimax-m2:cloud',
|
|
1226
|
-
'kimi-k2-thinking:cloud',
|
|
1227
|
-
'gpt-oss:cloud',
|
|
1228
|
-
'qwen3-vl:cloud',
|
|
1229
|
-
'deepseek-v3.1:cloud',
|
|
1230
|
-
'glm-4.6:cloud',
|
|
1231
|
-
];
|
|
1232
|
-
|
|
1233
|
-
@Injectable()
|
|
1234
|
-
export class OllamaLlmProvider implements LlmProvider {
|
|
1235
|
-
private readonly logger = new Logger(OllamaLlmProvider.name);
|
|
1236
|
-
private readonly baseUrl = 'https://ollama.com/api';
|
|
1237
|
-
private activeStreams = new Map<string, AbortController>();
|
|
1238
|
-
|
|
1239
|
-
constructor(
|
|
1240
|
-
private readonly applicationStateService: ApplicationStateService,
|
|
1241
|
-
private readonly llmCallLogsService: LlmCallLogsService,
|
|
1242
|
-
) {}
|
|
1243
|
-
|
|
1244
|
-
private mapHistory(history: LlmContent[]) {
|
|
1245
|
-
return history.map((turn) => {
|
|
1246
|
-
if (turn.role === 'tool') {
|
|
1247
|
-
// Ollama expects 'tool_name' not 'tool_call_id' for tool results
|
|
1248
|
-
return {
|
|
1249
|
-
role: 'tool',
|
|
1250
|
-
tool_name: turn.tool_name,
|
|
1251
|
-
content: turn.parts.map((p) => p.text).join(''),
|
|
1252
|
-
};
|
|
1253
|
-
}
|
|
1254
|
-
|
|
1255
|
-
const content = turn.parts.map((p) => p.text).join('');
|
|
1256
|
-
|
|
1257
|
-
const mappedTurn: any = {
|
|
1258
|
-
role: turn.role === 'model' ? 'assistant' : 'user',
|
|
1259
|
-
content: content,
|
|
1260
|
-
};
|
|
1261
|
-
|
|
1262
|
-
// Send short_id as a separate property (Ollama ignores unknown fields)
|
|
1263
|
-
<span class="missing-if-branch" title="if path not taken" >I</span>if (turn.shortId) {
|
|
1264
|
-
<span class="cstat-no" title="statement not covered" > mappedTurn.short_id = turn.shortId;</span>
|
|
1265
|
-
}
|
|
1266
|
-
|
|
1267
|
-
if (turn.tool_calls) {
|
|
1268
|
-
mappedTurn.tool_calls = turn.tool_calls.map((tc) => ({
|
|
1269
|
-
id: tc.id,
|
|
1270
|
-
type: tc.type,
|
|
1271
|
-
function: {
|
|
1272
|
-
name: tc.function.name,
|
|
1273
|
-
arguments:
|
|
1274
|
-
typeof tc.function.arguments === 'string'
|
|
1275
|
-
? tc.function.arguments
|
|
1276
|
-
: JSON.stringify(tc.function.arguments),
|
|
1277
|
-
},
|
|
1278
|
-
}));
|
|
1279
|
-
}
|
|
1280
|
-
|
|
1281
|
-
// Preserve thinking/reasoning content in history
|
|
1282
|
-
<span class="missing-if-branch" title="if path not taken" >I</span>if (turn.thoughts) {
|
|
1283
|
-
<span class="cstat-no" title="statement not covered" > mappedTurn.thinking = turn.thoughts;</span>
|
|
1284
|
-
}
|
|
1285
|
-
|
|
1286
|
-
return mappedTurn;
|
|
1287
|
-
});
|
|
1288
|
-
}
|
|
1289
|
-
|
|
1290
|
-
/**
|
|
1291
|
-
* Convert tool call arguments from string to object for Ollama native API.
|
|
1292
|
-
* Ollama expects arguments as an object, not a stringified JSON string.
|
|
1293
|
-
* Also strips 'id' and 'type' fields which Ollama doesn't require.
|
|
1294
|
-
* Adds 'index' field for parallel tool calling support.
|
|
1295
|
-
*/
|
|
1296
|
-
private convertToolCallArgumentsForOllama(messages: any[]): any[] {
|
|
1297
|
-
return messages.map((turn) => {
|
|
1298
|
-
if (turn.tool_calls) {
|
|
1299
|
-
turn.tool_calls = turn.tool_calls.map((tc, index) => ({
|
|
1300
|
-
function: {
|
|
1301
|
-
index: index,
|
|
1302
|
-
name: tc.function?.name || <span class="branch-1 cbranch-no" title="branch not covered" >'',</span>
|
|
1303
|
-
arguments: (() => {
|
|
1304
|
-
if (typeof tc.function?.arguments === 'string') {
|
|
1305
|
-
try {
|
|
1306
|
-
return JSON.parse(tc.function.arguments);
|
|
1307
|
-
} catch {
|
|
1308
|
-
this.logger.warn(
|
|
1309
|
-
`Failed to parse tool arguments for Ollama: ${tc.function.arguments}`,
|
|
1310
|
-
);
|
|
1311
|
-
return tc.function.arguments;
|
|
1312
|
-
}
|
|
1313
|
-
}
|
|
1314
|
-
return tc.function?.arguments || <span class="branch-1 cbranch-no" title="branch not covered" >{};</span>
|
|
1315
|
-
})(),
|
|
1316
|
-
},
|
|
1317
|
-
}));
|
|
1318
|
-
}
|
|
1319
|
-
return turn;
|
|
1320
|
-
});
|
|
1321
|
-
}
|
|
1322
|
-
|
|
1323
|
-
private <span class="fstat-no" title="function not covered" >mapTools(</span>tools?: LlmFunctionTool[]): any[] | undefined {
|
|
1324
|
-
<span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (!tools || tools.length === 0) <span class="cstat-no" title="statement not covered" >return undefined;</span></span>
|
|
1325
|
-
<span class="cstat-no" title="statement not covered" > return tools;</span>
|
|
1326
|
-
}
|
|
1327
|
-
|
|
1328
|
-
<span class="fstat-no" title="function not covered" > async </span>getModels(): Promise<LlmModel[]> {
|
|
1329
|
-
const apiKey = <span class="cstat-no" title="statement not covered" >await this.applicationStateService.getOllamaApiKey();</span>
|
|
1330
|
-
|
|
1331
|
-
<span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (!apiKey) {</span>
|
|
1332
|
-
<span class="cstat-no" title="statement not covered" > this.logger.warn(</span>
|
|
1333
|
-
'Ollama API key not configured, returning empty models list',
|
|
1334
|
-
);
|
|
1335
|
-
<span class="cstat-no" title="statement not covered" > return [];</span>
|
|
1336
|
-
}
|
|
1337
|
-
|
|
1338
|
-
const models = <span class="cstat-no" title="statement not covered" >OLLAMA_CLOUD_MODELS.map(<span class="fstat-no" title="function not covered" >(m</span>odelId) => (<span class="cstat-no" title="statement not covered" >{</span></span>
|
|
1339
|
-
id: `ollama/${modelId}`,
|
|
1340
|
-
name: modelId,
|
|
1341
|
-
provider: 'ollama' as const,
|
|
1342
|
-
}));
|
|
1343
|
-
|
|
1344
|
-
<span class="cstat-no" title="statement not covered" > return models;</span>
|
|
1345
|
-
}
|
|
1346
|
-
|
|
1347
|
-
async generateContent(request: LlmProviderRequest): Promise<LlmResponse> {
|
|
1348
|
-
const apiKey = await this.applicationStateService.getOllamaApiKey();
|
|
1349
|
-
if (!apiKey) {
|
|
1350
|
-
throw new Error('Ollama API Key is not configured in settings.');
|
|
1351
|
-
}
|
|
1352
|
-
|
|
1353
|
-
const {
|
|
1354
|
-
prompt,
|
|
1355
|
-
systemInstruction,
|
|
1356
|
-
history,
|
|
1357
|
-
modelId,
|
|
1358
|
-
generationConfig,
|
|
1359
|
-
tools,
|
|
1360
|
-
onToken,
|
|
1361
|
-
abortController,
|
|
1362
|
-
} = request;
|
|
1363
|
-
|
|
1364
|
-
const ollamaModelId = modelId
|
|
1365
|
-
? modelId.replace(/^ollama\//, '')
|
|
1366
|
-
: <span class="branch-1 cbranch-no" title="branch not covered" >'gpt-oss:cloud';</span>
|
|
1367
|
-
const requestId = `${Date.now()}-${Math.random().toString(36).substr(2, 9)}`;
|
|
1368
|
-
|
|
1369
|
-
const messages = [];
|
|
1370
|
-
<span class="missing-if-branch" title="if path not taken" >I</span>if (systemInstruction) {
|
|
1371
|
-
<span class="cstat-no" title="statement not covered" > messages.push({ role: 'system', content: systemInstruction });</span>
|
|
1372
|
-
}
|
|
1373
|
-
|
|
1374
|
-
if (history && history.length > 0) {
|
|
1375
|
-
const mappedHistory = this.mapHistory(history);
|
|
1376
|
-
// Convert tool call arguments for Ollama format (object instead of string)
|
|
1377
|
-
const ollamaHistory =
|
|
1378
|
-
this.convertToolCallArgumentsForOllama(mappedHistory);
|
|
1379
|
-
messages.push(...ollamaHistory);
|
|
1380
|
-
} else {
|
|
1381
|
-
messages.push({ role: 'user', content: prompt });
|
|
1382
|
-
}
|
|
1383
|
-
|
|
1384
|
-
await this.applicationStateService.trackUsedModel(modelId);
|
|
1385
|
-
this.logger.log(`Calling Ollama API with model: ${ollamaModelId}`);
|
|
1386
|
-
|
|
1387
|
-
const startTime = Date.now();
|
|
1388
|
-
let llmCallLogId: string | null = null;
|
|
1389
|
-
let logAlreadyUpdated = false;
|
|
1390
|
-
|
|
1391
|
-
try {
|
|
1392
|
-
llmCallLogId = (
|
|
1393
|
-
await this.llmCallLogsService.createLog({
|
|
1394
|
-
session_input_id: 'pending',
|
|
1395
|
-
provider: 'ollama',
|
|
1396
|
-
model_id: ollamaModelId,
|
|
1397
|
-
request_body: JSON.stringify({
|
|
1398
|
-
model: ollamaModelId,
|
|
1399
|
-
messages,
|
|
1400
|
-
tools,
|
|
1401
|
-
stream: !!onToken,
|
|
1402
|
-
options: generationConfig,
|
|
1403
|
-
}),
|
|
1404
|
-
})
|
|
1405
|
-
).id;
|
|
1406
|
-
} catch (logError) {
|
|
1407
|
-
<span class="cstat-no" title="statement not covered" > this.logger.warn(`Failed to create LLM call log: ${logError.message}`);</span>
|
|
1408
|
-
}
|
|
1409
|
-
|
|
1410
|
-
try {
|
|
1411
|
-
// Build request body in native Ollama format
|
|
1412
|
-
const body: any = {
|
|
1413
|
-
model: ollamaModelId,
|
|
1414
|
-
messages,
|
|
1415
|
-
};
|
|
1416
|
-
|
|
1417
|
-
if (onToken) {
|
|
1418
|
-
body.stream = true;
|
|
1419
|
-
} else {
|
|
1420
|
-
body.stream = false;
|
|
1421
|
-
}
|
|
1422
|
-
|
|
1423
|
-
// Options object for generation config
|
|
1424
|
-
<span class="missing-if-branch" title="if path not taken" >I</span>if (generationConfig) {
|
|
1425
|
-
<span class="cstat-no" title="statement not covered" > body.options = {};</span>
|
|
1426
|
-
<span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (generationConfig.temperature !== undefined) {</span>
|
|
1427
|
-
<span class="cstat-no" title="statement not covered" > body.options.temperature = generationConfig.temperature;</span>
|
|
1428
|
-
}
|
|
1429
|
-
<span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (generationConfig.maxOutputTokens !== undefined) {</span>
|
|
1430
|
-
<span class="cstat-no" title="statement not covered" > body.options.num_predict = generationConfig.maxOutputTokens;</span>
|
|
1431
|
-
}
|
|
1432
|
-
<span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (generationConfig.topP !== undefined) {</span>
|
|
1433
|
-
<span class="cstat-no" title="statement not covered" > body.options.top_p = generationConfig.topP;</span>
|
|
1434
|
-
}
|
|
1435
|
-
}
|
|
1436
|
-
|
|
1437
|
-
// Thinking/reasoning support
|
|
1438
|
-
<span class="missing-if-branch" title="if path not taken" >I</span>if (generationConfig?.reasoning?.effort) {
|
|
1439
|
-
<span class="cstat-no" title="statement not covered" > body.think = generationConfig.reasoning.effort;</span>
|
|
1440
|
-
}
|
|
1441
|
-
|
|
1442
|
-
// Tool calling
|
|
1443
|
-
<span class="missing-if-branch" title="if path not taken" >I</span>if (tools && <span class="branch-1 cbranch-no" title="branch not covered" >tools.length > 0)</span> {
|
|
1444
|
-
<span class="cstat-no" title="statement not covered" > body.tools = this.mapTools(tools);</span>
|
|
1445
|
-
}
|
|
1446
|
-
|
|
1447
|
-
// Use native /api/chat endpoint
|
|
1448
|
-
const response = await fetch(`${this.baseUrl}/chat`, {
|
|
1449
|
-
method: 'POST',
|
|
1450
|
-
headers: {
|
|
1451
|
-
'Content-Type': 'application/json',
|
|
1452
|
-
Authorization: `Bearer ${apiKey}`,
|
|
1453
|
-
},
|
|
1454
|
-
body: JSON.stringify(body),
|
|
1455
|
-
signal: abortController?.signal,
|
|
1456
|
-
});
|
|
1457
|
-
|
|
1458
|
-
if (!response.ok) {
|
|
1459
|
-
const errorText = await response.text();
|
|
1460
|
-
const errorData = this.tryParseJson(errorText);
|
|
1461
|
-
const errorMessage =
|
|
1462
|
-
errorData?.error || <span class="branch-1 cbranch-no" title="branch not covered" >`Ollama API error: ${response.statusText}`;</span>
|
|
1463
|
-
|
|
1464
|
-
this.logger.error(`Ollama API error: ${errorMessage}`);
|
|
1465
|
-
|
|
1466
|
-
if (llmCallLogId) {
|
|
1467
|
-
try {
|
|
1468
|
-
await this.llmCallLogsService.updateLog(llmCallLogId, {
|
|
1469
|
-
status_code: response.status,
|
|
1470
|
-
latency_ms: Date.now() - startTime,
|
|
1471
|
-
error_message: errorMessage,
|
|
1472
|
-
response_body: errorText,
|
|
1473
|
-
});
|
|
1474
|
-
logAlreadyUpdated = true;
|
|
1475
|
-
} catch (updateError) {
|
|
1476
|
-
<span class="cstat-no" title="statement not covered" > this.logger.warn(</span>
|
|
1477
|
-
`Failed to update LLM call log: ${updateError.message}`,
|
|
1478
|
-
);
|
|
1479
|
-
}
|
|
1480
|
-
}
|
|
1481
|
-
|
|
1482
|
-
const error = new Error(errorMessage) as Error & { status: number };
|
|
1483
|
-
error.status = response.status;
|
|
1484
|
-
throw error;
|
|
1485
|
-
}
|
|
1486
|
-
|
|
1487
|
-
// Handle streaming response (NDJSON format)
|
|
1488
|
-
if (onToken && response.body) {
|
|
1489
|
-
<span class="missing-if-branch" title="if path not taken" >I</span>if (abortController) {
|
|
1490
|
-
<span class="cstat-no" title="statement not covered" > this.activeStreams.set(requestId, abortController);</span>
|
|
1491
|
-
}
|
|
1492
|
-
|
|
1493
|
-
const reader = response.body.getReader();
|
|
1494
|
-
const decoder = new TextDecoder();
|
|
1495
|
-
let buffer = '';
|
|
1496
|
-
let accumulatedResponse = '';
|
|
1497
|
-
let accumulatedThinking = '';
|
|
1498
|
-
let isFirst = true;
|
|
1499
|
-
let promptEvalCount = 0;
|
|
1500
|
-
let evalCount = 0;
|
|
1501
|
-
let finalToolCalls: any[] = [];
|
|
1502
|
-
|
|
1503
|
-
try {
|
|
1504
|
-
while (true) {
|
|
1505
|
-
<span class="missing-if-branch" title="if path not taken" >I</span>if (abortController?.signal?.aborted) {
|
|
1506
|
-
<span class="cstat-no" title="statement not covered" > this.activeStreams.delete(requestId);</span>
|
|
1507
|
-
<span class="cstat-no" title="statement not covered" > throw new DOMException('The operation was aborted', 'AbortError');</span>
|
|
1508
|
-
}
|
|
1509
|
-
|
|
1510
|
-
const { done, value } = await reader.read();
|
|
1511
|
-
<span class="missing-if-branch" title="if path not taken" >I</span>if (done) <span class="cstat-no" title="statement not covered" >break;</span>
|
|
1512
|
-
|
|
1513
|
-
buffer += decoder.decode(value, { stream: true });
|
|
1514
|
-
const lines = buffer.split('\n');
|
|
1515
|
-
buffer = lines.pop() || '';
|
|
1516
|
-
|
|
1517
|
-
for (const line of lines) {
|
|
1518
|
-
<span class="missing-if-branch" title="if path not taken" >I</span>if (!line.trim()) <span class="cstat-no" title="statement not covered" >continue;</span>
|
|
1519
|
-
|
|
1520
|
-
let parsed: any;
|
|
1521
|
-
try {
|
|
1522
|
-
parsed = JSON.parse(line);
|
|
1523
|
-
} catch {
|
|
1524
|
-
<span class="cstat-no" title="statement not covered" > this.logger.warn(`Error parsing NDJSON line: ${line}`);</span>
|
|
1525
|
-
<span class="cstat-no" title="statement not covered" > continue;</span>
|
|
1526
|
-
}
|
|
1527
|
-
|
|
1528
|
-
// Detect Ollama streaming errors (NDJSON line with "error" field)
|
|
1529
|
-
if (parsed.error) {
|
|
1530
|
-
this.logger.error(`Ollama stream error: ${parsed.error}`);
|
|
1531
|
-
const streamError = new Error(
|
|
1532
|
-
`Ollama stream error: ${parsed.error}`,
|
|
1533
|
-
) as Error & { status: number };
|
|
1534
|
-
streamError.status = response.status;
|
|
1535
|
-
throw streamError;
|
|
1536
|
-
}
|
|
1537
|
-
|
|
1538
|
-
if (parsed.message?.content) {
|
|
1539
|
-
accumulatedResponse += parsed.message.content;
|
|
1540
|
-
onToken(parsed.message.content, isFirst);
|
|
1541
|
-
if (isFirst) isFirst = false;
|
|
1542
|
-
}
|
|
1543
|
-
|
|
1544
|
-
// Thinking/reasoning chunk
|
|
1545
|
-
<span class="missing-if-branch" title="if path not taken" >I</span>if (parsed.message?.thinking) {
|
|
1546
|
-
<span class="cstat-no" title="statement not covered" > accumulatedThinking += parsed.message.thinking;</span>
|
|
1547
|
-
<span class="cstat-no" title="statement not covered" > onToken?.('', false, parsed.message.thinking);</span>
|
|
1548
|
-
}
|
|
1549
|
-
|
|
1550
|
-
// Tool calls (usually in final chunk)
|
|
1551
|
-
<span class="missing-if-branch" title="if path not taken" >I</span>if (parsed.message?.tool_calls) {
|
|
1552
|
-
<span class="cstat-no" title="statement not covered" > finalToolCalls = parsed.message.tool_calls;</span>
|
|
1553
|
-
}
|
|
1554
|
-
|
|
1555
|
-
// Usage in final chunk (done: true)
|
|
1556
|
-
<span class="missing-if-branch" title="if path not taken" >I</span>if (parsed.done) {
|
|
1557
|
-
<span class="cstat-no" title="statement not covered" > promptEvalCount = parsed.prompt_eval_count || 0;</span>
|
|
1558
|
-
<span class="cstat-no" title="statement not covered" > evalCount = parsed.eval_count || 0;</span>
|
|
1559
|
-
<span class="cstat-no" title="statement not covered" > this.logger.log(</span>
|
|
1560
|
-
`Stream finished. Tokens: ${promptEvalCount} prompt, ${evalCount} completion`,
|
|
1561
|
-
);
|
|
1562
|
-
}
|
|
1563
|
-
}
|
|
1564
|
-
}
|
|
1565
|
-
} catch (readError) {
|
|
1566
|
-
<span class="missing-if-branch" title="if path not taken" >I</span>if (abortController?.signal?.aborted) {
|
|
1567
|
-
<span class="cstat-no" title="statement not covered" > this.activeStreams.delete(requestId);</span>
|
|
1568
|
-
<span class="cstat-no" title="statement not covered" > throw new DOMException('The operation was aborted', 'AbortError');</span>
|
|
1569
|
-
}
|
|
1570
|
-
throw readError;
|
|
1571
|
-
}
|
|
1572
|
-
|
|
1573
|
-
// Parse tool calls
|
|
1574
|
-
const parsedToolCalls: LlmToolCall[] | undefined =
|
|
1575
|
-
<span class="cstat-no" title="statement not covered" > finalToolCalls.length > 0</span>
|
|
1576
|
-
? finalToolCalls.map(<span class="fstat-no" title="function not covered" >(t</span>c: any) => (<span class="cstat-no" title="statement not covered" >{</span>
|
|
1577
|
-
id: tc.id || `tool-${Date.now()}`,
|
|
1578
|
-
type: tc.type || 'function',
|
|
1579
|
-
function: {
|
|
1580
|
-
name: tc.function?.name || '',
|
|
1581
|
-
arguments: (<span class="fstat-no" title="function not covered" >() =</span>> {
|
|
1582
|
-
<span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (typeof tc.function?.arguments === 'string') {</span>
|
|
1583
|
-
<span class="cstat-no" title="statement not covered" > try {</span>
|
|
1584
|
-
<span class="cstat-no" title="statement not covered" > return JSON.parse(tc.function.arguments);</span>
|
|
1585
|
-
} catch {
|
|
1586
|
-
<span class="cstat-no" title="statement not covered" > this.logger.warn(</span>
|
|
1587
|
-
`Failed to parse tool arguments: ${tc.function.arguments}`,
|
|
1588
|
-
);
|
|
1589
|
-
<span class="cstat-no" title="statement not covered" > return tc.function.arguments;</span>
|
|
1590
|
-
}
|
|
1591
|
-
}
|
|
1592
|
-
<span class="cstat-no" title="statement not covered" > return tc.function?.arguments || {};</span>
|
|
1593
|
-
})(),
|
|
1594
|
-
},
|
|
1595
|
-
}))
|
|
1596
|
-
: undefined;
|
|
1597
|
-
|
|
1598
|
-
<span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (llmCallLogId) {</span>
|
|
1599
|
-
<span class="cstat-no" title="statement not covered" > try {</span>
|
|
1600
|
-
<span class="cstat-no" title="statement not covered" > await this.llmCallLogsService.updateLog(llmCallLogId, {</span>
|
|
1601
|
-
status_code: 200,
|
|
1602
|
-
latency_ms: Date.now() - startTime,
|
|
1603
|
-
response_body: JSON.stringify({
|
|
1604
|
-
text: accumulatedResponse,
|
|
1605
|
-
thinking: accumulatedThinking,
|
|
1606
|
-
tool_calls: finalToolCalls,
|
|
1607
|
-
prompt_eval_count: promptEvalCount,
|
|
1608
|
-
eval_count: evalCount,
|
|
1609
|
-
}),
|
|
1610
|
-
input_tokens: promptEvalCount,
|
|
1611
|
-
output_tokens: evalCount,
|
|
1612
|
-
});
|
|
1613
|
-
} catch (updateError) {
|
|
1614
|
-
<span class="cstat-no" title="statement not covered" > this.logger.warn(</span>
|
|
1615
|
-
`Failed to update LLM call log: ${updateError.message}`,
|
|
1616
|
-
);
|
|
1617
|
-
}
|
|
1618
|
-
}
|
|
1619
|
-
|
|
1620
|
-
<span class="cstat-no" title="statement not covered" > this.activeStreams.delete(requestId);</span>
|
|
1621
|
-
<span class="cstat-no" title="statement not covered" > return {</span>
|
|
1622
|
-
text: accumulatedResponse,
|
|
1623
|
-
usage: {
|
|
1624
|
-
inputTokens: promptEvalCount,
|
|
1625
|
-
outputTokens: evalCount,
|
|
1626
|
-
},
|
|
1627
|
-
tool_calls: parsedToolCalls,
|
|
1628
|
-
thoughts: accumulatedThinking || undefined,
|
|
1629
|
-
};
|
|
1630
|
-
}
|
|
1631
|
-
|
|
1632
|
-
// Handle non-streaming response
|
|
1633
|
-
const data = await response.json();
|
|
1634
|
-
|
|
1635
|
-
const content = data.message?.content || '';
|
|
1636
|
-
const thinking = data.message?.thinking || '';
|
|
1637
|
-
const rawToolCalls = data.message?.tool_calls || [];
|
|
1638
|
-
const promptEvalCount = data.prompt_eval_count || 0;
|
|
1639
|
-
const evalCount = data.eval_count || 0;
|
|
1640
|
-
|
|
1641
|
-
const parsedToolCalls: LlmToolCall[] | undefined =
|
|
1642
|
-
rawToolCalls.length > 0
|
|
1643
|
-
? rawToolCalls.map((tc: any) => ({
|
|
1644
|
-
id: tc.id || <span class="branch-1 cbranch-no" title="branch not covered" >`tool-${Date.now()}`,</span>
|
|
1645
|
-
type: tc.type || 'function',
|
|
1646
|
-
function: {
|
|
1647
|
-
name: tc.function?.name || <span class="branch-1 cbranch-no" title="branch not covered" >'',</span>
|
|
1648
|
-
arguments: (() => {
|
|
1649
|
-
<span class="missing-if-branch" title="if path not taken" >I</span>if (typeof tc.function?.arguments === 'string') {
|
|
1650
|
-
<span class="cstat-no" title="statement not covered" > try {</span>
|
|
1651
|
-
<span class="cstat-no" title="statement not covered" > return JSON.parse(tc.function.arguments);</span>
|
|
1652
|
-
} catch {
|
|
1653
|
-
<span class="cstat-no" title="statement not covered" > this.logger.warn(</span>
|
|
1654
|
-
`Failed to parse tool arguments: ${tc.function.arguments}`,
|
|
1655
|
-
);
|
|
1656
|
-
<span class="cstat-no" title="statement not covered" > return tc.function.arguments;</span>
|
|
1657
|
-
}
|
|
1658
|
-
}
|
|
1659
|
-
return tc.function?.arguments || <span class="branch-1 cbranch-no" title="branch not covered" >{};</span>
|
|
1660
|
-
})(),
|
|
1661
|
-
},
|
|
1662
|
-
}))
|
|
1663
|
-
: undefined;
|
|
1664
|
-
|
|
1665
|
-
if (!content && !parsedToolCalls) {
|
|
1666
|
-
const error = new Error(
|
|
1667
|
-
'Ollama returned an empty response.',
|
|
1668
|
-
) as Error & {
|
|
1669
|
-
status: number;
|
|
1670
|
-
};
|
|
1671
|
-
error.status = response.status || <span class="branch-1 cbranch-no" title="branch not covered" >0;</span>
|
|
1672
|
-
throw error;
|
|
1673
|
-
}
|
|
1674
|
-
|
|
1675
|
-
this.logger.log(
|
|
1676
|
-
`Response tokens: ${promptEvalCount} prompt, ${evalCount} completion`,
|
|
1677
|
-
);
|
|
1678
|
-
|
|
1679
|
-
if (llmCallLogId) {
|
|
1680
|
-
try {
|
|
1681
|
-
await this.llmCallLogsService.updateLog(llmCallLogId, {
|
|
1682
|
-
status_code: 200,
|
|
1683
|
-
latency_ms: Date.now() - startTime,
|
|
1684
|
-
response_body: JSON.stringify(data),
|
|
1685
|
-
input_tokens: promptEvalCount,
|
|
1686
|
-
output_tokens: evalCount,
|
|
1687
|
-
});
|
|
1688
|
-
} catch (updateError) {
|
|
1689
|
-
<span class="cstat-no" title="statement not covered" > this.logger.warn(</span>
|
|
1690
|
-
`Failed to update LLM call log: ${updateError.message}`,
|
|
1691
|
-
);
|
|
1692
|
-
}
|
|
1693
|
-
}
|
|
1694
|
-
|
|
1695
|
-
return {
|
|
1696
|
-
text: content,
|
|
1697
|
-
usage: {
|
|
1698
|
-
inputTokens: promptEvalCount,
|
|
1699
|
-
outputTokens: evalCount,
|
|
1700
|
-
},
|
|
1701
|
-
tool_calls: parsedToolCalls,
|
|
1702
|
-
thoughts: thinking || undefined,
|
|
1703
|
-
};
|
|
1704
|
-
} catch (error) {
|
|
1705
|
-
this.logger.error(`Ollama generation failed: ${error.message}`);
|
|
1706
|
-
|
|
1707
|
-
if (llmCallLogId && !logAlreadyUpdated) {
|
|
1708
|
-
try {
|
|
1709
|
-
const errorName =
|
|
1710
|
-
error instanceof Error ? error.name : <span class="branch-1 cbranch-no" title="branch not covered" >'UnknownError';</span>
|
|
1711
|
-
let errorMessage = `[${errorName}] ${error.message}`;
|
|
1712
|
-
if (error.status) errorMessage += `\nHTTP Status: ${error.status}`;
|
|
1713
|
-
const errorCause =
|
|
1714
|
-
error instanceof Error ? (error as any).cause : <span class="branch-1 cbranch-no" title="branch not covered" >undefined;</span>
|
|
1715
|
-
if (errorCause) {
|
|
1716
|
-
errorMessage += `\nCause: ${errorCause instanceof Error ? errorCause.message : <span class="branch-1 cbranch-no" title="branch not covered" >String(errorCause)}</span>`;
|
|
1717
|
-
}
|
|
1718
|
-
if (error instanceof Error && error.stack) {
|
|
1719
|
-
const stackLines = error.stack.split('\n').slice(1, 4).join('\n');
|
|
1720
|
-
errorMessage += `\n${stackLines}`;
|
|
1721
|
-
}
|
|
1722
|
-
|
|
1723
|
-
await this.llmCallLogsService.updateLog(llmCallLogId, {
|
|
1724
|
-
status_code: error.status || null,
|
|
1725
|
-
latency_ms: Date.now() - startTime,
|
|
1726
|
-
error_message: errorMessage,
|
|
1727
|
-
});
|
|
1728
|
-
} catch (updateError) {
|
|
1729
|
-
<span class="cstat-no" title="statement not covered" > this.logger.warn(</span>
|
|
1730
|
-
`Failed to update LLM call log: ${updateError.message}`,
|
|
1731
|
-
);
|
|
1732
|
-
}
|
|
1733
|
-
}
|
|
1734
|
-
|
|
1735
|
-
this.activeStreams.delete(requestId);
|
|
1736
|
-
throw error;
|
|
1737
|
-
}
|
|
1738
|
-
}
|
|
1739
|
-
|
|
1740
|
-
private tryParseJson(text: string): any {
|
|
1741
|
-
try {
|
|
1742
|
-
return JSON.parse(text);
|
|
1743
|
-
} catch {
|
|
1744
|
-
<span class="cstat-no" title="statement not covered" > return null;</span>
|
|
1745
|
-
}
|
|
1746
|
-
}
|
|
1747
|
-
|
|
1748
|
-
<span class="fstat-no" title="function not covered" > abortBySessionId(</span>_sessionId: string): boolean {
|
|
1749
|
-
<span class="cstat-no" title="statement not covered" > for (const [reqId, controller] of this.activeStreams.entries()) {</span>
|
|
1750
|
-
<span class="cstat-no" title="statement not covered" > try {</span>
|
|
1751
|
-
<span class="cstat-no" title="statement not covered" > controller.abort();</span>
|
|
1752
|
-
<span class="cstat-no" title="statement not covered" > this.activeStreams.delete(reqId);</span>
|
|
1753
|
-
<span class="cstat-no" title="statement not covered" > return true;</span>
|
|
1754
|
-
} catch (e) {
|
|
1755
|
-
<span class="cstat-no" title="statement not covered" > this.logger.warn(`Failed to abort stream ${reqId}: ${e.message}`);</span>
|
|
1756
|
-
}
|
|
1757
|
-
}
|
|
1758
|
-
<span class="cstat-no" title="statement not covered" > return false;</span>
|
|
1759
|
-
}
|
|
1760
|
-
}
|
|
1761
|
-
</pre></td></tr></table></pre>
|
|
1762
|
-
|
|
1763
|
-
<div class='push'></div><!-- for sticky footer -->
|
|
1764
|
-
</div><!-- /wrapper -->
|
|
1765
|
-
<div class='footer quiet pad2 space-top1 center small'>
|
|
1766
|
-
Code coverage generated by
|
|
1767
|
-
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
1768
|
-
at 2026-05-09T01:03:45.353Z
|
|
1769
|
-
</div>
|
|
1770
|
-
<script src="../../prettify.js"></script>
|
|
1771
|
-
<script>
|
|
1772
|
-
window.onload = function () {
|
|
1773
|
-
prettyPrint();
|
|
1774
|
-
};
|
|
1775
|
-
</script>
|
|
1776
|
-
<script src="../../sorter.js"></script>
|
|
1777
|
-
<script src="../../block-navigation.js"></script>
|
|
1778
|
-
</body>
|
|
1779
|
-
</html>
|
|
1780
|
-
|