@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/sdkpnpm add @runic-labs/sdkyarn add @runic-labs/sdkbun add @runic-labs/sdkFunktionen 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.
decisionDecision
{ intent: string; params: Record<string, unknown> }
DecisionGibt Promise<CachedEntry | null> zurück — bei einem Fehlschlag null oder bei einem Treffer den zwischengespeicherten Eintrag (und protokolliert einen Treffer im Ledger).
signature?string
The normalized signature this entry is keyed on.
stringartifact?unknown
Whatever was passed to storeResult() originally.
unknowntokensSpent?number
What producing this artifact cost the first time.
numbercreatedAt?number
Epoch ms when this entry was first stored.
numberlastUsedAt?number
Epoch ms of the most recent hit.
numberhitCount?number
Number of times this entry has been reused.
numberstale?boolean
Advisory only — Runic never acts on this itself.
booleanstoreResult(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.
decisionDecision
Same shape as askRunic's argument.
Decisionartifactunknown
Whatever you want returned on a future cache hit.
unknowntokensSpentnumber
Agent-reported cost of producing this artifact. Runic never measures this itself.
numberGibt 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);
cache?Cache
Defaults to a file-backed cache under .runic/ if omitted.
Cacheledger?Ledger
Defaults to a file-backed ledger under .runic/ if omitted.
LedgerGibt einen RunicClient mit derselben askRunic-/storeResult-Form wie die Funktionen auf Modulebene zurück, beschränkt auf die von Ihnen übergebenen cache-/ledger-Instanzen.