{
"event": "PreToolUse",
"tool_name": "Read",
"tool_input": {
"file_path": "\/var\/www\/dev.campus.systemische-tools.de\/src\/View\/partials\/form\/model-select.php"
}
}
{
"tool_response": {
"type": "text",
"file": {
"filePath": "\/var\/www\/dev.campus.systemische-tools.de\/src\/View\/partials\/form\/model-select.php",
"content": "<?php\n\n\/**\n * Model Select Partial\n *\n * Einheitliches Dropdown für KI-Modell-Auswahl.\n * Verwendet in: Chat, Content Studio, Pipeline\n *\n * @param array $models Array von Modell-IDs => Labels (default: ModelConfig::getAll())\n * @param string $selected Ausgewähltes Modell (default: ModelConfig::DEFAULT_MODEL)\n * @param string $name Form-Feldname (default: 'model')\n * @param string $variant 'default', 'inline' oder 'compact'\n * @param string $id Optional: HTML ID für das Select\n * @param bool $saveToLocalStorage Speichert Änderungen in localStorage (default: true)\n * @param string $localStorageKey Key für localStorage (default: 'pipeline_model')\n *\/\n\nuse Infrastructure\\AI\\ModelConfig;\n\n$models ??= ModelConfig::getAll();\n$selected ??= ModelConfig::DEFAULT_MODEL;\n$name ??= 'model';\n$variant ??= 'default';\n$id ??= 'model-' . uniqid();\n$saveToLocalStorage ??= true;\n$localStorageKey ??= 'pipeline_model';\n\n$class = match ($variant) {\n 'inline' => 'form-select form-select--inline model-select',\n 'compact' => 'form-select form-select--compact model-select',\n default => 'form-select model-select',\n};\n\n\/\/ Gruppiere Modelle nach Provider\n$anthropicModels = [];\n$ollamaModels = [];\nforeach ($models as $modelId => $label) {\n if (str_starts_with($modelId, 'ollama:')) {\n $ollamaModels[$modelId] = $label;\n } else {\n $anthropicModels[$modelId] = $label;\n }\n}\n?>\n<select name=\"<?= htmlspecialchars($name) ?>\"\n id=\"<?= htmlspecialchars($id) ?>\"\n class=\"<?= $class ?>\"\n <?= $saveToLocalStorage ? 'data-save-to=\"' . htmlspecialchars($localStorageKey) . '\"' : '' ?>>\n <?php if (!empty($ollamaModels)): ?>\n <optgroup label=\"Ollama (lokal)\">\n <?php foreach ($ollamaModels as $modelId => $label): ?>\n <option value=\"<?= htmlspecialchars($modelId) ?>\" <?= $selected === $modelId ? 'selected' : '' ?>>\n <?= htmlspecialchars($label) ?>\n <\/option>\n <?php endforeach; ?>\n <\/optgroup>\n <?php endif; ?>\n <?php if (!empty($anthropicModels)): ?>\n <optgroup label=\"Anthropic\">\n <?php foreach ($anthropicModels as $modelId => $label): ?>\n <option value=\"<?= htmlspecialchars($modelId) ?>\" <?= $selected === $modelId ? 'selected' : '' ?>>\n <?= htmlspecialchars($label) ?>\n <\/option>\n <?php endforeach; ?>\n <\/optgroup>\n <?php endif; ?>\n<\/select>\n<?php if ($saveToLocalStorage): ?>\n<script>\n(function() {\n const select = document.getElementById('<?= $id ?>');\n const key = '<?= $localStorageKey ?>';\n\n \/\/ Restore from localStorage\n const saved = localStorage.getItem(key);\n if (saved && select) {\n const option = select.querySelector('option[value=\"' + saved + '\"]');\n if (option) select.value = saved;\n }\n\n \/\/ Save on change\n select?.addEventListener('change', function() {\n localStorage.setItem(key, this.value);\n });\n})();\n<\/script>\n<?php endif; ?>\n",
"numLines": 88,
"startLine": 1,
"totalLines": 88
}
}
}