Passer au contenu principal

Remote Sessions

L’activation des Remote Sessions permet d’accéder à la même session depuis le Web ou mobile via Mission Control de GitHub. Une fois activées, chaque session est connectée à Mission Control et une URL partageable (lien ou QR code) est émise. Si vous souhaitez exécuter la session elle-même dans l’environnement hébergé par GitHub plutôt qu’en local ou sur votre propre serveur, utilisez Cloud Sessions.

Prérequis

  • L’utilisateur est authentifié (token GitHub ou utilisateur connecté)
  • workingDirectory est un dépôt GitHub

Activation au niveau client (toujours actif)

Avec remote: true, chaque session au sein d’un dépôt GitHub émet automatiquement une URL distante. Plutôt que de figer cela dans config/copilot.php, il est plus pratique d’activer remote: true via useStdio() uniquement pour les traitements concernés.
L’option remote n’est active que lorsque le SDK démarre le processus CLI, c’est-à-dire en mode stdio uniquement. Elle est ignorée lors d’une connexion à un serveur externe via useTcp().
use Revolution\Copilot\Contracts\CopilotSession;
use Revolution\Copilot\Enums\SessionEventType;
use Revolution\Copilot\Facades\Copilot;
use Revolution\Copilot\Support\PermissionHandler;
use Revolution\Copilot\Types\SessionConfig;
use Revolution\Copilot\Types\SessionEvent;

$config = new SessionConfig(
    workingDirectory: '/path/to/github-repo',
    onPermissionRequest: PermissionHandler::approveAll(),
);

$stdioConfig = config('copilot');
$stdioConfig['remote'] = true;

Copilot::useStdio($stdioConfig)->start(function (CopilotSession $session): void {
    $session->on(SessionEventType::SESSION_INFO, function (SessionEvent $event): void {
        if ($event->data('infoType') === 'remote') {
            echo 'Remote URL: '.$event->data('url').PHP_EOL;
        }
    });
}, config: $config);

Activation par session (à la demande)

Pour lancer le partage à distance en cours de session, utilisez le RPC. C’est l’équivalent des commandes CLI /remote on et /remote off.
use Revolution\Copilot\Contracts\CopilotSession;
use Revolution\Copilot\Facades\Copilot;

Copilot::start(function (CopilotSession $session): void {
    $result = $session->rpc()->remote()->enable();

    if ($result->url !== null) {
        echo 'Remote URL: '.$result->url.PHP_EOL;
    }

    // Arrêter le partage
    $session->rpc()->remote()->disable();
});

Génération de QR code

L’URL distante récupérée peut être convertie en QR code et remise à un mobile. Vous pouvez utiliser BaconQrCode, également utilisé par Laravel Fortify.
use BaconQrCode\Renderer\Image\SvgImageBackEnd;
use BaconQrCode\Renderer\ImageRenderer;
use BaconQrCode\Renderer\RendererStyle\RendererStyle;
use BaconQrCode\Writer;

$writer = new Writer(
    new ImageRenderer(
        new RendererStyle(256),
        new SvgImageBackEnd(),
    ),
);

$svg = $writer->writeString($result->url ?? '');

Points d’attention

  • L’option remote n’est active que lorsque le SDK démarre le processus CLI. Elle est ignorée quand vous vous connectez à un serveur externe via useTcp().
  • Si workingDirectory n’est pas un dépôt GitHub, la configuration distante est ignorée en mode toujours actif. L’activation à la demande (remote()->enable()) peut renvoyer une erreur.
  • Configurez correctement les identifiants (github_token ou use_logged_in_user).

Voir aussi

Pour les dernières informations, consultez le dépôt GitHub.
Dernière modification le 13 juillet 2026