File size: 19,720 Bytes
0dbc9de | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 | ---
title: Sunucu
description: opencode sunucusuyla HTTP uzerinden etkilesin.
---
import config from "../../../../config.mjs"
export const typesUrl = `${config.github}/blob/dev/packages/sdk/js/src/gen/types.gen.ts`
`opencode serve` komutu, opencode istemcisinin kullanabileceği bir OpenAPI endpoint'i açan headless bir HTTP sunucusu çalıştırır.
---
### Kullanım
```bash
opencode serve [--port <number>] [--hostname <string>] [--cors <origin>]
```
#### Seçenekler
| Bayrak | Açıklama | Varsayılan |
| --------------- | ---------------------------------------------- | ---------------- |
| `--port` | Dinlenecek bağlantı noktası | `4096` |
| `--hostname` | Dinlenecek ana bilgisayar adı | `127.0.0.1` |
| `--mdns` | mDNS keşfini etkinleştir | `false` |
| `--mdns-domain` | mDNS hizmeti için özel alan adı | `opencode.local` |
| `--cors` | İzin verilecek ek tarayıcı kaynakları (origin) | `[]` |
`--cors` birden fazla kez geçilebilir:
```bash
opencode serve --cors http://localhost:5173 --cors https://app.example.com
```
---
### Kimlik Doğrulama
Sunucuyu HTTP temel kimlik doğrulama (basic auth) ile korumak için `OPENCODE_SERVER_PASSWORD` ayarlayın. Kullanıcı adı varsayılan olarak `opencode` değeridir; değiştirmek isterseniz `OPENCODE_SERVER_USERNAME` ayarlayabilirsiniz. Bu ayar hem `opencode serve` hem de `opencode web` için geçerlidir.
```bash
OPENCODE_SERVER_PASSWORD=your-password opencode serve
```
---
### Nasıl çalışır
`opencode` çalıştırdığınızda hem TUI hem de sunucu başlar. TUI, sunucuyla konuşan istemci tarafıdır.
Sunucu bir OpenAPI 3.1 spesifikasyon uç noktası açar. Bu uç nokta [SDK](/docs/sdk) üretiminde de kullanılır.
:::tip
opencode ile programatik etkileşim için opencode sunucusunu kullanın.
:::
Bu mimari, opencode'un birden fazla istemciyi desteklemesini ve programatik kullanımları mümkün kılmasını sağlar.
`opencode serve` ile bağımsız bir sunucu başlatabilirsiniz. opencode TUI açıksa, `opencode serve` yeni bir sunucu başlatır.
---
#### Mevcut sunucuya bağlanın
TUI başlarken rastgele bir port ve hostname atanır. Bunun yerine `--hostname` ve `--port` [bayraklarını](/docs/cli) verebilirsiniz.
[`/tui`](#tui) uç noktası sunucu üzerinden TUI'yi sürmek için kullanılabilir. Örneğin bir istemi önceden doldurabilir veya çalıştırabilirsiniz. Bu kurulum opencode [IDE](/docs/ide) eklentileri tarafından kullanılır.
---
## Spesifikasyon
Sunucu, şu adreste görülebilen bir OpenAPI 3.1 spesifikasyonu yayınlar:
```
http://<hostname>:<port>/doc
```
Örneğin `http://localhost:4096/doc`. İstemci oluşturmak, istek/yanit tiplerini incelemek veya Swagger gezgininde açmak için bu spec'i kullanın.
---
## API'ler
opencode sunucusu aşağıdaki API'leri sunar.
---
### Global
| Yöntem | Yol | Açıklama | Yanıt |
| ------ | ---------------- | ------------------------------- | ------------------------------------ |
| `GET` | `/global/health` | Sunucu sağlığını ve sürümünü al | `{ healthy: true, version: string }` |
| `GET` | `/global/event` | Küresel olayları al (SSE akışı) | Olay akışı |
---
### Proje
| Yöntem | Yol | Açıklama | Yanıt |
| ------ | ------------------ | --------------------- | --------------------------------------------- |
| `GET` | `/project` | Tüm projeleri listele | <a href={typesUrl}><code>Project[]</code></a> |
| `GET` | `/project/current` | Mevcut projeyi al | <a href={typesUrl}><code>Project</code></a> |
---
### Yol & VCS
| Yöntem | Yol | Açıklama | Yanıt |
| ------ | ------- | ---------------------------------- | ------------------------------------------- |
| `GET` | `/path` | Mevcut yolu al | <a href={typesUrl}><code>Path</code></a> |
| `GET` | `/vcs` | Mevcut proje için VCS bilgisini al | <a href={typesUrl}><code>VcsInfo</code></a> |
---
### Örnek (Instance)
| Yöntem | Yol | Açıklama | Yanıt |
| ------ | ------------------- | ------------------------------ | --------- |
| `POST` | `/instance/dispose` | Mevcut örneği (instance) kapat | `boolean` |
---
### Config
| Yöntem | Yol | Açıklama | Yanıt |
| ------- | ------------------- | --------------------------------------------- | ---------------------------------------------------------------------------------------- |
| `GET` | `/config` | Yapılandırma bilgisini al | <a href={typesUrl}><code>Config</code></a> |
| `PATCH` | `/config` | Yapılandırmayı güncelle | <a href={typesUrl}><code>Config</code></a> |
| `GET` | `/config/providers` | Sağlayıcıları ve varsayılan modelleri listele | `{ providers: `<a href={typesUrl}>Provider[]</a>`, default: { [key: string]: string } }` |
---
### Sağlayıcı (Provider)
| Yöntem | Yol | Açıklama | Yanıt |
| ------ | -------------------------------- | -------------------------------------------- | ----------------------------------------------------------------------------------- |
| `GET` | `/provider` | Tüm sağlayıcıları listele | `{ all: `<a href={typesUrl}>Provider[]</a>`, default: {...}, connected: string[] }` |
| `GET` | `/provider/auth` | Sağlayıcı kimlik doğrulama yöntemlerini al | `{ [providerID: string]: `<a href={typesUrl}>ProviderAuthMethod[]</a>` }` |
| `POST` | `/provider/{id}/oauth/authorize` | OAuth kullanarak bir sağlayıcıyı yetkilendir | <a href={typesUrl}><code>ProviderAuthAuthorization</code></a> |
| `POST` | `/provider/{id}/oauth/callback` | Bir sağlayıcı için OAuth geri çağrısını işle | `boolean` |
---
### Oturumlar (Sessions)
| Yöntem | Yol | Açıklama | Notlar |
| -------- | ---------------------------------------- | ------------------------------------------- | ------------------------------------------------------------------------------------ |
| `GET` | `/session` | Tüm oturumları listele | <a href={typesUrl}><code>Session[]</code></a> döndürür |
| `POST` | `/session` | Yeni bir oturum oluştur | gövde: `{ parentID?, title? }`, <a href={typesUrl}><code>Session</code></a> döndürür |
| `GET` | `/session/status` | Tüm oturumlar için durumu al | `{ [sessionID: string]: `<a href={typesUrl}>SessionStatus</a>` }` döndürür |
| `GET` | `/session/:id` | Oturum ayrıntılarını al | <a href={typesUrl}><code>Session</code></a> döndürür |
| `DELETE` | `/session/:id` | Bir oturumu ve tüm verilerini sil | `boolean` döndürür |
| `PATCH` | `/session/:id` | Oturum özelliklerini güncelle | gövde: `{ title? }`, <a href={typesUrl}><code>Session</code></a> döndürür |
| `GET` | `/session/:id/children` | Bir oturumun alt oturumlarını al | <a href={typesUrl}><code>Session[]</code></a> döndürür |
| `GET` | `/session/:id/todo` | Bir oturum için yapılacaklar listesini al | <a href={typesUrl}><code>Todo[]</code></a> döndürür |
| `POST` | `/session/:id/init` | Uygulamayı analiz et ve `AGENTS.md` oluştur | gövde: `{ messageID, providerID, modelID }`, `boolean` döndürür |
| `POST` | `/session/:id/fork` | Mevcut bir oturumu bir mesajda çatalla | gövde: `{ messageID? }`, <a href={typesUrl}><code>Session</code></a> döndürür |
| `POST` | `/session/:id/abort` | Çalışan bir oturumu iptal et | `boolean` döndürür |
| `POST` | `/session/:id/share` | Bir oturumu paylaş | <a href={typesUrl}><code>Session</code></a> döndürür |
| `DELETE` | `/session/:id/share` | Bir oturumun paylaşımını kaldır | <a href={typesUrl}><code>Session</code></a> döndürür |
| `GET` | `/session/:id/diff` | Bu oturum için farkı (diff) al | sorgu: `messageID?`, <a href={typesUrl}><code>FileDiff[]</code></a> döndürür |
| `POST` | `/session/:id/summarize` | Oturumu özetle | gövde: `{ providerID, modelID }`, `boolean` döndürür |
| `POST` | `/session/:id/revert` | Bir mesajı geri al | gövde: `{ messageID, partID? }`, `boolean` döndürür |
| `POST` | `/session/:id/unrevert` | Geri alınan tüm mesajları geri yükle | `boolean` döndürür |
| `POST` | `/session/:id/permissions/:permissionID` | Bir izin isteğine yanıt ver | gövde: `{ response, remember? }`, `boolean` döndürür |
---
### Mesajlar
| Yöntem | Yol | Açıklama | Notlar |
| ------ | --------------------------------- | ----------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `GET` | `/session/:id/message` | Bir oturumdaki mesajları listele | sorgu: `limit?`, `{ info: `<a href={typesUrl}>Message</a>`, parts: `<a href={typesUrl}>Part[]</a>`}[]` döndürür |
| `POST` | `/session/:id/message` | Bir mesaj gönder ve yanıt bekle | gövde: `{ messageID?, model?, agent?, noReply?, system?, tools?, parts }`, `{ info: `<a href={typesUrl}>Message</a>`, parts: `<a href={typesUrl}>Part[]</a>`}` döndürür |
| `GET` | `/session/:id/message/:messageID` | Mesaj ayrıntılarını al | `{ info: `<a href={typesUrl}>Message</a>`, parts: `<a href={typesUrl}>Part[]</a>`}` döndürür |
| `POST` | `/session/:id/prompt_async` | Eşzamansız bir mesaj gönder (bekleme yok) | gövde: `/session/:id/message` ile aynı, `204 No Content` döndürür |
| `POST` | `/session/:id/command` | Bir eğik çizgi (slash) komutu çalıştır | gövde: `{ messageID?, agent?, model?, command, arguments }`, `{ info: `<a href={typesUrl}>Message</a>`, parts: `<a href={typesUrl}>Part[]</a>`}` döndürür |
| `POST` | `/session/:id/shell` | Bir kabuk komutu çalıştır | gövde: `{ agent, model?, command }`, `{ info: `<a href={typesUrl}>Message</a>`, parts: `<a href={typesUrl}>Part[]</a>`}` döndürür |
---
### Komutlar
| Yöntem | Yol | Açıklama | Yanıt |
| ------ | ---------- | --------------------- | --------------------------------------------- |
| `GET` | `/command` | Tüm komutları listele | <a href={typesUrl}><code>Command[]</code></a> |
---
### Dosyalar
| Yöntem | Yol | Açıklama | Yanıt |
| ------ | ------------------------ | -------------------------------- | ----------------------------------------------------------------------------------------------- |
| `GET` | `/find?pattern=<pat>` | Dosyalarda metin ara | `path`, `lines`, `line_number`, `absolute_offset`, `submatches` içeren eşleşme nesneleri dizisi |
| `GET` | `/find/file?query=<q>` | Dosya ve dizinleri isme göre bul | `string[]` (yollar) |
| `GET` | `/find/symbol?query=<q>` | Çalışma alanı sembollerini bul | <a href={typesUrl}><code>Symbol[]</code></a> |
| `GET` | `/file?path=<path>` | Dosya ve dizinleri listele | <a href={typesUrl}><code>FileNode[]</code></a> |
| `GET` | `/file/content?path=<p>` | Bir dosyayı oku | <a href={typesUrl}><code>FileContent</code></a> |
| `GET` | `/file/status` | İzlenen dosyalar için durumu al | <a href={typesUrl}><code>File[]</code></a> |
#### `/find/file` sorgu parametreleri
- `query` (gerekli) - arama metni (bulanık eşleşme)
- `type` (isteğe bağlı) - sonuçları `"file"` veya `"directory"` ile sınırlama
- `directory` (isteğe bağlı) - arama için proje kökünü geçersiz kılma
- `limit` (isteğe bağlı) - en fazla sonuç (1-200)
- `dirs` (isteğe bağlı) - eski bayrak (`"false"` sadece dosyaları döndürür)
---
### Araçlar (Deneysel)
| Yöntem | Yol | Açıklama | Yanıt |
| ------ | ------------------------------------------- | ------------------------------------------------ | -------------------------------------------- |
| `GET` | `/experimental/tool/ids` | Tüm araç kimliklerini listele | <a href={typesUrl}><code>ToolIDs</code></a> |
| `GET` | `/experimental/tool?provider=<p>&model=<m>` | Bir model için araçları JSON şemalarıyla listele | <a href={typesUrl}><code>ToolList</code></a> |
---
### LSP, Biçimlendiriciler & MCP
| Yöntem | Yol | Açıklama | Yanıt |
| ------ | ------------ | -------------------------------- | -------------------------------------------------------- |
| `GET` | `/lsp` | LSP sunucu durumunu al | <a href={typesUrl}><code>LSPStatus[]</code></a> |
| `GET` | `/formatter` | Biçimlendirici durumunu al | <a href={typesUrl}><code>FormatterStatus[]</code></a> |
| `GET` | `/mcp` | MCP sunucu durumunu al | `{ [name: string]: `<a href={typesUrl}>MCPStatus</a>` }` |
| `POST` | `/mcp` | Dinamik olarak MCP sunucusu ekle | gövde: `{ name, config }`, MCP durum nesnesi döndürür |
---
### Agent'lar
| Yöntem | Yol | Açıklama | Yanıt |
| ------ | -------- | ----------------------------- | ------------------------------------------- |
| `GET` | `/agent` | Tüm mevcut agent'ları listele | <a href={typesUrl}><code>Agent[]</code></a> |
---
### Günlük (Logging)
| Yöntem | Yol | Açıklama | Yanıt |
| ------ | ------ | ---------------------------------------------------------------- | --------- |
| `POST` | `/log` | Günlük girdisi yaz. Gövde: `{ service, level, message, extra? }` | `boolean` |
---
### TUI
| Yöntem | Yol | Açıklama | Yanıt |
| ------ | ----------------------- | ------------------------------------------------------- | ---------------------- |
| `POST` | `/tui/append-prompt` | İsteme metin ekle | `boolean` |
| `POST` | `/tui/open-help` | Yardım iletişim kutusunu aç | `boolean` |
| `POST` | `/tui/open-sessions` | Oturum seçiciyi aç | `boolean` |
| `POST` | `/tui/open-themes` | Tema seçiciyi aç | `boolean` |
| `POST` | `/tui/open-models` | Model seçiciyi aç | `boolean` |
| `POST` | `/tui/submit-prompt` | Mevcut istemi gönder | `boolean` |
| `POST` | `/tui/clear-prompt` | İstemi temizle | `boolean` |
| `POST` | `/tui/execute-command` | Bir komut çalıştır (`{ command }`) | `boolean` |
| `POST` | `/tui/show-toast` | Toast bildirimi göster (`{ title?, message, variant }`) | `boolean` |
| `GET` | `/tui/control/next` | Bir sonraki kontrol isteğini bekle | Kontrol isteği nesnesi |
| `POST` | `/tui/control/response` | Bir kontrol isteğine yanıt ver (`{ body }`) | `boolean` |
---
### Kimlik Doğrulama (Auth)
| Yöntem | Yol | Açıklama | Yanıt |
| ------ | ----------- | ----------------------------------------------------------------- | --------- |
| `PUT` | `/auth/:id` | Kimlik bilgilerini ayarla. Gövde sağlayıcı şemasıyla eşleşmelidir | `boolean` |
---
### Olaylar (Events)
| Yöntem | Yol | Açıklama | Yanıt |
| ------ | -------- | ------------------------------------------------------------------------------------------------------ | --------------------------------------- |
| `GET` | `/event` | Sunucu tarafından gönderilen olay akışı (SSE). İlk olay `server.connected`, ardından veriyolu olayları | Sunucu tarafından gönderilen olay akışı |
---
### Dokümanlar (Docs)
| Yöntem | Yol | Açıklama | Yanıt |
| ------ | ------ | -------------------------- | -------------------------------- |
| `GET` | `/doc` | OpenAPI 3.1 spesifikasyonu | OpenAPI spec içeren HTML sayfası |
|