AHP ホスト
Agent Host Protocol(AHP)を使うと、Copilot ランタイムが管理するリスナーを起動し、WebSocket または GitHub Mission Control 経由でリモートクライアントを受け付けられます。AHP ホストはClient 接続に所有されます。Client::stop() またはホストの dispose() でリスナーを停止しても、ホストが利用したセッション自体は削除されません。
ホストの起動
少なくともlocalServer または githubEnvironment を指定します。認証方式も必須です。匿名アクセスを許可する場合も none を明示してください。
localServer: [] はループバックアドレスと空いているポートを使います。githubEnvironment を指定する場合は github 認証が必要です。ホストが返す token は接続用の秘密情報として扱ってください。
workspace は AHP ホストで使う作業ディレクトリです。パスは Copilot ランタイムが動作するホスト上で解釈されるため、Laravel アプリケーション側のパスと同じとは限りません。省略時は workspace を RPC に含めず、ランタイム側の既存動作を維持します。
認証モード
AhpHostAuthentication::github()は GitHub アカウントによる認証を使います。githubEnvironmentと組み合わせられます。AhpHostAuthentication::none()は認証なしを明示します。AhpHostAuthentication::custom()はアプリケーション独自の入場トークン検証を行います。安定した所有者 identity と検証 callback が必要です。
HostValidateAuthenticationRequest と、キャンセル通知を受け取る CancellationToken が渡されます。成功時は identity と将来の RFC3339 形式の expiresAt を返し、拒否時は null を返します。identity は requireIdentity と完全一致する必要があります。
host.authenticationCancelled やホストの終了を受け取ると callback の signal がキャンセルされます。外部処理を行う場合は onCancellationRequested() で中断処理を登録してください。
新規セッション受付ポリシー
allowCreatingNewSessions はリモートクライアントによる新規セッション作成の初期ポリシーです。省略時は拒否されます。所有アプリケーションが作成するセッション、公開済みセッション、既存接続には適用されません。
稼働中にポリシーを切り替える場合は、ホストの setSessionCreationPolicy() を呼び出します。変更の確認後に到着した新規リクエストから適用され、すでに受け付けた作成処理は完了できます。接続済みのクライアントは切断されません。
$client->rpc()->host()->setSessionCreationPolicy() を呼び出し、HostSetSessionCreationPolicyRequest に hostId と新しい設定を渡します。
アプリケーション所有セッション
createSession と resumeSession callback を指定すると、AHP ホストからの要求をアプリケーションの Client に渡せます。callback には、ランタイムが検証した HostSessionAuthentication、ホスト指定の config、協調キャンセル用の CancellationToken を含む HostMaterializeSessionRequest が渡されます。返すセッションは同じ Client で作成または再開したものにしてください。
onSessionReleased は参加が終了したセッションを受け取り、SDK はセッションを切断・破棄しません。HostMaterializeSessionRequest::$authentication はクライアント入力ではなく、ホストが確認した trusted identity です。callback 側でも必要な tenant やユーザーの認可を行ってください。
セッションカタログと終了
dispose() はリスナーを停止しますが、関連セッションの削除は行いません。