{
"event": "PreToolUse",
"tool_name": "Read",
"tool_input": {
"file_path": "\/var\/www\/scripts\/pipeline\/generators\/content_generator.py",
"offset": 40,
"limit": 70
}
}
{
"tool_response": {
"type": "text",
"file": {
"filePath": "\/var\/www\/scripts\/pipeline\/generators\/content_generator.py",
"content": " semantic_text += \"\\n## Relevante Konzepte\\n\"\n for e in semantic[\"entities\"][:10]:\n desc = e.get(\"description\") or \"\"\n if desc:\n semantic_text += f\"- **{e['name']}** ({e['type']}): {desc[:100]}\\n\"\n else:\n semantic_text += f\"- **{e['name']}** ({e['type']})\\n\"\n\n if semantic.get(\"relations\"):\n semantic_text += \"\\n## Konzept-Beziehungen\\n\"\n for r in semantic[\"relations\"][:10]:\n semantic_text += f\"- {r['source']} → {r['relation_type']} → {r['target']}\\n\"\n\n # Build taxonomy context\n taxonomy_text = \"\"\n if taxonomy:\n taxonomy_text = \"\\n## Thematische Einordnung\\n\"\n taxonomy_text += \", \".join([t[\"name\"] for t in taxonomy])\n\n # Build profile instructions - detect new vs old format\n profile_text = \"\"\n if profile:\n config = profile.get(\"config\", {})\n\n # Detect new format (has \"haltung\" or \"tonalitaet\" at top level)\n if \"haltung\" in config or \"tonalitaet\" in config or \"grammatik_und_satzbau\" in config:\n # New Cary-style profile\n profile_text = f\"\"\"\n## Autorenprofil: {profile.get(\"name\", \"Standard\")}\n\n{parse_author_profile(config)}\n\"\"\"\n else:\n # Old format - keep backwards compatibility\n autorenprofil = config.get(\"autorenprofil\", config)\n\n stimme = autorenprofil.get(\"stimme\", {})\n stimme_text = \"\"\n if stimme:\n stimme_text = f\"\"\"\n### Stimme\/Tonalität:\n- Ton: {stimme.get(\"ton\", \"neutral\")}\n- Perspektive: {stimme.get(\"perspektive\", \"neutral\")}\n- Komplexität: {stimme.get(\"komplexitaet\", \"mittel\")}\"\"\"\n\n stil = autorenprofil.get(\"stil\", {})\n stil_text = \"\"\n if stil:\n stil_text = f\"\"\"\n### Stil:\n- Fachsprache: {\"Ja\" if stil.get(\"fachsprache\", False) else \"Nein\"}\n- Satzlänge: {stil.get(\"satzlaenge\", \"mittel\")}\"\"\"\n\n tabus = autorenprofil.get(\"tabus\", [])\n tabus_text = \"\"\n if tabus:\n tabus_text = f\"\"\"\n### Zu vermeiden:\n{\", \".join(tabus[:5])}\"\"\"\n\n profile_text = f\"\"\"\n## Autorenprofil: {profile.get(\"name\", \"Standard\")}\n{stimme_text}\n{stil_text}\n{tabus_text}\n\"\"\"\n\n # Build contract requirements\n contract_text = \"\"\n if contract:",
"numLines": 70,
"startLine": 40,
"totalLines": 401
}
}
}