From 46a77c7800255d8b20aa2eb1e0f5ab7c12a58305 Mon Sep 17 00:00:00 2001 From: eric Date: Sat, 21 Feb 2026 19:29:20 +0000 Subject: [PATCH] Fix /api/agent-stream: use build_agent_prompt, accumulate response_text, call parse_agent_commands --- app.py | 28 ++++++++++++---------------- 1 file changed, 12 insertions(+), 16 deletions(-) diff --git a/app.py b/app.py index d25406d..e19ae3c 100644 --- a/app.py +++ b/app.py @@ -2495,22 +2495,11 @@ def agent_stream(): selected_agent = delegate_to_agent(prompt) agent_info = AGENTS.get(selected_agent, {}) agent_name = agent_info.get('name', selected_agent) - system_prompt = get_agent_prompt(selected_agent) - kb_file = os.path.join(os.path.dirname(__file__), 'agents', 'orchestrator', 'knowledge', 'diversityball_knowledge.md') - kb_content = "" - if os.path.exists(kb_file): - with open(kb_file, 'r', encoding='utf-8') as f: - kb_content = f.read() - - full_prompt = f"""## Wissensdatenbank (Diversity-Ball): -{kb_content} - -## System-Prompt des Agenten ({agent_name}): -{system_prompt} - -## Deine Aufgabe: -{prompt}""" + full_prompt = build_agent_prompt(selected_agent, prompt) + if not full_prompt: + yield f"data: {json.dumps({'type': 'error', 'message': f'Kein System-Prompt für Agent {selected_agent}'})}\n\n" + return # Sofort Agent-Info senden yield f"data: {json.dumps({'type': 'agent_selected', 'agent': agent_name, 'agent_key': selected_agent})}\n\n" @@ -2530,7 +2519,8 @@ def agent_stream(): cwd=work_dir # Agent arbeitet in seinem work-Verzeichnis ) - # Jede Zeile sofort aus opencode lesen und streamen + # Jede Zeile sofort aus opencode lesen, streamen und akkumulieren + response_text = "" for line in proc.stdout: line = line.strip() if not line: @@ -2540,11 +2530,17 @@ def agent_stream(): if event_data.get('part', {}).get('type') == 'text': text = event_data['part'].get('text', '') if text: + response_text += text yield f"data: {json.dumps({'type': 'response_chunk', 'text': text})}\n\n" except Exception: pass proc.wait() + + # XML-Kommandos aus der gesammelten Antwort ausführen + if response_text: + parse_agent_commands(selected_agent, response_text) + yield f"data: {json.dumps({'type': 'complete', 'message': '✓ Fertig'})}\n\n" except Exception as e: