{
"event": "PostToolUse",
"raw_data": {
"session_id": "bf8a0fc3-34fa-408b-8067-b725d1fe9b14",
"transcript_path": "\/root\/.claude\/projects\/-var-www\/bf8a0fc3-34fa-408b-8067-b725d1fe9b14.jsonl",
"cwd": "\/var\/www\/dev.campus.systemische-tools.de",
"permission_mode": "plan",
"hook_event_name": "PostToolUse",
"tool_name": "Read",
"tool_input": {
"file_path": "\/var\/www\/dev.campus.systemische-tools.de\/src\/Application\/PipelineStepService.php"
},
"tool_response": {
"type": "text",
"file": {
"filePath": "\/var\/www\/dev.campus.systemische-tools.de\/src\/Application\/PipelineStepService.php",
"content": "<?php\n\nnamespace Application;\n\nuse Infrastructure\\AI\\ModelConfig;\nuse Infrastructure\\Config\\PipelineStepConfig;\nuse Infrastructure\\Persistence\\PipelineRepository;\n\n\/**\n * Service for managing pipeline step operations.\n *\/\nfinal class PipelineStepService\n{\n public function __construct(\n private PipelineRepository $repository\n ) {\n }\n\n \/**\n * Toggle a step's enabled status.\n *\n * @return bool True if toggled successfully\n *\/\n public function toggleStep(int $pipelineId, int $stepId): bool\n {\n $pipeline = $this->repository->findById($pipelineId);\n\n if ($pipeline === null) {\n return false;\n }\n\n foreach ($pipeline['steps'] as $step) {\n if ((int) $step['id'] === $stepId) {\n $this->repository->updateStep($stepId, [\n 'enabled' => $step['enabled'] ? 0 : 1,\n ]);\n\n return true;\n }\n }\n\n return false;\n }\n\n \/**\n * Update the model for a step.\n *\n * @return array{success: bool, error?: string, model?: string, label?: string}\n *\/\n public function updateModel(int $pipelineId, int $stepId, string $model): array\n {\n $pipeline = $this->repository->findById($pipelineId);\n\n if ($pipeline === null) {\n return ['success' => false, 'error' => 'Pipeline nicht gefunden'];\n }\n\n $model = trim($model);\n\n if ($model === '' || !ModelConfig::isValid($model)) {\n return ['success' => false, 'error' => 'Ungültiges Modell'];\n }\n\n foreach ($pipeline['steps'] as $step) {\n if ((int) $step['id'] === $stepId) {\n $config = $step['config'] ?? [];\n\n \/\/ Determine provider from model\n $provider = ModelConfig::isLocal($model) ? 'ollama' : 'anthropic';\n\n \/\/ Update config with new model\n $config['model'] = ModelConfig::isLocal($model)\n ? substr($model, 7) \/\/ Remove 'ollama:' prefix\n : $model;\n $config['provider'] = $provider;\n\n $this->repository->updateStep($stepId, [\n 'config' => $config,\n ]);\n\n return [\n 'success' => true,\n 'model' => $model,\n 'label' => ModelConfig::getLabel($model),\n ];\n }\n }\n\n return ['success' => false, 'error' => 'Schritt nicht gefunden'];\n }\n\n \/**\n * Update the collection for a step.\n *\n * @return array{success: bool, error?: string, collection?: string, label?: string}\n *\/\n public function updateCollection(int $pipelineId, int $stepId, string $collection): array\n {\n $pipeline = $this->repository->findById($pipelineId);\n\n if ($pipeline === null) {\n return ['success' => false, 'error' => 'Pipeline nicht gefunden'];\n }\n\n $collection = trim($collection);\n $validCollections = array_keys(PipelineStepConfig::getCollections());\n\n if ($collection === '' || !in_array($collection, $validCollections, true)) {\n return ['success' => false, 'error' => 'Ungültige Collection'];\n }\n\n foreach ($pipeline['steps'] as $step) {\n if ((int) $step['id'] === $stepId) {\n $config = $step['config'] ?? [];\n $config['collection'] = $collection;\n\n $this->repository->updateStep($stepId, [\n 'config' => $config,\n ]);\n\n $collections = PipelineStepConfig::getCollections();\n\n return [\n 'success' => true,\n 'collection' => $collection,\n 'label' => $collections[$collection] ?? $collection,\n ];\n }\n }\n\n return ['success' => false, 'error' => 'Schritt nicht gefunden'];\n }\n\n \/**\n * Create default steps for a new pipeline.\n *\/\n public function createDefaultSteps(int $pipelineId): void\n {\n foreach (PipelineStepConfig::getDefaultSteps() as $step) {\n $this->repository->addStep($pipelineId, $step);\n }\n }\n}\n",
"numLines": 144,
"startLine": 1,
"totalLines": 144
}
},
"tool_use_id": "toolu_016esv6LCex2n53A9SgmaP5q"
}
}