Back to Opencode

Server

packages/web/src/content/docs/bs/server.mdx

1.14.3918.4 KB
Original Source

import config from "../../../../config.mjs" export const typesUrl = ${config.github}/blob/dev/packages/sdk/js/src/gen/types.gen.ts

Komanda opencode serve pokrece headless HTTP server koji izlaže OpenAPI endpoint koji opencode klijent moze koristiti.


Korištenje

bash
opencode serve [--port <number>] [--hostname <string>] [--cors <origin>]

Opcije

ZastavaOpisDefault
--portPort na kojem slusa4096
--hostnameHostname na kojem slusa127.0.0.1
--mdnsUkljuci mDNS otkrivanjefalse
--mdns-domainPrilagodeni domen za mDNS servisopencode.local
--corsDodatni browser origin-i koje dozv.[]

--cors mozete navesti vise puta:

bash
opencode serve --cors http://localhost:5173 --cors https://app.example.com

Autentifikacija

Postavite OPENCODE_SERVER_PASSWORD da zastitite server HTTP basic auth mehanizmom. Korisnicko ime je po defaultu opencode, ili postavite OPENCODE_SERVER_USERNAME za nadjacavanje. Ovo vazi i za opencode serve i za opencode web.

bash
OPENCODE_SERVER_PASSWORD=your-password opencode serve

Kako radi

Kada pokrenete opencode, pokrecu se TUI i server. TUI je klijent koji komunicira sa serverom. Server izlaže OpenAPI 3.1 spec endpoint koji se koristi i za generisanje SDK-a.

:::tip Koristite opencode server za programsku interakciju sa opencode-om. :::

Ova arhitektura omogucava opencode podrsku za vise klijenata i programsku interakciju.

Mozete pokrenuti opencode serve da startate standalone server. Ako je opencode TUI vec pokrenut, opencode serve ce pokrenuti novi server.


Povezivanje na postojeći server

Kada pokrenete TUI, port i hostname se nasumicno dodijele. Umjesto toga, mozete zadati --hostname i --port zastave, pa se povezati na taj server.

Endpoint /tui mozete koristiti za upravljanje TUI-jem kroz server. Na primjer, mozete unaprijed popuniti ili pokrenuti prompt. Ovaj setup koriste OpenCode IDE pluginovi.


Specifikacija

Server objavljuje OpenAPI 3.1 specifikaciju koju mozete vidjeti na:

http://<hostname>:<port>/doc

Na primjer, http://localhost:4096/doc. Koristite specifikaciju da generisete klijente ili pregledate tipove zahtjeva i odgovora. Mozete je otvoriti i u Swagger exploreru.


API-ji

opencode server izlaže sljedece API-je.


Globalno

MetodaPutanjaOpisOdgovor
GET/global/healthDohvati zdravlje i verziju servera{ healthy: true, version: string }
GET/global/eventDohvati globalne događaje (SSE tok)Event stream

Projekt

MetodaPutanjaOpisOdgovor
GET/projectIzlistaj sve projekte<a href={typesUrl}><code>Project[]</code></a>
GET/project/currentDohvati trenutni projekt<a href={typesUrl}><code>Project</code></a>

Putanja i VCS

MetodaPutanjaOpisOdgovor
GET/pathDohvati trenutnu putanju<a href={typesUrl}><code>Path</code></a>
GET/vcsDohvati VCS informacije za trenutni projekt<a href={typesUrl}><code>VcsInfo</code></a>

Instanca

MetodaPutanjaOpisOdgovor
POST/instance/disposeUgasi trenutnu instancuboolean

Konfiguracija

MetodaPutanjaOpisOdgovor
GET/configDohvati informacije o konfiguraciji<a href={typesUrl}><code>Config</code></a>
PATCH/configAžuriraj konfiguraciju<a href={typesUrl}><code>Config</code></a>
GET/config/providersIzlistaj provajdere i zadane modele{ providers: <a href={typesUrl}>Provider[]</a>, default: { [key: string]: string } }

Provajder

MetodaPutanjaOpisOdgovor
GET/providerIzlistaj sve provajdere{ all: <a href={typesUrl}>Provider[]</a>, default: {...}, connected: string[] }
GET/provider/authDohvati metode autentifikacije provajdera{ [providerID: string]: <a href={typesUrl}>ProviderAuthMethod[]</a> }
POST/provider/{id}/oauth/authorizeAutoriziraj provajdera koristeći OAuth<a href={typesUrl}><code>ProviderAuthAuthorization</code></a>
POST/provider/{id}/oauth/callbackObradi OAuth povratni poziv za provajderaboolean

Sesije

MetodaPutanjaOpisNapomene
GET/sessionIzlistaj sve sesijeReturns <a href={typesUrl}><code>Session[]</code></a>
POST/sessionKreiraj novu sesijubody: { parentID?, title? }, returns <a href={typesUrl}><code>Session</code></a>
GET/session/statusDohvati status sesije za sve sesijeReturns { [sessionID: string]: <a href={typesUrl}>SessionStatus</a> }
GET/session/:idDohvati detalje sesijeReturns <a href={typesUrl}><code>Session</code></a>
DELETE/session/:idObriši sesiju i sve njene podatkeReturns boolean
PATCH/session/:idAžuriraj svojstva sesijebody: { title? }, returns <a href={typesUrl}><code>Session</code></a>
GET/session/:id/childrenDohvati pod-sesije sesijeReturns <a href={typesUrl}><code>Session[]</code></a>
GET/session/:id/todoDohvati listu zadataka za sesijuReturns <a href={typesUrl}><code>Todo[]</code></a>
POST/session/:id/initAnaliziraj aplikaciju i kreiraj AGENTS.mdbody: { messageID, providerID, modelID }, returns boolean
POST/session/:id/forkGranaj postojeću sesiju na porucibody: { messageID? }, returns <a href={typesUrl}><code>Session</code></a>
POST/session/:id/abortPrekini sesiju u tokuReturns boolean
POST/session/:id/sharePodijeli sesijuReturns <a href={typesUrl}><code>Session</code></a>
DELETE/session/:id/sharePrestani dijeliti sesijuReturns <a href={typesUrl}><code>Session</code></a>
GET/session/:id/diffDohvati razlike za ovu sesijuquery: messageID?, returns <a href={typesUrl}><code>FileDiff[]</code></a>
POST/session/:id/summarizeRezimiraj sesijubody: { providerID, modelID }, returns boolean
POST/session/:id/revertVrati porukubody: { messageID, partID? }, returns boolean
POST/session/:id/unrevertVrati sve vraćene porukeReturns boolean
POST/session/:id/permissions/:permissionIDOdgovori na zahtjev za dozvolubody: { response, remember? }, returns boolean

Poruke

MetodaPutanjaOpisNapomene
GET/session/:id/messageIzlistaj poruke u sesijiquery: limit?, returns { info: <a href={typesUrl}>Message</a>, parts: <a href={typesUrl}>Part[]</a>}[]
POST/session/:id/messagePošalji poruku i čekaj odgovorbody: { messageID?, model?, agent?, noReply?, system?, tools?, parts }, returns { info: <a href={typesUrl}>Message</a>, parts: <a href={typesUrl}>Part[]</a>}
GET/session/:id/message/:messageIDDohvati detalje porukeReturns { info: <a href={typesUrl}>Message</a>, parts: <a href={typesUrl}>Part[]</a>}
POST/session/:id/prompt_asyncPošalji poruku asinkrono (bez čekanja)body: same as /session/:id/message, returns 204 No Content
POST/session/:id/commandIzvrši slash naredbubody: { messageID?, agent?, model?, command, arguments }, returns { info: <a href={typesUrl}>Message</a>, parts: <a href={typesUrl}>Part[]</a>}
POST/session/:id/shellPokreni shell naredbubody: { agent, model?, command }, returns { info: <a href={typesUrl}>Message</a>, parts: <a href={typesUrl}>Part[]</a>}

Naredbe

MetodaPutanjaOpisOdgovor
GET/commandIzlistaj sve naredbe<a href={typesUrl}><code>Command[]</code></a>

Datoteke

MetodaPutanjaOpisOdgovor
GET/find?pattern=<pat>Traži tekst u datotekamaArray of match objects with path, lines, line_number, absolute_offset, submatches
GET/find/file?query=<q>Pronađi datoteke i direktorije po imenustring[] (paths)
GET/find/symbol?query=<q>Pronađi simbole radnog prostora<a href={typesUrl}><code>Symbol[]</code></a>
GET/file?path=<path>Izlistaj datoteke i direktorije<a href={typesUrl}><code>FileNode[]</code></a>
GET/file/content?path=<p>Pročitaj datoteku<a href={typesUrl}><code>FileContent</code></a>
GET/file/statusDohvati status za praćene datoteke<a href={typesUrl}><code>File[]</code></a>

/find/file parametri upita

  • query (obavezno) — niz za pretragu (fuzzy podudaranje)
  • type (opcionalno) — ograniči rezultate na "file" ili "directory"
  • directory (opcionalno) — nadjačaj korijen projekta za pretragu
  • limit (opcionalno) — maksimalni rezultati (1–200)
  • dirs (opcionalno) — zastarjela zastavica ("false" vraća samo datoteke)

Alati (Eksperimentalno)

MetodaPutanjaOpisOdgovor
GET/experimental/tool/idsIzlistaj sve ID-ove alata<a href={typesUrl}><code>ToolIDs</code></a>
GET/experimental/tool?provider=<p>&model=<m>Izlistaj alate sa JSON šemama za model<a href={typesUrl}><code>ToolList</code></a>

LSP, Formateri & MCP

MetodaPutanjaOpisOdgovor
GET/lspDohvati status LSP servera<a href={typesUrl}><code>LSPStatus[]</code></a>
GET/formatterDohvati status formatera<a href={typesUrl}><code>FormatterStatus[]</code></a>
GET/mcpDohvati status MCP servera{ [name: string]: <a href={typesUrl}>MCPStatus</a> }
POST/mcpDodaj MCP server dinamičkibody: { name, config }, returns MCP status object

Agenti

MetodaPutanjaOpisOdgovor
GET/agentIzlistaj sve dostupne agente<a href={typesUrl}><code>Agent[]</code></a>

Bilježenje

MetodaPutanjaOpisOdgovor
POST/logUpiši zapis dnevnika. Tijelo: { service, level, message, extra? }boolean

TUI

MetodaPutanjaOpisOdgovor
POST/tui/append-promptDodaj tekst na promptboolean
POST/tui/open-helpOtvori dijalog za pomoćboolean
POST/tui/open-sessionsOtvori selektor sesijaboolean
POST/tui/open-themesOtvori selektor temaboolean
POST/tui/open-modelsOtvori selektor modelaboolean
POST/tui/submit-promptPošalji trenutni promptboolean
POST/tui/clear-promptOčisti promptboolean
POST/tui/execute-commandIzvrši naredbu ({ command })boolean
POST/tui/show-toastPrikaži toast obavijest ({ title?, message, variant })boolean
GET/tui/control/nextČekaj sljedeći kontrolni zahtjevControl request object
POST/tui/control/responseOdgovori na kontrolni zahtjev ({ body })boolean

Autentifikacija

MetodaPutanjaOpisOdgovor
PUT/auth/:idPostavi autentifikacijske vjerodajnice. Tijelo mora odgovarati shemi provajderaboolean

Događaji

MetodaPutanjaOpisOdgovor
GET/eventTok događaja koje šalje server. Prvi događaj je server.connected, zatim bus događajiServer-sent events stream

Dokumentacija

MetodaPutanjaOpisOdgovor
GET/docOpenAPI 3.1 specifikacijaHTML stranica sa OpenAPI specifikacijom