Interactúa con el servidor de dropstone a través de HTTP.
El comando dropstone serve ejecuta un servidor HTTP sin interfaz que expone un endpoint OpenAPI que un cliente de Dropstone puede utilizar.
Uso
dropstone serve [--port <number>] [--hostname <string>] [--cors <origin>]
Opciones
| Bandera | Descripción | Predeterminado |
|---|
--port | Puerto en el que escuchar | 4096 |
--hostname | Nombre de host en el que escuchar | 127.0.0.1 |
--mdns | Habilitar descubrimiento mDNS | false |
--mdns-domain | Nombre de dominio personalizado para mDNS | dropstone.local |
--cors | Orígenes de navegador adicionales permitidos | [] |
--cors se puede pasar varias veces:
dropstone serve --cors http://localhost:5173 --cors https://app.example.com
Autenticación
Establece DROPSTONE_SERVER_PASSWORD para proteger el servidor con autenticación HTTP básica. El nombre de usuario predeterminado es dropstone, o establece DROPSTONE_SERVER_USERNAME para anularlo. Esto se aplica tanto a dropstone serve como a dropstone web.
DROPSTONE_SERVER_PASSWORD=your-password dropstone serve
Cómo funciona
dropstone serve expone las capacidades de Dropstone a través de un endpoint HTTP OpenAPI 3.1. El mismo endpoint se utiliza para generar el SDK.
Utiliza el servidor cuando desees controlar Dropstone mediante programación: desde un script, una canalización de CI o una integración propia. La sesión interactiva y el servidor son independientes. Ejecutar dropstone serve inicia un servidor independiente nuevo independientemente de si tienes una sesión interactiva abierta.
Puedes anular la dirección de enlace con las banderas --hostname y --port.
Especificación
El servidor publica una especificación OpenAPI 3.1 que se puede ver en:
http://<hostname>:<port>/doc
Por ejemplo, http://localhost:4096/doc. Utiliza la especificación para generar clientes o inspeccionar tipos de solicitud y respuesta. O visualízala en un explorador Swagger.
APIs
El servidor de dropstone expone las siguientes APIs.
Global
| Método | Ruta | Descripción | Respuesta |
|---|
GET | /global/health | Obtener salud y versión del servidor | { healthy: true, version: string } |
GET | /global/event | Obtener eventos globales (flujo SSE) | Flujo de eventos |
Proyecto
| Método | Ruta | Descripción | Respuesta |
|---|
GET | /project | Listar todos los proyectos | Project[] |
GET | /project/current | Obtener el proyecto actual | Project |
Ruta y VCS
| Método | Ruta | Descripción | Respuesta |
|---|
GET | /path | Obtener la ruta actual | Path |
GET | /vcs | Obtener información de VCS para el proyecto actual | VcsInfo |
Configuración
| Método | Ruta | Descripción | Respuesta |
|---|
GET | /config | Obtener información de configuración | Config |
PATCH | /config | Actualizar configuración | Config |
Sesiones
| Método | Ruta | Descripción | Notas |
|---|
GET | /session | Listar todas las sesiones | Devuelve Session[] |
POST | /session | Crear una nueva sesión | cuerpo: { parentID?, title? }, devuelve Session |
GET | /session/status | Obtener estado de sesión para todas las sesiones | Devuelve { [sessionID: string]: SessionStatus } |
GET | /session/:id | Obtener detalles de sesión | Devuelve Session |
DELETE | /session/:id | Eliminar una sesión y todos sus datos | Devuelve boolean |
PATCH | /session/:id | Actualizar propiedades de sesión | cuerpo: { title? }, devuelve Session |
GET | /session/:id/children | Obtener sesiones secundarias de una sesión | Devuelve Session[] |
GET | /session/:id/todo | Obtener la lista de tareas pendientes para una sesión | Devuelve Todo[] |
POST | /session/:id/init | Analizar aplicación y crear AGENTS.md | cuerpo: { messageID, providerID, modelID }, devuelve boolean |
POST | /session/:id/fork | Bifurcar una sesión existente en un mensaje | cuerpo: { messageID? }, devuelve Session |
POST | /session/:id/abort | Abortar una sesión en ejecución | Devuelve boolean |
GET | /session/:id/diff | Obtener el diff para esta sesión | consulta: messageID?, devuelve FileDiff[] |
POST | /session/:id/summarize | Resumir la sesión | cuerpo: { providerID, modelID }, devuelve boolean |
POST | /session/:id/revert | Revertir un mensaje | cuerpo: { messageID, partID? }, devuelve boolean |
POST | /session/:id/unrevert | Restaurar todos los mensajes revertidos | Devuelve boolean |
POST | /session/:id/permissions/:permissionID | Responder a una solicitud de permiso | cuerpo: { response, remember? }, devuelve boolean |
Mensajes
| Método | Ruta | Descripción | Notas |
|---|
GET | /session/:id/message | Listar mensajes en una sesión | consulta: limit?, devuelve { info: Message, parts: Part[]}[] |
POST | /session/:id/message | Enviar un mensaje y esperar respuesta | cuerpo: { messageID?, model?, agent?, noReply?, system?, tools?, parts }, devuelve { info: Message, parts: Part[]} |
GET | /session/:id/message/:messageID | Obtener detalles del mensaje | Devuelve { info: Message, parts: Part[]} |
POST | /session/:id/prompt_async | Enviar un mensaje de forma asincrónica (sin espera) | cuerpo: igual que /session/:id/message, devuelve 204 No Content |
POST | /session/:id/command | Ejecutar un comando de barra diagonal | cuerpo: { messageID?, agent?, model?, command, arguments }, devuelve { info: Message, parts: Part[]} |
POST | /session/:id/shell | Ejecutar un comando de shell | cuerpo: { agent, model?, command }, devuelve { info: Message, parts: Part[]} |
Comandos
| Método | Ruta | Descripción | Respuesta |
|---|
GET | /command | Listar todos los comandos | Command[] |
Archivos
| Método | Ruta | Descripción | Respuesta |
|---|
GET | /find?pattern=<pat> | Buscar texto en archivos | Array de objetos de coincidencia con path, lines, line_number, absolute_offset, submatches |
GET | /find/file?query=<q> | Buscar archivos y directorios por nombre | string[] (rutas) |
GET | /find/symbol?query=<q> | Buscar símbolos del espacio de trabajo | Symbol[] |
GET | /file?path=<path> | Listar archivos y directorios | FileNode[] |
GET | /file/content?path=<p> | Leer un archivo | FileContent |
GET | /file/status | Obtener estado para archivos rastreados | File[] |
Parámetros de consulta de /find/file
query (requerido): cadena de búsqueda (coincidencia difusa)
type (opcional): limitar resultados a "file" o "directory"
directory (opcional): anular la raíz del proyecto para la búsqueda
limit (opcional): máximo de resultados (1–200)
dirs (opcional): bandera heredada ("false" devuelve solo archivos)
| Método | Ruta | Descripción | Respuesta |
|---|
GET | /lsp | Obtener estado del servidor LSP | LSPStatus[] |
GET | /formatter | Obtener estado del formateador | FormatterStatus[] |
GET | /mcp | Obtener estado del servidor MCP | { [name: string]: MCPStatus } |
POST | /mcp | Agregar servidor MCP dinámicamente | cuerpo: { name, config }, devuelve objeto de estado MCP |
Agentes
| Método | Ruta | Descripción | Respuesta |
|---|
GET | /agent | Listar todos los agentes disponibles | Agent[] |
Registro
| Método | Ruta | Descripción | Respuesta |
|---|
POST | /log | Escribir entrada de registro. Cuerpo: { service, level, message, extra? } | boolean |
Autenticación
| Método | Ruta | Descripción | Respuesta |
|---|
PUT | /auth/:id | Establecer credenciales de autenticación para el destino dado. | boolean |
Eventos
| Método | Ruta | Descripción | Respuesta |
|---|
GET | /event | Flujo de eventos enviados por el servidor. El primer evento es server.connected, luego eventos de bus | Flujo de eventos enviados por el servidor |
Documentación
| Método | Ruta | Descripción | Respuesta |
|---|
GET | /doc | Especificación OpenAPI 3.1 | Página HTML con especificación OpenAPI |