refactor(dev-session): Entkopplung der Gemini CLI
Ändert die Architektur des -Systems, um die Stabilität der Gemini CLI zu verbessern. Die Gemini CLI wird nicht mehr als direkter Unterprozess von gestartet. Stattdessen gibt den generierten Kontext auf stdout aus, und das -Skript fängt ihn ab und startet die CLI in einem sauberen, separaten Container. - ****: Entfernt die Funktion und gibt den Kontext stattdessen über stdout aus. - ****: Führt jetzt einen zweistufigen Prozess aus. Zuerst wird der Kontext von in einem temporären Container abgerufen und dann die Gemini CLI in einem neuen Container mit dem Kontext als gestartet. - ****: Dokumentation aktualisiert, um die neue Architektur widerzuspiegeln.
This commit is contained in:
@@ -352,29 +352,7 @@ def generate_cli_context(project_title: str, task_title: str, task_id: str, read
|
||||
|
||||
# --- CLI Execution ---
|
||||
|
||||
def start_gemini_cli(initial_context: str):
|
||||
"""Startet die Gemini CLI als interaktiven Subprozess und übergibt den Startkontext."""
|
||||
print("\n--- Übergebe an Gemini CLI... ---")
|
||||
print("Die Gemini CLI wird jetzt gestartet. Sie können direkt mit der Arbeit beginnen.")
|
||||
|
||||
try:
|
||||
# Der Befehl, um die Gemini CLI zu starten
|
||||
command = ["gemini"]
|
||||
|
||||
# Starte den Prozess
|
||||
# stdin=subprocess.PIPE, um den Kontext zu senden
|
||||
# text=True für String-basierte Ein-/Ausgabe
|
||||
process = subprocess.Popen(command, stdin=subprocess.PIPE, text=True)
|
||||
|
||||
# Schreibe den initialen Kontext in die Standard-Eingabe der CLI
|
||||
# Ein Zeilenumbruch am Ende simuliert das Drücken der Enter-Taste.
|
||||
process.communicate(input=initial_context + '\n')
|
||||
|
||||
except FileNotFoundError:
|
||||
print("\n❌ FEHLER: Der 'gemini'-Befehl wurde nicht gefunden.")
|
||||
print("Stellen Sie sicher, dass die Gemini CLI korrekt im Container installiert und im PATH verfügbar ist.")
|
||||
except Exception as e:
|
||||
print(f"\n❌ Ein unerwarteter Fehler ist beim Starten der Gemini CLI aufgetreten: {e}")
|
||||
# Die start_gemini_cli Funktion wird entfernt, da das aufrufende Skript jetzt die Gemini CLI startet.
|
||||
|
||||
import shutil
|
||||
import argparse
|
||||
@@ -526,9 +504,13 @@ def start_interactive_session():
|
||||
print(f"git checkout -b {suggested_branch_name}")
|
||||
print("------------------------------------------------------------------")
|
||||
|
||||
# CLI-Kontext generieren und die interaktive Session starten
|
||||
# CLI-Kontext generieren und an stdout ausgeben, damit das Startskript ihn aufgreifen kann
|
||||
cli_context = generate_cli_context(project_title, task_title, task_id, readme_path)
|
||||
start_gemini_cli(cli_context)
|
||||
print("\n---GEMINI_CLI_CONTEXT_START---")
|
||||
print(cli_context)
|
||||
print("---GEMINI_CLI_CONTEXT_END---")
|
||||
# Das Skript beenden, damit das aufrufende Shell-Skript die Gemini CLI starten kann
|
||||
exit(0)
|
||||
|
||||
|
||||
# --- Main Execution ---
|
||||
|
||||
Reference in New Issue
Block a user