Dropstone CLI

Server

Interagisci con il server Dropstone tramite HTTP.

Il comando dropstone serve avvia 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

FlagDescrizioneDefault
--portPorta su cui ascoltare4096
--hostnameHostname su cui ascoltare127.0.0.1
--mdnsAbilita la scoperta mDNSfalse
--mdns-domainNome di dominio personalizzato per il servizio mDNSdropstone.local
--corsOrigini 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 di base. Il nome utente predefinito è dropstone, oppure imposta DROPSTONE_SERVER_USERNAME per sovrascriverlo. Questo vale sia per dropstone serve che per dropstone web.

DROPSTONE_SERVER_PASSWORD=your-password dropstone serve

Credenziali dell'agente

DROPSTONE_SERVER_PASSWORD protegge il server stesso. Non dice all'agente come raggiungere Dropstone. Su una macchina non presidiata non c'è un account con accesso effettuato da ereditare, quindi passa una chiave API tramite la configurazione del provider:

{
  "provider": {
    "dropstone": {
      "options": {
        "apiKey": "dsk_live_...",
        "baseURL": "https://api.dropstone.io/api/v1"
      }
    }
  }
}

baseURL è importante. Le chiavi API vengono accettate su /api/v1, non su /v1, e una chiave inviata a /v1 viene rifiutata con 403 Invalid token format. Please log in again. Impostalo qui piuttosto che tramite DROPSTONE_BASE_URL, che viene utilizzato anche per costruire gli endpoint di account, utilizzo e memoria e li interromperà se lo punti a un percorso con versione.

Genera una chiave su dropstone.io/dashboard/settings.

Note

L'agente build predefinito chiede conferma prima di ogni chiamata di strumento. Nulla qui può rispondere a quel prompt, quindi la richiesta rimane in sospeso invece di fallire. Invia "agent": "accept all" oppure imposta una lista di autorizzazioni esplicita. Vedi Autorizzazioni.


Invio di un prompt

POST /session/:id/message richiede sia agent che model. Se si omette model, non viene risolto alcun default: il turno restituisce 200 con un corpo vuoto e non viene eseguito nulla.

curl -X POST "http://127.0.0.1:4096/session/$SID/message?directory=$PWD" \
  -H "Content-Type: application/json" \
  -d '{
    "agent": "build",
    "model": { "providerID": "dropstone", "modelID": "dropstone-pro" },
    "parts": [{ "type": "text", "text": "Add error handling to src/index.ts" }]
  }'

Un turno che fallisce restituisce comunque 200. Il motivo si trova in data.info.error, non a livello di trasporto, quindi controlla quel campo piuttosto che fare affidamento sul codice di stato.


Come funziona

dropstone serve espone le funzionalità di Dropstone tramite un endpoint HTTP OpenAPI 3.1. Lo stesso endpoint viene utilizzato per generare l'SDK.

Usa il server quando vuoi pilotare Dropstone programmaticamente: da uno script, una pipeline CI o un'integrazione tua. La sessione interattiva e il server sono indipendenti. Eseguire dropstone serve avvia un nuovo server autonomo indipendentemente dal fatto che tu abbia una sessione interattiva aperta.

Puoi sovrascrivere l'indirizzo di bind 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. Usa 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.


Globali

MetodoPercorsoDescrizioneRisposta
GET/global/healthOttieni salute e versione del server{ healthy: true, version: string }
GET/global/eventOttieni eventi globali (stream SSE)Stream di eventi

Progetto

MetodoPercorsoDescrizioneRisposta
GET/projectElenca tutti i progettiProject[]
GET/project/currentOttieni il progetto correnteProject

Percorso e VCS

MetodoPercorsoDescrizioneRisposta
GET/pathOttieni il percorso correntePath
GET/vcsOttieni info VCS per il progetto correnteVcsInfo

Configurazione

MetodoPercorsoDescrizioneRisposta
GET/configOttieni info configConfig
PATCH/configAggiorna configConfig

Sessioni

MetodoPercorsoDescrizioneNote
GET/sessionElenca tutte le sessioniRestituisce Session[]
POST/sessionCrea una nuova sessionebody: { parentID?, title? }, restituisce Session
GET/session/statusOttieni stato sessione per tutte le sessioniRestituisce { [sessionID: string]: SessionStatus }
GET/session/:idOttieni dettagli sessioneRestituisce Session
DELETE/session/:idElimina una sessione e tutti i suoi datiRestituisce boolean
PATCH/session/:idAggiorna proprietà sessionebody: { title? }, restituisce Session
GET/session/:id/childrenOttieni le sessioni figlie di una sessioneRestituisce Session[]
GET/session/:id/todoOttieni la lista todo per una sessioneRestituisce Todo[]
POST/session/:id/initAnalizza l'app e crea AGENTS.mdbody: { messageID, providerID, modelID }, restituisce boolean
POST/session/:id/forkDuplica una sessione esistente a un messaggiobody: { messageID? }, restituisce Session
POST/session/:id/abortInterrompi una sessione in esecuzioneRestituisce boolean
GET/session/:id/diffOttieni il diff per questa sessionequery: messageID?, restituisce FileDiff[]
POST/session/:id/summarizeRiepiloga la sessionebody: { providerID, modelID }, restituisce boolean
POST/session/:id/revertAnnulla un messaggiobody: { messageID, partID? }, restituisce boolean
POST/session/:id/unrevertRipristina tutti i messaggi annullatiRestituisce boolean
POST/session/:id/permissions/:permissionIDRispondi a una richiesta di autorizzazionebody: { response, remember? }, restituisce boolean

Messaggi

MetodoPercorsoDescrizioneNote
GET/session/:id/messageElenca i messaggi in una sessionequery: limit?, restituisce { info: Message, parts: Part[]}[]
POST/session/:id/messageInvia un messaggio e attendi la rispostabody: { messageID?, model?, agent?, noReply?, system?, tools?, parts }, restituisce { info: Message, parts: Part[]}
GET/session/:id/message/:messageIDOttieni dettagli messaggioRestituisce { info: Message, parts: Part[]}
POST/session/:id/prompt_asyncInvia un messaggio in modo asincrono (senza attesa)body: come /session/:id/message, restituisce 204 No Content
POST/session/:id/commandEsegui un comando slashbody: { messageID?, agent?, model?, command, arguments }, restituisce { info: Message, parts: Part[]}
POST/session/:id/shellEsegui un comando shellbody: { agent, model?, command }, restituisce { info: Message, parts: Part[]}

Comandi

MetodoPercorsoDescrizioneRisposta
GET/commandElenca tutti i comandiCommand[]

File

MetodoPercorsoDescrizioneRisposta
GET/find?pattern=<pat>Cerca testo nei fileArray di oggetti di corrispondenza con path, lines, line_number, absolute_offset, submatches
GET/find/file?query=<q>Trova file e directory per nomestring[] (percorsi)
GET/find/symbol?query=<q>Trova simboli del workspaceSymbol[]
GET/file?path=<path>Elenca file e directoryFileNode[]
GET/file/content?path=<p>Leggi un fileFileContent
GET/file/statusOttieni stato per file tracciatiFile[]

Parametri di query /find/file

  • query (obbligatorio): stringa di ricerca (corrispondenza fuzzy)
  • type (facoltativo): limita i risultati a "file" o "directory"
  • directory (facoltativo): sovrascrive la radice del progetto per la ricerca
  • limit (facoltativo): massimo risultati (1–200)
  • dirs (facoltativo): flag legacy ("false" restituisce solo file)

LSP, Formatter e MCP

MetodoPercorsoDescrizioneRisposta
GET/lspOttieni stato server LSPLSPStatus[]
GET/formatterOttieni stato formatterFormatterStatus[]
GET/mcpOttieni stato server MCP{ [name: string]: MCPStatus }
POST/mcpAggiungi server MCP dinamicamentebody: { name, config }, restituisce oggetto stato MCP

Agenti

MetodoPercorsoDescrizioneRisposta
GET/agentElenca tutti gli agenti disponibiliAgent[]

Registrazione

MetodoPercorsoDescrizioneRisposta
POST/logScrivi voce di registro. Body: { service, level, message, extra? }boolean

Autenticazione

MetodoPercorsoDescrizioneRisposta
PUT/auth/:idImposta le credenziali di autenticazione per il target specificato.boolean

Eventi

MetodoPercorsoDescrizioneRisposta
GET/eventStream di eventi inviati dal server. Il primo evento è server.connected, poi eventi busStream di eventi inviati dal server

Documentazione

MetodoPercorsoDescrizioneRisposta
GET/docSpecifica OpenAPI 3.1Pagina HTML con specifica OpenAPI
Ctrl+I