Взаимодействие с сервером dropstone через HTTP.
Команда dropstone serve запускает автономный HTTP-сервер, который предоставляет OpenAPI endpoint, который может использовать клиент Dropstone.
Использование
dropstone serve [--port <number>] [--hostname <string>] [--cors <origin>]
Опции
| Флаг | Описание | По умолчанию |
|---|
--port | Порт для прослушивания | 4096 |
--hostname | Имя хоста для прослушивания | 127.0.0.1 |
--mdns | Включить обнаружение mDNS | false |
--mdns-domain | Пользовательское имя домена для mDNS | dropstone.local |
--cors | Дополнительные источники браузера | [] |
--cors можно передать несколько раз:
dropstone serve --cors http://localhost:5173 --cors https://app.example.com
Аутентификация
Установите DROPSTONE_SERVER_PASSWORD для защиты сервера с помощью HTTP basic auth. Имя пользователя по умолчанию — dropstone, или установите DROPSTONE_SERVER_USERNAME для переопределения. Это применяется как к dropstone serve, так и к dropstone web.
DROPSTONE_SERVER_PASSWORD=your-password dropstone serve
Как это работает
dropstone serve предоставляет возможности Dropstone через OpenAPI 3.1 HTTP endpoint. Тот же endpoint используется для создания SDK.
Используйте сервер, когда вы хотите управлять Dropstone программно: из скрипта, конвейера CI или собственной интеграции. Интерактивная сессия и сервер независимы друг от друга. Запуск dropstone serve запускает новый автономный сервер независимо от того, открыта ли у вас интерактивная сессия.
Вы можете переопределить адрес привязки с помощью флагов --hostname и --port flags.
Спецификация
Сервер публикует спецификацию OpenAPI 3.1, которую можно просмотреть по адресу:
http://<hostname>:<port>/doc
Например, http://localhost:4096/doc. Используйте спецификацию для создания клиентов или проверки типов запросов и ответов. Или просмотрите её в Swagger explorer.
API
Сервер dropstone предоставляет следующие API.
Global
| Метод | Путь | Описание | Ответ |
|---|
GET | /global/health | Получить здоровье и версию сервера | { healthy: true, version: string } |
GET | /global/event | Получить глобальные события (SSE) | Поток событий |
Project
| Метод | Путь | Описание | Ответ |
|---|
GET | /project | Список всех проектов | Project[] |
GET | /project/current | Получить текущий проект | Project |
Path & VCS
| Метод | Путь | Описание | Ответ |
|---|
GET | /path | Получить текущий путь | Path |
GET | /vcs | Получить информацию VCS текущего проекта | VcsInfo |
Config
| Метод | Путь | Описание | Ответ |
|---|
GET | /config | Получить конфиг | Config |
PATCH | /config | Обновить конфиг | Config |
Sessions
| Метод | Путь | Описание | Примечания |
|---|
GET | /session | Список всех сессий | Возвращает Session[] |
POST | /session | Создать новую сессию | body: { parentID?, title? }, возвращает Session |
GET | /session/status | Получить статус сессии для всех сессий | Возвращает { [sessionID: string]: SessionStatus } |
GET | /session/:id | Получить детали сессии | Возвращает Session |
DELETE | /session/:id | Удалить сессию и все её данные | Возвращает boolean |
PATCH | /session/:id | Обновить свойства сессии | body: { title? }, возвращает Session |
GET | /session/:id/children | Получить дочерние сессии | Возвращает Session[] |
GET | /session/:id/todo | Получить список задач для сессии | Возвращает Todo[] |
POST | /session/:id/init | Анализировать приложение и создать AGENTS.md | body: { messageID, providerID, modelID }, возвращает boolean |
POST | /session/:id/fork | Разветвить существующую сессию | body: { messageID? }, возвращает Session |
POST | /session/:id/abort | Прервать работающую сессию | Возвращает boolean |
GET | /session/:id/diff | Получить diff для этой сессии | query: messageID?, возвращает FileDiff[] |
POST | /session/:id/summarize | Суммировать сессию | body: { providerID, modelID }, возвращает boolean |
POST | /session/:id/revert | Отменить сообщение | body: { messageID, partID? }, возвращает boolean |
POST | /session/:id/unrevert | Восстановить все отменённые сообщения | Возвращает boolean |
POST | /session/:id/permissions/:permissionID | Ответить на запрос разрешения | body: { response, remember? }, возвращает boolean |
Messages
| Метод | Путь | Описание | Примечания |
|---|
GET | /session/:id/message | Список сообщений в сессии | query: limit?, возвращает { info: Message, parts: Part[]}[] |
POST | /session/:id/message | Отправить сообщение и ждать ответа | body: { messageID?, model?, agent?, noReply?, system?, tools?, parts }, возвращает { info: Message, parts: Part[]} |
GET | /session/:id/message/:messageID | Получить детали сообщения | Возвращает { info: Message, parts: Part[]} |
POST | /session/:id/prompt_async | Отправить сообщение асинхронно (без ожидания) | body: то же, что /session/:id/message, возвращает 204 No Content |
POST | /session/:id/command | Выполнить slash команду | body: { messageID?, agent?, model?, command, arguments }, возвращает { info: Message, parts: Part[]} |
POST | /session/:id/shell | Запустить shell команду | body: { agent, model?, command }, возвращает { info: Message, parts: Part[]} |
Commands
| Метод | Путь | Описание | Ответ |
|---|
GET | /command | Список всех команд | Command[] |
Files
| Метод | Путь | Описание | Ответ |
|---|
GET | /find?pattern=<pat> | Поиск текста в файлах | Массив объектов совпадений с path, lines, line_number, absolute_offset, submatches |
GET | /find/file?query=<q> | Поиск файлов и директорий по имени | string[] (пути) |
GET | /find/symbol?query=<q> | Поиск символов рабочей области | Symbol[] |
GET | /file?path=<path> | Список файлов и директорий | FileNode[] |
GET | /file/content?path=<p> | Чтение файла | FileContent |
GET | /file/status | Получить статус отслеживаемых файлов | File[] |
Параметры запроса /find/file
query (обязательно): строка поиска (нечёткое совпадение)
type (опционально): ограничить результаты на "file" или "directory"
directory (опционально): переопределить корень проекта для поиска
limit (опционально): максимум результатов (1–200)
dirs (опционально): устаревший флаг ("false" возвращает только файлы)
| Метод | Путь | Описание | Ответ |
|---|
GET | /lsp | Получить статус LSP сервера | LSPStatus[] |
GET | /formatter | Получить статус форматтера | FormatterStatus[] |
GET | /mcp | Получить статус MCP сервера | { [name: string]: MCPStatus } |
POST | /mcp | Добавить MCP сервер динамически | body: { name, config }, возвращает объект статуса MCP |
Agents
| Метод | Путь | Описание | Ответ |
|---|
GET | /agent | Список всех доступных агентов | Agent[] |
Logging
| Метод | Путь | Описание | Ответ |
|---|
POST | /log | Записать запись логирования. Body: { service, level, message, extra? } | boolean |
Auth
| Метод | Путь | Описание | Ответ |
|---|
PUT | /auth/:id | Установить учётные данные аутентификации для целевого объекта. | boolean |
Events
| Метод | Путь | Описание | Ответ |
|---|
GET | /event | Поток Server-sent events. Первое событие — server.connected, затем события шины | Поток Server-sent events |
Docs
| Метод | Путь | Описание | Ответ |
|---|
GET | /doc | Спецификация OpenAPI 3.1 | HTML страница со спецификацией OpenAPI |