@runic-labs/sdk
askRunic e storeResult — todo o contrato voltado para o agente.
@runic-labs/sdk é o único pacote que a maioria das integrações precisa importar diretamente. Ele encapsula @runic-labs/cache e @runic-labs/ledger por trás de duas funções.
npm install @runic-labs/sdkpnpm add @runic-labs/sdkyarn add @runic-labs/sdkbun add @runic-labs/sdkFunções no nível do módulo
Para o caso comum — um processo de agente, armazenamento padrão baseado em arquivos — use as funções livres diretamente:
import { askRunic, storeResult } from "@runic-labs/sdk";
askRunic(decision)
Verifica se esta decisão exata já foi resolvida.
decisionDecision
{ intent: string; params: Record<string, unknown> }
DecisionRetorna Promise<CachedEntry | null> — null em caso de ausência, ou a entrada em cache (e registra um acerto no ledger) em caso de acerto.
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)
Registra um artefato recém-gerado para uma decisão e registra seu custo para que um acerto futuro saiba quanto ele economizou.
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.
numberRetorna Promise<void>.
createRunicClient(options?)
Use isto em vez das funções no nível do módulo quando precisar de vários clientes independentes — mais comumente para testes ou ao escolher explicitamente o armazenamento em memória:
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.
LedgerRetorna um RunicClient com a mesma estrutura de askRunic / storeResult das funções no nível do módulo, restrito às instâncias de cache/ledger que você passou.