A coluna vertebral de tipos compartilhados que mantém todos os pacotes falando a mesma linguagem.
@alembic/contracts é o único pacote sem dependências internas. Ele define as formas que todos os outros pacotes usam: como pedir uma completion a um modelo, como reportar sucesso ou falha, como pontuar uma oportunidade de negócio e como estruturar um pacote wiki destilado.
Duas ideias são especialmente importantes:
Result; callers ramificam em ok em vez de capturar exceções.Pense assim… o sistema métrico na ciência: todos usam as mesmas unidades para que medições possam ser combinadas com segurança.
O pacote exporta schemas Zod e tipos inferidos: ModelRunInput, ModelRunResult, ModelAdapter, Tier, BusinessSignal, WikiPackage, CouncilDecision e um MODEL_REGISTRY hard-coded mapeando ids de modelos para adapters, tiers e preço por 1k tokens. Para adicionar um novo modelo, edite packages/contracts/src/registry.ts.
// escolha o modelo mais barato para um tier
import { Tier, pickCheapestForTier } from '@alembic/contracts';
const entry = pickCheapestForTier(Tier.T2);
console.log(entry?.modelId);MODEL_REGISTRY é a única fonte da verdade para capacidade e custo de modelos. pickCheapestForTier filtra por tier e retorna a entrada mais barata. O registro também registra se um modelo suporta tool use, JSON mode ou vision, para que a camada de adapter possa recusar requests incompatíveis.
Abra packages/contracts/src/registry.ts e conte quantos modelos estão registrados. Qual tier tem mais opções?