Saltar al contenido principal

AHP Host

Agent Host Protocol (AHP) te permite iniciar un listener gestionado por el runtime de Copilot y aceptar clientes remotos mediante WebSocket o Mission Control de GitHub. Un host AHP pertenece a su conexión Client. Detener el listener con Client::stop() o con el dispose() del host no elimina las sesiones que ha utilizado el host.

Iniciar un host

Pasa al menos uno de localServer o githubEnvironment. También es obligatorio un modo de autenticación. Para permitir el acceso anónimo, debes pasar none de forma explícita.
localServer: [] usa una dirección de loopback y un puerto libre. githubEnvironment requiere autenticación github. Trata el token devuelto por el host como un secreto de conexión. workspace es el directorio de trabajo que utiliza el host AHP. El runtime de Copilot resuelve esta ruta en el host donde se ejecuta el runtime, por lo que puede diferir de la ruta dentro de tu aplicación Laravel. Si lo omites, el SDK no incluye workspace en la llamada RPC y el runtime mantiene su comportamiento existente.

Modos de autenticación

  • AhpHostAuthentication::github() autentica con una cuenta de GitHub. Puedes combinarlo con githubEnvironment.
  • AhpHostAuthentication::none() deshabilita la autenticación de forma explícita.
  • AhpHostAuthentication::custom() valida los tokens de admisión con la lógica propia de tu aplicación. Requiere una identidad de propietario estable y un callback de validación.
El callback de autenticación personalizada recibe un HostValidateAuthenticationRequest que contiene el token de admisión descifrado y un CancellationToken que indica la cancelación. Si la validación es correcta, devuelve la identidad y un expiresAt futuro en formato RFC3339. Para rechazar el token, devuelve null. La identidad debe coincidir exactamente con requireIdentity.
El token de admisión es una credencial distinta del token de GitHub o del token del proveedor que se usa para la inferencia. No lo guardes en logs ni en la configuración de la sesión. La señal del callback se cancela cuando el host recibe host.authenticationCancelled o se apaga. Si el callback llama a servicios externos, registra el manejo de la cancelación con onCancellationRequested().

Política de creación de sesiones

allowCreatingNewSessions establece la política inicial para que los clientes remotos creen nuevas sesiones. Si se omite, se deniega la creación de sesiones remotas. La política no se aplica a las sesiones creadas por la aplicación propietaria, a las sesiones publicadas ni a las conexiones existentes. Para cambiar la política mientras el host está en ejecución, llama a setSessionCreationPolicy() del host. La nueva política se aplica a las solicitudes que llegan después de que se confirme el cambio. Las solicitudes de creación ya aceptadas pueden completarse. Los clientes conectados no se desconectan.
Si usas RPC directamente, llama a $client->rpc()->host()->setSessionCreationPolicy() y pasa un HostSetSessionCreationPolicyRequest con el hostId y la nueva configuración.

Sesiones gestionadas por la aplicación

Pasa los callbacks createSession y resumeSession para delegar las solicitudes del host AHP al Client de tu aplicación. Cada callback recibe un HostMaterializeSessionRequest que contiene el HostSessionAuthentication verificado por el runtime y la config proporcionada por el host, además de un CancellationToken para la cancelación cooperativa. Devuelve una sesión creada o reanudada con el mismo Client.
onSessionReleased recibe la sesión cuya participación ha terminado. El SDK no desconecta ni destruye la sesión. HostMaterializeSessionRequest::$authentication es una identidad de confianza verificada por el host, no una entrada del cliente. Aun así, realiza dentro del callback cualquier autorización de tenant o de usuario que necesites.

Catálogo de sesiones y apagado

Despublicar una sesión la elimina del catálogo de AHP. No elimina el historial local ni detiene el trabajo en curso. dispose() detiene el listener, pero no elimina las sesiones relacionadas.

Documentación relacionada

Última modificación el 26 de octubre de 2026