Zum Inhalt springen
Runic
Deutsch
Esc
navigierenöffnen⌘Jvorschau
Auf dieser Seite

@runic-labs/sdk

askRunic und storeResult — der gesamte agentenseitige Vertrag.

@runic-labs/sdk ist das einzige Paket, das die meisten Integrationen direkt importieren müssen. Es kapselt @runic-labs/cache und @runic-labs/ledger hinter zwei Funktionen.

npm install @runic-labs/sdk
pnpm add @runic-labs/sdk
yarn add @runic-labs/sdk
bun add @runic-labs/sdk

Funktionen auf Modulebene

Für den häufigsten Fall — ein Agentenprozess, standardmäßiger dateibasierter Speicher — verwenden Sie die freien Funktionen direkt:

import { askRunic, storeResult } from "@runic-labs/sdk";

askRunic(decision)

Prüft, ob genau diese Entscheidung bereits aufgelöst wurde.

PropType
decisionDecision

{ intent: string; params: Record<string, unknown> }

TypeDecision

Gibt Promise<CachedEntry | null> zurück — bei einem Fehlschlag null oder bei einem Treffer den zwischengespeicherten Eintrag (und protokolliert einen Treffer im Ledger).

PropType
signature?string

The normalized signature this entry is keyed on.

Typestring
artifact?unknown

Whatever was passed to storeResult() originally.

Typeunknown
tokensSpent?number

What producing this artifact cost the first time.

Typenumber
createdAt?number

Epoch ms when this entry was first stored.

Typenumber
lastUsedAt?number

Epoch ms of the most recent hit.

Typenumber
hitCount?number

Number of times this entry has been reused.

Typenumber
stale?boolean

Advisory only — Runic never acts on this itself.

Typeboolean

storeResult(decision, artifact, tokensSpent)

Speichert ein frisch erzeugtes Artefakt für eine Entscheidung und protokolliert dessen Kosten, damit ein zukünftiger Treffer weiß, wie viel er eingespart hat.

PropType
decisionDecision

Same shape as askRunic's argument.

TypeDecision
artifactunknown

Whatever you want returned on a future cache hit.

Typeunknown
tokensSpentnumber

Agent-reported cost of producing this artifact. Runic never measures this itself.

Typenumber

Gibt Promise<void> zurück.

createRunicClient(options?)

Verwenden Sie dies statt der Funktionen auf Modulebene, wenn Sie mehrere unabhängige Clients benötigen — meist für Tests oder wenn Sie ausdrücklich In-Memory-Speicher wählen:

import { createRunicClient } from "@runic-labs/sdk";
import { createCache, MemoryCacheStore } from "@runic-labs/cache";
import { createLedger, MemoryLedgerStore } from "@runic-labs/ledger";

const runic = createRunicClient({
  cache: createCache(new MemoryCacheStore()),
  ledger: createLedger(new MemoryLedgerStore()),
});

await runic.askRunic({ intent: "summarize_pr", params: { repo, pr } });
await runic.storeResult({ intent: "summarize_pr", params: { repo, pr } }, artifact, tokensUsed);
PropType
cache?Cache

Defaults to a file-backed cache under .runic/ if omitted.

TypeCache
ledger?Ledger

Defaults to a file-backed ledger under .runic/ if omitted.

TypeLedger

Gibt einen RunicClient mit derselben askRunic-/storeResult-Form wie die Funktionen auf Modulebene zurück, beschränkt auf die von Ihnen übergebenen cache-/ledger-Instanzen.

Nächste Schritte

  • Cache — benutzerdefinierte CacheStore-Implementierungen erstellen
  • Ledger — Ledger-Zusammenfassungen direkt lesen
  • CLI — den Zustand über die Befehlszeile prüfen

War diese Seite hilfreich?