Interagisci con il server dropstone tramite HTTP.
Il comando dropstone serve esegue un server HTTP headless che espone un endpoint OpenAPI che un client Dropstone può utilizzare.
Utilizzo
dropstone serve [--port <number>] [--hostname <string>] [--cors <origin>]
Opzioni
| Flag | Descrizione | Predefinito |
|---|
--port | Porta su cui ascoltare | 4096 |
--hostname | Nome host su cui ascoltare | 127.0.0.1 |
--mdns | Abilita il rilevamento mDNS | false |
--mdns-domain | Nome di dominio personalizzato per il servizio mDNS | dropstone.local |
--cors | Origini browser aggiuntive da consentire | [] |
--cors può essere passato più volte:
dropstone serve --cors http://localhost:5173 --cors https://app.example.com
Autenticazione
Imposta DROPSTONE_SERVER_PASSWORD per proteggere il server con autenticazione HTTP basic. Il nome utente predefinito è dropstone, oppure imposta DROPSTONE_SERVER_USERNAME per sovrascriverlo. Questo si applica sia a dropstone serve che a dropstone web.
DROPSTONE_SERVER_PASSWORD=your-password dropstone serve
Come funziona
dropstone serve espone le capacità di Dropstone su un endpoint HTTP OpenAPI 3.1. Lo stesso endpoint viene utilizzato per generare l'SDK.
Utilizza il server quando desideri guidare Dropstone a livello di programmazione: da uno script, da una pipeline CI, o da un'integrazione personalizzata. La sessione interattiva e il server sono indipendenti. L'esecuzione di dropstone serve avvia un server standalone nuovo indipendentemente dal fatto che tu abbia una sessione interattiva aperta.
Puoi sovrascrivere l'indirizzo di binding con i flag --hostname e --port.
Specifica
Il server pubblica una specifica OpenAPI 3.1 che può essere visualizzata su:
http://<hostname>:<port>/doc
Ad esempio, http://localhost:4096/doc. Utilizza la specifica per generare client o ispezionare i tipi di richiesta e risposta. Oppure visualizzala in un explorer Swagger.
API
Il server dropstone espone le seguenti API.
Globale
| Metodo | Percorso | Descrizione | Risposta |
|---|
GET | /global/health | Ottieni lo stato e la versione del server | { healthy: true, version: string } |
GET | /global/event | Ottieni gli eventi globali (flusso SSE) | Flusso di eventi |
Progetto
| Metodo | Percorso | Descrizione | Risposta |
|---|
GET | /project | Elenca tutti i progetti | Project[] |
GET | /project/current | Ottieni il progetto corrente | Project |
Percorso e VCS
| Metodo | Percorso | Descrizione | Risposta |
|---|
GET | /path | Ottieni il percorso corrente | Path |
GET | /vcs | Ottieni le informazioni VCS per il progetto corrente | VcsInfo |
Configurazione
| Metodo | Percorso | Descrizione | Risposta |
|---|
GET | /config | Ottieni le informazioni di configurazione | Config |
PATCH | /config | Aggiorna la configurazione | Config |
Sessioni
| Metodo | Percorso | Descrizione | Note |
|---|
GET | /session | Elenca tutte le sessioni | Restituisce Session[] |
POST | /session | Crea una nuova sessione | body: { parentID?, title? }, restituisce Session |
GET | /session/status | Ottieni lo stato della sessione per tutte le sessioni | Restituisce { [sessionID: string]: SessionStatus } |
GET | /session/:id | Ottieni i dettagli della sessione | Restituisce Session |
DELETE | /session/:id | Elimina una sessione e tutti i suoi dati | Restituisce boolean |
PATCH | /session/:id | Aggiorna le proprietà della sessione | body: { title? }, restituisce Session |
GET | /session/:id/children | Ottieni le sessioni figlie di una sessione | Restituisce Session[] |
GET | /session/:id/todo | Ottieni l'elenco todo per una sessione | Restituisce Todo[] |
POST | /session/:id/init | Analizza l'app e crea AGENTS.md | body: { messageID, providerID, modelID }, restituisce boolean |
POST | /session/:id/fork | Esegui il fork di una sessione esistente a un messaggio | body: { messageID? }, restituisce Session |
POST | /session/:id/abort | Interrompi una sessione in esecuzione | Restituisce boolean |
GET | /session/:id/diff | Ottieni il diff per questa sessione | query: messageID?, restituisce FileDiff[] |
POST | /session/:id/summarize | Riassumi la sessione | body: { providerID, modelID }, restituisce boolean |
POST | /session/:id/revert | Ripristina un messaggio | body: { messageID, partID? }, restituisce boolean |
POST | /session/:id/unrevert | Ripristina tutti i messaggi ripristinati | Restituisce boolean |
POST | /session/:id/permissions/:permissionID | Rispondi a una richiesta di permesso | body: { response, remember? }, restituisce boolean |
Messaggi
| Metodo | Percorso | Descrizione | Note |
|---|
GET | /session/:id/message | Elenca i messaggi in una sessione | query: limit?, restituisce { info: Message, parts: Part[]}[] |
POST | /session/:id/message | Invia un messaggio e attendi la risposta | body: { messageID?, model?, agent?, noReply?, system?, tools?, parts }, restituisce { info: Message, parts: Part[]} |
GET | /session/:id/message/:messageID | Ottieni i dettagli del messaggio | Restituisce { info: Message, parts: Part[]} |
POST | /session/:id/prompt_async | Invia un messaggio in modo asincrono (senza attesa) | body: uguale a /session/:id/message, restituisce 204 No Content |
POST | /session/:id/command | Esegui un comando slash | body: { messageID?, agent?, model?, command, arguments }, restituisce { info: Message, parts: Part[]} |
POST | /session/:id/shell | Esegui un comando shell | body: { agent, model?, command }, restituisce { info: Message, parts: Part[]} |
Comandi
| Metodo | Percorso | Descrizione | Risposta |
|---|
GET | /command | Elenca tutti i comandi | Command[] |
File
| Metodo | Percorso | Descrizione | Risposta |
|---|
GET | /find?pattern=<pat> | Cerca testo nei file | Array di oggetti corrispondenti con path, lines, line_number, absolute_offset, submatches |
GET | /find/file?query=<q> | Trova file e directory per nome | string[] (percorsi) |
GET | /find/symbol?query=<q> | Trova simboli dell'area di lavoro | Symbol[] |
GET | /file?path=<path> | Elenca file e directory | FileNode[] |
GET | /file/content?path=<p> | Leggi un file | FileContent |
GET | /file/status | Ottieni lo stato per i file tracciati | File[] |
Parametri di query /find/file
query (obbligatorio): stringa di ricerca (corrispondenza fuzzy)
type (facoltativo): limita i risultati a "file" o "directory"
directory (facoltativo): sovrascrivi la radice del progetto per la ricerca
limit (facoltativo): risultati massimi (1–200)
dirs (facoltativo): flag legacy ("false" restituisce solo file)
| Metodo | Percorso | Descrizione | Risposta |
|---|
GET | /lsp | Ottieni lo stato del server LSP | LSPStatus[] |
GET | /formatter | Ottieni lo stato del formatter | FormatterStatus[] |
GET | /mcp | Ottieni lo stato del server MCP | { [name: string]: MCPStatus } |
POST | /mcp | Aggiungi il server MCP dinamicamente | body: { name, config }, restituisce l'oggetto di stato MCP |
Agent
| Metodo | Percorso | Descrizione | Risposta |
|---|
GET | /agent | Elenca tutti gli agent disponibili | Agent[] |
Logging
| Metodo | Percorso | Descrizione | Risposta |
|---|
POST | /log | Scrivi voce di log. Body: { service, level, message, extra? } | boolean |
Autenticazione
| Metodo | Percorso | Descrizione | Risposta |
|---|
PUT | /auth/:id | Imposta le credenziali di autenticazione per il target specificato. | boolean |
Eventi
| Metodo | Percorso | Descrizione | Risposta |
|---|
GET | /event | Flusso di eventi inviati dal server. Il primo evento è server.connected, quindi gli eventi del bus | Flusso di eventi inviati dal server |
Documentazione
| Metodo | Percorso | Descrizione | Risposta |
|---|
GET | /doc | Specifica OpenAPI 3.1 | Pagina HTML con specifica OpenAPI |