서버
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 | 새 세션 생성 | 본문: { parentID?, title? }, Session 반환 |
GET | /session/status | 모든 세션의 세션 상태 조회 | { [sessionID: string]: SessionStatus } 반환 |
GET | /session/:id | 세션 상세 정보 조회 | Session 반환 |
DELETE | /session/:id | 세션 및 모든 데이터 삭제 | boolean 반환 |
PATCH | /session/:id | 세션 속성 업데이트 | 본문: { title? }, Session 반환 |
GET | /session/:id/children | 세션의 자식 세션 조회 | Session[] 반환 |
GET | /session/:id/todo | 세션의 할 일 목록 조회 | Todo[] 반환 |
POST | /session/:id/init | 앱 분석 및 AGENTS.md 생성 | 본문: { messageID, providerID, modelID }, boolean 반환 |
POST | /session/:id/fork | 메시지에서 기존 세션 포크 | 본문: { messageID? }, Session 반환 |
POST | /session/:id/abort | 실행 중인 세션 중단 | boolean 반환 |
GET | /session/:id/diff | 이 세션의 diff 조회 | 쿼리: messageID?, FileDiff[] 반환 |
POST | /session/:id/summarize | 세션 요약 | 본문: { providerID, modelID }, boolean 반환 |
POST | /session/:id/revert | 메시지 되돌리기 | 본문: { messageID, partID? }, boolean 반환 |
POST | /session/:id/unrevert | 모든 되돌린 메시지 복원 | boolean 반환 |
POST | /session/:id/permissions/:permissionID | 권한 요청에 응답 | 본문: { response, remember? }, boolean 반환 |
메시지
| 메서드 | 경로 | 설명 | 참고 |
|---|---|---|---|
GET | /session/:id/message | 세션의 메시지 나열 | 쿼리: limit?, { info: Message, parts: Part[]}[] 반환 |
POST | /session/:id/message | 메시지 전송 및 응답 대기 | 본문: { 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 | 메시지 비동기 전송 (대기 없음) | 본문: /session/:id/message과 동일, 204 No Content 반환 |
POST | /session/:id/command | 슬래시 명령 실행 | 본문: { messageID?, agent?, model?, command, arguments }, { info: Message, parts: Part[]} 반환 |
POST | /session/:id/shell | 셸 명령 실행 | 본문: { 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 서버 동적 추가 | 본문: { name, config }, MCP 상태 객체 반환 |
에이전트
| 메서드 | 경로 | 설명 | 응답 |
|---|---|---|---|
GET | /agent | 사용 가능한 모든 에이전트 나열 | Agent[] |
로깅
| 메서드 | 경로 | 설명 | 응답 |
|---|---|---|---|
POST | /log | 로그 항목 작성. 본문: { service, level, message, extra? } | boolean |
인증
| 메서드 | 경로 | 설명 | 응답 |
|---|---|---|---|
PUT | /auth/:id | 주어진 대상에 대한 인증 자격증명 설정. | boolean |
이벤트
| 메서드 | 경로 | 설명 | 응답 |
|---|---|---|---|
GET | /event | 서버 전송 이벤트 스트림. 첫 번째 이벤트는 server.connected, 그 다음 버스 이벤트 | 서버 전송 이벤트 스트림 |
문서
| 메서드 | 경로 | 설명 | 응답 |
|---|---|---|---|
GET | /doc | OpenAPI 3.1 사양 | OpenAPI 사양이 있는 HTML 페이지 |