Server
Berinteraksi dengan server dropstone melalui HTTP.
Perintah dropstone serve menjalankan server HTTP headless yang mengekspos endpoint OpenAPI yang dapat digunakan oleh klien Dropstone.
Penggunaan
dropstone serve [--port <number>] [--hostname <string>] [--cors <origin>]
Opsi
| Flag | Deskripsi | Default |
|---|---|---|
--port | Port untuk mendengarkan | 4096 |
--hostname | Hostname untuk mendengarkan | 127.0.0.1 |
--mdns | Aktifkan penemuan mDNS | false |
--mdns-domain | Nama domain khusus untuk layanan mDNS | dropstone.local |
--cors | Origin browser tambahan yang diizinkan | [] |
--cors dapat diberikan beberapa kali:
dropstone serve --cors http://localhost:5173 --cors https://app.example.com
Autentikasi
Setel DROPSTONE_SERVER_PASSWORD untuk melindungi server dengan HTTP basic auth. Nama pengguna defaultnya adalah dropstone, atau setel DROPSTONE_SERVER_USERNAME untuk menimpanya. Ini berlaku untuk dropstone serve dan dropstone web.
DROPSTONE_SERVER_PASSWORD=your-password dropstone serve
Kredensial agen
DROPSTONE_SERVER_PASSWORD melindungi server itu sendiri. Ini tidak memberi tahu agen cara menjangkau Dropstone. Pada mesin tanpa pengawasan, tidak ada akun yang masuk untuk diwarisi, jadi berikan API key melalui konfigurasi penyedia:
{
"provider": {
"dropstone": {
"options": {
"apiKey": "dsk_live_...",
"baseURL": "https://api.dropstone.io/api/v1"
}
}
}
}
baseURL itu penting. API key diterima di /api/v1, bukan di /v1, dan key yang dikirim ke /v1 akan ditolak dengan 403 Invalid token format. Please log in again. Setel di sini daripada melalui DROPSTONE_BASE_URL, yang juga digunakan untuk membangun endpoint akun, penggunaan, dan memori dan akan merusaknya jika Anda mengarahkannya ke jalur berversi.
Buat key di dropstone.io/dashboard/settings.
Note
Agen build default bertanya sebelum setiap panggilan alat. Tidak ada apa pun di sini yang dapat menjawab prompt tersebut, sehingga permintaan akan menggantung daripada gagal. Kirim "agent": "accept all" atau setel daftar izin izin eksplisit. Lihat Izin.
Mengirim prompt
POST /session/:id/message memerlukan agent dan model. Menghilangkan model tidak menyelesaikan default apa pun: giliran mengembalikan 200 dengan body kosong dan tidak ada yang berjalan.
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" }]
}'
Giliran yang gagal tetap mengembalikan 200. Alasannya ada di data.info.error, bukan di tingkat transport, jadi periksa bidang itu daripada mengandalkan kode status.
Cara kerjanya
dropstone serve mengekspos kemampuan Dropstone melalui endpoint HTTP OpenAPI 3.1. Endpoint yang sama digunakan untuk menghasilkan SDK.
Gunakan server saat Anda ingin menggerakkan Dropstone secara terprogram: dari skrip, pipeline CI, atau integrasi Anda sendiri. Sesi interaktif dan server bersifat independen. Menjalankan dropstone serve memulai server mandiri yang baru terlepas dari apakah Anda memiliki sesi interaktif yang terbuka.
Anda dapat menimpa alamat bind dengan flag --hostname dan --port.
Spesifikasi
Server menerbitkan spesifikasi OpenAPI 3.1 yang dapat dilihat di:
http://<hostname>:<port>/doc
Misalnya, http://localhost:4096/doc. Gunakan spesifikasi untuk menghasilkan klien atau memeriksa tipe permintaan dan respons. Atau lihat di penjelajah Swagger.
API
Server dropstone mengekspos API berikut.
Global
| Metode | Jalur | Deskripsi | Respons |
|---|---|---|---|
GET | /global/health | Dapatkan kesehatan dan versi server | { healthy: true, version: string } |
GET | /global/event | Dapatkan event global (aliran SSE) | Aliran event |
Proyek
| Metode | Jalur | Deskripsi | Respons |
|---|---|---|---|
GET | /project | Daftar semua proyek | Project[] |
GET | /project/current | Dapatkan proyek saat ini | Project |
Jalur & VCS
| Metode | Jalur | Deskripsi | Respons |
|---|---|---|---|
GET | /path | Dapatkan jalur saat ini | Path |
GET | /vcs | Dapatkan info VCS untuk proyek saat ini | VcsInfo |
Konfigurasi
| Metode | Jalur | Deskripsi | Respons |
|---|---|---|---|
GET | /config | Dapatkan info konfigurasi | Config |
PATCH | /config | Perbarui konfigurasi | Config |
Sesi
| Metode | Jalur | Deskripsi | Catatan |
|---|---|---|---|
GET | /session | Daftar semua sesi | Mengembalikan Session[] |
POST | /session | Buat sesi baru | body: { parentID?, title? }, mengembalikan Session |
GET | /session/status | Dapatkan status sesi untuk semua sesi | Mengembalikan { [sessionID: string]: SessionStatus } |
GET | /session/:id | Dapatkan detail sesi | Mengembalikan Session |
DELETE | /session/:id | Hapus sesi dan semua datanya | Mengembalikan boolean |
PATCH | /session/:id | Perbarui properti sesi | body: { title? }, mengembalikan Session |
GET | /session/:id/children | Dapatkan sesi anak dari sesi | Mengembalikan Session[] |
GET | /session/:id/todo | Dapatkan daftar todo untuk sesi | Mengembalikan Todo[] |
POST | /session/:id/init | Analisis aplikasi dan buat AGENTS.md | body: { messageID, providerID, modelID }, mengembalikan boolean |
POST | /session/:id/fork | Fork sesi yang ada pada pesan | body: { messageID? }, mengembalikan Session |
POST | /session/:id/abort | Batalkan sesi yang berjalan | Mengembalikan boolean |
GET | /session/:id/diff | Dapatkan diff untuk sesi ini | query: messageID?, mengembalikan FileDiff[] |
POST | /session/:id/summarize | Ringkas sesi | body: { providerID, modelID }, mengembalikan boolean |
POST | /session/:id/revert | Kembalikan pesan | body: { messageID, partID? }, mengembalikan boolean |
POST | /session/:id/unrevert | Pulihkan semua pesan yang dikembalikan | Mengembalikan boolean |
POST | /session/:id/permissions/:permissionID | Tanggapi permintaan izin | body: { response, remember? }, mengembalikan boolean |
Pesan
| Metode | Jalur | Deskripsi | Catatan |
|---|---|---|---|
GET | /session/:id/message | Daftar pesan dalam sesi | query: limit?, mengembalikan { info: Message, parts: Part[]}[] |
POST | /session/:id/message | Kirim pesan dan tunggu respons | body: { messageID?, model?, agent?, noReply?, system?, tools?, parts }, mengembalikan { info: Message, parts: Part[]} |
GET | /session/:id/message/:messageID | Dapatkan detail pesan | Mengembalikan { info: Message, parts: Part[]} |
POST | /session/:id/prompt_async | Kirim pesan secara asinkron (tanpa menunggu) | body: sama dengan /session/:id/message, mengembalikan 204 No Content |
POST | /session/:id/command | Jalankan perintah slash | body: { messageID?, agent?, model?, command, arguments }, mengembalikan { info: Message, parts: Part[]} |
POST | /session/:id/shell | Jalankan perintah shell | body: { agent, model?, command }, mengembalikan { info: Message, parts: Part[]} |
Perintah
| Metode | Jalur | Deskripsi | Respons |
|---|---|---|---|
GET | /command | Daftar semua perintah | Command[] |
File
| Metode | Jalur | Deskripsi | Respons |
|---|---|---|---|
GET | /find?pattern=<pat> | Cari teks dalam file | Array objek kecocokan dengan path, lines, line_number, absolute_offset, submatches |
GET | /find/file?query=<q> | Temukan file dan direktori berdasarkan nama | string[] (jalur) |
GET | /find/symbol?query=<q> | Temukan simbol ruang kerja | Symbol[] |
GET | /file?path=<path> | Daftar file dan direktori | FileNode[] |
GET | /file/content?path=<p> | Baca file | FileContent |
GET | /file/status | Dapatkan status untuk file yang dilacak | File[] |
Parameter kueri /find/file
query(wajib): string pencarian (pencocokan fuzzy)type(opsional): batasi hasil ke"file"atau"directory"directory(opsional): timpa akar proyek untuk pencarianlimit(opsional): hasil maksimal (1–200)dirs(opsional): flag lama ("false"hanya mengembalikan file)
LSP, Formatter & MCP
| Metode | Jalur | Deskripsi | Respons |
|---|---|---|---|
GET | /lsp | Dapatkan status server LSP | LSPStatus[] |
GET | /formatter | Dapatkan status formatter | FormatterStatus[] |
GET | /mcp | Dapatkan status server MCP | { [name: string]: MCPStatus } |
POST | /mcp | Tambahkan server MCP secara dinamis | body: { name, config }, mengembalikan objek status MCP |
Agen
| Metode | Jalur | Deskripsi | Respons |
|---|---|---|---|
GET | /agent | Daftar semua agen yang tersedia | Agent[] |
Pencatatan
| Metode | Jalur | Deskripsi | Respons |
|---|---|---|---|
POST | /log | Tulis entri log. Body: { service, level, message, extra? } | boolean |
Autentikasi
| Metode | Jalur | Deskripsi | Respons |
|---|---|---|---|
PUT | /auth/:id | Setel kredensial autentikasi untuk target yang diberikan. | boolean |
Event
| Metode | Jalur | Deskripsi | Respons |
|---|---|---|---|
GET | /event | Aliran event yang dikirim server. Event pertama adalah server.connected, lalu event bus | Aliran event yang dikirim server |
Dokumen
| Metode | Jalur | Deskripsi | Respons |
|---|---|---|---|
GET | /doc | Spesifikasi OpenAPI 3.1 | Halaman HTML dengan spesifikasi OpenAPI |