Gå til indhold

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:

Terminal window
npm install @opencode-ai/sdk

Opret 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

AlternativSkrivBeskrivelseStandard
hostnamestringServer vertsnavn127.0.0.1
portnumberServerport4096
signalAbortSignalAvbryt signal for kanselleringundefined
timeoutnumberTidsavbrudd i ms for serverstart5000
configConfigKonfigurasjonsobjekt{}

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

AlternativSkriv innBeskrivelseStandard
baseUrlstringURL av serverenhttp://localhost:4096
fetchfunctionEgendefinert hentingimplementeringglobalThis.fetch
parseAsstringSvarparsingmetodeauto
responseStylestringReturstil: data eller fieldsfields
throwOnErrorbooleanKast feil i stedet for returfalse

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

MetodeBeskrivelseSvar
global.health()Tjek serverhelse og versjon{ healthy: true, version: string }

Eksempler

const health = await client.global.health()
console.log(health.data.version)

App

MetodeBeskrivelseSvar
app.log()Skriv en loggoppføringboolean
app.agents()Liste alle tilgængelige agenterAgent[]

Eksempler

// Write a log entry
await client.app.log({
body: {
service: "my-app",
level: "info",
message: "Operation completed",
},
})
// List available agents
const agents = await client.app.agents()

Prosjekt

MetodeBeskrivelseSvar
project.list()Liste over alle prosjekterProsjekt[]
project.current()Få nåværende prosjektProsjekt

Eksempler

// List all projects
const projects = await client.project.list()
// Get current project
const currentProject = await client.project.current()

Sti

MetodeBeskrivelseSvar
path.get()Få nuværende banePath

Eksempler

// Get current path information
const pathInfo = await client.path.get()

Konfig

MetodeBeskrivelseSvar
config.get()Få konfigurasjonsinformasjonConfig
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

MetodeBeskrivelseNoter
session.list()Liste sessionerReturnerer Session[]
session.get({ path })Få sessionReturnerer Session
session.children({ path })Liste over barnesessionerReturnerer Session[]
session.create({ body })Opret sessionReturnerer Session
session.delete({ path })Slett sessionReturnerer boolean
session.update({ path, body })Opdater sessionegenskaperReturnerer Session
session.init({ path, body })Analyser appen og lag AGENTS.mdReturnerer boolean
session.abort({ path })Avbryt en løpesessionReturnerer boolean
session.share({ path })Del sessionenReturnerer Session
session.unshare({ path })Slutt at dele sessionenReturnerer Session
session.summarize({ path, body })Oppsummer sessionenReturnerer boolean
session.messages({ path })Liste meldinger i en sessionReturnerer { info: Message, parts: Part[]}[]
session.message({ path })Få meldingsdetaljerReturnerer { info: Message, parts: Part[]}
session.prompt({ path, body })Send meldingbody.noReply: true returnerer UserMessage (kun kontekst). Standard returnerer AssistantMessage med AI svar
session.command({ path, body })Send kommando til sessionReturnerer { info: AssistantMessage, parts: Part[]}
session.shell({ path, body })Kjør en shell-kommandoReturnerer AssistantMessage
session.revert({ path, body })Tilbakestill en meldingReturnerer Session
session.unrevert({ path })Gjenopret nulstillete meldingerReturnerer Session
postSessionByIdPermissionsByPermissionId({ path, body })Svar på en tillatelsesforespørselReturnerer boolean

Eksempler

// Create and manage sessions
const session = await client.session.create({
body: { title: "My session" },
})
const sessions = await client.session.list()
// Send a prompt message
const 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

MetodeBeskrivelseSvar
find.text({ query })Søk etter tekst i filerEn rekke matchobjekter med path, lines, line_number, absolute_offset, submatches
find.files({ query })Finn filer og kataloger etter navnstring[] (baner)
find.symbols({ query })Finn arbeidsområdesymbolerSymbol[]
file.read({ query })Les en fil{ type: "raw" | "patch", content: string }
file.status({ query? })Få status for sporede filerFil[]

find.files støtter nogle få valgfrie søkefelt:

  • type: "file" eller "directory"
  • directory: overstyr prosjektroten for søket
  • limit: maksimalt antall resultater (1–200)

Eksempler

// Search and read files
const 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

MetodeBeskrivelseSvar
tui.appendPrompt({ body })Legg til tekst i ledetekstenboolean
tui.openHelp()Åpne hjelpedialogenboolean
tui.openSessions()Åpne sessionvelgerenboolean
tui.openThemes()Åpne temavelgerenboolean
tui.openModels()Åpne modellvelgerenboolean
tui.submitPrompt()Send inn nuværende ledetekstboolean
tui.clearPrompt()Fjern ledetekstenboolean
tui.executeCommand({ body })Utfør en kommandoboolean
tui.showToast({ body })Vis toastvarselboolean

Eksempler

// Control TUI interface
await client.tui.appendPrompt({
body: { text: "Add this to prompt" },
})
await client.tui.showToast({
body: { message: "Task completed", variant: "success" },
})

Auth

MetodeBeskrivelseSvar
auth.set({ ... })Angi autentiseringslegitimasjonboolean

Eksempler

await client.auth.set({
path: { id: "anthropic" },
body: { type: "api", key: "your-api-key" },
})

Hendelser

MetodeBeskrivelseSvar
event.subscribe()Server-sendte hendelser streamServer-sendte hendelser stream

Eksempler

// Listen to real-time events
const events = await client.event.subscribe()
for await (const event of events.stream) {
console.log("Event:", event.type, event.properties)
}