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
Remote Sessions を有効にすると、GitHub の Mission Control 経由でウェブやモバイルから同じセッションにアクセスできます。
有効化すると各セッションが Mission Control に接続され、リンクや QR コードとして共有できる URL が発行されます。
ローカルや自前サーバーではなく GitHub ホスト環境でセッション自体を実行したい場合は Cloud Sessions を使います。
前提条件
- ユーザーが認証済みであること(GitHub トークンまたはログイン済みユーザー)
workingDirectory が GitHub リポジトリであること
クライアントレベルで有効化(常時 ON)
remote: true を有効化すると、GitHub リポジトリ内のすべてのセッションで自動的にリモート URL が発行されます。
config/copilot.php に固定で追加するより、必要な処理だけ useStdio() で remote: true を有効化する使い方が扱いやすいです。
remote オプションは SDK が CLI プロセスを起動する場合にのみ有効です。つまり stdio モード専用です。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);
セッションごとに有効化(オンデマンド)
途中からリモート共有を開始したい場合は RPC で切り替えます。
CLI の /remote on および /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;
}
// 共有停止
$session->rpc()->remote()->disable();
});
QR コード生成
取得したリモート URL は QR コードにしてモバイルへ渡せます。
Laravel Fortify でも使われている BaconQrCode が利用できます。
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 ?? '');
注意点
remote オプションは SDK が CLI プロセスを起動する場合にのみ有効です。useTcp() など外部サーバー接続時は無視されます。
workingDirectory が GitHub リポジトリでない場合、常時 ON モードではリモート設定がスキップされます。オンデマンド有効化(remote()->enable())ではエラーになる場合があります。
- 認証情報(
github_token または use_logged_in_user)を適切に設定してください。