Interagieren Sie mit dem Dropstone-Server über HTTP.
Der Befehl dropstone serve führt einen Headless-HTTP-Server aus, der einen OpenAPI-Endpunkt bereitstellt, den ein Dropstone-Client verwenden kann.
Verwendung
dropstone serve [--port <number>] [--hostname <string>] [--cors <origin>]
Optionen
| Flag | Beschreibung | Standard |
|---|
--port | Port zum Abhören | 4096 |
--hostname | Hostname zum Abhören | 127.0.0.1 |
--mdns | mDNS-Erkennung aktivieren | false |
--mdns-domain | Benutzerdefinierter Domänenname für mDNS-Dienst | dropstone.local |
--cors | Zusätzliche Browser-Ursprünge zum Zulassen | [] |
--cors kann mehrmals übergeben werden:
dropstone serve --cors http://localhost:5173 --cors https://app.example.com
Authentifizierung
Setzen Sie DROPSTONE_SERVER_PASSWORD, um den Server mit HTTP-Authentifizierung zu schützen. Der Benutzername ist standardmäßig dropstone, oder setzen Sie DROPSTONE_SERVER_USERNAME, um ihn zu überschreiben. Dies gilt sowohl für dropstone serve als auch für dropstone web.
DROPSTONE_SERVER_PASSWORD=your-password dropstone serve
Funktionsweise
dropstone serve stellt die Funktionen von Dropstone über einen OpenAPI-3.1-HTTP-Endpunkt bereit. Der gleiche Endpunkt wird verwendet, um das SDK zu generieren.
Verwenden Sie den Server, wenn Sie Dropstone programmgesteuert steuern möchten: von einem Skript, einer CI-Pipeline oder einer eigenen Integration. Die interaktive Sitzung und der Server sind unabhängig. Das Ausführen von dropstone serve startet einen neuen eigenständigen Server, unabhängig davon, ob Sie eine interaktive Sitzung offen haben.
Sie können die Bindungsadresse mit den Flags --hostname und --port überschreiben.
Spezifikation
Der Server veröffentlicht eine OpenAPI-3.1-Spezifikation, die unter folgender Adresse angezeigt werden kann:
http://<hostname>:<port>/doc
Zum Beispiel http://localhost:4096/doc. Verwenden Sie die Spezifikation, um Clients zu generieren oder Anfrage- und Antworttypen zu überprüfen. Oder zeigen Sie sie in einem Swagger-Explorer an.
APIs
Der Dropstone-Server stellt die folgenden APIs bereit.
Global
| Methode | Pfad | Beschreibung | Antwort |
|---|
GET | /global/health | Serverzustand und Version abrufen | { healthy: true, version: string } |
GET | /global/event | Globale Ereignisse abrufen (SSE-Stream) | Ereignis-Stream |
Projekt
| Methode | Pfad | Beschreibung | Antwort |
|---|
GET | /project | Alle Projekte auflisten | Project[] |
GET | /project/current | Aktuelles Projekt abrufen | Project |
Pfad & VCS
| Methode | Pfad | Beschreibung | Antwort |
|---|
GET | /path | Aktuellen Pfad abrufen | Path |
GET | /vcs | VCS-Informationen für das aktuelle Projekt abrufen | VcsInfo |
Konfiguration
| Methode | Pfad | Beschreibung | Antwort |
|---|
GET | /config | Konfigurationsinformationen abrufen | Config |
PATCH | /config | Konfiguration aktualisieren | Config |
Sitzungen
| Methode | Pfad | Beschreibung | Hinweise |
|---|
GET | /session | Alle Sitzungen auflisten | Gibt Session[] zurück |
POST | /session | Neue Sitzung erstellen | body: { parentID?, title? }, gibt Session zurück |
GET | /session/status | Sitzungsstatus für alle Sitzungen abrufen | Gibt { [sessionID: string]: SessionStatus } zurück |
GET | /session/:id | Sitzungsdetails abrufen | Gibt Session zurück |
DELETE | /session/:id | Sitzung und alle ihre Daten löschen | Gibt boolean zurück |
PATCH | /session/:id | Sitzungseigenschaften aktualisieren | body: { title? }, gibt Session zurück |
GET | /session/:id/children | Untergeordnete Sitzungen einer Sitzung abrufen | Gibt Session[] zurück |
GET | /session/:id/todo | Todo-Liste für eine Sitzung abrufen | Gibt Todo[] zurück |
POST | /session/:id/init | App analysieren und AGENTS.md erstellen | body: { messageID, providerID, modelID }, gibt boolean zurück |
POST | /session/:id/fork | Vorhandene Sitzung bei einer Nachricht verzweigen | body: { messageID? }, gibt Session zurück |
POST | /session/:id/abort | Laufende Sitzung abbrechen | Gibt boolean zurück |
GET | /session/:id/diff | Diff für diese Sitzung abrufen | query: messageID?, gibt FileDiff[] zurück |
POST | /session/:id/summarize | Sitzung zusammenfassen | body: { providerID, modelID }, gibt boolean zurück |
POST | /session/:id/revert | Nachricht rückgängig machen | body: { messageID, partID? }, gibt boolean zurück |
POST | /session/:id/unrevert | Alle rückgängig gemachten Nachrichten wiederherstellen | Gibt boolean zurück |
POST | /session/:id/permissions/:permissionID | Auf Berechtigungsanfrage antworten | body: { response, remember? }, gibt boolean zurück |
Nachrichten
| Methode | Pfad | Beschreibung | Hinweise |
|---|
GET | /session/:id/message | Nachrichten in einer Sitzung auflisten | query: limit?, gibt { info: Message, parts: Part[]}[] zurück |
POST | /session/:id/message | Nachricht senden und auf Antwort warten | body: { messageID?, model?, agent?, noReply?, system?, tools?, parts }, gibt { info: Message, parts: Part[]} zurück |
GET | /session/:id/message/:messageID | Nachrichtendetails abrufen | Gibt { info: Message, parts: Part[]} zurück |
POST | /session/:id/prompt_async | Nachricht asynchron senden (kein Warten) | body: wie /session/:id/message, gibt 204 No Content zurück |
POST | /session/:id/command | Schrägstrich-Befehl ausführen | body: { messageID?, agent?, model?, command, arguments }, gibt { info: Message, parts: Part[]} zurück |
POST | /session/:id/shell | Shell-Befehl ausführen | body: { agent, model?, command }, gibt { info: Message, parts: Part[]} zurück |
Befehle
| Methode | Pfad | Beschreibung | Antwort |
|---|
GET | /command | Alle Befehle auflisten | Command[] |
Dateien
| Methode | Pfad | Beschreibung | Antwort |
|---|
GET | /find?pattern=<pat> | Text in Dateien suchen | Array von Match-Objekten mit path, lines, line_number, absolute_offset, submatches |
GET | /find/file?query=<q> | Dateien und Verzeichnisse nach Name suchen | string[] (Pfade) |
GET | /find/symbol?query=<q> | Workspace-Symbole suchen | Symbol[] |
GET | /file?path=<path> | Dateien und Verzeichnisse auflisten | FileNode[] |
GET | /file/content?path=<p> | Datei lesen | FileContent |
GET | /file/status | Status für nachverfolgten Dateien abrufen | File[] |
/find/file Abfrageparameter
query (erforderlich): Suchzeichenfolge (Fuzzy-Matching)
type (optional): Ergebnisse auf "file" oder "directory" begrenzen
directory (optional): Projektstamm für die Suche überschreiben
limit (optional): maximale Ergebnisse (1–200)
dirs (optional): Legacy-Flag ("false" gibt nur Dateien zurück)
| Methode | Pfad | Beschreibung | Antwort |
|---|
GET | /lsp | LSP-Serverstatus abrufen | LSPStatus[] |
GET | /formatter | Formatter-Status abrufen | FormatterStatus[] |
GET | /mcp | MCP-Serverstatus abrufen | { [name: string]: MCPStatus } |
POST | /mcp | MCP-Server dynamisch hinzufügen | body: { name, config }, gibt MCP-Statusobjekt zurück |
Agenten
| Methode | Pfad | Beschreibung | Antwort |
|---|
GET | /agent | Alle verfügbaren Agenten auflisten | Agent[] |
Protokollierung
| Methode | Pfad | Beschreibung | Antwort |
|---|
POST | /log | Protokolleintrag schreiben. Body: { service, level, message, extra? } | boolean |
Authentifizierung
| Methode | Pfad | Beschreibung | Antwort |
|---|
PUT | /auth/:id | Authentifizierungsdaten für das angegebene Ziel festlegen. | boolean |
Ereignisse
| Methode | Pfad | Beschreibung | Antwort |
|---|
GET | /event | Server-Sent-Events-Stream. Erstes Ereignis ist server.connected, dann Bus-Ereignisse | Server-Sent-Events-Stream |
Dokumentation
| Methode | Pfad | Beschreibung | Antwort |
|---|
GET | /doc | OpenAPI-3.1-Spezifikation | HTML-Seite mit OpenAPI-Spezifikation |