サーバー
HTTP経由でDropstoneサーバーと対話します。
dropstone serve コマンドは、Dropstoneクライアントが使用できるOpenAPIエンドポイントを公開するヘッドレスHTTPサーバーを実行します。
使用方法
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基本認証でサーバーを保護します。ユーザー名のデフォルトは dropstone です。DROPSTONE_SERVER_USERNAME を設定してオーバーライドできます。これは dropstone serve と dropstone web の両方に適用されます。
DROPSTONE_SERVER_PASSWORD=your-password dropstone serve
仕組み
dropstone serve はOpenAPI 3.1 HTTPエンドポイント経由でDropstoneの機能を公開します。同じエンドポイントは SDK を生成するために使用されます。
プログラムでDropstoneを駆動したい場合にサーバーを使用します:スクリプト、CIパイプライン、または独自の統合から。インタラクティブセッションとサーバーは独立しています。dropstone serve を実行すると、インタラクティブセッションが開いているかどうかに関わらず、新しいスタンドアロンサーバーが起動します。
バインドアドレスは --hostname および --port フラグ でオーバーライドできます。
仕様
サーバーはOpenAPI 3.1仕様を公開しており、以下で表示できます:
http://<hostname>:<port>/doc
例えば、http://localhost:4096/doc。仕様を使用してクライアントを生成したり、リクエストとレスポンスの型を検査したりできます。またはSwaggerエクスプローラーで表示できます。
API
dropstoneサーバーは以下のAPIを公開します。
グローバル
| メソッド | パス | 説明 | レスポンス |
|---|---|---|---|
GET | /global/health | サーバーのヘルスとバージョンを取得 | { healthy: true, version: string } |
GET | /global/event | グローバルイベント(SSEストリーム)を取得 | イベントストリーム |
プロジェクト
| メソッド | パス | 説明 | レスポンス |
|---|---|---|---|
GET | /project | すべてのプロジェクトをリスト | Project[] |
GET | /project/current | 現在のプロジェクトを取得 | Project |
パス & VCS
| メソッド | パス | 説明 | レスポンス |
|---|---|---|---|
GET | /path | 現在のパスを取得 | Path |
GET | /vcs | 現在のプロジェクトのVCS情報を取得 | VcsInfo |
設定
| メソッド | パス | 説明 | レスポンス |
|---|---|---|---|
GET | /config | 設定情報を取得 | Config |
PATCH | /config | 設定を更新 | Config |
セッション
| メソッド | パス | 説明 | 注記 |
|---|---|---|---|
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リストを取得 | 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 を返す |
メッセージ
| メソッド | パス | 説明 | 注記 |
|---|---|---|---|
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 | スラッシュコマンドを実行 | body: { messageID?, agent?, model?, command, arguments }、{ info: Message, parts: Part[]} を返す |
POST | /session/:id/shell | シェルコマンドを実行 | body: { agent, model?, command }、{ info: Message, parts: Part[]} を返す |
コマンド
| メソッド | パス | 説明 | レスポンス |
|---|---|---|---|
GET | /command | すべてのコマンドをリスト | Command[] |
ファイル
| メソッド | パス | 説明 | レスポンス |
|---|---|---|---|
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"はファイルのみを返す)
LSP、フォーマッター & MCP
| メソッド | パス | 説明 | レスポンス |
|---|---|---|---|
GET | /lsp | LSPサーバーのステータスを取得 | LSPStatus[] |
GET | /formatter | フォーマッターのステータスを取得 | FormatterStatus[] |
GET | /mcp | MCPサーバーのステータスを取得 | { [name: string]: MCPStatus } |
POST | /mcp | MCPサーバーを動的に追加 | body: { name, config }、MCPステータスオブジェクトを返す |
エージェント
| メソッド | パス | 説明 | レスポンス |
|---|---|---|---|
GET | /agent | 利用可能なすべてのエージェントをリスト | Agent[] |
ロギング
| メソッド | パス | 説明 | レスポンス |
|---|---|---|---|
POST | /log | ログエントリを書き込む。Body: { service, level, message, extra? } | boolean |
認証
| メソッド | パス | 説明 | レスポンス |
|---|---|---|---|
PUT | /auth/:id | 指定されたターゲットの認証資格情報を設定します。 | boolean |
イベント
| メソッド | パス | 説明 | レスポンス |
|---|---|---|---|
GET | /event | サーバー送信イベントストリーム。最初のイベントは server.connected、その後バスイベント | サーバー送信イベントストリーム |
ドキュメント
| メソッド | パス | 説明 | レスポンス |
|---|---|---|---|
GET | /doc | OpenAPI 3.1仕様 | OpenAPI仕様を含むHTMLページ |