Zum Hauptinhalt springen

Session-Lebenszyklus-Ereignisse

Session-Lebenszyklus-Ereignisse informieren über das Erstellen, Löschen und Aktualisieren von Sessions sowie über Wechsel zwischen Vordergrund und Hintergrund (im TUI+Server-Modus).

Ereignistypen

Im Enum SessionLifecycleEventType sind fünf Ereignistypen definiert.
EreignisBeschreibung
session.createdEine neue Session wurde erstellt
session.deletedEine Session wurde gelöscht
session.updatedEine Session wurde aktualisiert
session.foregroundEine Session wurde in den Vordergrund verschoben
session.backgroundEine Session wurde in den Hintergrund verschoben
use Revolution\Copilot\Enums\SessionLifecycleEventType;

// Wert des Ereignistyps abrufen
echo SessionLifecycleEventType::SESSION_CREATED->value; // 'session.created'

Ereignisse abonnieren

Mit der Methode onLifecycle() können Sie Session-Lebenszyklus-Ereignisse abonnieren.
use Revolution\Copilot\Facades\Copilot;
use Revolution\Copilot\Types\SessionLifecycleEvent;

// Client abrufen und Lebenszyklus-Ereignisse abonnieren
$client = Copilot::client();

// Alle Lebenszyklus-Ereignisse abonnieren
$unsubscribe = $client->onLifecycle(function (SessionLifecycleEvent $event) {
    match ($event->type) {
        SessionLifecycleEventType::SESSION_CREATED => info("セッション作成: {$event->sessionId}"),
        SessionLifecycleEventType::SESSION_DELETED => info("セッション削除: {$event->sessionId}"),
        SessionLifecycleEventType::SESSION_FOREGROUND => info("フォアグラウンド: {$event->sessionId}"),
        SessionLifecycleEventType::SESSION_BACKGROUND => info("バックグラウンド: {$event->sessionId}"),
        default => null,
    };
});

// Abonnement beenden
$unsubscribe();

SessionLifecycleEvent

SessionLifecycleEvent ist eine Readonly-Klasse mit den Details eines Lebenszyklus-Ereignisses.
use Revolution\Copilot\Types\SessionLifecycleEvent;
use Revolution\Copilot\Types\SessionLifecycleEventMetadata;

readonly class SessionLifecycleEvent implements Arrayable
{
    public function __construct(
        public SessionLifecycleEventType $type,  // Ereignistyp
        public string $sessionId,                 // Session-ID
        public ?SessionLifecycleEventMetadata $metadata = null,  // Metadaten (bei Löschung nicht enthalten)
    ) {}
}

SessionLifecycleEventMetadata

Eine Klasse mit den Metadaten einer Session (in Lösch-Ereignissen nicht enthalten).
readonly class SessionLifecycleEventMetadata implements Arrayable
{
    public function __construct(
        public string $startTime,      // Startzeit der Session
        public string $modifiedTime,   // Zeitpunkt der letzten Aktualisierung
        public ?string $summary = null, // Zusammenfassung der Session
    ) {}
}

Verwaltung der Vordergrund-Session

Wenn Sie mit einem Server im TUI+Server-Modus (--ui-server) verbunden sind, können Sie die Vordergrund-Session verwalten.

Aktuelle Vordergrund-Session abrufen

use Revolution\Copilot\Facades\Copilot;

$client = Copilot::client();

// Aktuelle Session-ID abrufen, die in der TUI angezeigt wird
$sessionId = $client->getForegroundSessionId();

if ($sessionId !== null) {
    echo "現在のフォアグラウンドセッション: {$sessionId}";
}

Vordergrund-Session setzen

use Revolution\Copilot\Facades\Copilot;

$client = Copilot::client();

// Eine bestimmte Session in der TUI anzeigen
$client->setForegroundSessionId('session-123');

ForegroundSessionInfo

Eine Readonly-Klasse mit Informationen zur Vordergrund-Session.
use Revolution\Copilot\Types\ForegroundSessionInfo;

readonly class ForegroundSessionInfo implements Arrayable
{
    public function __construct(
        public ?string $sessionId = null,      // ID der Vordergrund-Session
        public ?string $workspacePath = null,  // Workspace-Pfad
    ) {}
}

Verwendung im TCP-Modus

Sie können die Copilot CLI im TUI+Server-Modus starten und über das SDK verbinden, um Lebenszyklus-Ereignisse zu nutzen.
# Copilot CLI im TUI+Server-Modus starten
copilot --ui-server --port 8080
use Revolution\Copilot\Facades\Copilot;

// Im TCP-Modus mit dem Server verbinden
$client = Copilot::useTcp('tcp://127.0.0.1:8080')->client();

// Lebenszyklus-Ereignisse abonnieren
$client->onLifecycle(function (SessionLifecycleEvent $event) {
    // Ereignisverarbeitung
});

Hinweise

  • Die Ereignisse session.foreground und session.background treten nur im TUI+Server-Modus auf
  • Beim Lösch-Ereignis (session.deleted) ist die Eigenschaft metadata null
  • onLifecycle() gibt eine Callback-Funktion zum Beenden des Abonnements zurück
  • Dies ist eine andere Funktion als onSessionStart und onSessionEnd aus den Session-Hooks
Aktuelle Informationen finden Sie im GitHub-Repository.
Zuletzt geändert am 13. Juli 2026