{
"event": "PreToolUse",
"tool_name": "Bash",
"tool_input": {
"command": "\/opt\/scripts\/sync-dev-prod.sh 2>&1",
"description": "Sync dev to prod server"
}
}
{
"tool_response": {
"stdout": "=== Sync Dev → Prod: Sat Dec 20 04:27:18 PM CET 2025 ===\n=== Contract Validation ===\n\u001b[0;34m=== Contract Validation ===\u001b[0m\nTarget: \/var\/www\/dev.campus.systemische-tools.de\nContracts: \/var\/www\/docs\/contracts\n\n\u001b[0;34m[1\/6] View Structure Contract v1.0\u001b[0m\n \u001b[0;32mOK\u001b[0m tasks\/*\n \u001b[0;32mOK\u001b[0m content\/*\n\n\u001b[0;34m[2\/6] HTML Tables Contract v1.0\u001b[0m\n \u001b[0;32mOK\u001b[0m HTML Tables geprüft\n\n\u001b[0;34m[3\/6] CSS Contract v1.0\u001b[0m\n \u001b[0;32mOK\u001b[0m Stylelint passed\n\n\u001b[0;34m[4\/6] Python Pipeline Contract v1.0\u001b[0m\n \u001b[0;32mOK\u001b[0m Ruff + mypy passed\n\n\u001b[0;34m[5\/6] Layered Architecture Contract v1.0\u001b[0m\n \u001b[0;32mOK\u001b[0m Layer-Grenzen eingehalten\n\n\u001b[0;34m[6\/6] Betriebsdokumentation Contract v1.1\u001b[0m\n \u001b[0;32mOK\u001b[0m Dokumentation strukturell korrekt\n\n\u001b[0;34m=== Ergebnis ===\u001b[0m\nCritical: 0\nMajor: 0\nMinor: 0\n\n\u001b[0;32mPASSED: Alle Contracts erfüllt\u001b[0m\n\n=== PHP Quality Check ===\n=== PHP Quality & Security Check: Sat Dec 20 04:27:19 PM CET 2025 ===\nProject: \/var\/www\/dev.campus.systemische-tools.de\n\n\u001b[1;33m[1\/4] PHPStan - Static Analysis + Strict Rules\u001b[0m\n\n [OK] No errors \n\n\u001b[0;32m✓ PHPStan: OK\u001b[0m\n\n\u001b[1;33m[2\/4] PHP-CS-Fixer - Code Style (PSR-12)\u001b[0m\nPHP CS Fixer 3.92.3 Exceptional Exception by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.4.11\nLoaded config default from \"\/opt\/php-tools\/.php-cs-fixer.php\".\nRunning analysis on 1 core sequentially.\nYou can enable parallel runner and speed up the analysis! Please see https:\/\/cs.symfony.com\/doc\/usage.html for more information.\nUsing cache file \"\/tmp\/.php-cs-fixer.cache\".\n 0\/97 [░░░░░░░░░░░░░░░░░░░░░░░░░░░░] 0%\n 97\/97 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n\u001b[0;32m✓ PHP-CS-Fixer: OK\u001b[0m\n\n\u001b[1;33m[3\/4] Composer Audit - Dependency Vulnerabilities\u001b[0m\n\u001b[1;33m⚠ No composer.lock found, skipping\u001b[0m\n\n\u001b[1;33m[4\/4] Semgrep - OWASP Security Scan\u001b[0m\n\u001b[0;32m✓ Semgrep: No vulnerabilities\u001b[0m\n\n=== Summary ===\n\u001b[0;32mAll checks passed!\u001b[0m\n\n=== PHPUnit Tests ===\n=== PHP Unit Tests: Sat Dec 20 04:27:21 PM CET 2025 ===\nProject: \/var\/www\/dev.campus.systemische-tools.de\n\n\u001b[1;33mFound 1 test file(s)\u001b[0m\n\nPHPUnit 12.5.4 by Sebastian Bergmann and contributors.\n\nRuntime: PHP 8.4.11\nConfiguration: \/opt\/php-tools\/phpunit.xml\n\n................. 17 \/ 17 (100%)\n\nTime: 00:00.001, Memory: 14.00 MB\n\nTask Status (Tests\\Unit\\Domain\\ValueObject\\TaskStatus)\n ✔ Is terminal with data set \"pending is not terminal\"\n ✔ Is terminal with data set \"in_progress is not terminal\"\n ✔ Is terminal with data set \"completed is terminal\"\n ✔ Is terminal with data set \"failed is terminal\"\n ✔ Is terminal with data set \"cancelled is terminal\"\n ✔ Label with data set #0\n ✔ Label with data set #1\n ✔ Label with data set #2\n ✔ Label with data set #3\n ✔ Label with data set #4\n ✔ All status values exist\n ✔ Pending can transition to in progress\n ✔ Pending can transition to cancelled\n ✔ Pending cannot transition to completed\n ✔ In progress can transition to completed\n ✔ In progress can transition to failed\n ✔ Completed cannot transition\n\nOK (17 tests, 22 assertions)\n\n\u001b[0;32m✓ All tests passed!\u001b[0m\n\nsending incremental file list\ndeleting View\/docs\/module\/updates.php\ndeleting View\/docs\/module\/ufw.php\ndeleting View\/docs\/module\/tmux.php\ndeleting View\/docs\/module\/ssl.php\ndeleting View\/docs\/module\/ssh.php\ndeleting View\/docs\/module\/scheduling.php\ndeleting View\/docs\/module\/qdrant.php\ndeleting View\/docs\/module\/python.php\ndeleting View\/docs\/module\/phpmyadmin.php\ndeleting View\/docs\/module\/php.php\ndeleting View\/docs\/module\/php-quality.php\ndeleting View\/docs\/module\/permissions.php\ndeleting View\/docs\/module\/ollama.php\ndeleting View\/docs\/module\/nvidia.php\ndeleting View\/docs\/module\/nextcloud.php\ndeleting View\/docs\/module\/mariadb.php\ndeleting View\/docs\/module\/ki-taxonomie.php\ndeleting View\/docs\/module\/ki-tasks-schema.php\ndeleting View\/docs\/module\/ki-tasks-hooks.php\ndeleting View\/docs\/module\/ki-tasks-cli.php\ndeleting View\/docs\/module\/ki-tasks-api.php\ndeleting View\/docs\/module\/ki-protokoll.php\ndeleting View\/docs\/module\/ki-pipeline.php\ndeleting View\/docs\/module\/ki-ontologie.php\ndeleting View\/docs\/module\/ki-entitaeten.php\ndeleting View\/docs\/module\/ki-embedding.php\ndeleting View\/docs\/module\/ki-datenbank.php\ndeleting View\/docs\/module\/ki-content.php\ndeleting View\/docs\/module\/ki-chat.php\ndeleting View\/docs\/module\/frontend-quality.php\ndeleting View\/docs\/module\/file-backup-hook.php\ndeleting View\/docs\/module\/fail2ban.php\ndeleting View\/docs\/module\/deployment.php\ndeleting View\/docs\/module\/contracts.php\ndeleting View\/docs\/module\/backup.php\ndeleting View\/docs\/module\/apache.php\ndeleting View\/docs\/module\/\ndeleting View\/docs\/mcp\/mcp-tasks.php\ndeleting View\/docs\/mcp\/mcp-tasks-tools.php\ndeleting View\/docs\/mcp\/mcp-tasks-installation.php\ndeleting View\/docs\/mcp\/mcp-tasks-architektur.php\ndeleting View\/docs\/mcp\/mcp-db.php\ndeleting View\/docs\/mcp\/mcp-db-validators.php\ndeleting View\/docs\/mcp\/mcp-db-tools.php\ndeleting View\/docs\/mcp\/mcp-db-tests.php\ndeleting View\/docs\/mcp\/mcp-db-security.php\ndeleting View\/docs\/mcp\/mcp-db-installation.php\ndeleting View\/docs\/mcp\/mcp-db-infrastructure.php\ndeleting View\/docs\/mcp\/mcp-db-contracts.php\ndeleting View\/docs\/mcp\/mcp-db-config.php\ndeleting View\/docs\/mcp\/mcp-db-cheatsheet.php\ndeleting View\/docs\/mcp\/mcp-db-architektur.php\ndeleting View\/docs\/mcp\/index.php\ndeleting View\/docs\/mcp\/\ndeleting View\/docs\/api\/services.php\ndeleting View\/docs\/api\/content.php\ndeleting View\/docs\/api\/chat.php\ndeleting View\/docs\/api\/\ndeleting View\/docs\/server.php\ndeleting View\/docs\/ki-tasks.php\ndeleting View\/docs\/ki-system.php\ndeleting View\/docs\/content-studio.php\ndeleting View\/docs\/api.php\ndeleting View\/docs\/anwendungen.php\nController\/\nController\/ChatController.php\nController\/ContentController.php\nController\/ContractController.php\nController\/DocsController.php\nController\/ExplorerController.php\nController\/ProtokollController.php\nController\/SemanticExplorerController.php\nController\/SystemExplorerController.php\nController\/Api\/\nController\/Api\/ChatController.php\nController\/Api\/ExplorerController.php\nController\/Api\/TaskController.php\nFramework\/\nFramework\/Router.php\nInfrastructure\/\nInfrastructure\/AI\/\nInfrastructure\/AI\/AIConfig.php\nInfrastructure\/AI\/ChatService.php\nInfrastructure\/AI\/ClaudeService.php\nInfrastructure\/AI\/OllamaService.php\nInfrastructure\/AI\/QdrantService.php\nInfrastructure\/Docs\/\nInfrastructure\/Docs\/ChunkAnalysisService.php\nInfrastructure\/Docs\/ChunkSyncService.php\nInfrastructure\/Docs\/ChunkingService.php\nInfrastructure\/Docs\/Doc2VectorPipeline.php\nInfrastructure\/Docs\/HybridSearchService.php\nInfrastructure\/Persistence\/\nInfrastructure\/Persistence\/ContentRepository.php\nInfrastructure\/Persistence\/ContractRepository.php\nInfrastructure\/Persistence\/DokumentationRepository.php\nInfrastructure\/Persistence\/KiProtokollRepository.php\nInfrastructure\/Persistence\/SystemPromptRepository.php\nInfrastructure\/Persistence\/TaskAssignmentRepository.php\nInfrastructure\/Persistence\/TaskCommentRepository.php\nInfrastructure\/Persistence\/TaskRepository.php\nInfrastructure\/Persistence\/TaskResultRepository.php\nUseCases\/Task\/GetTasksUseCase.php\nView\/\nView\/layout.php\nView\/chat\/\nView\/chat\/index.php\nView\/chat\/partials\/\nView\/chat\/partials\/session-list.php\nView\/content\/\nView\/content\/index.php\nView\/content\/show.php\nView\/contracts\/\nView\/contracts\/edit.php\nView\/contracts\/index.php\nView\/contracts\/new.php\nView\/contracts\/show.php\nView\/docs\/\nView\/docs\/index.php\nView\/docs\/show.php\nView\/explorer\/\nView\/explorer\/index.php\nView\/protokoll\/\nView\/protokoll\/index.php\nView\/protokoll\/show.php\nView\/semantic-explorer\/\nView\/semantic-explorer\/index.php\nView\/semantic-explorer\/ontologie.php\nView\/semantic-explorer\/relationen.php\nView\/semantic-explorer\/semantik.php\nView\/semantic-explorer\/suche.php\nView\/semantic-explorer\/taxonomie.php\nView\/semantic-explorer\/chunks\/\nView\/semantic-explorer\/chunks\/index.php\nView\/semantic-explorer\/chunks\/show.php\nView\/semantic-explorer\/dokumente\/\nView\/semantic-explorer\/dokumente\/index.php\nView\/semantic-explorer\/dokumente\/show.php\nView\/semantic-explorer\/entitaeten\/\nView\/semantic-explorer\/entitaeten\/index.php\nView\/semantic-explorer\/entitaeten\/show.php\nView\/system-explorer\/\nView\/system-explorer\/index.php\nView\/system-explorer\/suche.php\nView\/system-explorer\/taxonomie.php\nView\/system-explorer\/chunks\/\nView\/system-explorer\/chunks\/index.php\nView\/system-explorer\/chunks\/show.php\nView\/system-explorer\/dokumente\/\nView\/system-explorer\/dokumente\/index.php\nView\/system-explorer\/dokumente\/show.php\nView\/system-explorer\/seiten\/\nView\/system-explorer\/seiten\/index.php\nView\/system-explorer\/seiten\/show.php\nView\/tasks\/\nView\/tasks\/index.php\nView\/tasks\/show.php\n\nsent 432,138 bytes received 3,595 bytes 871,466.00 bytes\/sec\ntotal size is 502,402 speedup is 1.15\nsending incremental file list\n\nsent 109 bytes received 14 bytes 246.00 bytes\/sec\ntotal size is 0 speedup is 0.00\nsending incremental file list\n.\/\napi.php\nweb.php\n\nsent 7,708 bytes received 57 bytes 15,530.00 bytes\/sec\ntotal size is 7,512 speedup is 0.97\nsending incremental file list\n.\/\nadmin.css\nstyle.css\n\nsent 34,869 bytes received 57 bytes 69,852.00 bytes\/sec\ntotal size is 36,748 speedup is 1.05\nsending incremental file list\n.\/\nadapters\/\nadapters\/domAdapter.js\nadapters\/eventAdapter.js\ncomponents\/\ncomponents\/data-table.js\n\nsent 14,746 bytes received 88 bytes 29,668.00 bytes\/sec\ntotal size is 14,474 speedup is 0.98\nsending incremental file list\n\nsent 59 bytes received 12 bytes 142.00 bytes\/sec\ntotal size is 0 speedup is 0.00\nsending incremental file list\n\nsent 66 bytes received 12 bytes 156.00 bytes\/sec\ntotal size is 231 speedup is 2.96\nsending incremental file list\n\nsent 66 bytes received 12 bytes 156.00 bytes\/sec\ntotal size is 562 speedup is 7.21\nsending incremental file list\n.\/\ndatabase.php\n\nsent 651 bytes received 38 bytes 1,378.00 bytes\/sec\ntotal size is 1,486 speedup is 2.16\n=== Sync abgeschlossen ===",
"stderr": "",
"interrupted": false,
"isImage": false
}
}