{"name":"main","updatestamp":"2026-10-13T20:57:34.919095Z","head_commit":{"commitid":"58365ff3f6d00a11d791fb244a9f27fe7f11b65f","message":"test(usecase): verify controller installation outcomes (#1125)\n\nThe existing render tests bypass the use-case pack controller and stay\ngreen when its POST confirmation or installation call is removed. These\nfunctional tests dispatch the real container-built controller and\ninstaller, then check persisted records and operator feedback.\n\nThe cases cover read-only entry and plans, unknown packs, GET/HEAD\nrefusal with an installable model, real installation, repeat\ninstallation and missing-model feedback. Complete extension-table\nsnapshots verify intended writes and read-only paths; backend middleware\nauthorization and CSRF remain outside this test scope.\n\nValidation on the final Source composed with Main129: one complete `make\ngate` passed all six suites (CGL, PHPStan, Unit 10,144 tests / 43,746\nassertions, Fuzzy 107 / 20,550, pinned PHP 8.2 Rector, and SQLite\nFunctional 2,465 / 61,807). Existing Unit skips (9) and Functional\ndeprecation (1) and skip (1) remain. Retained focused SQLite/MariaDB\nreceipts and five controlled runtime faults (seven assertion failures,\nzero framework errors) remain qualified to their exact prior snapshots,\nwith the test and production-controller bytes unchanged.\n\nThe immutable strict documentation renderer produced 292 HTML files and\nexited 1 with exactly the same 21 inherited warnings as fresh Main129,\nwith zero added or removed warnings and no renderer errors. Final\nSource/dependency guards remain exact.","timestamp":"2026-10-13T20:47:14Z","ci_passed":true,"author":{"service":"github","username":"CybotTM","name":"Sebastian Mendel"},"branch":"main","totals":{"files":712,"lines":44006,"hits":38857,"misses":5149,"partials":0,"coverage":88.29,"branches":0,"methods":4448,"sessions":9,"complexity":14112.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0},"state":"complete","parent":"0ac6697fb00e41529667fdf773e189153c62c4b7","report":{"totals":{"files":712,"lines":44006,"hits":38857,"misses":5149,"partials":0,"coverage":88.29,"branches":0,"methods":4448,"messages":0,"sessions":9,"complexity":14112.0,"complexity_total":0.0,"complexity_ratio":0,"diff":[0,0,0,0,0,null,0,0,0,0,null,null,0]},"files":[{"name":"Classes/Attribute/AsLlmProvider.php","totals":{"files":0,"lines":2,"hits":2,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":1,"messages":0,"sessions":0,"complexity":1.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Command/EvalRunCommand.php","totals":{"files":0,"lines":119,"hits":113,"misses":6,"partials":0,"coverage":94.95,"branches":0,"methods":10,"messages":0,"sessions":0,"complexity":40.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Command/PurgePrivacyDataCommand.php","totals":{"files":0,"lines":44,"hits":44,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":5,"messages":0,"sessions":0,"complexity":9.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Command/PurgeTelemetryCommand.php","totals":{"files":0,"lines":21,"hits":21,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":3,"messages":0,"sessions":0,"complexity":6.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Controller/Backend/AnalyticsController.php","totals":{"files":0,"lines":49,"hits":49,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":2,"messages":0,"sessions":0,"complexity":5.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Controller/Backend/DefensiveLocalizationTrait.php","totals":{"files":0,"lines":4,"hits":4,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":1,"messages":0,"sessions":0,"complexity":2.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Controller/Backend/FormEngineUrlBuilder.php","totals":{"files":0,"lines":11,"hits":11,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":4,"messages":0,"sessions":0,"complexity":4.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Controller/Backend/PresetController.php","totals":{"files":0,"lines":102,"hits":97,"misses":5,"partials":0,"coverage":95.09,"branches":0,"methods":10,"messages":0,"sessions":0,"complexity":29.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Controller/Backend/PromptSnippetController.php","totals":{"files":0,"lines":30,"hits":28,"misses":2,"partials":0,"coverage":93.33,"branches":0,"methods":2,"messages":0,"sessions":0,"complexity":5.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Controller/Backend/RequiresBackendAdminTrait.php","totals":{"files":0,"lines":40,"hits":36,"misses":4,"partials":0,"coverage":90.0,"branches":0,"methods":3,"messages":0,"sessions":0,"complexity":14.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Controller/Backend/SkillSourceController.php","totals":{"files":0,"lines":99,"hits":51,"misses":48,"partials":0,"coverage":51.51,"branches":0,"methods":9,"messages":0,"sessions":0,"complexity":27.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Controller/Backend/TaskExecutionController.php","totals":{"files":0,"lines":160,"hits":64,"misses":96,"partials":0,"coverage":40.0,"branches":0,"methods":7,"messages":0,"sessions":0,"complexity":35.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Controller/Backend/TaskListController.php","totals":{"files":0,"lines":72,"hits":70,"misses":2,"partials":0,"coverage":97.22,"branches":0,"methods":5,"messages":0,"sessions":0,"complexity":9.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Controller/Backend/TaskRecordsController.php","totals":{"files":0,"lines":95,"hits":49,"misses":46,"partials":0,"coverage":51.57,"branches":0,"methods":4,"messages":0,"sessions":0,"complexity":22.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Controller/Backend/TaskWizardController.php","totals":{"files":0,"lines":175,"hits":125,"misses":50,"partials":0,"coverage":71.42,"branches":0,"methods":9,"messages":0,"sessions":0,"complexity":45.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Controller/Backend/ToolController.php","totals":{"files":0,"lines":47,"hits":45,"misses":2,"partials":0,"coverage":95.74,"branches":0,"methods":7,"messages":0,"sessions":0,"complexity":17.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Controller/Backend/ToolPlaygroundController.php","totals":{"files":0,"lines":443,"hits":325,"misses":118,"partials":0,"coverage":73.36,"branches":0,"methods":27,"messages":0,"sessions":0,"complexity":129.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Controller/Backend/DTO/ExecuteTaskRequest.php","totals":{"files":0,"lines":14,"hits":14,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":4,"messages":0,"sessions":0,"complexity":8.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Controller/Backend/DTO/FetchRecordsRequest.php","totals":{"files":0,"lines":22,"hits":22,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":5,"messages":0,"sessions":0,"complexity":11.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Controller/Backend/DTO/LoadRecordDataRequest.php","totals":{"files":0,"lines":24,"hits":24,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":4,"messages":0,"sessions":0,"complexity":9.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Controller/Backend/DTO/RefreshInputRequest.php","totals":{"files":0,"lines":10,"hits":10,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":3,"messages":0,"sessions":0,"complexity":6.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Controller/Backend/Response/DiscoveredModelsResponse.php","totals":{"files":0,"lines":16,"hits":13,"misses":3,"partials":0,"coverage":81.25,"branches":0,"methods":3,"messages":0,"sessions":0,"complexity":4.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Controller/Backend/Response/ErrorResponse.php","totals":{"files":0,"lines":7,"hits":7,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":2,"messages":0,"sessions":0,"complexity":2.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Controller/Backend/Response/GeneratedConfigurationsResponse.php","totals":{"files":0,"lines":13,"hits":13,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":3,"messages":0,"sessions":0,"complexity":3.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Controller/Backend/Response/ModelListItemResponse.php","totals":{"files":0,"lines":17,"hits":17,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":3,"messages":0,"sessions":0,"complexity":3.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Controller/Backend/Response/ModelListResponse.php","totals":{"files":0,"lines":17,"hits":17,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":3,"messages":0,"sessions":0,"complexity":4.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Controller/Backend/Response/PlaygroundRunResponse.php","totals":{"files":0,"lines":20,"hits":19,"misses":1,"partials":0,"coverage":95.0,"branches":0,"methods":2,"messages":0,"sessions":0,"complexity":3.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Controller/Backend/Response/ProviderDetectionResponse.php","totals":{"files":0,"lines":9,"hits":9,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":3,"messages":0,"sessions":0,"complexity":3.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Controller/Backend/Response/ProviderModelsResponse.php","totals":{"files":0,"lines":8,"hits":8,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":2,"messages":0,"sessions":0,"complexity":2.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Controller/Backend/Response/RecordDataResponse.php","totals":{"files":0,"lines":8,"hits":8,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":2,"messages":0,"sessions":0,"complexity":2.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Controller/Backend/Response/RecordListResponse.php","totals":{"files":0,"lines":9,"hits":9,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":2,"messages":0,"sessions":0,"complexity":2.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Controller/Backend/Response/SuccessResponse.php","totals":{"files":0,"lines":6,"hits":6,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":2,"messages":0,"sessions":0,"complexity":2.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Controller/Backend/Response/TableListResponse.php","totals":{"files":0,"lines":7,"hits":7,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":2,"messages":0,"sessions":0,"complexity":2.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Controller/Backend/Response/TaskExecutionResponse.php","totals":{"files":0,"lines":26,"hits":26,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":3,"messages":0,"sessions":0,"complexity":3.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Controller/Backend/Response/TaskInputResponse.php","totals":{"files":0,"lines":9,"hits":9,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":2,"messages":0,"sessions":0,"complexity":2.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Controller/Backend/Response/TestConfigurationResponse.php","totals":{"files":0,"lines":21,"hits":21,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":4,"messages":0,"sessions":0,"complexity":4.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Controller/Backend/Response/TestConnectionResponse.php","totals":{"files":0,"lines":16,"hits":16,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":3,"messages":0,"sessions":0,"complexity":4.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Controller/Backend/Response/ToggleActiveResponse.php","totals":{"files":0,"lines":7,"hits":7,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":2,"messages":0,"sessions":0,"complexity":2.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Controller/Backend/Response/UsageResponse.php","totals":{"files":0,"lines":13,"hits":13,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":3,"messages":0,"sessions":0,"complexity":3.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Controller/Backend/Response/WizardSaveResponse.php","totals":{"files":0,"lines":20,"hits":20,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":3,"messages":0,"sessions":0,"complexity":3.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Controller/Backend/Response/WizardTestConnectionResponse.php","totals":{"files":0,"lines":11,"hits":11,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":3,"messages":0,"sessions":0,"complexity":3.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/DependencyInjection/ProviderCompilerPass.php","totals":{"files":0,"lines":34,"hits":32,"misses":2,"partials":0,"coverage":94.11,"branches":0,"methods":2,"messages":0,"sessions":0,"complexity":15.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/DependencyInjection/TranslatorCompilerPass.php","totals":{"files":0,"lines":19,"hits":16,"misses":3,"partials":0,"coverage":84.21,"branches":0,"methods":2,"messages":0,"sessions":0,"complexity":9.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Domain/DTO/BudgetCheckResult.php","totals":{"files":0,"lines":18,"hits":18,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":4,"messages":0,"sessions":0,"complexity":6.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Domain/DTO/CapabilitySet.php","totals":{"files":0,"lines":53,"hits":53,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":12,"messages":0,"sessions":0,"complexity":23.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Domain/DTO/FallbackChain.php","totals":{"files":0,"lines":58,"hits":58,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":13,"messages":0,"sessions":0,"complexity":24.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Domain/DTO/ModelSelectionCriteria.php","totals":{"files":0,"lines":80,"hits":80,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":14,"messages":0,"sessions":0,"complexity":24.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Domain/DTO/ProviderOptions.php","totals":{"files":0,"lines":82,"hits":82,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":12,"messages":0,"sessions":0,"complexity":42.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Domain/Repository/LlmConfigurationRepository.php","totals":{"files":0,"lines":72,"hits":64,"misses":8,"partials":0,"coverage":88.88,"branches":0,"methods":8,"messages":0,"sessions":0,"complexity":15.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Domain/Repository/ModelRepository.php","totals":{"files":0,"lines":132,"hits":131,"misses":1,"partials":0,"coverage":99.24,"branches":0,"methods":19,"messages":0,"sessions":0,"complexity":31.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Domain/Repository/PromptSnippetRepository.php","totals":{"files":0,"lines":53,"hits":44,"misses":9,"partials":0,"coverage":83.01,"branches":0,"methods":7,"messages":0,"sessions":0,"complexity":16.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Domain/Repository/ProviderRepository.php","totals":{"files":0,"lines":86,"hits":85,"misses":1,"partials":0,"coverage":98.83,"branches":0,"methods":10,"messages":0,"sessions":0,"complexity":15.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Domain/Repository/SkillRepository.php","totals":{"files":0,"lines":49,"hits":43,"misses":6,"partials":0,"coverage":87.75,"branches":0,"methods":8,"messages":0,"sessions":0,"complexity":15.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Domain/Repository/SkillSourceRepository.php","totals":{"files":0,"lines":5,"hits":0,"misses":5,"partials":0,"coverage":0.0,"branches":0,"methods":1,"messages":0,"sessions":0,"complexity":1.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Domain/Repository/TaskRepository.php","totals":{"files":0,"lines":89,"hits":89,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":12,"messages":0,"sessions":0,"complexity":16.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Domain/Repository/UserBudgetRepository.php","totals":{"files":0,"lines":24,"hits":23,"misses":1,"partials":0,"coverage":95.83,"branches":0,"methods":3,"messages":0,"sessions":0,"complexity":7.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Domain/ValueObject/ChatMessage.php","totals":{"files":0,"lines":145,"hits":143,"misses":2,"partials":0,"coverage":98.62,"branches":0,"methods":17,"messages":0,"sessions":0,"complexity":51.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Domain/ValueObject/InjectionFinding.php","totals":{"files":0,"lines":8,"hits":0,"misses":8,"partials":0,"coverage":0.0,"branches":0,"methods":2,"messages":0,"sessions":0,"complexity":2.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Domain/ValueObject/InjectionScanResult.php","totals":{"files":0,"lines":14,"hits":0,"misses":14,"partials":0,"coverage":0.0,"branches":0,"methods":5,"messages":0,"sessions":0,"complexity":8.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Domain/ValueObject/LogExceptionEntry.php","totals":{"files":0,"lines":2,"hits":0,"misses":2,"partials":0,"coverage":0.0,"branches":0,"methods":1,"messages":0,"sessions":0,"complexity":1.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Domain/ValueObject/MarketplaceEntry.php","totals":{"files":0,"lines":2,"hits":0,"misses":2,"partials":0,"coverage":0.0,"branches":0,"methods":1,"messages":0,"sessions":0,"complexity":1.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Domain/ValueObject/ParsedSkill.php","totals":{"files":0,"lines":2,"hits":0,"misses":2,"partials":0,"coverage":0.0,"branches":0,"methods":1,"messages":0,"sessions":0,"complexity":1.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Domain/ValueObject/RunStep.php","totals":{"files":0,"lines":67,"hits":57,"misses":10,"partials":0,"coverage":85.07,"branches":0,"methods":3,"messages":0,"sessions":0,"complexity":14.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Domain/ValueObject/SkillCompositionResult.php","totals":{"files":0,"lines":2,"hits":0,"misses":2,"partials":0,"coverage":0.0,"branches":0,"methods":1,"messages":0,"sessions":0,"complexity":1.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Domain/ValueObject/SyncResult.php","totals":{"files":0,"lines":2,"hits":0,"misses":2,"partials":0,"coverage":0.0,"branches":0,"methods":1,"messages":0,"sessions":0,"complexity":1.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Domain/ValueObject/ToolCall.php","totals":{"files":0,"lines":56,"hits":55,"misses":1,"partials":0,"coverage":98.21,"branches":0,"methods":7,"messages":0,"sessions":0,"complexity":20.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Domain/ValueObject/ToolInvocation.php","totals":{"files":0,"lines":2,"hits":0,"misses":2,"partials":0,"coverage":0.0,"branches":0,"methods":1,"messages":0,"sessions":0,"complexity":1.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Domain/ValueObject/ToolLoopResult.php","totals":{"files":0,"lines":2,"hits":0,"misses":2,"partials":0,"coverage":0.0,"branches":0,"methods":1,"messages":0,"sessions":0,"complexity":1.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Domain/ValueObject/ToolSpec.php","totals":{"files":0,"lines":49,"hits":49,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":6,"messages":0,"sessions":0,"complexity":17.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Domain/ValueObject/VisionContent.php","totals":{"files":0,"lines":82,"hits":76,"misses":6,"partials":0,"coverage":92.68,"branches":0,"methods":9,"messages":0,"sessions":0,"complexity":32.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Exception/BudgetExceededException.php","totals":{"files":0,"lines":2,"hits":2,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":1,"messages":0,"sessions":0,"complexity":1.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Form/Element/ModelIdElement.php","totals":{"files":0,"lines":71,"hits":71,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":3,"messages":0,"sessions":0,"complexity":16.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Form/FieldWizard/ModelConstraintsWizard.php","totals":{"files":0,"lines":12,"hits":12,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":2,"messages":0,"sessions":0,"complexity":2.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Form/Tca/ToolGroupItems.php","totals":{"files":0,"lines":22,"hits":21,"misses":1,"partials":0,"coverage":95.45,"branches":0,"methods":1,"messages":0,"sessions":0,"complexity":9.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Hook/ProviderEndpointNormalizationHook.php","totals":{"files":0,"lines":20,"hits":16,"misses":4,"partials":0,"coverage":80.0,"branches":0,"methods":2,"messages":0,"sessions":0,"complexity":13.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Provider/AbstractProvider.php","totals":{"files":0,"lines":257,"hits":251,"misses":6,"partials":0,"coverage":97.66,"branches":0,"methods":30,"messages":0,"sessions":0,"complexity":97.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Provider/ClaudeProvider.php","totals":{"files":0,"lines":392,"hits":379,"misses":13,"partials":0,"coverage":96.68,"branches":0,"methods":30,"messages":0,"sessions":0,"complexity":110.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Provider/GeminiProvider.php","totals":{"files":0,"lines":475,"hits":460,"misses":15,"partials":0,"coverage":96.84,"branches":0,"methods":31,"messages":0,"sessions":0,"complexity":127.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Provider/GroqProvider.php","totals":{"files":0,"lines":156,"hits":155,"misses":1,"partials":0,"coverage":99.35,"branches":0,"methods":16,"messages":0,"sessions":0,"complexity":40.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Provider/MistralProvider.php","totals":{"files":0,"lines":174,"hits":172,"misses":2,"partials":0,"coverage":98.85,"branches":0,"methods":15,"messages":0,"sessions":0,"complexity":41.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Provider/OllamaProvider.php","totals":{"files":0,"lines":254,"hits":247,"misses":7,"partials":0,"coverage":97.24,"branches":0,"methods":20,"messages":0,"sessions":0,"complexity":78.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Provider/OpenAiProvider.php","totals":{"files":0,"lines":349,"hits":343,"misses":6,"partials":0,"coverage":98.28,"branches":0,"methods":25,"messages":0,"sessions":0,"complexity":78.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Provider/OpenRouterProvider.php","totals":{"files":0,"lines":385,"hits":383,"misses":2,"partials":0,"coverage":99.48,"branches":0,"methods":26,"messages":0,"sessions":0,"complexity":82.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Provider/ProviderAdapterRegistry.php","totals":{"files":0,"lines":107,"hits":107,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":10,"messages":0,"sessions":0,"complexity":30.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Provider/ResponseParserTrait.php","totals":{"files":0,"lines":115,"hits":115,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":18,"messages":0,"sessions":0,"complexity":55.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Provider/CircuitBreaker/CacheCircuitBreakerStore.php","totals":{"files":0,"lines":31,"hits":20,"misses":11,"partials":0,"coverage":64.51,"branches":0,"methods":5,"messages":0,"sessions":0,"complexity":9.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Provider/CircuitBreaker/CircuitBreakerConfig.php","totals":{"files":0,"lines":17,"hits":14,"misses":3,"partials":0,"coverage":82.35,"branches":0,"methods":3,"messages":0,"sessions":0,"complexity":11.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Provider/CircuitBreaker/CircuitState.php","totals":{"files":0,"lines":27,"hits":27,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":7,"messages":0,"sessions":0,"complexity":15.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Provider/Exception/CircuitOpenException.php","totals":{"files":0,"lines":8,"hits":0,"misses":8,"partials":0,"coverage":0.0,"branches":0,"methods":1,"messages":0,"sessions":0,"complexity":1.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Provider/Exception/FallbackChainExhaustedException.php","totals":{"files":0,"lines":25,"hits":23,"misses":2,"partials":0,"coverage":92.0,"branches":0,"methods":6,"messages":0,"sessions":0,"complexity":9.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Provider/Middleware/BudgetMiddleware.php","totals":{"files":0,"lines":17,"hits":17,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":5,"messages":0,"sessions":0,"complexity":9.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Provider/Middleware/CacheMiddleware.php","totals":{"files":0,"lines":39,"hits":39,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":6,"messages":0,"sessions":0,"complexity":17.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Provider/Middleware/CircuitBreakerMiddleware.php","totals":{"files":0,"lines":49,"hits":49,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":8,"messages":0,"sessions":0,"complexity":19.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Provider/Middleware/FallbackMiddleware.php","totals":{"files":0,"lines":77,"hits":76,"misses":1,"partials":0,"coverage":98.7,"branches":0,"methods":4,"messages":0,"sessions":0,"complexity":14.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Provider/Middleware/IdempotencyMiddleware.php","totals":{"files":0,"lines":38,"hits":38,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":9,"messages":0,"sessions":0,"complexity":18.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Provider/Middleware/MiddlewarePipeline.php","totals":{"files":0,"lines":11,"hits":11,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":2,"messages":0,"sessions":0,"complexity":4.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Provider/Middleware/ProviderCallContext.php","totals":{"files":0,"lines":54,"hits":54,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":10,"messages":0,"sessions":0,"complexity":15.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Provider/Middleware/TelemetryMiddleware.php","totals":{"files":0,"lines":79,"hits":76,"misses":3,"partials":0,"coverage":96.2,"branches":0,"methods":8,"messages":0,"sessions":0,"complexity":19.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Provider/Middleware/TelemetrySignals.php","totals":{"files":0,"lines":20,"hits":10,"misses":10,"partials":0,"coverage":50.0,"branches":0,"methods":7,"messages":0,"sessions":0,"complexity":9.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Provider/Middleware/UsageMiddleware.php","totals":{"files":0,"lines":101,"hits":101,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":8,"messages":0,"sessions":0,"complexity":43.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Analytics/AnalyticsPeriod.php","totals":{"files":0,"lines":12,"hits":10,"misses":2,"partials":0,"coverage":83.33,"branches":0,"methods":3,"messages":0,"sessions":0,"complexity":7.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Budget/AutoPopulatesBeUserUidTrait.php","totals":{"files":0,"lines":7,"hits":7,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":1,"messages":0,"sessions":0,"complexity":4.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Budget/BackendUserContextResolver.php","totals":{"files":0,"lines":8,"hits":8,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":1,"messages":0,"sessions":0,"complexity":4.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Budget/UserBudgetUsageWindows.php","totals":{"files":0,"lines":60,"hits":38,"misses":22,"partials":0,"coverage":63.33,"branches":0,"methods":3,"messages":0,"sessions":0,"complexity":16.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/BudgetService.php","totals":{"files":0,"lines":90,"hits":90,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":5,"messages":0,"sessions":0,"complexity":28.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/CacheManager.php","totals":{"files":0,"lines":80,"hits":80,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":18,"messages":0,"sessions":0,"complexity":25.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/ConfigurationResolver.php","totals":{"files":0,"lines":71,"hits":65,"misses":6,"partials":0,"coverage":91.54,"branches":0,"methods":7,"messages":0,"sessions":0,"complexity":26.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/EmbedCacheKeyBuilder.php","totals":{"files":0,"lines":17,"hits":17,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":2,"messages":0,"sessions":0,"complexity":3.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/KeyedProviderRegistry.php","totals":{"files":0,"lines":50,"hits":50,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":10,"messages":0,"sessions":0,"complexity":19.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/LlmConfigurationService.php","totals":{"files":0,"lines":82,"hits":77,"misses":5,"partials":0,"coverage":93.9,"branches":0,"methods":16,"messages":0,"sessions":0,"complexity":30.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/LlmServiceManager.php","totals":{"files":0,"lines":560,"hits":508,"misses":52,"partials":0,"coverage":90.71,"branches":0,"methods":48,"messages":0,"sessions":0,"complexity":125.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/MessageShaper.php","totals":{"files":0,"lines":27,"hits":27,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":2,"messages":0,"sessions":0,"complexity":14.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/ModelSelectionService.php","totals":{"files":0,"lines":112,"hits":108,"misses":4,"partials":0,"coverage":96.42,"branches":0,"methods":15,"messages":0,"sessions":0,"complexity":37.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/TestPromptResolverService.php","totals":{"files":0,"lines":23,"hits":19,"misses":4,"partials":0,"coverage":82.6,"branches":0,"methods":4,"messages":0,"sessions":0,"complexity":14.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/UsageAnalyticsService.php","totals":{"files":0,"lines":237,"hits":217,"misses":20,"partials":0,"coverage":91.56,"branches":0,"methods":18,"messages":0,"sessions":0,"complexity":70.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/UsageTrackerService.php","totals":{"files":0,"lines":137,"hits":137,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":7,"messages":0,"sessions":0,"complexity":13.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/WizardGeneratorService.php","totals":{"files":0,"lines":290,"hits":290,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":22,"messages":0,"sessions":0,"complexity":81.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Evaluation/Assertion.php","totals":{"files":0,"lines":21,"hits":21,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":6,"messages":0,"sessions":0,"complexity":9.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Evaluation/BuiltinGoldenPromptSetProvider.php","totals":{"files":0,"lines":30,"hits":30,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":1,"messages":0,"sessions":0,"complexity":1.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Evaluation/EvaluationQualityScoreProvider.php","totals":{"files":0,"lines":6,"hits":6,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":2,"messages":0,"sessions":0,"complexity":3.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Evaluation/EvaluationResultRepository.php","totals":{"files":0,"lines":170,"hits":169,"misses":1,"partials":0,"coverage":99.41,"branches":0,"methods":17,"messages":0,"sessions":0,"complexity":41.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Evaluation/EvaluationResultSummary.php","totals":{"files":0,"lines":2,"hits":0,"misses":2,"partials":0,"coverage":0.0,"branches":0,"methods":1,"messages":0,"sessions":0,"complexity":1.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Evaluation/EvaluationService.php","totals":{"files":0,"lines":30,"hits":28,"misses":2,"partials":0,"coverage":93.33,"branches":0,"methods":4,"messages":0,"sessions":0,"complexity":9.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Evaluation/GoldenPrompt.php","totals":{"files":0,"lines":13,"hits":9,"misses":4,"partials":0,"coverage":69.23,"branches":0,"methods":2,"messages":0,"sessions":0,"complexity":7.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Evaluation/GoldenPromptSet.php","totals":{"files":0,"lines":23,"hits":20,"misses":3,"partials":0,"coverage":86.95,"branches":0,"methods":1,"messages":0,"sessions":0,"complexity":7.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Evaluation/GoldenPromptSetRegistry.php","totals":{"files":0,"lines":14,"hits":14,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":4,"messages":0,"sessions":0,"complexity":7.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Evaluation/GradingResult.php","totals":{"files":0,"lines":2,"hits":0,"misses":2,"partials":0,"coverage":0.0,"branches":0,"methods":1,"messages":0,"sessions":0,"complexity":1.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Evaluation/GradingService.php","totals":{"files":0,"lines":13,"hits":9,"misses":4,"partials":0,"coverage":69.23,"branches":0,"methods":5,"messages":0,"sessions":0,"complexity":7.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Evaluation/PromptEvaluation.php","totals":{"files":0,"lines":11,"hits":0,"misses":11,"partials":0,"coverage":0.0,"branches":0,"methods":2,"messages":0,"sessions":0,"complexity":2.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Evaluation/QualityAwareModelSelector.php","totals":{"files":0,"lines":26,"hits":24,"misses":2,"partials":0,"coverage":92.3,"branches":0,"methods":2,"messages":0,"sessions":0,"complexity":13.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Evaluation/RegressionDetector.php","totals":{"files":0,"lines":35,"hits":35,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":2,"messages":0,"sessions":0,"complexity":8.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Evaluation/RegressionReport.php","totals":{"files":0,"lines":2,"hits":0,"misses":2,"partials":0,"coverage":0.0,"branches":0,"methods":1,"messages":0,"sessions":0,"complexity":1.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Evaluation/RegressionThresholds.php","totals":{"files":0,"lines":5,"hits":5,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":1,"messages":0,"sessions":0,"complexity":7.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Evaluation/SetEvaluationResult.php","totals":{"files":0,"lines":40,"hits":35,"misses":5,"partials":0,"coverage":87.5,"branches":0,"methods":7,"messages":0,"sessions":0,"complexity":14.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Evaluation/Grader/DeterministicGrader.php","totals":{"files":0,"lines":34,"hits":28,"misses":6,"partials":0,"coverage":82.35,"branches":0,"methods":6,"messages":0,"sessions":0,"complexity":15.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Feature/CompletionService.php","totals":{"files":0,"lines":165,"hits":152,"misses":13,"partials":0,"coverage":92.12,"branches":0,"methods":25,"messages":0,"sessions":0,"complexity":60.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Feature/EmbeddingService.php","totals":{"files":0,"lines":54,"hits":54,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":10,"messages":0,"sessions":0,"complexity":19.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Feature/ToolCallingService.php","totals":{"files":0,"lines":10,"hits":10,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":3,"messages":0,"sessions":0,"complexity":3.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Feature/TranslationService.php","totals":{"files":0,"lines":349,"hits":345,"misses":4,"partials":0,"coverage":98.85,"branches":0,"methods":27,"messages":0,"sessions":0,"complexity":102.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Feature/VisionService.php","totals":{"files":0,"lines":74,"hits":74,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":9,"messages":0,"sessions":0,"complexity":22.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Health/ProviderHealthRepository.php","totals":{"files":0,"lines":41,"hits":40,"misses":1,"partials":0,"coverage":97.56,"branches":0,"methods":2,"messages":0,"sessions":0,"complexity":8.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Health/ProviderHealthScore.php","totals":{"files":0,"lines":16,"hits":16,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":3,"messages":0,"sessions":0,"complexity":4.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Health/ProviderHealthService.php","totals":{"files":0,"lines":59,"hits":53,"misses":6,"partials":0,"coverage":89.83,"branches":0,"methods":10,"messages":0,"sessions":0,"complexity":27.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Option/AbstractOptions.php","totals":{"files":0,"lines":46,"hits":34,"misses":12,"partials":0,"coverage":73.91,"branches":0,"methods":12,"messages":0,"sessions":0,"complexity":20.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Option/BudgetFieldsTrait.php","totals":{"files":0,"lines":26,"hits":26,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":6,"messages":0,"sessions":0,"complexity":10.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Option/ChatOptions.php","totals":{"files":0,"lines":147,"hits":141,"misses":6,"partials":0,"coverage":95.91,"branches":0,"methods":36,"messages":0,"sessions":0,"complexity":44.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Option/EmbeddingOptions.php","totals":{"files":0,"lines":56,"hits":56,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":15,"messages":0,"sessions":0,"complexity":17.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Option/ToolOptions.php","totals":{"files":0,"lines":86,"hits":79,"misses":7,"partials":0,"coverage":91.86,"branches":0,"methods":14,"messages":0,"sessions":0,"complexity":30.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Option/TranslationOptions.php","totals":{"files":0,"lines":155,"hits":139,"misses":16,"partials":0,"coverage":89.67,"branches":0,"methods":37,"messages":0,"sessions":0,"complexity":43.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Option/VisionOptions.php","totals":{"files":0,"lines":72,"hits":72,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":17,"messages":0,"sessions":0,"complexity":20.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Overview/OverviewCardStatus.php","totals":{"files":0,"lines":6,"hits":2,"misses":4,"partials":0,"coverage":33.33,"branches":0,"methods":3,"messages":0,"sessions":0,"complexity":3.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Overview/OverviewReadinessService.php","totals":{"files":0,"lines":44,"hits":44,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":6,"messages":0,"sessions":0,"complexity":15.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Overview/ProviderReachabilityService.php","totals":{"files":0,"lines":26,"hits":25,"misses":1,"partials":0,"coverage":96.15,"branches":0,"methods":4,"messages":0,"sessions":0,"complexity":9.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Preset/ConfigurationPreset.php","totals":{"files":0,"lines":73,"hits":73,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":5,"messages":0,"sessions":0,"complexity":23.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Preset/ConfigurationPresetDiffService.php","totals":{"files":0,"lines":55,"hits":52,"misses":3,"partials":0,"coverage":94.54,"branches":0,"methods":8,"messages":0,"sessions":0,"complexity":23.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Preset/ConfigurationPresetImportService.php","totals":{"files":0,"lines":163,"hits":154,"misses":9,"partials":0,"coverage":94.47,"branches":0,"methods":11,"messages":0,"sessions":0,"complexity":55.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Preset/ConfigurationPresetRegistry.php","totals":{"files":0,"lines":28,"hits":28,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":5,"messages":0,"sessions":0,"complexity":14.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Preset/PresetDiff.php","totals":{"files":0,"lines":6,"hits":0,"misses":6,"partials":0,"coverage":0.0,"branches":0,"methods":3,"messages":0,"sessions":0,"complexity":3.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Preset/PresetFieldDiff.php","totals":{"files":0,"lines":2,"hits":0,"misses":2,"partials":0,"coverage":0.0,"branches":0,"methods":1,"messages":0,"sessions":0,"complexity":1.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Preset/PresetPreflightResult.php","totals":{"files":0,"lines":6,"hits":0,"misses":6,"partials":0,"coverage":0.0,"branches":0,"methods":3,"messages":0,"sessions":0,"complexity":3.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Privacy/ContentRedactor.php","totals":{"files":0,"lines":10,"hits":10,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":1,"messages":0,"sessions":0,"complexity":4.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Privacy/PrivacyPolicy.php","totals":{"files":0,"lines":32,"hits":30,"misses":2,"partials":0,"coverage":93.75,"branches":0,"methods":6,"messages":0,"sessions":0,"complexity":18.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Prompt/PromptSnippetComposer.php","totals":{"files":0,"lines":10,"hits":10,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":1,"messages":0,"sessions":0,"complexity":4.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Retrieval/AccessContext.php","totals":{"files":0,"lines":8,"hits":0,"misses":8,"partials":0,"coverage":0.0,"branches":0,"methods":4,"messages":0,"sessions":0,"complexity":4.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Retrieval/DatabaseSearchBackend.php","totals":{"files":0,"lines":280,"hits":269,"misses":11,"partials":0,"coverage":96.07,"branches":0,"methods":22,"messages":0,"sessions":0,"complexity":82.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Retrieval/EvidenceList.php","totals":{"files":0,"lines":6,"hits":0,"misses":6,"partials":0,"coverage":0.0,"branches":0,"methods":3,"messages":0,"sessions":0,"complexity":3.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Retrieval/EvidenceSource.php","totals":{"files":0,"lines":2,"hits":0,"misses":2,"partials":0,"coverage":0.0,"branches":0,"methods":1,"messages":0,"sessions":0,"complexity":1.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Retrieval/ExcerptBuilder.php","totals":{"files":0,"lines":13,"hits":13,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":2,"messages":0,"sessions":0,"complexity":7.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Retrieval/IndexedSearchBackend.php","totals":{"files":0,"lines":200,"hits":177,"misses":23,"partials":0,"coverage":88.5,"branches":0,"methods":15,"messages":0,"sessions":0,"complexity":42.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Retrieval/KeSearchBackend.php","totals":{"files":0,"lines":175,"hits":128,"misses":47,"partials":0,"coverage":73.14,"branches":0,"methods":14,"messages":0,"sessions":0,"complexity":57.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Retrieval/RetrievalQuery.php","totals":{"files":0,"lines":16,"hits":16,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":2,"messages":0,"sessions":0,"complexity":7.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Retrieval/RetrievalService.php","totals":{"files":0,"lines":49,"hits":45,"misses":4,"partials":0,"coverage":91.83,"branches":0,"methods":6,"messages":0,"sessions":0,"complexity":20.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Retrieval/SolrHttpClient.php","totals":{"files":0,"lines":7,"hits":0,"misses":7,"partials":0,"coverage":0.0,"branches":0,"methods":2,"messages":0,"sessions":0,"complexity":2.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Retrieval/SolrSearchBackend.php","totals":{"files":0,"lines":196,"hits":169,"misses":27,"partials":0,"coverage":86.22,"branches":0,"methods":16,"messages":0,"sessions":0,"complexity":86.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Retrieval/SourceReference.php","totals":{"files":0,"lines":10,"hits":10,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":3,"messages":0,"sessions":0,"complexity":5.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/SetupWizard/ConfigurationGenerator.php","totals":{"files":0,"lines":249,"hits":249,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":19,"messages":0,"sessions":0,"complexity":68.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/SetupWizard/ModelDiscovery.php","totals":{"files":0,"lines":78,"hits":78,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":6,"messages":0,"sessions":0,"complexity":18.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/SetupWizard/ProviderDetector.php","totals":{"files":0,"lines":101,"hits":100,"misses":1,"partials":0,"coverage":99.0,"branches":0,"methods":9,"messages":0,"sessions":0,"complexity":32.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/SetupWizard/SecureHttpDispatchTrait.php","totals":{"files":0,"lines":11,"hits":8,"misses":3,"partials":0,"coverage":72.72,"branches":0,"methods":2,"messages":0,"sessions":0,"complexity":4.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/SetupWizard/DTO/DetectedProvider.php","totals":{"files":0,"lines":10,"hits":10,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":2,"messages":0,"sessions":0,"complexity":2.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/SetupWizard/DTO/DiscoveredModel.php","totals":{"files":0,"lines":14,"hits":14,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":2,"messages":0,"sessions":0,"complexity":2.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/SetupWizard/DTO/SuggestedConfiguration.php","totals":{"files":0,"lines":13,"hits":13,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":2,"messages":0,"sessions":0,"complexity":2.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/SetupWizard/DTO/WizardResult.php","totals":{"files":0,"lines":10,"hits":10,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":2,"messages":0,"sessions":0,"complexity":2.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/SetupWizard/Exception/HostNotAllowedException.php","totals":{"files":0,"lines":4,"hits":0,"misses":4,"partials":0,"coverage":0.0,"branches":0,"methods":1,"messages":0,"sessions":0,"complexity":1.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Skill/Exception/GitHubApiException.php","totals":{"files":0,"lines":8,"hits":0,"misses":8,"partials":0,"coverage":0.0,"branches":0,"methods":4,"messages":0,"sessions":0,"complexity":4.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Skill/Exception/HostNotAllowedException.php","totals":{"files":0,"lines":2,"hits":0,"misses":2,"partials":0,"coverage":0.0,"branches":0,"methods":1,"messages":0,"sessions":0,"complexity":1.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Skill/Exception/SkillParseException.php","totals":{"files":0,"lines":2,"hits":0,"misses":2,"partials":0,"coverage":0.0,"branches":0,"methods":1,"messages":0,"sessions":0,"complexity":1.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Skill/GitHubClient.php","totals":{"files":0,"lines":79,"hits":57,"misses":22,"partials":0,"coverage":72.15,"branches":0,"methods":11,"messages":0,"sessions":0,"complexity":35.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Skill/MarketplaceParser.php","totals":{"files":0,"lines":52,"hits":45,"misses":7,"partials":0,"coverage":86.53,"branches":0,"methods":3,"messages":0,"sessions":0,"complexity":30.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Skill/PromptInjectionScanner.php","totals":{"files":0,"lines":16,"hits":16,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":2,"messages":0,"sessions":0,"complexity":6.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Skill/SkillAuditRepository.php","totals":{"files":0,"lines":43,"hits":43,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":5,"messages":0,"sessions":0,"complexity":5.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Skill/SkillAuditService.php","totals":{"files":0,"lines":43,"hits":29,"misses":14,"partials":0,"coverage":67.44,"branches":0,"methods":5,"messages":0,"sessions":0,"complexity":8.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Skill/SkillComposer.php","totals":{"files":0,"lines":112,"hits":111,"misses":1,"partials":0,"coverage":99.1,"branches":0,"methods":12,"messages":0,"sessions":0,"complexity":33.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Skill/SkillComposerFactory.php","totals":{"files":0,"lines":42,"hits":42,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":7,"messages":0,"sessions":0,"complexity":23.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Skill/SkillDiscovery.php","totals":{"files":0,"lines":9,"hits":9,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":1,"messages":0,"sessions":0,"complexity":5.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Skill/SkillInjectionService.php","totals":{"files":0,"lines":113,"hits":100,"misses":13,"partials":0,"coverage":88.49,"branches":0,"methods":12,"messages":0,"sessions":0,"complexity":46.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Skill/SkillManifestVerifier.php","totals":{"files":0,"lines":16,"hits":16,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":3,"messages":0,"sessions":0,"complexity":6.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Skill/SkillMarkdownParser.php","totals":{"files":0,"lines":44,"hits":41,"misses":3,"partials":0,"coverage":93.18,"branches":0,"methods":4,"messages":0,"sessions":0,"complexity":24.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Skill/SkillSyncService.php","totals":{"files":0,"lines":337,"hits":318,"misses":19,"partials":0,"coverage":94.36,"branches":0,"methods":27,"messages":0,"sessions":0,"complexity":115.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Streaming/StreamingDispatcher.php","totals":{"files":0,"lines":264,"hits":246,"misses":18,"partials":0,"coverage":93.18,"branches":0,"methods":23,"messages":0,"sessions":0,"complexity":75.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Task/DeprecationLogReader.php","totals":{"files":0,"lines":16,"hits":12,"misses":4,"partials":0,"coverage":75.0,"branches":0,"methods":1,"messages":0,"sessions":0,"complexity":3.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Task/RecordTableReader.php","totals":{"files":0,"lines":102,"hits":101,"misses":1,"partials":0,"coverage":99.01,"branches":0,"methods":10,"messages":0,"sessions":0,"complexity":37.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Task/SystemLogReader.php","totals":{"files":0,"lines":13,"hits":0,"misses":13,"partials":0,"coverage":0.0,"branches":0,"methods":2,"messages":0,"sessions":0,"complexity":3.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Task/TaskExecutionResult.php","totals":{"files":0,"lines":2,"hits":0,"misses":2,"partials":0,"coverage":0.0,"branches":0,"methods":1,"messages":0,"sessions":0,"complexity":1.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Task/TaskExecutionService.php","totals":{"files":0,"lines":46,"hits":46,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":2,"messages":0,"sessions":0,"complexity":13.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Task/TaskInputResolver.php","totals":{"files":0,"lines":97,"hits":96,"misses":1,"partials":0,"coverage":98.96,"branches":0,"methods":8,"messages":0,"sessions":0,"complexity":52.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Telemetry/TelemetryRecord.php","totals":{"files":0,"lines":2,"hits":2,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":1,"messages":0,"sessions":0,"complexity":1.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Telemetry/TelemetryRepository.php","totals":{"files":0,"lines":307,"hits":306,"misses":1,"partials":0,"coverage":99.67,"branches":0,"methods":16,"messages":0,"sessions":0,"complexity":39.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Tool/AllowedToolsResolver.php","totals":{"files":0,"lines":37,"hits":37,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":7,"messages":0,"sessions":0,"complexity":19.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Tool/EgressPolicyService.php","totals":{"files":0,"lines":88,"hits":59,"misses":29,"partials":0,"coverage":67.04,"branches":0,"methods":10,"messages":0,"sessions":0,"complexity":54.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Tool/FalStorageGate.php","totals":{"files":0,"lines":102,"hits":87,"misses":15,"partials":0,"coverage":85.29,"branches":0,"methods":9,"messages":0,"sessions":0,"complexity":41.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Tool/LogExceptionReader.php","totals":{"files":0,"lines":93,"hits":87,"misses":6,"partials":0,"coverage":93.54,"branches":0,"methods":7,"messages":0,"sessions":0,"complexity":41.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Tool/RunAugmentation.php","totals":{"files":0,"lines":4,"hits":0,"misses":4,"partials":0,"coverage":0.0,"branches":0,"methods":2,"messages":0,"sessions":0,"complexity":2.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Tool/RunTrace.php","totals":{"files":0,"lines":112,"hits":109,"misses":3,"partials":0,"coverage":97.32,"branches":0,"methods":14,"messages":0,"sessions":0,"complexity":26.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Tool/SourcePathGuard.php","totals":{"files":0,"lines":64,"hits":62,"misses":2,"partials":0,"coverage":96.87,"branches":0,"methods":6,"messages":0,"sessions":0,"complexity":30.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Tool/TableReadAccessService.php","totals":{"files":0,"lines":32,"hits":31,"misses":1,"partials":0,"coverage":96.87,"branches":0,"methods":4,"messages":0,"sessions":0,"complexity":16.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Tool/ToolAvailabilityService.php","totals":{"files":0,"lines":63,"hits":61,"misses":2,"partials":0,"coverage":96.82,"branches":0,"methods":5,"messages":0,"sessions":0,"complexity":17.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Tool/ToolGroupStateRepository.php","totals":{"files":0,"lines":38,"hits":38,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":3,"messages":0,"sessions":0,"complexity":7.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Tool/ToolLoopService.php","totals":{"files":0,"lines":818,"hits":794,"misses":24,"partials":0,"coverage":97.06,"branches":0,"methods":32,"messages":0,"sessions":0,"complexity":143.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Tool/ToolRegistry.php","totals":{"files":0,"lines":51,"hits":51,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":6,"messages":0,"sessions":0,"complexity":18.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Tool/ToolStateRepository.php","totals":{"files":0,"lines":38,"hits":37,"misses":1,"partials":0,"coverage":97.36,"branches":0,"methods":3,"messages":0,"sessions":0,"complexity":7.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Tool/Builtin/BrowseFalFolderTool.php","totals":{"files":0,"lines":81,"hits":72,"misses":9,"partials":0,"coverage":88.88,"branches":0,"methods":7,"messages":0,"sessions":0,"complexity":23.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Tool/Builtin/CheckTypoScriptTool.php","totals":{"files":0,"lines":75,"hits":70,"misses":5,"partials":0,"coverage":93.33,"branches":0,"methods":7,"messages":0,"sessions":0,"complexity":19.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Tool/Builtin/CollectsEnvironmentTrait.php","totals":{"files":0,"lines":11,"hits":11,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":1,"messages":0,"sessions":0,"complexity":5.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Tool/Builtin/FetchLogsTool.php","totals":{"files":0,"lines":56,"hits":49,"misses":7,"partials":0,"coverage":87.5,"branches":0,"methods":6,"messages":0,"sessions":0,"complexity":10.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Tool/Builtin/FindMissingFilesTool.php","totals":{"files":0,"lines":94,"hits":92,"misses":2,"partials":0,"coverage":97.87,"branches":0,"methods":6,"messages":0,"sessions":0,"complexity":19.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Tool/Builtin/FluidResolveTool.php","totals":{"files":0,"lines":69,"hits":61,"misses":8,"partials":0,"coverage":88.4,"branches":0,"methods":6,"messages":0,"sessions":0,"complexity":15.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Tool/Builtin/GetEnvRawTool.php","totals":{"files":0,"lines":25,"hits":18,"misses":7,"partials":0,"coverage":72.0,"branches":0,"methods":6,"messages":0,"sessions":0,"complexity":8.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Tool/Builtin/GetEnvTool.php","totals":{"files":0,"lines":31,"hits":27,"misses":4,"partials":0,"coverage":87.09,"branches":0,"methods":6,"messages":0,"sessions":0,"complexity":10.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Tool/Builtin/GetFalReferencesTool.php","totals":{"files":0,"lines":85,"hits":81,"misses":4,"partials":0,"coverage":95.29,"branches":0,"methods":6,"messages":0,"sessions":0,"complexity":18.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Tool/Builtin/GetFlexFormSchemaTool.php","totals":{"files":0,"lines":105,"hits":87,"misses":18,"partials":0,"coverage":82.85,"branches":0,"methods":9,"messages":0,"sessions":0,"complexity":39.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Tool/Builtin/GetFullTcaTool.php","totals":{"files":0,"lines":66,"hits":54,"misses":12,"partials":0,"coverage":81.81,"branches":0,"methods":7,"messages":0,"sessions":0,"complexity":24.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Tool/Builtin/GetLastExceptionTool.php","totals":{"files":0,"lines":92,"hits":77,"misses":15,"partials":0,"coverage":83.69,"branches":0,"methods":9,"messages":0,"sessions":0,"complexity":29.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Tool/Builtin/GetPageContentTool.php","totals":{"files":0,"lines":171,"hits":163,"misses":8,"partials":0,"coverage":95.32,"branches":0,"methods":10,"messages":0,"sessions":0,"complexity":43.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Tool/Builtin/GetPageTreeTool.php","totals":{"files":0,"lines":80,"hits":69,"misses":11,"partials":0,"coverage":86.25,"branches":0,"methods":7,"messages":0,"sessions":0,"complexity":16.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Tool/Builtin/GetPhpInfoRawTool.php","totals":{"files":0,"lines":29,"hits":17,"misses":12,"partials":0,"coverage":58.62,"branches":0,"methods":6,"messages":0,"sessions":0,"complexity":11.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Tool/Builtin/GetPhpInfoTool.php","totals":{"files":0,"lines":23,"hits":19,"misses":4,"partials":0,"coverage":82.6,"branches":0,"methods":5,"messages":0,"sessions":0,"complexity":6.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Tool/Builtin/GetRecordHistoryTool.php","totals":{"files":0,"lines":179,"hits":158,"misses":21,"partials":0,"coverage":88.26,"branches":0,"methods":13,"messages":0,"sessions":0,"complexity":60.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Tool/Builtin/GetSiteConfigTool.php","totals":{"files":0,"lines":81,"hits":74,"misses":7,"partials":0,"coverage":91.35,"branches":0,"methods":9,"messages":0,"sessions":0,"complexity":24.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Tool/Builtin/GetSystemStatusTool.php","totals":{"files":0,"lines":32,"hits":30,"misses":2,"partials":0,"coverage":93.75,"branches":0,"methods":7,"messages":0,"sessions":0,"complexity":9.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Tool/Builtin/GetTableSchemaTool.php","totals":{"files":0,"lines":93,"hits":81,"misses":12,"partials":0,"coverage":87.09,"branches":0,"methods":8,"messages":0,"sessions":0,"complexity":39.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Tool/Builtin/GetTcaTool.php","totals":{"files":0,"lines":59,"hits":49,"misses":10,"partials":0,"coverage":83.05,"branches":0,"methods":8,"messages":0,"sessions":0,"complexity":23.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Tool/Builtin/GetTsConfigTool.php","totals":{"files":0,"lines":68,"hits":60,"misses":8,"partials":0,"coverage":88.23,"branches":0,"methods":7,"messages":0,"sessions":0,"complexity":16.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Tool/Builtin/GetTypoScriptTool.php","totals":{"files":0,"lines":114,"hits":101,"misses":13,"partials":0,"coverage":88.59,"branches":0,"methods":11,"messages":0,"sessions":0,"complexity":31.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Tool/Builtin/ListBeGroupsTool.php","totals":{"files":0,"lines":37,"hits":32,"misses":5,"partials":0,"coverage":86.48,"branches":0,"methods":7,"messages":0,"sessions":0,"complexity":9.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Tool/Builtin/ListBeUsersRawTool.php","totals":{"files":0,"lines":46,"hits":40,"misses":6,"partials":0,"coverage":86.95,"branches":0,"methods":8,"messages":0,"sessions":0,"complexity":13.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Tool/Builtin/ListBeUsersTool.php","totals":{"files":0,"lines":47,"hits":42,"misses":5,"partials":0,"coverage":89.36,"branches":0,"methods":7,"messages":0,"sessions":0,"complexity":10.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Tool/Builtin/ListDeprecationsTool.php","totals":{"files":0,"lines":80,"hits":73,"misses":7,"partials":0,"coverage":91.25,"branches":0,"methods":9,"messages":0,"sessions":0,"complexity":28.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Tool/Builtin/ListExtensionsTool.php","totals":{"files":0,"lines":31,"hits":30,"misses":1,"partials":0,"coverage":96.77,"branches":0,"methods":6,"messages":0,"sessions":0,"complexity":11.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Tool/Builtin/ListFalStoragesTool.php","totals":{"files":0,"lines":40,"hits":37,"misses":3,"partials":0,"coverage":92.5,"branches":0,"methods":6,"messages":0,"sessions":0,"complexity":13.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Tool/Builtin/ListMiddlewaresTool.php","totals":{"files":0,"lines":40,"hits":35,"misses":5,"partials":0,"coverage":87.5,"branches":0,"methods":6,"messages":0,"sessions":0,"complexity":11.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Tool/Builtin/ListSchedulerTasksTool.php","totals":{"files":0,"lines":61,"hits":35,"misses":26,"partials":0,"coverage":57.37,"branches":0,"methods":6,"messages":0,"sessions":0,"complexity":18.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Tool/Builtin/ProbeUrlTool.php","totals":{"files":0,"lines":99,"hits":54,"misses":45,"partials":0,"coverage":54.54,"branches":0,"methods":9,"messages":0,"sessions":0,"complexity":24.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Tool/Builtin/ReadFalAssetMetaTool.php","totals":{"files":0,"lines":69,"hits":62,"misses":7,"partials":0,"coverage":89.85,"branches":0,"methods":6,"messages":0,"sessions":0,"complexity":12.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Tool/Builtin/ReadRecordsTool.php","totals":{"files":0,"lines":229,"hits":214,"misses":15,"partials":0,"coverage":93.44,"branches":0,"methods":14,"messages":0,"sessions":0,"complexity":97.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Tool/Builtin/ReadSourceTool.php","totals":{"files":0,"lines":55,"hits":53,"misses":2,"partials":0,"coverage":96.36,"branches":0,"methods":6,"messages":0,"sessions":0,"complexity":11.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Tool/Builtin/RendersTypoScriptTreeTrait.php","totals":{"files":0,"lines":56,"hits":50,"misses":6,"partials":0,"coverage":89.28,"branches":0,"methods":4,"messages":0,"sessions":0,"complexity":23.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Tool/Builtin/ResolveUrlTool.php","totals":{"files":0,"lines":115,"hits":92,"misses":23,"partials":0,"coverage":80.0,"branches":0,"methods":11,"messages":0,"sessions":0,"complexity":43.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Tool/Builtin/ResolvesLanguageLabelTrait.php","totals":{"files":0,"lines":10,"hits":10,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":1,"messages":0,"sessions":0,"complexity":5.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Tool/Builtin/SearchCodeTool.php","totals":{"files":0,"lines":121,"hits":104,"misses":17,"partials":0,"coverage":85.95,"branches":0,"methods":7,"messages":0,"sessions":0,"complexity":36.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Tool/Builtin/SearchFalFilesTool.php","totals":{"files":0,"lines":95,"hits":95,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":6,"messages":0,"sessions":0,"complexity":16.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Tool/Builtin/SearchRecordsTool.php","totals":{"files":0,"lines":199,"hits":191,"misses":8,"partials":0,"coverage":95.97,"branches":0,"methods":13,"messages":0,"sessions":0,"complexity":72.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Tool/Builtin/SiteFetchSourceTool.php","totals":{"files":0,"lines":35,"hits":35,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":6,"messages":0,"sessions":0,"complexity":11.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Tool/Builtin/SiteRagQueryTool.php","totals":{"files":0,"lines":74,"hits":73,"misses":1,"partials":0,"coverage":98.64,"branches":0,"methods":7,"messages":0,"sessions":0,"complexity":16.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Tool/Builtin/ValidateTcaTool.php","totals":{"files":0,"lines":146,"hits":131,"misses":15,"partials":0,"coverage":89.72,"branches":0,"methods":11,"messages":0,"sessions":0,"complexity":64.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Specialized/AbstractSpecializedService.php","totals":{"files":0,"lines":242,"hits":231,"misses":11,"partials":0,"coverage":95.45,"branches":0,"methods":37,"messages":0,"sessions":0,"complexity":103.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Specialized/MultipartBodyBuilderTrait.php","totals":{"files":0,"lines":41,"hits":38,"misses":3,"partials":0,"coverage":92.68,"branches":0,"methods":5,"messages":0,"sessions":0,"complexity":16.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Specialized/ServiceConfigurationTrait.php","totals":{"files":0,"lines":14,"hits":14,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":2,"messages":0,"sessions":0,"complexity":7.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Specialized/Exception/ServiceConfigurationException.php","totals":{"files":0,"lines":24,"hits":24,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":3,"messages":0,"sessions":0,"complexity":4.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Specialized/Exception/ServiceQuotaExceededException.php","totals":{"files":0,"lines":23,"hits":23,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":2,"messages":0,"sessions":0,"complexity":5.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Specialized/Exception/ServiceUnavailableException.php","totals":{"files":0,"lines":36,"hits":25,"misses":11,"partials":0,"coverage":69.44,"branches":0,"methods":4,"messages":0,"sessions":0,"complexity":5.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Specialized/Exception/SpecializedServiceException.php","totals":{"files":0,"lines":10,"hits":7,"misses":3,"partials":0,"coverage":70.0,"branches":0,"methods":3,"messages":0,"sessions":0,"complexity":6.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Specialized/Exception/UnsupportedFormatException.php","totals":{"files":0,"lines":32,"hits":24,"misses":8,"partials":0,"coverage":75.0,"branches":0,"methods":4,"messages":0,"sessions":0,"complexity":5.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Specialized/Exception/UnsupportedLanguageException.php","totals":{"files":0,"lines":11,"hits":11,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":1,"messages":0,"sessions":0,"complexity":2.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Specialized/Image/DallEImageService.php","totals":{"files":0,"lines":249,"hits":241,"misses":8,"partials":0,"coverage":96.78,"branches":0,"methods":22,"messages":0,"sessions":0,"complexity":62.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Specialized/Image/FalImageService.php","totals":{"files":0,"lines":255,"hits":241,"misses":14,"partials":0,"coverage":94.5,"branches":0,"methods":30,"messages":0,"sessions":0,"complexity":95.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Specialized/Image/ImageGenerationResult.php","totals":{"files":0,"lines":52,"hits":52,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":15,"messages":0,"sessions":0,"complexity":22.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Specialized/Option/DeepLOptions.php","totals":{"files":0,"lines":42,"hits":42,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":8,"messages":0,"sessions":0,"complexity":17.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Specialized/Option/ImageGenerationOptions.php","totals":{"files":0,"lines":123,"hits":123,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":12,"messages":0,"sessions":0,"complexity":44.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Specialized/Option/SpeechSynthesisOptions.php","totals":{"files":0,"lines":43,"hits":43,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":7,"messages":0,"sessions":0,"complexity":20.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Specialized/Option/TranscriptionOptions.php","totals":{"files":0,"lines":40,"hits":40,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":6,"messages":0,"sessions":0,"complexity":18.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Specialized/Pricing/OpenAiPriceCatalog.php","totals":{"files":0,"lines":30,"hits":29,"misses":1,"partials":0,"coverage":96.66,"branches":0,"methods":6,"messages":0,"sessions":0,"complexity":15.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Specialized/Pricing/SpecializedCostCalculator.php","totals":{"files":0,"lines":30,"hits":30,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":5,"messages":0,"sessions":0,"complexity":16.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Specialized/Speech/Segment.php","totals":{"files":0,"lines":32,"hits":32,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":5,"messages":0,"sessions":0,"complexity":21.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Specialized/Speech/SpeechSynthesisResult.php","totals":{"files":0,"lines":42,"hits":42,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":9,"messages":0,"sessions":0,"complexity":25.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Specialized/Speech/TextToSpeechService.php","totals":{"files":0,"lines":185,"hits":181,"misses":4,"partials":0,"coverage":97.83,"branches":0,"methods":21,"messages":0,"sessions":0,"complexity":60.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Specialized/Speech/TranscriptionResult.php","totals":{"files":0,"lines":55,"hits":55,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":9,"messages":0,"sessions":0,"complexity":16.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Specialized/Speech/WhisperTranscriptionService.php","totals":{"files":0,"lines":191,"hits":182,"misses":9,"partials":0,"coverage":95.28,"branches":0,"methods":21,"messages":0,"sessions":0,"complexity":53.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Specialized/Speech/Word.php","totals":{"files":0,"lines":12,"hits":12,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":3,"messages":0,"sessions":0,"complexity":8.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Specialized/Translation/DeepLTranslator.php","totals":{"files":0,"lines":343,"hits":339,"misses":4,"partials":0,"coverage":98.83,"branches":0,"methods":42,"messages":0,"sessions":0,"complexity":117.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Specialized/Translation/LlmTranslator.php","totals":{"files":0,"lines":132,"hits":132,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":14,"messages":0,"sessions":0,"complexity":46.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Specialized/Translation/TranslatorRegistry.php","totals":{"files":0,"lines":33,"hits":33,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":7,"messages":0,"sessions":0,"complexity":14.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Specialized/Translation/TranslatorResult.php","totals":{"files":0,"lines":19,"hits":19,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":7,"messages":0,"sessions":0,"complexity":11.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Utility/ErrorMessageSanitizerTrait.php","totals":{"files":0,"lines":9,"hits":8,"misses":1,"partials":0,"coverage":88.88,"branches":0,"methods":1,"messages":0,"sessions":0,"complexity":4.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Utility/SafeCastTrait.php","totals":{"files":0,"lines":6,"hits":6,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":3,"messages":0,"sessions":0,"complexity":7.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Widgets/DataProvider/MonthlyCostDataProvider.php","totals":{"files":0,"lines":4,"hits":4,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":2,"messages":0,"sessions":0,"complexity":2.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Widgets/DataProvider/RequestsByProviderDataProvider.php","totals":{"files":0,"lines":36,"hits":19,"misses":17,"partials":0,"coverage":52.77,"branches":0,"methods":3,"messages":0,"sessions":0,"complexity":7.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Command/PurgeAiSessionsCommand.php","totals":{"files":0,"lines":21,"hits":21,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":3,"messages":0,"sessions":0,"complexity":6.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Command/RetrievalEvalRunCommand.php","totals":{"files":0,"lines":165,"hits":164,"misses":1,"partials":0,"coverage":99.39,"branches":0,"methods":12,"messages":0,"sessions":0,"complexity":47.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Domain/ValueObject/AgentRun.php","totals":{"files":0,"lines":29,"hits":0,"misses":29,"partials":0,"coverage":0.0,"branches":0,"methods":4,"messages":0,"sessions":0,"complexity":4.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Domain/ValueObject/AgentRunEvent.php","totals":{"files":0,"lines":4,"hits":0,"misses":4,"partials":0,"coverage":0.0,"branches":0,"methods":2,"messages":0,"sessions":0,"complexity":2.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Domain/ValueObject/AiSession.php","totals":{"files":0,"lines":2,"hits":0,"misses":2,"partials":0,"coverage":0.0,"branches":0,"methods":1,"messages":0,"sessions":0,"complexity":1.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Domain/ValueObject/AiSessionMessage.php","totals":{"files":0,"lines":4,"hits":0,"misses":4,"partials":0,"coverage":0.0,"branches":0,"methods":2,"messages":0,"sessions":0,"complexity":2.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Domain/ValueObject/GuardrailResult.php","totals":{"files":0,"lines":12,"hits":0,"misses":12,"partials":0,"coverage":0.0,"branches":0,"methods":6,"messages":0,"sessions":0,"complexity":6.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Domain/ValueObject/SuspendedRunState.php","totals":{"files":0,"lines":163,"hits":151,"misses":12,"partials":0,"coverage":92.63,"branches":0,"methods":13,"messages":0,"sessions":0,"complexity":54.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Exception/GuardrailApprovalRequiredException.php","totals":{"files":0,"lines":2,"hits":0,"misses":2,"partials":0,"coverage":0.0,"branches":0,"methods":1,"messages":0,"sessions":0,"complexity":1.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Exception/GuardrailViolationException.php","totals":{"files":0,"lines":2,"hits":0,"misses":2,"partials":0,"coverage":0.0,"branches":0,"methods":1,"messages":0,"sessions":0,"complexity":1.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Provider/Middleware/GuardrailMiddleware.php","totals":{"files":0,"lines":117,"hits":113,"misses":4,"partials":0,"coverage":96.58,"branches":0,"methods":10,"messages":0,"sessions":0,"complexity":41.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/EmbeddingModelDimensions.php","totals":{"files":0,"lines":9,"hits":8,"misses":1,"partials":0,"coverage":88.88,"branches":0,"methods":2,"messages":0,"sessions":0,"complexity":4.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Evaluation/EvaluatableRetrieverRegistry.php","totals":{"files":0,"lines":14,"hits":14,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":4,"messages":0,"sessions":0,"complexity":6.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Evaluation/GoldenQuestion.php","totals":{"files":0,"lines":24,"hits":24,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":2,"messages":0,"sessions":0,"complexity":8.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Evaluation/GoldenQuestionSet.php","totals":{"files":0,"lines":23,"hits":23,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":1,"messages":0,"sessions":0,"complexity":7.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Evaluation/GoldenQuestionSetRegistry.php","totals":{"files":0,"lines":14,"hits":14,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":4,"messages":0,"sessions":0,"complexity":7.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Evaluation/LexicalSearchRetriever.php","totals":{"files":0,"lines":18,"hits":18,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":3,"messages":0,"sessions":0,"complexity":6.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Evaluation/QuestionEvaluation.php","totals":{"files":0,"lines":12,"hits":2,"misses":10,"partials":0,"coverage":16.66,"branches":0,"methods":2,"messages":0,"sessions":0,"complexity":2.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Evaluation/RetrievalEvaluationService.php","totals":{"files":0,"lines":40,"hits":40,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":2,"messages":0,"sessions":0,"complexity":10.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Evaluation/RetrievalSetEvaluationResult.php","totals":{"files":0,"lines":65,"hits":65,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":12,"messages":0,"sessions":0,"complexity":22.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Feature/ConversationService.php","totals":{"files":0,"lines":139,"hits":137,"misses":2,"partials":0,"coverage":98.56,"branches":0,"methods":9,"messages":0,"sessions":0,"complexity":33.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Feature/TranslationPromptBuilder.php","totals":{"files":0,"lines":45,"hits":45,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":2,"messages":0,"sessions":0,"complexity":14.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Guardrail/InputGuardrailScreener.php","totals":{"files":0,"lines":54,"hits":54,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":7,"messages":0,"sessions":0,"complexity":22.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Guardrail/ProviderContentFilterGuardrail.php","totals":{"files":0,"lines":8,"hits":4,"misses":4,"partials":0,"coverage":50.0,"branches":0,"methods":3,"messages":0,"sessions":0,"complexity":4.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Guardrail/RedactsSecretsTrait.php","totals":{"files":0,"lines":5,"hits":5,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":1,"messages":0,"sessions":0,"complexity":2.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Guardrail/SecretRedactionGuardrail.php","totals":{"files":0,"lines":15,"hits":11,"misses":4,"partials":0,"coverage":73.33,"branches":0,"methods":3,"messages":0,"sessions":0,"complexity":7.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Guardrail/SecretRedactionInputGuardrail.php","totals":{"files":0,"lines":6,"hits":2,"misses":4,"partials":0,"coverage":33.33,"branches":0,"methods":3,"messages":0,"sessions":0,"complexity":3.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Rerank/Exception/RerankerException.php","totals":{"files":0,"lines":8,"hits":0,"misses":8,"partials":0,"coverage":0.0,"branches":0,"methods":4,"messages":0,"sessions":0,"complexity":4.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Rerank/HttpReranker.php","totals":{"files":0,"lines":46,"hits":46,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":3,"messages":0,"sessions":0,"complexity":15.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Rerank/NullReranker.php","totals":{"files":0,"lines":4,"hits":4,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":1,"messages":0,"sessions":0,"complexity":1.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Rerank/RerankerFactory.php","totals":{"files":0,"lines":19,"hits":19,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":4,"messages":0,"sessions":0,"complexity":12.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Retrieval/KeywordHit.php","totals":{"files":0,"lines":2,"hits":2,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":1,"messages":0,"sessions":0,"complexity":1.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Retrieval/KeywordSearchService.php","totals":{"files":0,"lines":48,"hits":46,"misses":2,"partials":0,"coverage":95.83,"branches":0,"methods":5,"messages":0,"sessions":0,"complexity":17.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Retrieval/ReciprocalRankFusion.php","totals":{"files":0,"lines":15,"hits":15,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":1,"messages":0,"sessions":0,"complexity":4.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Schema/JsonSchemaValidator.php","totals":{"files":0,"lines":220,"hits":216,"misses":4,"partials":0,"coverage":98.18,"branches":0,"methods":18,"messages":0,"sessions":0,"complexity":173.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Session/AiSessionRepository.php","totals":{"files":0,"lines":147,"hits":135,"misses":12,"partials":0,"coverage":91.83,"branches":0,"methods":10,"messages":0,"sessions":0,"complexity":19.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Streaming/StreamRedactionWindow.php","totals":{"files":0,"lines":74,"hits":68,"misses":6,"partials":0,"coverage":91.89,"branches":0,"methods":11,"messages":0,"sessions":0,"complexity":32.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Tool/AgentRunHandle.php","totals":{"files":0,"lines":2,"hits":2,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":1,"messages":0,"sessions":0,"complexity":1.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Tool/AgentRunPersister.php","totals":{"files":0,"lines":247,"hits":168,"misses":79,"partials":0,"coverage":68.01,"branches":0,"methods":32,"messages":0,"sessions":0,"complexity":64.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Tool/AgentRunRepository.php","totals":{"files":0,"lines":540,"hits":534,"misses":6,"partials":0,"coverage":98.88,"branches":0,"methods":38,"messages":0,"sessions":0,"complexity":71.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Tool/Exception/ToolApprovalRequiredException.php","totals":{"files":0,"lines":4,"hits":0,"misses":4,"partials":0,"coverage":0.0,"branches":0,"methods":2,"messages":0,"sessions":0,"complexity":2.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Specialized/Document/DocumentAnalysisResult.php","totals":{"files":0,"lines":2,"hits":0,"misses":2,"partials":0,"coverage":0.0,"branches":0,"methods":1,"messages":0,"sessions":0,"complexity":1.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Specialized/Document/DocumentAnalysisService.php","totals":{"files":0,"lines":82,"hits":80,"misses":2,"partials":0,"coverage":97.56,"branches":0,"methods":7,"messages":0,"sessions":0,"complexity":21.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Specialized/Document/PopplerPdfRenderer.php","totals":{"files":0,"lines":95,"hits":91,"misses":4,"partials":0,"coverage":95.78,"branches":0,"methods":6,"messages":0,"sessions":0,"complexity":34.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Specialized/Exception/PdfRasterizationException.php","totals":{"files":0,"lines":2,"hits":0,"misses":2,"partials":0,"coverage":0.0,"branches":0,"methods":1,"messages":0,"sessions":0,"complexity":1.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Testing/FakeBudgetService.php","totals":{"files":0,"lines":7,"hits":7,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":1,"messages":0,"sessions":0,"complexity":2.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Testing/FakeCompletionService.php","totals":{"files":0,"lines":60,"hits":54,"misses":6,"partials":0,"coverage":90.0,"branches":0,"methods":15,"messages":0,"sessions":0,"complexity":17.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Testing/FakeEmbeddingService.php","totals":{"files":0,"lines":36,"hits":36,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":10,"messages":0,"sessions":0,"complexity":11.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Testing/FakeToolCallingService.php","totals":{"files":0,"lines":15,"hits":15,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":3,"messages":0,"sessions":0,"complexity":5.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Testing/FakeVisionService.php","totals":{"files":0,"lines":32,"hits":32,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":7,"messages":0,"sessions":0,"complexity":9.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Updates/EmbeddingModelDimensionsUpdateWizard.php","totals":{"files":0,"lines":47,"hits":35,"misses":12,"partials":0,"coverage":74.46,"branches":0,"methods":7,"messages":0,"sessions":0,"complexity":13.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Updates/ProviderApiTimeoutUpdateWizard.php","totals":{"files":0,"lines":44,"hits":31,"misses":13,"partials":0,"coverage":70.45,"branches":0,"methods":6,"messages":0,"sessions":0,"complexity":7.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Command/CancelAgentRunCommand.php","totals":{"files":0,"lines":16,"hits":16,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":3,"messages":0,"sessions":0,"complexity":6.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Command/PurgeGovernanceCommand.php","totals":{"files":0,"lines":21,"hits":21,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":3,"messages":0,"sessions":0,"complexity":6.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Command/ReapStaleAgentRunsCommand.php","totals":{"files":0,"lines":59,"hits":56,"misses":3,"partials":0,"coverage":94.91,"branches":0,"methods":3,"messages":0,"sessions":0,"complexity":17.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Controller/Backend/AgentRunController.php","totals":{"files":0,"lines":127,"hits":75,"misses":52,"partials":0,"coverage":59.05,"branches":0,"methods":11,"messages":0,"sessions":0,"complexity":46.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Controller/Backend/BackendUserUidTrait.php","totals":{"files":0,"lines":20,"hits":18,"misses":2,"partials":0,"coverage":90.0,"branches":0,"methods":2,"messages":0,"sessions":0,"complexity":8.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Domain/ValueObject/AiActorContext.php","totals":{"files":0,"lines":78,"hits":70,"misses":8,"partials":0,"coverage":89.74,"branches":0,"methods":16,"messages":0,"sessions":0,"complexity":44.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Domain/ValueObject/ContextFitResult.php","totals":{"files":0,"lines":2,"hits":0,"misses":2,"partials":0,"coverage":0.0,"branches":0,"methods":1,"messages":0,"sessions":0,"complexity":1.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Domain/ValueObject/GovernanceEvent.php","totals":{"files":0,"lines":2,"hits":2,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":1,"messages":0,"sessions":0,"complexity":1.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Domain/ValueObject/ToolArtifact.php","totals":{"files":0,"lines":4,"hits":4,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":2,"messages":0,"sessions":0,"complexity":2.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Domain/ValueObject/ToolPolicyDecision.php","totals":{"files":0,"lines":21,"hits":0,"misses":21,"partials":0,"coverage":0.0,"branches":0,"methods":2,"messages":0,"sessions":0,"complexity":9.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Domain/ValueObject/ToolResult.php","totals":{"files":0,"lines":36,"hits":36,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":7,"messages":0,"sessions":0,"complexity":10.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Exception/ContextTruncatedException.php","totals":{"files":0,"lines":11,"hits":0,"misses":11,"partials":0,"coverage":0.0,"branches":0,"methods":2,"messages":0,"sessions":0,"complexity":2.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Form/Tca/GuardrailItems.php","totals":{"files":0,"lines":19,"hits":0,"misses":19,"partials":0,"coverage":0.0,"branches":0,"methods":1,"messages":0,"sessions":0,"complexity":8.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Provider/Middleware/FailureClassifier.php","totals":{"files":0,"lines":23,"hits":22,"misses":1,"partials":0,"coverage":95.65,"branches":0,"methods":3,"messages":0,"sessions":0,"complexity":18.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Provider/Middleware/Usage/ProviderUsageRecord.php","totals":{"files":0,"lines":2,"hits":0,"misses":2,"partials":0,"coverage":0.0,"branches":0,"methods":1,"messages":0,"sessions":0,"complexity":1.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Provider/Middleware/Usage/SpecializedUsageIntent.php","totals":{"files":0,"lines":5,"hits":0,"misses":5,"partials":0,"coverage":0.0,"branches":0,"methods":2,"messages":0,"sessions":0,"complexity":3.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Agent/AgentRunRequest.php","totals":{"files":0,"lines":2,"hits":2,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":1,"messages":0,"sessions":0,"complexity":1.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Agent/AgentRunResult.php","totals":{"files":0,"lines":2,"hits":0,"misses":2,"partials":0,"coverage":0.0,"branches":0,"methods":1,"messages":0,"sessions":0,"complexity":1.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Agent/AgentRuntime.php","totals":{"files":0,"lines":82,"hits":82,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":17,"messages":0,"sessions":0,"complexity":29.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Agent/ApprovalDecision.php","totals":{"files":0,"lines":5,"hits":5,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":1,"messages":0,"sessions":0,"complexity":3.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Agent/InputSubmission.php","totals":{"files":0,"lines":2,"hits":0,"misses":2,"partials":0,"coverage":0.0,"branches":0,"methods":1,"messages":0,"sessions":0,"complexity":1.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Agent/Exception/AgentRuntimeException.php","totals":{"files":0,"lines":2,"hits":0,"misses":2,"partials":0,"coverage":0.0,"branches":0,"methods":1,"messages":0,"sessions":0,"complexity":1.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Agent/Exception/AuditPersistenceFailedException.php","totals":{"files":0,"lines":8,"hits":0,"misses":8,"partials":0,"coverage":0.0,"branches":0,"methods":1,"messages":0,"sessions":0,"complexity":3.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Agent/Exception/CorruptSuspendedStateException.php","totals":{"files":0,"lines":2,"hits":0,"misses":2,"partials":0,"coverage":0.0,"branches":0,"methods":1,"messages":0,"sessions":0,"complexity":2.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Agent/Exception/InvalidInputSubmissionException.php","totals":{"files":0,"lines":2,"hits":0,"misses":2,"partials":0,"coverage":0.0,"branches":0,"methods":1,"messages":0,"sessions":0,"complexity":2.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Agent/Exception/RunAccessDeniedException.php","totals":{"files":0,"lines":4,"hits":0,"misses":4,"partials":0,"coverage":0.0,"branches":0,"methods":1,"messages":0,"sessions":0,"complexity":2.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Agent/Exception/RunAlreadyResumingException.php","totals":{"files":0,"lines":2,"hits":0,"misses":2,"partials":0,"coverage":0.0,"branches":0,"methods":1,"messages":0,"sessions":0,"complexity":2.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Agent/Exception/RunCancellationRequestedException.php","totals":{"files":0,"lines":2,"hits":0,"misses":2,"partials":0,"coverage":0.0,"branches":0,"methods":1,"messages":0,"sessions":0,"complexity":1.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Agent/Exception/RunConfigurationGoneException.php","totals":{"files":0,"lines":2,"hits":0,"misses":2,"partials":0,"coverage":0.0,"branches":0,"methods":1,"messages":0,"sessions":0,"complexity":2.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Agent/Exception/RunEnqueueFailedException.php","totals":{"files":0,"lines":5,"hits":0,"misses":5,"partials":0,"coverage":0.0,"branches":0,"methods":1,"messages":0,"sessions":0,"complexity":2.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Agent/Exception/RunLeaseLostException.php","totals":{"files":0,"lines":2,"hits":0,"misses":2,"partials":0,"coverage":0.0,"branches":0,"methods":1,"messages":0,"sessions":0,"complexity":1.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Agent/Exception/RunNotAwaitingApprovalException.php","totals":{"files":0,"lines":2,"hits":0,"misses":2,"partials":0,"coverage":0.0,"branches":0,"methods":1,"messages":0,"sessions":0,"complexity":2.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Agent/Exception/RunNotAwaitingInputException.php","totals":{"files":0,"lines":2,"hits":0,"misses":2,"partials":0,"coverage":0.0,"branches":0,"methods":1,"messages":0,"sessions":0,"complexity":2.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Agent/Exception/RunStateUnavailableException.php","totals":{"files":0,"lines":2,"hits":0,"misses":2,"partials":0,"coverage":0.0,"branches":0,"methods":1,"messages":0,"sessions":0,"complexity":2.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Agent/Inbox/InputFieldView.php","totals":{"files":0,"lines":2,"hits":0,"misses":2,"partials":0,"coverage":0.0,"branches":0,"methods":1,"messages":0,"sessions":0,"complexity":1.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Agent/Inbox/PendingCallView.php","totals":{"files":0,"lines":2,"hits":0,"misses":2,"partials":0,"coverage":0.0,"branches":0,"methods":1,"messages":0,"sessions":0,"complexity":1.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Agent/Inbox/TerminalRunView.php","totals":{"files":0,"lines":2,"hits":0,"misses":2,"partials":0,"coverage":0.0,"branches":0,"methods":1,"messages":0,"sessions":0,"complexity":1.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Agent/Inbox/WaitingRunView.php","totals":{"files":0,"lines":2,"hits":0,"misses":2,"partials":0,"coverage":0.0,"branches":0,"methods":1,"messages":0,"sessions":0,"complexity":1.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Agent/Inbox/WaitingRunViewFactory.php","totals":{"files":0,"lines":169,"hits":166,"misses":3,"partials":0,"coverage":98.22,"branches":0,"methods":19,"messages":0,"sessions":0,"complexity":70.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Agent/Queue/AgentRunQueuedHandler.php","totals":{"files":0,"lines":7,"hits":7,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":2,"messages":0,"sessions":0,"complexity":3.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Agent/Queue/AgentRunQueuedMessage.php","totals":{"files":0,"lines":2,"hits":0,"misses":2,"partials":0,"coverage":0.0,"branches":0,"methods":1,"messages":0,"sessions":0,"complexity":1.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Context/ContextWindowManager.php","totals":{"files":0,"lines":166,"hits":161,"misses":5,"partials":0,"coverage":96.98,"branches":0,"methods":13,"messages":0,"sessions":0,"complexity":54.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Context/TranscriptEstimator.php","totals":{"files":0,"lines":24,"hits":24,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":1,"messages":0,"sessions":0,"complexity":14.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Governance/GovernanceEventRepository.php","totals":{"files":0,"lines":115,"hits":110,"misses":5,"partials":0,"coverage":95.65,"branches":0,"methods":8,"messages":0,"sessions":0,"complexity":17.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Guardrail/GuardrailPolicyResolver.php","totals":{"files":0,"lines":14,"hits":14,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":2,"messages":0,"sessions":0,"complexity":6.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Guardrail/GuardrailRegistry.php","totals":{"files":0,"lines":37,"hits":37,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":5,"messages":0,"sessions":0,"complexity":14.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Privacy/RunStepPrivacyFilter.php","totals":{"files":0,"lines":52,"hits":51,"misses":1,"partials":0,"coverage":98.07,"branches":0,"methods":5,"messages":0,"sessions":0,"complexity":26.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Tool/ActingBackendUserResolver.php","totals":{"files":0,"lines":9,"hits":9,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":1,"messages":0,"sessions":0,"complexity":4.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Tool/AgentStateCodec.php","totals":{"files":0,"lines":15,"hits":15,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":3,"messages":0,"sessions":0,"complexity":7.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Tool/InputSchema.php","totals":{"files":0,"lines":8,"hits":0,"misses":8,"partials":0,"coverage":0.0,"branches":0,"methods":1,"messages":0,"sessions":0,"complexity":5.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Tool/SchemaInputCoercer.php","totals":{"files":0,"lines":42,"hits":41,"misses":1,"partials":0,"coverage":97.61,"branches":0,"methods":4,"messages":0,"sessions":0,"complexity":22.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Tool/SchemaPropertyClassifier.php","totals":{"files":0,"lines":16,"hits":16,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":2,"messages":0,"sessions":0,"complexity":12.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Tool/ToolCallPolicy.php","totals":{"files":0,"lines":54,"hits":54,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":8,"messages":0,"sessions":0,"complexity":20.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Tool/ToolDataClassResolver.php","totals":{"files":0,"lines":11,"hits":11,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":4,"messages":0,"sessions":0,"complexity":6.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Tool/ToolEffectResolver.php","totals":{"files":0,"lines":9,"hits":9,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":3,"messages":0,"sessions":0,"complexity":5.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Tool/ToolExecutionContext.php","totals":{"files":0,"lines":19,"hits":17,"misses":2,"partials":0,"coverage":89.47,"branches":0,"methods":6,"messages":0,"sessions":0,"complexity":9.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Tool/Exception/AgentStateDecryptionException.php","totals":{"files":0,"lines":4,"hits":0,"misses":4,"partials":0,"coverage":0.0,"branches":0,"methods":2,"messages":0,"sessions":0,"complexity":2.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Tool/Exception/ToolInputRequiredException.php","totals":{"files":0,"lines":4,"hits":0,"misses":4,"partials":0,"coverage":0.0,"branches":0,"methods":2,"messages":0,"sessions":0,"complexity":2.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Specialized/Usage/DallEUsageExtractor.php","totals":{"files":0,"lines":48,"hits":48,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":3,"messages":0,"sessions":0,"complexity":17.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Specialized/Usage/DeepLUsageExtractor.php","totals":{"files":0,"lines":15,"hits":15,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":2,"messages":0,"sessions":0,"complexity":5.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Specialized/Usage/FalUsageExtractor.php","totals":{"files":0,"lines":15,"hits":15,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":2,"messages":0,"sessions":0,"complexity":6.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Specialized/Usage/TextToSpeechUsageExtractor.php","totals":{"files":0,"lines":21,"hits":21,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":3,"messages":0,"sessions":0,"complexity":5.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Specialized/Usage/WhisperUsageExtractor.php","totals":{"files":0,"lines":24,"hits":24,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":3,"messages":0,"sessions":0,"complexity":9.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Updates/DataClassEnforcementDefaultUpdateWizard.php","totals":{"files":0,"lines":41,"hits":28,"misses":13,"partials":0,"coverage":68.29,"branches":0,"methods":8,"messages":0,"sessions":0,"complexity":17.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Updates/StampProviderTrustZoneUpdateWizard.php","totals":{"files":0,"lines":51,"hits":38,"misses":13,"partials":0,"coverage":74.5,"branches":0,"methods":6,"messages":0,"sessions":0,"complexity":7.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Widgets/DataProvider/AgentRunsByStatusDataProvider.php","totals":{"files":0,"lines":31,"hits":19,"misses":12,"partials":0,"coverage":61.29,"branches":0,"methods":4,"messages":0,"sessions":0,"complexity":7.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Widgets/DataProvider/AverageLatencyDataProvider.php","totals":{"files":0,"lines":7,"hits":7,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":2,"messages":0,"sessions":0,"complexity":2.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Widgets/DataProvider/GovernanceBlocksOverTimeDataProvider.php","totals":{"files":0,"lines":35,"hits":20,"misses":15,"partials":0,"coverage":57.14,"branches":0,"methods":4,"messages":0,"sessions":0,"complexity":7.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Widgets/DataProvider/RequestSuccessRateDataProvider.php","totals":{"files":0,"lines":7,"hits":7,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":2,"messages":0,"sessions":0,"complexity":2.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Widgets/DataProvider/RunTerminationReasonsDataProvider.php","totals":{"files":0,"lines":35,"hits":20,"misses":15,"partials":0,"coverage":57.14,"branches":0,"methods":4,"messages":0,"sessions":0,"complexity":7.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Widgets/DataProvider/RunsAwaitingApprovalDataProvider.php","totals":{"files":0,"lines":4,"hits":4,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":2,"messages":0,"sessions":0,"complexity":2.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Widgets/DataProvider/ToolDenialsByReasonDataProvider.php","totals":{"files":0,"lines":37,"hits":22,"misses":15,"partials":0,"coverage":59.45,"branches":0,"methods":4,"messages":0,"sessions":0,"complexity":8.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Widgets/DataProvider/ToolUsageByNameDataProvider.php","totals":{"files":0,"lines":28,"hits":19,"misses":9,"partials":0,"coverage":67.85,"branches":0,"methods":3,"messages":0,"sessions":0,"complexity":6.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Controller/Backend/SpecializedTestController.php","totals":{"files":0,"lines":150,"hits":141,"misses":9,"partials":0,"coverage":94.0,"branches":0,"methods":11,"messages":0,"sessions":0,"complexity":44.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Agent/AgentRunExecutor.php","totals":{"files":0,"lines":185,"hits":175,"misses":10,"partials":0,"coverage":94.59,"branches":0,"methods":9,"messages":0,"sessions":0,"complexity":57.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Agent/AgentRunRequestCodec.php","totals":{"files":0,"lines":172,"hits":161,"misses":11,"partials":0,"coverage":93.6,"branches":0,"methods":10,"messages":0,"sessions":0,"complexity":57.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Agent/QueuedRunCoordinator.php","totals":{"files":0,"lines":63,"hits":50,"misses":13,"partials":0,"coverage":79.36,"branches":0,"methods":4,"messages":0,"sessions":0,"complexity":18.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Agent/QueuedRunFailureRecovery.php","totals":{"files":0,"lines":38,"hits":27,"misses":11,"partials":0,"coverage":71.05,"branches":0,"methods":3,"messages":0,"sessions":0,"complexity":16.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Agent/ResumeCoordinator.php","totals":{"files":0,"lines":234,"hits":212,"misses":22,"partials":0,"coverage":90.59,"branches":0,"methods":14,"messages":0,"sessions":0,"complexity":87.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Tool/AgentStateEnvelopeMarker.php","totals":{"files":0,"lines":9,"hits":0,"misses":9,"partials":0,"coverage":0.0,"branches":0,"methods":2,"messages":0,"sessions":0,"complexity":4.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Tool/AgentStateEnvelopeRotator.php","totals":{"files":0,"lines":74,"hits":72,"misses":2,"partials":0,"coverage":97.29,"branches":0,"methods":8,"messages":0,"sessions":0,"complexity":17.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Utility/SecretShapeRedactorTrait.php","totals":{"files":0,"lines":18,"hits":18,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":3,"messages":0,"sessions":0,"complexity":7.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Command/SetProviderApiKeyCommand.php","totals":{"files":0,"lines":66,"hits":62,"misses":4,"partials":0,"coverage":93.93,"branches":0,"methods":5,"messages":0,"sessions":0,"complexity":24.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Controller/Backend/AiTaskController.php","totals":{"files":0,"lines":60,"hits":36,"misses":24,"partials":0,"coverage":60.0,"branches":0,"methods":4,"messages":0,"sessions":0,"complexity":14.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Controller/Backend/McpServerController.php","totals":{"files":0,"lines":99,"hits":89,"misses":10,"partials":0,"coverage":89.89,"branches":0,"methods":8,"messages":0,"sessions":0,"complexity":24.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Domain/ValueObject/McpImportReport.php","totals":{"files":0,"lines":10,"hits":0,"misses":10,"partials":0,"coverage":0.0,"branches":0,"methods":2,"messages":0,"sessions":0,"complexity":2.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Domain/ValueObject/McpServerRecord.php","totals":{"files":0,"lines":8,"hits":6,"misses":2,"partials":0,"coverage":75.0,"branches":0,"methods":4,"messages":0,"sessions":0,"complexity":4.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Domain/ValueObject/McpToolRecord.php","totals":{"files":0,"lines":9,"hits":0,"misses":9,"partials":0,"coverage":0.0,"branches":0,"methods":2,"messages":0,"sessions":0,"complexity":4.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Domain/ValueObject/McpToolsPage.php","totals":{"files":0,"lines":2,"hits":0,"misses":2,"partials":0,"coverage":0.0,"branches":0,"methods":1,"messages":0,"sessions":0,"complexity":1.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Form/Tca/SnippetTagItems.php","totals":{"files":0,"lines":39,"hits":31,"misses":8,"partials":0,"coverage":79.48,"branches":0,"methods":2,"messages":0,"sessions":0,"complexity":14.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Provider/OpenAiResponseFormatTrait.php","totals":{"files":0,"lines":52,"hits":51,"misses":1,"partials":0,"coverage":98.07,"branches":0,"methods":3,"messages":0,"sessions":0,"complexity":27.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Provider/Fallback/FallbackCandidateResolver.php","totals":{"files":0,"lines":14,"hits":14,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":3,"messages":0,"sessions":0,"complexity":6.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Provider/OpenRouter/ModelRouter.php","totals":{"files":0,"lines":71,"hits":68,"misses":3,"partials":0,"coverage":95.77,"branches":0,"methods":6,"messages":0,"sessions":0,"complexity":30.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Agent/PendingTurnDigest.php","totals":{"files":0,"lines":11,"hits":11,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":3,"messages":0,"sessions":0,"complexity":4.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Agent/Exception/ApprovalNotAuditableException.php","totals":{"files":0,"lines":5,"hits":0,"misses":5,"partials":0,"coverage":0.0,"branches":0,"methods":1,"messages":0,"sessions":0,"complexity":2.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Agent/Exception/ApproverNotPermittedException.php","totals":{"files":0,"lines":21,"hits":0,"misses":21,"partials":0,"coverage":0.0,"branches":0,"methods":3,"messages":0,"sessions":0,"complexity":8.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Agent/Exception/StaleApprovalTurnException.php","totals":{"files":0,"lines":5,"hits":0,"misses":5,"partials":0,"coverage":0.0,"branches":0,"methods":1,"messages":0,"sessions":0,"complexity":2.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Analytics/FallbackRescueReport.php","totals":{"files":0,"lines":24,"hits":24,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":3,"messages":0,"sessions":0,"complexity":6.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Analytics/ProviderHealthReport.php","totals":{"files":0,"lines":35,"hits":35,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":3,"messages":0,"sessions":0,"complexity":6.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/CallMetadataFactory.php","totals":{"files":0,"lines":31,"hits":27,"misses":4,"partials":0,"coverage":87.09,"branches":0,"methods":6,"messages":0,"sessions":0,"complexity":17.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/ConfigurationCallPlanner.php","totals":{"files":0,"lines":57,"hits":54,"misses":3,"partials":0,"coverage":94.73,"branches":0,"methods":7,"messages":0,"sessions":0,"complexity":25.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/OperationCapabilityMap.php","totals":{"files":0,"lines":17,"hits":17,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":1,"messages":0,"sessions":0,"complexity":6.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Governance/EffectivePolicyReadout.php","totals":{"files":0,"lines":47,"hits":47,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":5,"messages":0,"sessions":0,"complexity":11.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Governance/EffectivePolicyRow.php","totals":{"files":0,"lines":4,"hits":4,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":2,"messages":0,"sessions":0,"complexity":2.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Prompt/ConfigurationSnippetResolver.php","totals":{"files":0,"lines":32,"hits":31,"misses":1,"partials":0,"coverage":96.87,"branches":0,"methods":5,"messages":0,"sessions":0,"complexity":14.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Schema/StrictSchemaSubset.php","totals":{"files":0,"lines":69,"hits":61,"misses":8,"partials":0,"coverage":88.4,"branches":0,"methods":7,"messages":0,"sessions":0,"complexity":61.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/SetupWizard/Discovery/AbstractModelDiscoverer.php","totals":{"files":0,"lines":35,"hits":35,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":5,"messages":0,"sessions":0,"complexity":11.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/SetupWizard/Discovery/AnthropicModelDiscoverer.php","totals":{"files":0,"lines":142,"hits":142,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":3,"messages":0,"sessions":0,"complexity":18.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/SetupWizard/Discovery/DiscoveryResult.php","totals":{"files":0,"lines":6,"hits":6,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":3,"messages":0,"sessions":0,"complexity":3.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/SetupWizard/Discovery/GeminiModelDiscoverer.php","totals":{"files":0,"lines":140,"hits":139,"misses":1,"partials":0,"coverage":99.28,"branches":0,"methods":5,"messages":0,"sessions":0,"complexity":33.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/SetupWizard/Discovery/GroqModelDiscoverer.php","totals":{"files":0,"lines":28,"hits":28,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":1,"messages":0,"sessions":0,"complexity":10.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/SetupWizard/Discovery/MistralModelDiscoverer.php","totals":{"files":0,"lines":63,"hits":63,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":3,"messages":0,"sessions":0,"complexity":17.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/SetupWizard/Discovery/OllamaModelDiscoverer.php","totals":{"files":0,"lines":122,"hits":117,"misses":5,"partials":0,"coverage":95.9,"branches":0,"methods":7,"messages":0,"sessions":0,"complexity":43.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/SetupWizard/Discovery/OpenAiModelDiscoverer.php","totals":{"files":0,"lines":296,"hits":294,"misses":2,"partials":0,"coverage":99.32,"branches":0,"methods":7,"messages":0,"sessions":0,"complexity":32.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/SetupWizard/Discovery/OpenRouterModelDiscoverer.php","totals":{"files":0,"lines":60,"hits":60,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":3,"messages":0,"sessions":0,"complexity":31.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Telemetry/FallbackHop.php","totals":{"files":0,"lines":2,"hits":0,"misses":2,"partials":0,"coverage":0.0,"branches":0,"methods":1,"messages":0,"sessions":0,"complexity":1.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Tool/RemoteCallBudget.php","totals":{"files":0,"lines":11,"hits":11,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":4,"messages":0,"sessions":0,"complexity":5.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Tool/ToolResultBounder.php","totals":{"files":0,"lines":41,"hits":41,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":5,"messages":0,"sessions":0,"complexity":13.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Tool/Builtin/SetFileAlternativeTextTool.php","totals":{"files":0,"lines":156,"hits":144,"misses":12,"partials":0,"coverage":92.3,"branches":0,"methods":14,"messages":0,"sessions":0,"complexity":39.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Tool/Builtin/UpdatePageMetadataTool.php","totals":{"files":0,"lines":231,"hits":218,"misses":13,"partials":0,"coverage":94.37,"branches":0,"methods":19,"messages":0,"sessions":0,"complexity":78.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Tool/Builtin/WritesThroughDataHandlerTrait.php","totals":{"files":0,"lines":131,"hits":129,"misses":2,"partials":0,"coverage":98.47,"branches":0,"methods":15,"messages":0,"sessions":0,"complexity":56.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Tool/Mcp/Exception/McpTransportException.php","totals":{"files":0,"lines":64,"hits":0,"misses":64,"partials":0,"coverage":0.0,"branches":0,"methods":12,"messages":0,"sessions":0,"complexity":14.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Tool/Mcp/McpClient.php","totals":{"files":0,"lines":194,"hits":190,"misses":4,"partials":0,"coverage":97.93,"branches":0,"methods":14,"messages":0,"sessions":0,"complexity":56.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Tool/Mcp/McpHttpTransport.php","totals":{"files":0,"lines":364,"hits":334,"misses":30,"partials":0,"coverage":91.75,"branches":0,"methods":19,"messages":0,"sessions":0,"complexity":133.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Tool/Mcp/McpImportService.php","totals":{"files":0,"lines":95,"hits":81,"misses":14,"partials":0,"coverage":85.26,"branches":0,"methods":7,"messages":0,"sessions":0,"complexity":31.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Tool/Mcp/McpSchemaNormalizer.php","totals":{"files":0,"lines":94,"hits":79,"misses":15,"partials":0,"coverage":84.04,"branches":0,"methods":7,"messages":0,"sessions":0,"complexity":51.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Tool/Mcp/McpServerRepository.php","totals":{"files":0,"lines":83,"hits":83,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":9,"messages":0,"sessions":0,"complexity":11.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Tool/Mcp/McpTool.php","totals":{"files":0,"lines":41,"hits":41,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":10,"messages":0,"sessions":0,"complexity":16.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Tool/Mcp/McpToolNameMapper.php","totals":{"files":0,"lines":7,"hits":7,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":2,"messages":0,"sessions":0,"complexity":3.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Tool/Mcp/McpToolProvider.php","totals":{"files":0,"lines":12,"hits":11,"misses":1,"partials":0,"coverage":91.66,"branches":0,"methods":2,"messages":0,"sessions":0,"complexity":6.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Tool/Mcp/McpToolRepository.php","totals":{"files":0,"lines":74,"hits":74,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":6,"messages":0,"sessions":0,"complexity":12.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Controller/Backend/EditorActionController.php","totals":{"files":0,"lines":150,"hits":148,"misses":2,"partials":0,"coverage":98.66,"branches":0,"methods":13,"messages":0,"sessions":0,"complexity":49.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Controller/Backend/ProviderMisconfigurationTrait.php","totals":{"files":0,"lines":3,"hits":3,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":1,"messages":0,"sessions":0,"complexity":1.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Controller/Backend/UseCasePackController.php","totals":{"files":0,"lines":83,"hits":0,"misses":83,"partials":0,"coverage":0.0,"branches":0,"methods":7,"messages":0,"sessions":0,"complexity":14.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Controller/Backend/ContextMenu/EditorActionItemProvider.php","totals":{"files":0,"lines":47,"hits":26,"misses":21,"partials":0,"coverage":55.31,"branches":0,"methods":6,"messages":0,"sessions":0,"complexity":14.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Domain/ValueObject/AgentRunReference.php","totals":{"files":0,"lines":4,"hits":0,"misses":4,"partials":0,"coverage":0.0,"branches":0,"methods":2,"messages":0,"sessions":0,"complexity":2.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Domain/ValueObject/CapabilityProvenance.php","totals":{"files":0,"lines":8,"hits":0,"misses":8,"partials":0,"coverage":0.0,"branches":0,"methods":4,"messages":0,"sessions":0,"complexity":5.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Domain/ValueObject/ContextBudgetBreakdown.php","totals":{"files":0,"lines":21,"hits":21,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":4,"messages":0,"sessions":0,"complexity":4.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Domain/ValueObject/EditorAction.php","totals":{"files":0,"lines":9,"hits":9,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":1,"messages":0,"sessions":0,"complexity":6.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Domain/ValueObject/EditorActionCostEstimate.php","totals":{"files":0,"lines":8,"hits":0,"misses":8,"partials":0,"coverage":0.0,"branches":0,"methods":4,"messages":0,"sessions":0,"complexity":5.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Domain/ValueObject/EditorActionOffer.php","totals":{"files":0,"lines":2,"hits":0,"misses":2,"partials":0,"coverage":0.0,"branches":0,"methods":1,"messages":0,"sessions":0,"complexity":1.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Domain/ValueObject/EditorActionOfferGroup.php","totals":{"files":0,"lines":2,"hits":0,"misses":2,"partials":0,"coverage":0.0,"branches":0,"methods":1,"messages":0,"sessions":0,"complexity":1.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Domain/ValueObject/GovernanceSimulation.php","totals":{"files":0,"lines":11,"hits":11,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":3,"messages":0,"sessions":0,"complexity":8.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Domain/ValueObject/InjectedContext.php","totals":{"files":0,"lines":2,"hits":0,"misses":2,"partials":0,"coverage":0.0,"branches":0,"methods":1,"messages":0,"sessions":0,"complexity":1.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Domain/ValueObject/InputContextDecision.php","totals":{"files":0,"lines":31,"hits":0,"misses":31,"partials":0,"coverage":0.0,"branches":0,"methods":7,"messages":0,"sessions":0,"complexity":14.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Domain/ValueObject/McpCallOutcome.php","totals":{"files":0,"lines":2,"hits":0,"misses":2,"partials":0,"coverage":0.0,"branches":0,"methods":1,"messages":0,"sessions":0,"complexity":1.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Domain/ValueObject/McpConnectionReport.php","totals":{"files":0,"lines":6,"hits":0,"misses":6,"partials":0,"coverage":0.0,"branches":0,"methods":3,"messages":0,"sessions":0,"complexity":3.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Domain/ValueObject/ModelResolution.php","totals":{"files":0,"lines":4,"hits":4,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":2,"messages":0,"sessions":0,"complexity":2.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Domain/ValueObject/RequestComplexity.php","totals":{"files":0,"lines":2,"hits":0,"misses":2,"partials":0,"coverage":0.0,"branches":0,"methods":1,"messages":0,"sessions":0,"complexity":1.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Domain/ValueObject/RoutingCandidate.php","totals":{"files":0,"lines":10,"hits":6,"misses":4,"partials":0,"coverage":60.0,"branches":0,"methods":5,"messages":0,"sessions":0,"complexity":5.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Domain/ValueObject/RoutingDecision.php","totals":{"files":0,"lines":8,"hits":8,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":4,"messages":0,"sessions":0,"complexity":4.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Domain/ValueObject/RoutingReadout.php","totals":{"files":0,"lines":16,"hits":0,"misses":16,"partials":0,"coverage":0.0,"branches":0,"methods":7,"messages":0,"sessions":0,"complexity":10.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Domain/ValueObject/RoutingSummary.php","totals":{"files":0,"lines":2,"hits":2,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":1,"messages":0,"sessions":0,"complexity":1.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Domain/ValueObject/SimulationActor.php","totals":{"files":0,"lines":2,"hits":0,"misses":2,"partials":0,"coverage":0.0,"branches":0,"methods":1,"messages":0,"sessions":0,"complexity":1.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Exception/InputContextTrustZoneException.php","totals":{"files":0,"lines":13,"hits":0,"misses":13,"partials":0,"coverage":0.0,"branches":0,"methods":1,"messages":0,"sessions":0,"complexity":2.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Agent/ExecutionIdentity.php","totals":{"files":0,"lines":9,"hits":0,"misses":9,"partials":0,"coverage":0.0,"branches":0,"methods":4,"messages":0,"sessions":0,"complexity":5.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Agent/PendingCallRefusal.php","totals":{"files":0,"lines":2,"hits":0,"misses":2,"partials":0,"coverage":0.0,"branches":0,"methods":1,"messages":0,"sessions":0,"complexity":1.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Agent/Exception/SelfApprovalDeniedException.php","totals":{"files":0,"lines":9,"hits":0,"misses":9,"partials":0,"coverage":0.0,"branches":0,"methods":1,"messages":0,"sessions":0,"complexity":2.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Agent/Exception/StaleInputTurnException.php","totals":{"files":0,"lines":5,"hits":0,"misses":5,"partials":0,"coverage":0.0,"branches":0,"methods":1,"messages":0,"sessions":0,"complexity":2.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Agent/Exception/SubmitterNotPermittedException.php","totals":{"files":0,"lines":21,"hits":0,"misses":21,"partials":0,"coverage":0.0,"branches":0,"methods":3,"messages":0,"sessions":0,"complexity":8.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Agent/Exception/WriteWithoutDurableExecutionException.php","totals":{"files":0,"lines":8,"hits":0,"misses":8,"partials":0,"coverage":0.0,"branches":0,"methods":1,"messages":0,"sessions":0,"complexity":2.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Agent/Timeline/RunTimelineEntry.php","totals":{"files":0,"lines":2,"hits":0,"misses":2,"partials":0,"coverage":0.0,"branches":0,"methods":1,"messages":0,"sessions":0,"complexity":1.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Agent/Timeline/RunTimelineFactory.php","totals":{"files":0,"lines":110,"hits":99,"misses":11,"partials":0,"coverage":90.0,"branches":0,"methods":10,"messages":0,"sessions":0,"complexity":48.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Complexity/RequestComplexityEstimator.php","totals":{"files":0,"lines":24,"hits":24,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":4,"messages":0,"sessions":0,"complexity":7.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Context/InputContextClassification.php","totals":{"files":0,"lines":16,"hits":16,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":6,"messages":0,"sessions":0,"complexity":9.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Context/InputContextClassifier.php","totals":{"files":0,"lines":60,"hits":56,"misses":4,"partials":0,"coverage":93.33,"branches":0,"methods":10,"messages":0,"sessions":0,"complexity":23.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Context/InputContextTrustGate.php","totals":{"files":0,"lines":49,"hits":49,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":4,"messages":0,"sessions":0,"complexity":9.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Governance/DataClassEnforcementResolver.php","totals":{"files":0,"lines":13,"hits":13,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":3,"messages":0,"sessions":0,"complexity":7.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Governance/GovernanceProfile.php","totals":{"files":0,"lines":35,"hits":0,"misses":35,"partials":0,"coverage":0.0,"branches":0,"methods":5,"messages":0,"sessions":0,"complexity":9.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Governance/GovernanceProfileDeviation.php","totals":{"files":0,"lines":4,"hits":0,"misses":4,"partials":0,"coverage":0.0,"branches":0,"methods":2,"messages":0,"sessions":0,"complexity":2.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Governance/GovernanceProfileEvaluator.php","totals":{"files":0,"lines":17,"hits":17,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":2,"messages":0,"sessions":0,"complexity":5.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Governance/RecordedGovernanceEvent.php","totals":{"files":0,"lines":2,"hits":2,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":1,"messages":0,"sessions":0,"complexity":1.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Governance/SimulationActorDirectory.php","totals":{"files":0,"lines":17,"hits":17,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":2,"messages":0,"sessions":0,"complexity":3.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Governance/TrustZoneResolver.php","totals":{"files":0,"lines":15,"hits":2,"misses":13,"partials":0,"coverage":13.33,"branches":0,"methods":4,"messages":0,"sessions":0,"complexity":7.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Model/CapabilityVerifier.php","totals":{"files":0,"lines":29,"hits":29,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":4,"messages":0,"sessions":0,"complexity":11.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Routing/CandidateRanker.php","totals":{"files":0,"lines":79,"hits":78,"misses":1,"partials":0,"coverage":98.73,"branches":0,"methods":9,"messages":0,"sessions":0,"complexity":32.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Routing/EligibilityEvaluator.php","totals":{"files":0,"lines":45,"hits":45,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":6,"messages":0,"sessions":0,"complexity":25.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Routing/RoutingDecisionService.php","totals":{"files":0,"lines":30,"hits":29,"misses":1,"partials":0,"coverage":96.66,"branches":0,"methods":3,"messages":0,"sessions":0,"complexity":10.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Routing/RoutingSummaryFactory.php","totals":{"files":0,"lines":27,"hits":26,"misses":1,"partials":0,"coverage":96.29,"branches":0,"methods":3,"messages":0,"sessions":0,"complexity":8.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Telemetry/RoutedCall.php","totals":{"files":0,"lines":6,"hits":2,"misses":4,"partials":0,"coverage":33.33,"branches":0,"methods":3,"messages":0,"sessions":0,"complexity":3.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Telemetry/TelemetryCall.php","totals":{"files":0,"lines":2,"hits":2,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":1,"messages":0,"sessions":0,"complexity":1.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Tool/EditorActionBatchEntry.php","totals":{"files":0,"lines":7,"hits":7,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":2,"messages":0,"sessions":0,"complexity":3.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Tool/EditorActionBatchPlan.php","totals":{"files":0,"lines":7,"hits":0,"misses":7,"partials":0,"coverage":0.0,"branches":0,"methods":2,"messages":0,"sessions":0,"complexity":2.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Tool/EditorActionBatchPlanner.php","totals":{"files":0,"lines":86,"hits":85,"misses":1,"partials":0,"coverage":98.83,"branches":0,"methods":5,"messages":0,"sessions":0,"complexity":25.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Tool/EditorActionCatalogue.php","totals":{"files":0,"lines":78,"hits":76,"misses":2,"partials":0,"coverage":97.43,"branches":0,"methods":7,"messages":0,"sessions":0,"complexity":25.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Tool/GovernanceSimulator.php","totals":{"files":0,"lines":23,"hits":23,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":4,"messages":0,"sessions":0,"complexity":7.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Tool/PackToolReadiness.php","totals":{"files":0,"lines":35,"hits":35,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":3,"messages":0,"sessions":0,"complexity":11.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Tool/ToolApprovalRule.php","totals":{"files":0,"lines":10,"hits":10,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":1,"messages":0,"sessions":0,"complexity":8.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Tool/Builtin/CreateContentElementDraftTool.php","totals":{"files":0,"lines":504,"hits":481,"misses":23,"partials":0,"coverage":95.43,"branches":0,"methods":24,"messages":0,"sessions":0,"complexity":126.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Tool/Builtin/CreateTranslationDraftTool.php","totals":{"files":0,"lines":510,"hits":449,"misses":61,"partials":0,"coverage":88.03,"branches":0,"methods":27,"messages":0,"sessions":0,"complexity":140.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Tool/Builtin/MoveContentElementTool.php","totals":{"files":0,"lines":181,"hits":161,"misses":20,"partials":0,"coverage":88.95,"branches":0,"methods":13,"messages":0,"sessions":0,"complexity":42.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Tool/Builtin/PlansOneEditorialWriteTrait.php","totals":{"files":0,"lines":44,"hits":42,"misses":2,"partials":0,"coverage":95.45,"branches":0,"methods":5,"messages":0,"sessions":0,"complexity":13.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Tool/Mcp/McpDeadlineFactory.php","totals":{"files":0,"lines":16,"hits":16,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":4,"messages":0,"sessions":0,"complexity":11.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Tool/Mcp/McpHealthRecorder.php","totals":{"files":0,"lines":14,"hits":13,"misses":1,"partials":0,"coverage":92.85,"branches":0,"methods":3,"messages":0,"sessions":0,"complexity":7.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Tool/Mcp/McpMonotonicClock.php","totals":{"files":0,"lines":2,"hits":0,"misses":2,"partials":0,"coverage":0.0,"branches":0,"methods":1,"messages":0,"sessions":0,"complexity":1.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Tool/Mcp/McpOperationDeadline.php","totals":{"files":0,"lines":16,"hits":16,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":6,"messages":0,"sessions":0,"complexity":6.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/UseCase/EditorialStarterPackProvider.php","totals":{"files":0,"lines":165,"hits":165,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":3,"messages":0,"sessions":0,"complexity":3.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/UseCase/PackEditorActionState.php","totals":{"files":0,"lines":4,"hits":4,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":2,"messages":0,"sessions":0,"complexity":2.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/UseCase/PackSnippet.php","totals":{"files":0,"lines":58,"hits":43,"misses":15,"partials":0,"coverage":74.13,"branches":0,"methods":3,"messages":0,"sessions":0,"complexity":13.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/UseCase/PackTask.php","totals":{"files":0,"lines":29,"hits":29,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":1,"messages":0,"sessions":0,"complexity":6.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/UseCase/PackToolGroupState.php","totals":{"files":0,"lines":2,"hits":2,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":1,"messages":0,"sessions":0,"complexity":1.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/UseCase/UseCase.php","totals":{"files":0,"lines":4,"hits":0,"misses":4,"partials":0,"coverage":0.0,"branches":0,"methods":2,"messages":0,"sessions":0,"complexity":2.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/UseCase/UseCasePack.php","totals":{"files":0,"lines":62,"hits":59,"misses":3,"partials":0,"coverage":95.16,"branches":0,"methods":5,"messages":0,"sessions":0,"complexity":14.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/UseCase/UseCasePackInstallResult.php","totals":{"files":0,"lines":10,"hits":10,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":3,"messages":0,"sessions":0,"complexity":6.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/UseCase/UseCasePackInstaller.php","totals":{"files":0,"lines":179,"hits":175,"misses":4,"partials":0,"coverage":97.76,"branches":0,"methods":11,"messages":0,"sessions":0,"complexity":42.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/UseCase/UseCasePackPlan.php","totals":{"files":0,"lines":28,"hits":28,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":9,"messages":0,"sessions":0,"complexity":13.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/UseCase/UseCasePackPlanItem.php","totals":{"files":0,"lines":2,"hits":2,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":1,"messages":0,"sessions":0,"complexity":1.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/UseCase/UseCasePackPresetProvider.php","totals":{"files":0,"lines":6,"hits":6,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":2,"messages":0,"sessions":0,"complexity":2.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/UseCase/UseCasePackRegistry.php","totals":{"files":0,"lines":17,"hits":17,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":4,"messages":0,"sessions":0,"complexity":7.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Command/ImportMcpCatalogueCommand.php","totals":{"files":0,"lines":71,"hits":70,"misses":1,"partials":0,"coverage":98.59,"branches":0,"methods":5,"messages":0,"sessions":0,"complexity":21.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Command/SeedDemoDataCommand.php","totals":{"files":0,"lines":151,"hits":133,"misses":18,"partials":0,"coverage":88.07,"branches":0,"methods":8,"messages":0,"sessions":0,"complexity":34.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Domain/ValueObject/DroppedSource.php","totals":{"files":0,"lines":2,"hits":0,"misses":2,"partials":0,"coverage":0.0,"branches":0,"methods":1,"messages":0,"sessions":0,"complexity":1.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Domain/ValueObject/ProviderCallUsage.php","totals":{"files":0,"lines":2,"hits":0,"misses":2,"partials":0,"coverage":0.0,"branches":0,"methods":1,"messages":0,"sessions":0,"complexity":1.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Domain/ValueObject/RequestFacts.php","totals":{"files":0,"lines":2,"hits":0,"misses":2,"partials":0,"coverage":0.0,"branches":0,"methods":1,"messages":0,"sessions":0,"complexity":1.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Complexity/MessageInspector.php","totals":{"files":0,"lines":37,"hits":37,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":7,"messages":0,"sessions":0,"complexity":21.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Complexity/RequestFactsCollector.php","totals":{"files":0,"lines":14,"hits":14,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":2,"messages":0,"sessions":0,"complexity":3.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Outcome/CallOutcomeRepository.php","totals":{"files":0,"lines":48,"hits":43,"misses":5,"partials":0,"coverage":89.58,"branches":0,"methods":4,"messages":0,"sessions":0,"complexity":9.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Telemetry/ProviderRetryCounter.php","totals":{"files":0,"lines":4,"hits":4,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":2,"messages":0,"sessions":0,"complexity":2.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Tool/Builtin/AttachFileToContentElementTool.php","totals":{"files":0,"lines":311,"hits":270,"misses":41,"partials":0,"coverage":86.81,"branches":0,"methods":21,"messages":0,"sessions":0,"complexity":74.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Tool/Builtin/CreatePageDraftTool.php","totals":{"files":0,"lines":228,"hits":222,"misses":6,"partials":0,"coverage":97.36,"branches":0,"methods":17,"messages":0,"sessions":0,"complexity":59.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Command/DeriveObservedOutcomesCommand.php","totals":{"files":0,"lines":25,"hits":25,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":3,"messages":0,"sessions":0,"complexity":6.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Command/InstallUseCasePackCommand.php","totals":{"files":0,"lines":43,"hits":39,"misses":4,"partials":0,"coverage":90.69,"branches":0,"methods":4,"messages":0,"sessions":0,"complexity":11.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Domain/ValueObject/ConfigurationIdentifier.php","totals":{"files":0,"lines":9,"hits":9,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":3,"messages":0,"sessions":0,"complexity":4.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Domain/ValueObject/ProviderAdapterKey.php","totals":{"files":0,"lines":9,"hits":9,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":3,"messages":0,"sessions":0,"complexity":4.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Domain/ValueObject/ProviderIdentifier.php","totals":{"files":0,"lines":9,"hits":9,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":3,"messages":0,"sessions":0,"complexity":4.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Domain/ValueObject/RecordReference.php","totals":{"files":0,"lines":13,"hits":13,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":3,"messages":0,"sessions":0,"complexity":5.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Event/AfterAiRecordWrittenEvent.php","totals":{"files":0,"lines":6,"hits":6,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":1,"messages":0,"sessions":0,"complexity":2.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Agent/AgentRunCancellationSignal.php","totals":{"files":0,"lines":11,"hits":11,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":2,"messages":0,"sessions":0,"complexity":5.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Agent/AgentRunCancellationSignalFactory.php","totals":{"files":0,"lines":4,"hits":2,"misses":2,"partials":0,"coverage":50.0,"branches":0,"methods":2,"messages":0,"sessions":0,"complexity":2.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Outcome/ObservedOutcomeDeriver.php","totals":{"files":0,"lines":34,"hits":32,"misses":2,"partials":0,"coverage":94.11,"branches":0,"methods":5,"messages":0,"sessions":0,"complexity":17.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Outcome/ObservedWrite.php","totals":{"files":0,"lines":2,"hits":0,"misses":2,"partials":0,"coverage":0.0,"branches":0,"methods":1,"messages":0,"sessions":0,"complexity":1.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Outcome/WrittenRecordRepository.php","totals":{"files":0,"lines":122,"hits":76,"misses":46,"partials":0,"coverage":62.29,"branches":0,"methods":11,"messages":0,"sessions":0,"complexity":35.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Tool/ApprovalPreviewComparator.php","totals":{"files":0,"lines":76,"hits":0,"misses":76,"partials":0,"coverage":0.0,"branches":0,"methods":8,"messages":0,"sessions":0,"complexity":20.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Domain/ValueObject/ImageTokenUsage.php","totals":{"files":0,"lines":4,"hits":4,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":2,"messages":0,"sessions":0,"complexity":3.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Domain/ValueObject/ModelIdentifier.php","totals":{"files":0,"lines":9,"hits":9,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":3,"messages":0,"sessions":0,"complexity":4.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Domain/ValueObject/ProviderModelName.php","totals":{"files":0,"lines":9,"hits":9,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":3,"messages":0,"sessions":0,"complexity":4.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Controller/Backend/ModuleChromeTrait.php","totals":{"files":0,"lines":26,"hits":20,"misses":6,"partials":0,"coverage":76.92,"branches":0,"methods":3,"messages":0,"sessions":0,"complexity":9.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Tool/Builtin/ResolvesOneFalAssetTrait.php","totals":{"files":0,"lines":42,"hits":41,"misses":1,"partials":0,"coverage":97.61,"branches":0,"methods":3,"messages":0,"sessions":0,"complexity":9.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Tool/Builtin/UpdateFalAssetMetaTool.php","totals":{"files":0,"lines":245,"hits":222,"misses":23,"partials":0,"coverage":90.61,"branches":0,"methods":18,"messages":0,"sessions":0,"complexity":62.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Controller/Backend/GlossaryController.php","totals":{"files":0,"lines":30,"hits":28,"misses":2,"partials":0,"coverage":93.33,"branches":0,"methods":2,"messages":0,"sessions":0,"complexity":5.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Domain/Repository/GlossaryRepository.php","totals":{"files":0,"lines":9,"hits":9,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":2,"messages":0,"sessions":0,"complexity":2.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Domain/ValueObject/GlossaryTerms.php","totals":{"files":0,"lines":29,"hits":29,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":6,"messages":0,"sessions":0,"complexity":16.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Form/Tca/SiteItems.php","totals":{"files":0,"lines":16,"hits":16,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":1,"messages":0,"sessions":0,"complexity":7.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Hook/TranslationCacheFlushHook.php","totals":{"files":0,"lines":8,"hits":8,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":3,"messages":0,"sessions":0,"complexity":4.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Provider/OpenAi/OpenAiModelProfile.php","totals":{"files":0,"lines":32,"hits":32,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":6,"messages":0,"sessions":0,"complexity":16.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Provider/OpenAi/OpenAiModelProfiles.php","totals":{"files":0,"lines":26,"hits":26,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":2,"messages":0,"sessions":0,"complexity":8.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Provider/OpenAi/ResponsesPayloadBuilder.php","totals":{"files":0,"lines":119,"hits":0,"misses":119,"partials":0,"coverage":0.0,"branches":0,"methods":6,"messages":0,"sessions":0,"complexity":51.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Provider/OpenAi/ResponsesResult.php","totals":{"files":0,"lines":2,"hits":0,"misses":2,"partials":0,"coverage":0.0,"branches":0,"methods":1,"messages":0,"sessions":0,"complexity":1.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Provider/OpenAi/ResponsesResultParser.php","totals":{"files":0,"lines":71,"hits":0,"misses":71,"partials":0,"coverage":0.0,"branches":0,"methods":5,"messages":0,"sessions":0,"complexity":20.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Agent/Exception/RunConfigurationInactiveException.php","totals":{"files":0,"lines":2,"hits":0,"misses":2,"partials":0,"coverage":0.0,"branches":0,"methods":1,"messages":0,"sessions":0,"complexity":2.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Glossary/GlossaryResolver.php","totals":{"files":0,"lines":60,"hits":59,"misses":1,"partials":0,"coverage":98.33,"branches":0,"methods":6,"messages":0,"sessions":0,"complexity":16.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Glossary/ResolvedGlossary.php","totals":{"files":0,"lines":4,"hits":4,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":2,"messages":0,"sessions":0,"complexity":2.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Tool/UnattendedToolFilter.php","totals":{"files":0,"lines":11,"hits":11,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":2,"messages":0,"sessions":0,"complexity":6.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Tool/UnavailableToolsResolver.php","totals":{"files":0,"lines":9,"hits":9,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":2,"messages":0,"sessions":0,"complexity":5.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Tool/Builtin/ActsOnAnExistingRecordTrait.php","totals":{"files":0,"lines":59,"hits":56,"misses":3,"partials":0,"coverage":94.91,"branches":0,"methods":9,"messages":0,"sessions":0,"complexity":36.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Tool/Builtin/CopyRecordTool.php","totals":{"files":0,"lines":347,"hits":318,"misses":29,"partials":0,"coverage":91.64,"branches":0,"methods":18,"messages":0,"sessions":0,"complexity":118.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Tool/Builtin/CreateRecordDraftTool.php","totals":{"files":0,"lines":776,"hits":761,"misses":15,"partials":0,"coverage":98.06,"branches":0,"methods":53,"messages":0,"sessions":0,"complexity":378.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Tool/Builtin/DeleteRecordTool.php","totals":{"files":0,"lines":502,"hits":458,"misses":44,"partials":0,"coverage":91.23,"branches":0,"methods":24,"messages":0,"sessions":0,"complexity":177.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Tool/Builtin/FetchExternalUrlTool.php","totals":{"files":0,"lines":219,"hits":208,"misses":11,"partials":0,"coverage":94.97,"branches":0,"methods":21,"messages":0,"sessions":0,"complexity":73.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Tool/Builtin/FetchesSysFileRowTrait.php","totals":{"files":0,"lines":12,"hits":11,"misses":1,"partials":0,"coverage":91.66,"branches":0,"methods":1,"messages":0,"sessions":0,"complexity":3.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Tool/Builtin/MovePageTool.php","totals":{"files":0,"lines":269,"hits":254,"misses":15,"partials":0,"coverage":94.42,"branches":0,"methods":14,"messages":0,"sessions":0,"complexity":89.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Tool/Builtin/PublishRecordTool.php","totals":{"files":0,"lines":168,"hits":143,"misses":25,"partials":0,"coverage":85.11,"branches":0,"methods":12,"messages":0,"sessions":0,"complexity":60.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Tool/Builtin/ReadsContentTypeFormsTrait.php","totals":{"files":0,"lines":258,"hits":251,"misses":7,"partials":0,"coverage":97.28,"branches":0,"methods":23,"messages":0,"sessions":0,"complexity":179.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Tool/Builtin/ReadsRecordTypeFormTrait.php","totals":{"files":0,"lines":46,"hits":42,"misses":4,"partials":0,"coverage":91.3,"branches":0,"methods":2,"messages":0,"sessions":0,"complexity":31.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Tool/Builtin/ReplaceFileReferenceTool.php","totals":{"files":0,"lines":469,"hits":419,"misses":50,"partials":0,"coverage":89.33,"branches":0,"methods":21,"messages":0,"sessions":0,"complexity":116.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Tool/Builtin/SetPageSocialImageTool.php","totals":{"files":0,"lines":413,"hits":401,"misses":12,"partials":0,"coverage":97.09,"branches":0,"methods":22,"messages":0,"sessions":0,"complexity":91.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Tool/Builtin/ToolDataHandler.php","totals":{"files":0,"lines":104,"hits":100,"misses":4,"partials":0,"coverage":96.15,"branches":0,"methods":15,"messages":0,"sessions":0,"complexity":49.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Tool/Builtin/UpdateContentElementTool.php","totals":{"files":0,"lines":260,"hits":230,"misses":30,"partials":0,"coverage":88.46,"branches":0,"methods":15,"messages":0,"sessions":0,"complexity":80.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Tool/Web/BoundedSinkStream.php","totals":{"files":0,"lines":17,"hits":17,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":4,"messages":0,"sessions":0,"complexity":6.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Tool/Web/DnsHostResolver.php","totals":{"files":0,"lines":12,"hits":0,"misses":12,"partials":0,"coverage":0.0,"branches":0,"methods":1,"messages":0,"sessions":0,"complexity":6.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Tool/Web/ExternalFetchClientFactory.php","totals":{"files":0,"lines":9,"hits":6,"misses":3,"partials":0,"coverage":66.66,"branches":0,"methods":3,"messages":0,"sessions":0,"complexity":5.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Tool/Web/ExternalFetchSettings.php","totals":{"files":0,"lines":39,"hits":36,"misses":3,"partials":0,"coverage":92.3,"branches":0,"methods":8,"messages":0,"sessions":0,"complexity":21.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Tool/Web/ExternalFetchTarget.php","totals":{"files":0,"lines":13,"hits":13,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":4,"messages":0,"sessions":0,"complexity":7.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Tool/Web/ExternalUrlGuard.php","totals":{"files":0,"lines":75,"hits":71,"misses":4,"partials":0,"coverage":94.66,"branches":0,"methods":5,"messages":0,"sessions":0,"complexity":42.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Tool/Web/HostListEntry.php","totals":{"files":0,"lines":38,"hits":35,"misses":3,"partials":0,"coverage":92.1,"branches":0,"methods":7,"messages":0,"sessions":0,"complexity":21.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Tool/Web/HtmlTextExtractor.php","totals":{"files":0,"lines":113,"hits":98,"misses":15,"partials":0,"coverage":86.72,"branches":0,"methods":8,"messages":0,"sessions":0,"complexity":59.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Tool/Web/IpAddressClassifier.php","totals":{"files":0,"lines":55,"hits":54,"misses":1,"partials":0,"coverage":98.18,"branches":0,"methods":4,"messages":0,"sessions":0,"complexity":50.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Tool/Web/ProxyDetector.php","totals":{"files":0,"lines":72,"hits":68,"misses":4,"partials":0,"coverage":94.44,"branches":0,"methods":9,"messages":0,"sessions":0,"complexity":49.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Specialized/Translation/CharacterQuota.php","totals":{"files":0,"lines":6,"hits":6,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":2,"messages":0,"sessions":0,"complexity":3.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Specialized/Translation/DeepLGlossarySync.php","totals":{"files":0,"lines":45,"hits":45,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":4,"messages":0,"sessions":0,"complexity":13.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Command/AgentStatusCommand.php","totals":{"files":0,"lines":70,"hits":70,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":6,"messages":0,"sessions":0,"complexity":25.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Controller/Backend/DecisionProbeTrait.php","totals":{"files":0,"lines":7,"hits":7,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":2,"messages":0,"sessions":0,"complexity":2.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Controller/Backend/SkillApprovalController.php","totals":{"files":0,"lines":66,"hits":46,"misses":20,"partials":0,"coverage":69.69,"branches":0,"methods":10,"messages":0,"sessions":0,"complexity":29.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Domain/ValueObject/PendingWriteTarget.php","totals":{"files":0,"lines":26,"hits":26,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":3,"messages":0,"sessions":0,"complexity":13.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Domain/ValueObject/SkillApproval.php","totals":{"files":0,"lines":11,"hits":0,"misses":11,"partials":0,"coverage":0.0,"branches":0,"methods":2,"messages":0,"sessions":0,"complexity":2.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Domain/ValueObject/SkillPin.php","totals":{"files":0,"lines":26,"hits":0,"misses":26,"partials":0,"coverage":0.0,"branches":0,"methods":6,"messages":0,"sessions":0,"complexity":16.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Domain/ValueObject/SkillSourceFacts.php","totals":{"files":0,"lines":2,"hits":0,"misses":2,"partials":0,"coverage":0.0,"branches":0,"methods":1,"messages":0,"sessions":0,"complexity":1.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Domain/ValueObject/SkillToolAllowList.php","totals":{"files":0,"lines":19,"hits":10,"misses":9,"partials":0,"coverage":52.63,"branches":0,"methods":4,"messages":0,"sessions":0,"complexity":10.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Domain/ValueObject/SkillVersionReview.php","totals":{"files":0,"lines":23,"hits":0,"misses":23,"partials":0,"coverage":0.0,"branches":0,"methods":11,"messages":0,"sessions":0,"complexity":15.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Domain/ValueObject/ToolInvocationDecision.php","totals":{"files":0,"lines":12,"hits":0,"misses":12,"partials":0,"coverage":0.0,"branches":0,"methods":4,"messages":0,"sessions":0,"complexity":8.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Domain/ValueObject/ToolInvocationHistory.php","totals":{"files":0,"lines":41,"hits":41,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":5,"messages":0,"sessions":0,"complexity":24.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Domain/ValueObject/ToolInvocationTarget.php","totals":{"files":0,"lines":5,"hits":0,"misses":5,"partials":0,"coverage":0.0,"branches":0,"methods":1,"messages":0,"sessions":0,"complexity":3.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Domain/ValueObject/Decision/ChoiceQuestion.php","totals":{"files":0,"lines":28,"hits":28,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":5,"messages":0,"sessions":0,"complexity":9.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Domain/ValueObject/Decision/DecisionAnswer.php","totals":{"files":0,"lines":21,"hits":20,"misses":1,"partials":0,"coverage":95.23,"branches":0,"methods":5,"messages":0,"sessions":0,"complexity":12.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Domain/ValueObject/Decision/DecisionSubject.php","totals":{"files":0,"lines":21,"hits":21,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":4,"messages":0,"sessions":0,"complexity":13.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Domain/ValueObject/Decision/QuestionGuard.php","totals":{"files":0,"lines":28,"hits":28,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":6,"messages":0,"sessions":0,"complexity":13.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Domain/ValueObject/Decision/ScoreQuestion.php","totals":{"files":0,"lines":16,"hits":16,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":5,"messages":0,"sessions":0,"complexity":6.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Domain/ValueObject/Decision/YesNoQuestion.php","totals":{"files":0,"lines":11,"hits":11,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":4,"messages":0,"sessions":0,"complexity":4.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Exception/SkillInstructionWithdrawnException.php","totals":{"files":0,"lines":9,"hits":9,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":1,"messages":0,"sessions":0,"complexity":1.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Provider/AbstractDecisionProvider.php","totals":{"files":0,"lines":71,"hits":70,"misses":1,"partials":0,"coverage":98.59,"branches":0,"methods":12,"messages":0,"sessions":0,"complexity":31.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Provider/DecisionSidecarProvider.php","totals":{"files":0,"lines":69,"hits":68,"misses":1,"partials":0,"coverage":98.55,"branches":0,"methods":13,"messages":0,"sessions":0,"complexity":31.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Provider/TypeSafeProvider.php","totals":{"files":0,"lines":82,"hits":81,"misses":1,"partials":0,"coverage":98.78,"branches":0,"methods":12,"messages":0,"sessions":0,"complexity":32.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Provider/Exception/InvalidDecisionResponseException.php","totals":{"files":0,"lines":4,"hits":2,"misses":2,"partials":0,"coverage":50.0,"branches":0,"methods":2,"messages":0,"sessions":0,"complexity":2.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Agent/GuardedCancelResult.php","totals":{"files":0,"lines":2,"hits":0,"misses":2,"partials":0,"coverage":0.0,"branches":0,"methods":1,"messages":0,"sessions":0,"complexity":1.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Agent/Operations/WorkerHeartbeatListener.php","totals":{"files":0,"lines":41,"hits":41,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":9,"messages":0,"sessions":0,"complexity":22.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Agent/Operations/WorkerOperationsRepository.php","totals":{"files":0,"lines":83,"hits":83,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":5,"messages":0,"sessions":0,"complexity":9.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Agent/Operations/WorkerOperationsSnapshot.php","totals":{"files":0,"lines":12,"hits":0,"misses":12,"partials":0,"coverage":0.0,"branches":0,"methods":2,"messages":0,"sessions":0,"complexity":2.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/PipelineScope.php","totals":{"files":0,"lines":2,"hits":0,"misses":2,"partials":0,"coverage":0.0,"branches":0,"methods":1,"messages":0,"sessions":0,"complexity":1.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Decision/DecisionException.php","totals":{"files":0,"lines":51,"hits":51,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":11,"messages":0,"sessions":0,"complexity":11.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Decision/DecisionRequest.php","totals":{"files":0,"lines":4,"hits":4,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":2,"messages":0,"sessions":0,"complexity":2.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Decision/DecisionResult.php","totals":{"files":0,"lines":4,"hits":4,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":2,"messages":0,"sessions":0,"complexity":2.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Decision/DecisionService.php","totals":{"files":0,"lines":119,"hits":119,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":13,"messages":0,"sessions":0,"complexity":62.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Decision/StructuredDecisionAsker.php","totals":{"files":0,"lines":79,"hits":79,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":6,"messages":0,"sessions":0,"complexity":37.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Decision/Profile/BuiltinDecisionProfileProvider.php","totals":{"files":0,"lines":17,"hits":17,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":1,"messages":0,"sessions":0,"complexity":1.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Decision/Profile/DecisionProfile.php","totals":{"files":0,"lines":17,"hits":17,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":1,"messages":0,"sessions":0,"complexity":5.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Decision/Profile/DecisionProfileRegistry.php","totals":{"files":0,"lines":43,"hits":43,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":4,"messages":0,"sessions":0,"complexity":14.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Evaluation/RetrievalProvenance.php","totals":{"files":0,"lines":24,"hits":16,"misses":8,"partials":0,"coverage":66.66,"branches":0,"methods":2,"messages":0,"sessions":0,"complexity":9.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Evaluation/RetrievalRunIdentity.php","totals":{"files":0,"lines":42,"hits":42,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":3,"messages":0,"sessions":0,"complexity":6.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Evaluation/Grader/DecisionGrader.php","totals":{"files":0,"lines":30,"hits":26,"misses":4,"partials":0,"coverage":86.66,"branches":0,"methods":5,"messages":0,"sessions":0,"complexity":10.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Option/DecisionOptions.php","totals":{"files":0,"lines":7,"hits":5,"misses":2,"partials":0,"coverage":71.42,"branches":0,"methods":3,"messages":0,"sessions":0,"complexity":3.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/SetupWizard/Discovery/DecisionSidecarModelDiscoverer.php","totals":{"files":0,"lines":20,"hits":20,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":1,"messages":0,"sessions":0,"complexity":8.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/SetupWizard/Discovery/TypeSafeModelDiscoverer.php","totals":{"files":0,"lines":40,"hits":40,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":5,"messages":0,"sessions":0,"complexity":18.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Skill/SkillApprovalRepository.php","totals":{"files":0,"lines":114,"hits":108,"misses":6,"partials":0,"coverage":94.73,"branches":0,"methods":10,"messages":0,"sessions":0,"complexity":22.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Skill/SkillApprovalService.php","totals":{"files":0,"lines":85,"hits":85,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":10,"messages":0,"sessions":0,"complexity":29.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Skill/SkillFrontmatter.php","totals":{"files":0,"lines":14,"hits":14,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":2,"messages":0,"sessions":0,"complexity":9.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Skill/SkillInstructionPolicy.php","totals":{"files":0,"lines":16,"hits":13,"misses":3,"partials":0,"coverage":81.25,"branches":0,"methods":4,"messages":0,"sessions":0,"complexity":11.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Skill/SkillInvisibleCharacters.php","totals":{"files":0,"lines":25,"hits":22,"misses":3,"partials":0,"coverage":88.0,"branches":0,"methods":1,"messages":0,"sessions":0,"complexity":7.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Skill/SkillPinCheck.php","totals":{"files":0,"lines":25,"hits":24,"misses":1,"partials":0,"coverage":96.0,"branches":0,"methods":4,"messages":0,"sessions":0,"complexity":13.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Skill/SkillRecordLookup.php","totals":{"files":0,"lines":20,"hits":20,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":2,"messages":0,"sessions":0,"complexity":4.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Skill/SkillSourceLookup.php","totals":{"files":0,"lines":25,"hits":24,"misses":1,"partials":0,"coverage":96.0,"branches":0,"methods":2,"messages":0,"sessions":0,"complexity":4.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Skill/SkillVersionDigest.php","totals":{"files":0,"lines":41,"hits":41,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":7,"messages":0,"sessions":0,"complexity":14.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Tool/ApprovalPreviewHeadings.php","totals":{"files":0,"lines":25,"hits":24,"misses":1,"partials":0,"coverage":96.0,"branches":0,"methods":4,"messages":0,"sessions":0,"complexity":10.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Tool/ApprovalPreviewLabel.php","totals":{"files":0,"lines":29,"hits":29,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":2,"messages":0,"sessions":0,"complexity":4.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Tool/ApprovalPreviewTranslator.php","totals":{"files":0,"lines":51,"hits":22,"misses":29,"partials":0,"coverage":43.13,"branches":0,"methods":11,"messages":0,"sessions":0,"complexity":33.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Tool/PageTsConfigReader.php","totals":{"files":0,"lines":45,"hits":43,"misses":2,"partials":0,"coverage":95.55,"branches":0,"methods":2,"messages":0,"sessions":0,"complexity":13.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Tool/ToolInvocationContext.php","totals":{"files":0,"lines":2,"hits":0,"misses":2,"partials":0,"coverage":0.0,"branches":0,"methods":1,"messages":0,"sessions":0,"complexity":1.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Tool/ToolInvocationEnvironment.php","totals":{"files":0,"lines":2,"hits":0,"misses":2,"partials":0,"coverage":0.0,"branches":0,"methods":1,"messages":0,"sessions":0,"complexity":1.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Tool/ToolInvocationPolicy.php","totals":{"files":0,"lines":30,"hits":29,"misses":1,"partials":0,"coverage":96.66,"branches":0,"methods":3,"messages":0,"sessions":0,"complexity":16.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Tool/ToolResumption.php","totals":{"files":0,"lines":2,"hits":0,"misses":2,"partials":0,"coverage":0.0,"branches":0,"methods":1,"messages":0,"sessions":0,"complexity":1.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Tool/Builtin/AttachFileToRecordTool.php","totals":{"files":0,"lines":384,"hits":348,"misses":36,"partials":0,"coverage":90.62,"branches":0,"methods":24,"messages":0,"sessions":0,"complexity":132.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Tool/Builtin/FetchesLiveRowTrait.php","totals":{"files":0,"lines":16,"hits":15,"misses":1,"partials":0,"coverage":93.75,"branches":0,"methods":1,"messages":0,"sessions":0,"complexity":3.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Tool/Builtin/ReadsHiddenRecordsTrait.php","totals":{"files":0,"lines":24,"hits":22,"misses":2,"partials":0,"coverage":91.66,"branches":0,"methods":4,"messages":0,"sessions":0,"complexity":16.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Tool/Mcp/Auth/ConfiguredMcpSubjectResolver.php","totals":{"files":0,"lines":30,"hits":29,"misses":1,"partials":0,"coverage":96.66,"branches":0,"methods":4,"messages":0,"sessions":0,"complexity":9.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Tool/Mcp/Auth/McpAuthOperationGuard.php","totals":{"files":0,"lines":8,"hits":0,"misses":8,"partials":0,"coverage":0.0,"branches":0,"methods":1,"messages":0,"sessions":0,"complexity":4.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Tool/Mcp/Auth/McpAuthValidation.php","totals":{"files":0,"lines":46,"hits":0,"misses":46,"partials":0,"coverage":0.0,"branches":0,"methods":10,"messages":0,"sessions":0,"complexity":44.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Tool/Mcp/Auth/McpAuthenticationSessionFactory.php","totals":{"files":0,"lines":59,"hits":57,"misses":2,"partials":0,"coverage":96.61,"branches":0,"methods":4,"messages":0,"sessions":0,"complexity":15.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Tool/Mcp/Auth/McpDelegatedCredentialSession.php","totals":{"files":0,"lines":55,"hits":52,"misses":3,"partials":0,"coverage":94.54,"branches":0,"methods":5,"messages":0,"sessions":0,"complexity":13.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Tool/Mcp/Auth/McpDelegationBinding.php","totals":{"files":0,"lines":2,"hits":0,"misses":2,"partials":0,"coverage":0.0,"branches":0,"methods":1,"messages":0,"sessions":0,"complexity":1.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Tool/Mcp/Auth/McpDelegationConfiguration.php","totals":{"files":0,"lines":33,"hits":1,"misses":32,"partials":0,"coverage":3.03,"branches":0,"methods":5,"messages":0,"sessions":0,"complexity":14.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Tool/Mcp/Auth/McpDelegationProfile.php","totals":{"files":0,"lines":8,"hits":8,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":1,"messages":0,"sessions":0,"complexity":2.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Tool/Mcp/Auth/McpDiscoveryCredentialSession.php","totals":{"files":0,"lines":9,"hits":0,"misses":9,"partials":0,"coverage":0.0,"branches":0,"methods":3,"messages":0,"sessions":0,"complexity":4.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Tool/Mcp/Auth/McpIssuedCredential.php","totals":{"files":0,"lines":1,"hits":0,"misses":1,"partials":0,"coverage":0.0,"branches":0,"methods":1,"messages":0,"sessions":0,"complexity":1.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Tool/Mcp/Auth/McpSubjectCredential.php","totals":{"files":0,"lines":4,"hits":4,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":1,"messages":0,"sessions":0,"complexity":1.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Service/Tool/Mcp/Auth/McpTokenExchange.php","totals":{"files":0,"lines":208,"hits":192,"misses":16,"partials":0,"coverage":92.3,"branches":0,"methods":16,"messages":0,"sessions":0,"complexity":79.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Testing/FakeDecisionService.php","totals":{"files":0,"lines":11,"hits":11,"misses":0,"partials":0,"coverage":100.0,"branches":0,"methods":2,"messages":0,"sessions":0,"complexity":4.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Updates/SkillVersionDigestUpdateWizard.php","totals":{"files":0,"lines":116,"hits":94,"misses":22,"partials":0,"coverage":81.03,"branches":0,"methods":12,"messages":0,"sessions":0,"complexity":30.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Controller/Backend/ConfigurationController.php","totals":{"files":0,"lines":365,"hits":87,"misses":278,"partials":0,"coverage":23.83,"branches":0,"methods":30,"messages":0,"sessions":0,"complexity":98.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Controller/Backend/LlmModuleController.php","totals":{"files":0,"lines":267,"hits":26,"misses":241,"partials":0,"coverage":9.73,"branches":0,"methods":17,"messages":0,"sessions":0,"complexity":54.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Controller/Backend/ModelController.php","totals":{"files":0,"lines":159,"hits":49,"misses":110,"partials":0,"coverage":30.81,"branches":0,"methods":12,"messages":0,"sessions":0,"complexity":37.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Controller/Backend/ModelDiscoveryController.php","totals":{"files":0,"lines":144,"hits":86,"misses":58,"partials":0,"coverage":59.72,"branches":0,"methods":8,"messages":0,"sessions":0,"complexity":31.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Controller/Backend/ModelTestController.php","totals":{"files":0,"lines":147,"hits":59,"misses":88,"partials":0,"coverage":40.13,"branches":0,"methods":9,"messages":0,"sessions":0,"complexity":31.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Controller/Backend/ProviderController.php","totals":{"files":0,"lines":143,"hits":36,"misses":107,"partials":0,"coverage":25.17,"branches":0,"methods":9,"messages":0,"sessions":0,"complexity":26.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}},{"name":"Classes/Controller/Backend/SetupWizardController.php","totals":{"files":0,"lines":313,"hits":248,"misses":65,"partials":0,"coverage":79.23,"branches":0,"methods":23,"messages":0,"sessions":0,"complexity":111.0,"complexity_total":0.0,"complexity_ratio":0,"diff":0}}]}}}