> ## Documentation Index
> Fetch the complete documentation index at: https://kawax.biz/llms.txt
> Use this file to discover all available pages before exploring further.

# Remote Sessions

> Activez les sessions distantes de Laravel Copilot SDK pour accéder à la même session depuis le Web ou mobile via Mission Control de GitHub.

## 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](/fr/packages/laravel-copilot-sdk/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.

<Info>
  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()`.
</Info>

```php theme={null}
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`.

```php theme={null}
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](https://github.com/Bacon/BaconQRCode), également utilisé par Laravel Fortify.

```php theme={null}
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

* [Cloud Sessions](/fr/packages/laravel-copilot-sdk/cloud-sessions)
* [RPC](/fr/packages/laravel-copilot-sdk/rpc)
* [Mode TCP](/fr/packages/laravel-copilot-sdk/tcp-mode)

<Info>
  Pour les dernières informations, consultez le [dépôt GitHub](https://github.com/invokable/laravel-copilot-sdk).
</Info>


## Related topics

- [Cloud Sessions](/fr/packages/laravel-copilot-sdk/cloud-sessions.md)
- [Événements de streaming](/fr/packages/laravel-copilot-sdk/streaming-events.md)
- [RPC (Remote Procedure Call)](/fr/packages/laravel-copilot-sdk/rpc.md)
- [Session](/fr/session.md)
- [Installer PHP, Composer et Node.js avec WSL (Windows)](/fr/blog/windows-setup.md)
