İçeriğe geç
New Kodine v2 is now available

SDK

kodine sunucusu için type-safe JS istemcisi.

kodine JS/TS SDK, sunucuyla etkileşim kurmanız için type-safe bir istemci sunar. kodine’u programatik olarak yönetmek ve entegrasyonlar geliştirmek için kullanabilirsiniz.

Nasıl çalıştığını Sunucu sayfasında görebilir, örnekler için topluluğun geliştirdiği projelere göz atabilirsiniz.


Kurulum

SDK’yı npm üzerinden kurun:

Terminal window
npm install @kodine-ai/sdk

İstemci Oluşturma

Bir kodine örneği oluşturun:

import { createKodine } from "@kodine-ai/sdk"
const { client } = await createKodine()

Bu çağrı hem bir sunucu hem de bir istemci başlatır

Seçenekler

SeçenekTipAçıklamaVarsayılan
hostnamestringSunucunun ana bilgisayar adı127.0.0.1
portnumberSunucunun bağlantı noktası4096
signalAbortSignalİptal için durdurma sinyaliundefined
timeoutnumberSunucu başlatma için milisaniye cinsinden süre5000
configConfigYapılandırma nesnesi{}

Yapılandırma

Davranışı özelleştirmek için bir yapılandırma nesnesi geçebilirsiniz. Örnek yine de kodine.json dosyanızı okur; ancak satır içi yapılandırmayla ezebilir ya da ekleme yapabilirsiniz:

import { createKodine } from "@kodine-ai/sdk"
const kodine = await createKodine({
hostname: "127.0.0.1",
port: 4096,
config: {
model: "anthropic/claude-3-5-sonnet-20241022",
},
})
console.log(`Server running at ${kodine.server.url}`)
kodine.server.close()

Yalnızca istemci

Zaten çalışan bir kodine örneğiniz varsa ona bağlanmak için yalnızca bir istemci örneği oluşturabilirsiniz:

import { createKodineClient } from "@kodine-ai/sdk"
const client = createKodineClient({
baseUrl: "http://localhost:4096",
})

Seçenekler

SeçenekTipAçıklamaVarsayılan
baseUrlstringSunucunun URL’sihttp://localhost:4096
fetchfunctionÖzel fetch uygulamasıglobalThis.fetch
parseAsstringYanıtı ayrıştırma yöntemiauto
responseStylestringDönüş stili: data veya fieldsfields
throwOnErrorbooleanDöndürmek yerine hata fırlatırfalse

Türler

SDK, tüm API türleri için TypeScript tanımları içerir. Bunları doğrudan içe aktarabilirsiniz:

import type { Session, Message, Part } from "@kodine-ai/sdk"

Tüm türler sunucunun OpenAPI spesifikasyonundan üretilir ve türler dosyasında bulunabilir.


Hatalar

SDK, yakalayıp işleyebileceğiniz hatalar fırlatabilir:

try {
await client.session.get({ path: { id: "invalid-id" } })
} catch (error) {
console.error("Failed to get session:", (error as Error).message)
}

Yapılandırılmış Çıktı

format alanına bir JSON şeması vererek modelden yapılandırılmış JSON çıktısı isteyebilirsiniz. Model, şemanızla eşleşen doğrulanmış JSON döndürmek için bir StructuredOutput aracı kullanır.

Temel Kullanım

const result = await client.session.prompt({
path: { id: sessionId },
body: {
parts: [{ type: "text", text: "Anthropic'i araştırın ve şirket bilgileri sağlayın" }],
format: {
type: "json_schema",
schema: {
type: "object",
properties: {
company: { type: "string", description: "Şirket adı" },
founded: { type: "number", description: "Kuruluş yılı" },
products: {
type: "array",
items: { type: "string" },
description: "Ana ürünler",
},
},
required: ["company", "founded"],
},
},
},
})
// Yapılandırılmış çıktıya erişin
console.log(result.data.info.structured_output)
// { company: "Anthropic", founded: 2021, products: ["Claude", "Claude API"] }

Çıktı Format Türleri

TürAçıklama
textVarsayılan. Standart metin yanıtı (yapılandırılmış çıktı içermez)
json_schemaVerilen şemayla eşleşen doğrulanmış JSON döndürür

JSON Şema Formatı

type: 'json_schema' kullanırken şunları sağlayın:

AlanTürAçıklama
type'json_schema'Zorunlu. JSON şema modunu belirtir
schemaobjectZorunlu. Çıktı yapısını tanımlayan JSON Şema nesnesi
retryCountnumberİsteğe bağlı. Doğrulama için yeniden deneme sayısı (varsayılan: 2)

Hata Yönetimi

Model, tüm yeniden denemelere rağmen geçerli bir yapılandırılmış çıktı üretemezse yanıt bir StructuredOutputError içerir:

if (result.data.info.error?.name === "StructuredOutputError") {
console.error("Yapılandırılmış çıktı üretilemedi:", result.data.info.error.message)
console.error("Denemeler:", result.data.info.error.retries)
}

En İyi Uygulamalar

  1. Açık açıklamalar yazın: Modelin hangi verileri çıkaracağını anlaması için şema özelliklerinde net açıklamalar kullanın
  2. required alanını kullanın: Hangi alanların zorunlu olduğunu belirtin
  3. Şemaları odaklı tutun: Karmaşık ve iç içe şemaların doğru doldurulması model için daha zordur
  4. Uygun retryCount belirleyin: Karmaşık şemalarda artırın, basitlerde azaltın

API’ler

SDK, tüm sunucu API’lerini type-safe bir istemci üzerinden sunar.


Global

YöntemAçıklamaYanıt
global.health()Sunucunun sağlık durumunu ve sürümünü verir{ healthy: true, version: string }

Örnekler

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

App

YöntemAçıklamaYanıt
app.log()Günlük girdisi yazarboolean
app.agents()Mevcut tüm agent’ları listelerAgent[]

Örnekler

// 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()

Project

YöntemAçıklamaYanıt
project.list()Tüm projeleri listelerProject[]
project.current()Geçerli projeyi döndürürProject

Örnekler

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

Path

YöntemAçıklamaYanıt
path.get()Geçerli yolu döndürürPath

Örnekler

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

Config

YöntemAçıklamaYanıt
config.get()Yapılandırma bilgisini döndürürConfig
config.providers()Sağlayıcıları ve varsayılan modelleri listeler{ providers: Provider[], default: { [key: string]: string } }

Örnekler

const config = await client.config.get()
const { providers, default: defaults } = await client.config.providers()

Oturumlar

YöntemAçıklamaNotlar
session.list()Oturumları listelerSession[] döndürür
session.get({ path })Oturum döndürürSession döndürür
session.children({ path })Alt oturumları listelerSession[] döndürür
session.create({ body })Oturum oluştururSession döndürür
session.delete({ path })Oturum silerboolean döndürür
session.update({ path, body })Oturum özelliklerini güncellerSession döndürür
session.init({ path, body })Uygulamayı analiz edip AGENTS.md oluştururboolean döndürür
session.abort({ path })Çalışan bir oturumu iptal ederboolean döndürür
session.share({ path })Oturumu paylaşırSession döndürür
session.unshare({ path })Oturum paylaşımını kaldırırSession döndürür
session.summarize({ path, body })Oturumu özetlerboolean döndürür
session.messages({ path })Oturumdaki mesajları listeler{ info: Message, parts: Part[]}[] döndürür
session.message({ path })Mesaj ayrıntılarını döndürür{ info: Message, parts: Part[]} döndürür
session.prompt({ path, body })İstem mesajı gönderirbody.noReply: true UserMessage (yalnızca bağlam) döndürür. Varsayılan olarak AI yanıtıyla AssistantMessage döndürür. yapılandırılmış çıktı için body.outputFormat destekler
session.command({ path, body })Oturuma komut gönderir{ info: AssistantMessage, parts: Part[]} döndürür
session.shell({ path, body })Kabuk komutu çalıştırırAssistantMessage döndürür
session.revert({ path, body })Bir mesajı geri alırSession döndürür
session.unrevert({ path })Geri alınan mesajları geri yüklerSession döndürür
postSessionByIdPermissionsByPermissionId({ path, body })Bir izin isteğine yanıt verirboolean döndürür

Örnekler

// 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." }],
},
})

Dosyalar

YöntemAçıklamaYanıt
find.text({ query })Dosyalarda metin ararpath, lines, line_number, absolute_offset, submatches içeren eşleşme nesneleri dizisi
find.files({ query })Dosya ve dizinleri ada göre bulurstring[] (yollar)
find.symbols({ query })Çalışma alanı sembollerini bulurSymbol[]
file.read({ query })Bir dosyayı okur{ type: "raw" | "patch", content: string }
file.status({ query? })İzlenen dosyaların durumunu döndürürFile[]

find.files birkaç isteğe bağlı sorgu alanı destekler:

  • type: "file" veya "directory"
  • directory: arama için proje kökünü ezer
  • limit: maksimum sonuç sayısı (1-200)

Örnekler

// Search and read files
const textResults = await client.find.text({
query: { pattern: "function.*kodine" },
})
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

YöntemAçıklamaYanıt
tui.appendPrompt({ body })İsteme metin eklerboolean
tui.openHelp()Yardım penceresini açarboolean
tui.openSessions()Oturum seçiciyi açarboolean
tui.openThemes()Tema seçiciyi açarboolean
tui.openModels()Model seçiciyi açarboolean
tui.submitPrompt()Mevcut istemi gönderirboolean
tui.clearPrompt()İstemi temizlerboolean
tui.executeCommand({ body })Bir komut çalıştırırboolean
tui.showToast({ body })Toast bildirimi gösterirboolean

Örnekler

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

Auth

YöntemAçıklamaYanıt
auth.set({ ... })Kimlik bilgilerini ayarlarboolean

Örnekler

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

Olaylar

YöntemAçıklamaYanıt
event.subscribe()Sunucunun gönderdiği olay akışıSunucu tarafından gönderilen olay akışı

Örnekler

// 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)
}