SDK
Typesikker JS-klient for åpen kodeserver.
Åpenkoden JS/TS SDK gir en typesikker klient for samhandling med serveren. Brug den til at bygge integrasjoner og kontrollere opencode programmatisk.
Finn ut mer om hvordan serveren fungerer. For eksempler, tjek ut prosjektene bygget av fellesskapet.
Installer
Installer SDK fra npm:
npm install @opencode-ai/sdkOpret klient
Opret en forekomst av opencode:
import { createOpencode } from "@opencode-ai/sdk"
const { client } = await createOpencode()Dette starter både en server og en klient
Alternativer
| Alternativ | Skriv | Beskrivelse | Standard |
|---|---|---|---|
hostname | string | Server vertsnavn | 127.0.0.1 |
port | number | Serverport | 4096 |
signal | AbortSignal | Avbryt signal for kansellering | undefined |
timeout | number | Tidsavbrudd i ms for serverstart | 5000 |
config | Config | Konfigurasjonsobjekt | {} |
Konfig
Du kan sende et konfigurasjonsobjekt for at tilpasse virkemåten. Forekomsten henter fortsatt din opencode.json, men du kan overstyre eller tilføje til konfigurasjon inline:
import { createOpencode } from "@opencode-ai/sdk"
const opencode = await createOpencode({ hostname: "127.0.0.1", port: 4096, config: { model: "anthropic/claude-3-5-sonnet-20241022", },})
console.log(`Server running at ${opencode.server.url}`)
opencode.server.close()Kun klient
Hvis du allerede har en kjørende forekomst av opencode, kan du oprete en klientforekomst for at koble til den:
import { createOpencodeClient } from "@opencode-ai/sdk"
const client = createOpencodeClient({ baseUrl: "http://localhost:4096",})Alternativer
| Alternativ | Skriv inn | Beskrivelse | Standard |
|---|---|---|---|
baseUrl | string | URL av serveren | http://localhost:4096 |
fetch | function | Egendefinert hentingimplementering | globalThis.fetch |
parseAs | string | Svarparsingmetode | auto |
responseStyle | string | Returstil: data eller fields | fields |
throwOnError | boolean | Kast feil i stedet for retur | false |
Typer
SDK inkluderer TypeScript-definisjoner for alle API-typer. Importer dem direkte:
import type { Session, Message, Part } from "@opencode-ai/sdk"Alle typer er generert fra serverens OpenAPI-spesifikasjon og tilgængelig i types-filen.
Feil
SDK kan gi feil som du kan fange opp og håndtere:
try { await client.session.get({ path: { id: "invalid-id" } })} catch (error) { console.error("Failed to get session:", (error as Error).message)}APIer
SDK avslører alle server-APIer gjennom en typesikker klient.
Globalt
| Metode | Beskrivelse | Svar |
|---|---|---|
global.health() | Tjek serverhelse og versjon | { healthy: true, version: string } |
Eksempler
const health = await client.global.health()console.log(health.data.version)App
| Metode | Beskrivelse | Svar |
|---|---|---|
app.log() | Skriv en loggoppføring | boolean |
app.agents() | Liste alle tilgængelige agenter | Agent[] |
Eksempler
// Write a log entryawait client.app.log({ body: { service: "my-app", level: "info", message: "Operation completed", },})
// List available agentsconst agents = await client.app.agents()Prosjekt
| Metode | Beskrivelse | Svar |
|---|---|---|
project.list() | Liste over alle prosjekter | Prosjekt[] |
project.current() | Få nåværende prosjekt | Prosjekt |
Eksempler
// List all projectsconst projects = await client.project.list()
// Get current projectconst currentProject = await client.project.current()Sti
| Metode | Beskrivelse | Svar |
|---|---|---|
path.get() | Få nuværende bane | Path |
Eksempler
// Get current path informationconst pathInfo = await client.path.get()Konfig
| Metode | Beskrivelse | Svar |
|---|---|---|
config.get() | Få konfigurasjonsinformasjon | Config |
config.providers() | Liste leverandører og standardmodeller | { providers: Provider[], default: { [key: string]: string } } |
Eksempler
const config = await client.config.get()
const { providers, default: defaults } = await client.config.providers()sessioner
| Metode | Beskrivelse | Noter |
|---|---|---|
session.list() | Liste sessioner | Returnerer Session[] |
session.get({ path }) | Få session | Returnerer Session |
session.children({ path }) | Liste over barnesessioner | Returnerer Session[] |
session.create({ body }) | Opret session | Returnerer Session |
session.delete({ path }) | Slett session | Returnerer boolean |
session.update({ path, body }) | Opdater sessionegenskaper | Returnerer Session |
session.init({ path, body }) | Analyser appen og lag AGENTS.md | Returnerer boolean |
session.abort({ path }) | Avbryt en løpesession | Returnerer boolean |
session.share({ path }) | Del sessionen | Returnerer Session |
session.unshare({ path }) | Slutt at dele sessionen | Returnerer Session |
session.summarize({ path, body }) | Oppsummer sessionen | Returnerer boolean |
session.messages({ path }) | Liste meldinger i en session | Returnerer { info: Message, parts: Part[]}[] |
session.message({ path }) | Få meldingsdetaljer | Returnerer { info: Message, parts: Part[]} |
session.prompt({ path, body }) | Send melding | body.noReply: true returnerer UserMessage (kun kontekst). Standard returnerer AssistantMessage med AI svar |
session.command({ path, body }) | Send kommando til session | Returnerer { info: AssistantMessage, parts: Part[]} |
session.shell({ path, body }) | Kjør en shell-kommando | Returnerer AssistantMessage |
session.revert({ path, body }) | Tilbakestill en melding | Returnerer Session |
session.unrevert({ path }) | Gjenopret nulstillete meldinger | Returnerer Session |
postSessionByIdPermissionsByPermissionId({ path, body }) | Svar på en tillatelsesforespørsel | Returnerer boolean |
Eksempler
// Create and manage sessionsconst session = await client.session.create({ body: { title: "My session" },})
const sessions = await client.session.list()
// Send a prompt messageconst result = await client.session.prompt({ path: { id: session.id }, body: { model: { providerID: "anthropic", modelID: "claude-3-5-sonnet-20241022" }, parts: [{ type: "text", text: "Hello!" }], },})
// Inject context without triggering AI response (useful for plugins)await client.session.prompt({ path: { id: session.id }, body: { noReply: true, parts: [{ type: "text", text: "You are a helpful assistant." }], },})Filer
| Metode | Beskrivelse | Svar |
|---|---|---|
find.text({ query }) | Søk etter tekst i filer | En rekke matchobjekter med path, lines, line_number, absolute_offset, submatches |
find.files({ query }) | Finn filer og kataloger etter navn | string[] (baner) |
find.symbols({ query }) | Finn arbeidsområdesymboler | Symbol[] |
file.read({ query }) | Les en fil | { type: "raw" | "patch", content: string } |
file.status({ query? }) | Få status for sporede filer | Fil[] |
find.files støtter nogle få valgfrie søkefelt:
type:"file"eller"directory"directory: overstyr prosjektroten for søketlimit: maksimalt antall resultater (1–200)
Eksempler
// Search and read filesconst textResults = await client.find.text({ query: { pattern: "function.*opencode" },})
const files = await client.find.files({ query: { query: "*.ts", type: "file" },})
const directories = await client.find.files({ query: { query: "packages", type: "directory", limit: 20 },})
const content = await client.file.read({ query: { path: "src/index.ts" },})TUI
| Metode | Beskrivelse | Svar |
|---|---|---|
tui.appendPrompt({ body }) | Legg til tekst i ledeteksten | boolean |
tui.openHelp() | Åpne hjelpedialogen | boolean |
tui.openSessions() | Åpne sessionvelgeren | boolean |
tui.openThemes() | Åpne temavelgeren | boolean |
tui.openModels() | Åpne modellvelgeren | boolean |
tui.submitPrompt() | Send inn nuværende ledetekst | boolean |
tui.clearPrompt() | Fjern ledeteksten | boolean |
tui.executeCommand({ body }) | Utfør en kommando | boolean |
tui.showToast({ body }) | Vis toastvarsel | boolean |
Eksempler
// Control TUI interfaceawait client.tui.appendPrompt({ body: { text: "Add this to prompt" },})
await client.tui.showToast({ body: { message: "Task completed", variant: "success" },})Auth
| Metode | Beskrivelse | Svar |
|---|---|---|
auth.set({ ... }) | Angi autentiseringslegitimasjon | boolean |
Eksempler
await client.auth.set({ path: { id: "anthropic" }, body: { type: "api", key: "your-api-key" },})Hendelser
| Metode | Beskrivelse | Svar |
|---|---|---|
event.subscribe() | Server-sendte hendelser stream | Server-sendte hendelser stream |
Eksempler
// Listen to real-time eventsconst events = await client.event.subscribe()for await (const event of events.stream) { console.log("Event:", event.type, event.properties)}