{
"event": "PreToolUse",
"tool_name": "Edit",
"tool_input": {
"file_path": "\/var\/www\/dev.campus.systemische-tools.de\/src\/ServiceProvider\/InfrastructureServiceProvider.php",
"old_string": " \/\/ Application Services\n $container->set(AuditLogger::class, fn (Container $c) => new AuditLogger($c->get('pdo.dev')));\n $container->set(AuditService::class, fn (Container $c) => new AuditService($c->get('pdo.dev')));\n $container->set(ApiResponseFormatter::class, fn () => new ApiResponseFormatter());\n }\n}",
"new_string": " \/\/ Application Services\n $container->set(AuditLogger::class, fn (Container $c) => new AuditLogger($c->get('pdo.dev')));\n $container->set(AuditService::class, fn (Container $c) => new AuditService($c->get('pdo.dev')));\n $container->set(ApiResponseFormatter::class, fn () => new ApiResponseFormatter());\n\n \/\/ KI-Protokoll Service (crash-safe logging wrapper)\n $container->set(KiProtokollService::class, fn (Container $c) => new KiProtokollService(\n $c->get(KiProtokollRepositoryInterface::class)\n ));\n }\n}"
}
}
{
"tool_response": {
"filePath": "\/var\/www\/dev.campus.systemische-tools.de\/src\/ServiceProvider\/InfrastructureServiceProvider.php",
"oldString": " \/\/ Application Services\n $container->set(AuditLogger::class, fn (Container $c) => new AuditLogger($c->get('pdo.dev')));\n $container->set(AuditService::class, fn (Container $c) => new AuditService($c->get('pdo.dev')));\n $container->set(ApiResponseFormatter::class, fn () => new ApiResponseFormatter());\n }\n}",
"newString": " \/\/ Application Services\n $container->set(AuditLogger::class, fn (Container $c) => new AuditLogger($c->get('pdo.dev')));\n $container->set(AuditService::class, fn (Container $c) => new AuditService($c->get('pdo.dev')));\n $container->set(ApiResponseFormatter::class, fn () => new ApiResponseFormatter());\n\n \/\/ KI-Protokoll Service (crash-safe logging wrapper)\n $container->set(KiProtokollService::class, fn (Container $c) => new KiProtokollService(\n $c->get(KiProtokollRepositoryInterface::class)\n ));\n }\n}",
"originalFile": "<?php\n\ndeclare(strict_types=1);\n\n\/\/ @responsibility: Register Infrastructure services in DI container\n\nnamespace ServiceProvider;\n\nuse Domain\\Repository\\ChunkExplorerRepositoryInterface;\nuse Domain\\Repository\\ChunkTaxonomyRepositoryInterface;\nuse Domain\\Repository\\CodeQualityRepositoryInterface;\nuse Domain\\Repository\\ContractRepositoryInterface;\nuse Domain\\Repository\\DependencyGraphRepositoryInterface;\nuse Domain\\Repository\\DokumentationRepositoryInterface;\nuse Domain\\Repository\\DokumentExplorerRepositoryInterface;\nuse Domain\\Repository\\EntityTaxonomyRepositoryInterface;\nuse Domain\\Repository\\FileAnalysisRepositoryInterface;\nuse Domain\\Repository\\FileBackupRepositoryInterface;\nuse Domain\\Repository\\KiProtokollRepositoryInterface;\nuse Domain\\Repository\\SeiteExplorerRepositoryInterface;\nuse Domain\\Service\\CodeScannerInterface;\nuse Domain\\Service\\SearchServiceInterface;\nuse Framework\\Container;\nuse Infrastructure\\Audit\\AuditService;\nuse Infrastructure\\CodeAnalysis\\CodeQualityChecker;\nuse Infrastructure\\CodeAnalysis\\CodeScanner;\nuse Infrastructure\\CodeAnalysis\\JsFileParser;\nuse Infrastructure\\CodeAnalysis\\PhpFileParser;\nuse Infrastructure\\CodeAnalysis\\PythonFileParser;\nuse Infrastructure\\Docs\\ChunkAnalysisService;\nuse Infrastructure\\Docs\\ChunkAnalyzer;\nuse Infrastructure\\Docs\\ChunkDataRepository;\nuse Infrastructure\\Docs\\ChunkingService;\nuse Infrastructure\\Docs\\ChunkSearchService;\nuse Infrastructure\\Docs\\ChunkSyncService;\nuse Infrastructure\\Docs\\HybridSearchService;\nuse Infrastructure\\Formatter\\ApiResponseFormatter;\nuse Infrastructure\\Search\\ContentSearchService;\nuse Infrastructure\\Logging\\AuditLogger;\nuse Infrastructure\\Logging\\KiProtokollService;\nuse Infrastructure\\Persistence\\ChunkExplorerRepository;\nuse Infrastructure\\Persistence\\ChunkTaxonomyRepository;\nuse Infrastructure\\Persistence\\CodeQualityRepository;\nuse Infrastructure\\Persistence\\ContractRepository;\nuse Infrastructure\\Persistence\\DependencyGraphRepository;\nuse Infrastructure\\Persistence\\DokumentationRepository;\nuse Infrastructure\\Persistence\\DokumentExplorerRepository;\nuse Infrastructure\\Persistence\\EntityTaxonomyRepository;\nuse Infrastructure\\Persistence\\FileAnalysisRepository;\nuse Infrastructure\\Persistence\\FileBackupRepository;\nuse Infrastructure\\Persistence\\KiProtokollRepository;\nuse Infrastructure\\Persistence\\SeiteExplorerRepository;\n\n\/**\n * InfrastructureServiceProvider registers infrastructure and technical services.\n *\/\nfinal class InfrastructureServiceProvider implements ServiceProviderInterface\n{\n public function register(Container $container): void\n {\n \/\/ Repositories\n $container->set(DokumentExplorerRepository::class, fn (Container $c) => new DokumentExplorerRepository($c->get('pdo.dev')));\n $container->set(SeiteExplorerRepository::class, fn (Container $c) => new SeiteExplorerRepository($c->get('pdo.dev')));\n $container->set(ChunkExplorerRepository::class, fn (Container $c) => new ChunkExplorerRepository($c->get('pdo.dev')));\n $container->set(DokumentationRepository::class, fn (Container $c) => new DokumentationRepository($c->get('pdo.dev')));\n $container->set(FileBackupRepository::class, fn (Container $c) => new FileBackupRepository($c->get('pdo.dev')));\n $container->set(ContractRepository::class, fn (Container $c) => new ContractRepository($c->get('pdo.dev')));\n $container->set(KiProtokollRepository::class, fn (Container $c) => new KiProtokollRepository($c->get('pdo.dev')));\n $container->set(FileAnalysisRepository::class, fn (Container $c) => new FileAnalysisRepository($c->get('pdo.dev')));\n $container->set(DependencyGraphRepository::class, fn (Container $c) => new DependencyGraphRepository($c->get('pdo.dev')));\n $container->set(CodeQualityRepository::class, fn (Container $c) => new CodeQualityRepository($c->get('pdo.dev')));\n\n \/\/ Taxonomy Mapping Repositories (ki_content database)\n $container->set(ChunkTaxonomyRepository::class, fn (Container $c) => new ChunkTaxonomyRepository($c->get('pdo.content')));\n $container->set(EntityTaxonomyRepository::class, fn (Container $c) => new EntityTaxonomyRepository($c->get('pdo.content')));\n\n \/\/ Interface aliases\n $container->set(DokumentationRepositoryInterface::class, fn (Container $c) => $c->get(DokumentationRepository::class));\n $container->set(DokumentExplorerRepositoryInterface::class, fn (Container $c) => $c->get(DokumentExplorerRepository::class));\n $container->set(SeiteExplorerRepositoryInterface::class, fn (Container $c) => $c->get(SeiteExplorerRepository::class));\n $container->set(ChunkExplorerRepositoryInterface::class, fn (Container $c) => $c->get(ChunkExplorerRepository::class));\n $container->set(FileAnalysisRepositoryInterface::class, fn (Container $c) => $c->get(FileAnalysisRepository::class));\n $container->set(DependencyGraphRepositoryInterface::class, fn (Container $c) => $c->get(DependencyGraphRepository::class));\n $container->set(CodeQualityRepositoryInterface::class, fn (Container $c) => $c->get(CodeQualityRepository::class));\n $container->set(FileBackupRepositoryInterface::class, fn (Container $c) => $c->get(FileBackupRepository::class));\n $container->set(KiProtokollRepositoryInterface::class, fn (Container $c) => $c->get(KiProtokollRepository::class));\n $container->set(ContractRepositoryInterface::class, fn (Container $c) => $c->get(ContractRepository::class));\n $container->set(ChunkTaxonomyRepositoryInterface::class, fn (Container $c) => $c->get(ChunkTaxonomyRepository::class));\n $container->set(EntityTaxonomyRepositoryInterface::class, fn (Container $c) => $c->get(EntityTaxonomyRepository::class));\n\n \/\/ Code Analysis\n $container->set(PhpFileParser::class, fn () => new PhpFileParser());\n $container->set(PythonFileParser::class, fn () => new PythonFileParser());\n $container->set(JsFileParser::class, fn () => new JsFileParser());\n $container->set(CodeQualityChecker::class, fn () => new CodeQualityChecker());\n\n $container->set(CodeScanner::class, function (Container $c) {\n return new CodeScanner(\n $c->get(FileAnalysisRepositoryInterface::class),\n $c->get(CodeQualityRepositoryInterface::class),\n $c->get(PhpFileParser::class),\n $c->get(PythonFileParser::class),\n $c->get(JsFileParser::class),\n $c->get(CodeQualityChecker::class)\n );\n });\n\n $container->set(CodeScannerInterface::class, fn (Container $c) => $c->get(CodeScanner::class));\n\n \/\/ Documentation Services\n $container->set(ChunkSearchService::class, function (Container $c) {\n return new ChunkSearchService(\n $c->get(\\Infrastructure\\AI\\QdrantClient::class),\n $c->get(\\Infrastructure\\AI\\OllamaService::class)\n );\n });\n\n $container->set(ChunkSyncService::class, function (Container $c) {\n return new ChunkSyncService(\n $c->get('pdo.dev'),\n $c->get(\\Infrastructure\\AI\\OllamaService::class),\n $c->get(\\Infrastructure\\AI\\QdrantClient::class)\n );\n });\n\n $container->set(HybridSearchService::class, function (Container $c) {\n return new HybridSearchService(\n $c->get('pdo.dev'),\n $c->get(\\Infrastructure\\AI\\OllamaService::class),\n $c->get(\\Infrastructure\\AI\\QdrantClient::class)\n );\n });\n\n \/\/ ContentSearchService for ki_content (semantic search)\n $container->set(ContentSearchService::class, function (Container $c) {\n return new ContentSearchService(\n $c->get('pdo.content'),\n $c->get(\\Infrastructure\\AI\\OllamaService::class)\n );\n });\n\n \/\/ Interface binding for SearchService (default: ContentSearchService for semantic search)\n $container->set(SearchServiceInterface::class, function (Container $c) {\n return $c->get(ContentSearchService::class);\n });\n\n \/\/ ChunkDataRepository for chunk database operations\n $container->set(ChunkDataRepository::class, function (Container $c) {\n return new ChunkDataRepository($c->get('pdo.dev'));\n });\n\n \/\/ ChunkAnalyzer for LLM-based analysis\n $container->set(ChunkAnalyzer::class, function (Container $c) {\n return new ChunkAnalyzer($c->get(\\Infrastructure\\AI\\OllamaService::class));\n });\n\n \/\/ ChunkAnalysisService orchestrates the analysis\n $container->set(ChunkAnalysisService::class, function (Container $c) {\n return new ChunkAnalysisService(\n $c->get(ChunkDataRepository::class),\n $c->get(ChunkAnalyzer::class)\n );\n });\n\n $container->set(ChunkingService::class, function (Container $c) {\n return new ChunkingService(\n $c->get('pdo.dev'),\n $c->get(DokumentationRepository::class)\n );\n });\n\n \/\/ Application Services\n $container->set(AuditLogger::class, fn (Container $c) => new AuditLogger($c->get('pdo.dev')));\n $container->set(AuditService::class, fn (Container $c) => new AuditService($c->get('pdo.dev')));\n $container->set(ApiResponseFormatter::class, fn () => new ApiResponseFormatter());\n }\n}\n",
"structuredPatch": [
{
"oldStart": 173,
"oldLines": 5,
"newStart": 173,
"newLines": 10,
"lines": [
" $container->set(AuditLogger::class, fn (Container $c) => new AuditLogger($c->get('pdo.dev')));",
" $container->set(AuditService::class, fn (Container $c) => new AuditService($c->get('pdo.dev')));",
" $container->set(ApiResponseFormatter::class, fn () => new ApiResponseFormatter());",
"+",
"+ \/\/ KI-Protokoll Service (crash-safe logging wrapper)",
"+ $container->set(KiProtokollService::class, fn (Container $c) => new KiProtokollService(",
"+ $c->get(KiProtokollRepositoryInterface::class)",
"+ ));",
" }",
" }"
]
}
],
"userModified": false,
"replaceAll": false
}
}