Interagir avec le serveur dropstone via HTTP.
La commande dropstone serve exécute un serveur HTTP sans interface qui expose un point de terminaison OpenAPI qu'un client Dropstone peut utiliser.
Utilisation
dropstone serve [--port <number>] [--hostname <string>] [--cors <origin>]
Options
| Drapeau | Description | Défaut |
|---|
--port | Port d'écoute | 4096 |
--hostname | Nom d'hôte d'écoute | 127.0.0.1 |
--mdns | Activer la découverte mDNS | false |
--mdns-domain | Nom de domaine personnalisé pour mDNS | dropstone.local |
--cors | Origines de navigateur supplémentaires | [] |
--cors peut être passé plusieurs fois :
dropstone serve --cors http://localhost:5173 --cors https://app.example.com
Authentification
Définissez DROPSTONE_SERVER_PASSWORD pour protéger le serveur avec l'authentification HTTP basic. Le nom d'utilisateur par défaut est dropstone, ou définissez DROPSTONE_SERVER_USERNAME pour le remplacer. Cela s'applique à la fois à dropstone serve et à dropstone web.
DROPSTONE_SERVER_PASSWORD=your-password dropstone serve
Fonctionnement
dropstone serve expose les capacités de Dropstone via un point de terminaison HTTP OpenAPI 3.1. Le même point de terminaison est utilisé pour générer le SDK.
Utilisez le serveur lorsque vous souhaitez piloter Dropstone par programmation : à partir d'un script, d'un pipeline CI ou d'une intégration personnalisée. La session interactive et le serveur sont indépendants. L'exécution de dropstone serve démarre un serveur autonome indépendant, que vous ayez ou non une session interactive ouverte.
Vous pouvez remplacer l'adresse de liaison avec les drapeaux --hostname et --port.
Spécification
Le serveur publie une spécification OpenAPI 3.1 qui peut être consultée à :
http://<hostname>:<port>/doc
Par exemple, http://localhost:4096/doc. Utilisez la spécification pour générer des clients ou inspecter les types de requête et de réponse. Ou consultez-la dans un explorateur Swagger.
APIs
Le serveur dropstone expose les APIs suivantes.
Global
| Méthode | Chemin | Description | Réponse |
|---|
GET | /global/health | Obtenir la santé et la version du serveur | { healthy: true, version: string } |
GET | /global/event | Obtenir les événements globaux (flux SSE) | Flux d'événements |
Projet
| Méthode | Chemin | Description | Réponse |
|---|
GET | /project | Lister tous les projets | Project[] |
GET | /project/current | Obtenir le projet actuel | Project |
Chemin & VCS
| Méthode | Chemin | Description | Réponse |
|---|
GET | /path | Obtenir le chemin actuel | Path |
GET | /vcs | Obtenir les informations VCS du projet actuel | VcsInfo |
Config
| Méthode | Chemin | Description | Réponse |
|---|
GET | /config | Obtenir les informations de config | Config |
PATCH | /config | Mettre à jour la config | Config |
Sessions
| Méthode | Chemin | Description | Notes |
|---|
GET | /session | Lister toutes les sessions | Retourne Session[] |
POST | /session | Créer une nouvelle session | corps : { parentID?, title? }, retourne Session |
GET | /session/status | Obtenir le statut de session pour toutes les sessions | Retourne { [sessionID: string]: SessionStatus } |
GET | /session/:id | Obtenir les détails de la session | Retourne Session |
DELETE | /session/:id | Supprimer une session et toutes ses données | Retourne boolean |
PATCH | /session/:id | Mettre à jour les propriétés de la session | corps : { title? }, retourne Session |
GET | /session/:id/children | Obtenir les sessions enfants d'une session | Retourne Session[] |
GET | /session/:id/todo | Obtenir la liste de tâches pour une session | Retourne Todo[] |
POST | /session/:id/init | Analyser l'application et créer AGENTS.md | corps : { messageID, providerID, modelID }, retourne boolean |
POST | /session/:id/fork | Dupliquer une session existante à un message | corps : { messageID? }, retourne Session |
POST | /session/:id/abort | Abandonner une session en cours | Retourne boolean |
GET | /session/:id/diff | Obtenir le diff pour cette session | requête : messageID?, retourne FileDiff[] |
POST | /session/:id/summarize | Résumer la session | corps : { providerID, modelID }, retourne boolean |
POST | /session/:id/revert | Annuler un message | corps : { messageID, partID? }, retourne boolean |
POST | /session/:id/unrevert | Restaurer tous les messages annulés | Retourne boolean |
POST | /session/:id/permissions/:permissionID | Répondre à une demande de permission | corps : { response, remember? }, retourne boolean |
Messages
| Méthode | Chemin | Description | Notes |
|---|
GET | /session/:id/message | Lister les messages dans une session | requête : limit?, retourne { info: Message, parts: Part[]}[] |
POST | /session/:id/message | Envoyer un message et attendre la réponse | corps : { messageID?, model?, agent?, noReply?, system?, tools?, parts }, retourne { info: Message, parts: Part[]} |
GET | /session/:id/message/:messageID | Obtenir les détails du message | Retourne { info: Message, parts: Part[]} |
POST | /session/:id/prompt_async | Envoyer un message de manière asynchrone (sans attente) | corps : identique à /session/:id/message, retourne 204 No Content |
POST | /session/:id/command | Exécuter une commande slash | corps : { messageID?, agent?, model?, command, arguments }, retourne { info: Message, parts: Part[]} |
POST | /session/:id/shell | Exécuter une commande shell | corps : { agent, model?, command }, retourne { info: Message, parts: Part[]} |
Commandes
| Méthode | Chemin | Description | Réponse |
|---|
GET | /command | Lister toutes les commandes | Command[] |
Fichiers
| Méthode | Chemin | Description | Réponse |
|---|
GET | /find?pattern=<pat> | Rechercher du texte dans les fichiers | Tableau d'objets de correspondance avec path, lines, line_number, absolute_offset, submatches |
GET | /find/file?query=<q> | Trouver des fichiers et répertoires par nom | string[] (chemins) |
GET | /find/symbol?query=<q> | Trouver les symboles de l'espace de travail | Symbol[] |
GET | /file?path=<path> | Lister les fichiers et répertoires | FileNode[] |
GET | /file/content?path=<p> | Lire un fichier | FileContent |
GET | /file/status | Obtenir le statut des fichiers suivis | File[] |
Paramètres de requête /find/file
query (requis) : chaîne de recherche (correspondance floue)
type (optionnel) : limiter les résultats à "file" ou "directory"
directory (optionnel) : remplacer la racine du projet pour la recherche
limit (optionnel) : résultats max (1–200)
dirs (optionnel) : drapeau hérité ("false" retourne uniquement les fichiers)
| Méthode | Chemin | Description | Réponse |
|---|
GET | /lsp | Obtenir le statut du serveur LSP | LSPStatus[] |
GET | /formatter | Obtenir le statut du formateur | FormatterStatus[] |
GET | /mcp | Obtenir le statut du serveur MCP | { [name: string]: MCPStatus } |
POST | /mcp | Ajouter un serveur MCP dynamiquement | corps : { name, config }, retourne l'objet de statut MCP |
Agents
| Méthode | Chemin | Description | Réponse |
|---|
GET | /agent | Lister tous les agents disponibles | Agent[] |
Journalisation
| Méthode | Chemin | Description | Réponse |
|---|
POST | /log | Écrire une entrée de journal. Corps : { service, level, message, extra? } | boolean |
Auth
| Méthode | Chemin | Description | Réponse |
|---|
PUT | /auth/:id | Définir les identifiants d'authentification pour la cible donnée. | boolean |
Événements
| Méthode | Chemin | Description | Réponse |
|---|
GET | /event | Flux d'événements envoyés par le serveur. Le premier événement est server.connected, puis les événements du bus | Flux d'événements envoyés par le serveur |
Docs
| Méthode | Chemin | Description | Réponse |
|---|
GET | /doc | Spécification OpenAPI 3.1 | Page HTML avec spécification OpenAPI |