# API reference

> Every export path and symbol.

Generated by `bun run scripts/gen-api.ts`. **Read this instead of crawling the repo.**

Every import path below is exact and copy-pasteable.

## @dapplelight/signet-ai

Provider-agnostic structured LLM calls with budget caps, caching and failover.

| Import | Exports | What |
|---|---|---|
| `@dapplelight/signet-ai` | costOf, createBudgetLedger, BudgetLedger, cacheKey, fingerprintSchema, memoryCache, … | re-exports budget, cache, errors, extract, fake, types |
| `@dapplelight/signet-ai/budget` | costOf, createBudgetLedger, BudgetLedger |  |
| `@dapplelight/signet-ai/cache` | cacheKey, fingerprintSchema, memoryCache |  |
| `@dapplelight/signet-ai/errors` | AiError, BUDGET_EXCEEDED, ALL_PROVIDERS_FAILED, SCHEMA_INVALID, NO_PROVIDERS, isTransient |  |
| `@dapplelight/signet-ai/extract` | createExtractor, ExtractConfig, ExtractArgs, Extractor |  |
| `@dapplelight/signet-ai/fake` | fakeProvider |  |
| `@dapplelight/signet-ai/jev` | JEV_DEFAULT_MODEL, JEV_DEFAULT_MIN_CONFIDENCE, JEV_DEFAULT_TIMEOUT_MS, JEV_DEFAULT_BASE_URL, createJev, JevJson, … | Jev (TypeSafe System One): a classifier that returns a typed decision, never text |
| `@dapplelight/signet-ai/providers/ai-sdk` | aiSdkProvider, workersAiProvider, AiSdkProviderOptions | Vercel AI SDK adapter |

## @dapplelight/signet-config

Signet's shared Biome preset and TypeScript bases.

| Import | Exports | What |
|---|---|---|
| `@dapplelight/signet-config/biome` | — |  |
| `@dapplelight/signet-config/biome.json` | — |  |
| `@dapplelight/signet-config/package.json` | — |  |
| `@dapplelight/signet-config/tsconfig/*.json` | — |  |

## @dapplelight/signet-lib

Signet client primitives. API client and the wire contract.

| Import | Exports | What |
|---|---|---|
| `@dapplelight/signet-lib/analytics` | beaconTransport, createAnalytics, noopAnalytics, EventProps, AnalyticsEvent, Transport, … | Client-side event tracking |
| `@dapplelight/signet-lib/api` | qs, createApiClient, retryAfterSeconds, toApiError, ApiClientOptions, QueryValue, … | re-exports client, codes, contract, copy, errors |
| `@dapplelight/signet-lib/api/query-client` | isRetryable, queryDefaults, onAuthErrorRedirect, QueryDefaultsOptions | TanStack Query defaults |
| `@dapplelight/signet-lib/crypto` | decryptFields, DecryptFieldsOptions, DecryptFieldsResult | Fail-closed field decryption for apps that encrypt user data on the client (app-a's private mode) |
| `@dapplelight/signet-lib/form` | errorMessages, firstError, applyServerErrors, clearServerErrors, submitWithServerErrors, FieldError, … | TanStack Form integration |
| `@dapplelight/signet-lib/format` | createCurrencyFormatter, createCompactCurrencyFormatter, formatPercent, createDateFormatter, createDateShortFormatter, createDateTimeFormatter, … | Currency, number and date formatting, plus date arithmetic (./date.ts) |

## @dapplelight/signet-server

Signet backend primitives. Auth first.

| Import | Exports | What |
|---|---|---|
| `@dapplelight/signet-server/analytics` | LIMITS, truncateBytes, toDataPoint, createAnalyticsEngine, AnalyticsEngineDataset, TrackedEvent, … | re-exports engine, ingest |
| `@dapplelight/signet-server/analytics/engine` | LIMITS, truncateBytes, toDataPoint, createAnalyticsEngine, AnalyticsEngineDataset, TrackedEvent, … | Cloudflare Workers Analytics Engine writer |
| `@dapplelight/signet-server/analytics/ingest` | registerIngest, cloudflareEnrichment, IngestOptions | Hono ingest route for browser events |
| `@dapplelight/signet-server/auth` | readBearer, verifySharedToken, sha256Hex, createApiToken, hashIncomingToken, betterAuthDefaults, … | re-exports bearer, better-auth, guards, passcode, session |
| `@dapplelight/signet-server/auth/bearer` | readBearer, verifySharedToken, sha256Hex, createApiToken, hashIncomingToken | Bearer-token auth for machine callers — CLIs, MCP servers, webhooks, cron |
| `@dapplelight/signet-server/auth/better-auth` | betterAuthDefaults, socialProviders, BetterAuthEnv, BetterAuthDefaultsOptions | Opinionated defaults for Better Auth |
| `@dapplelight/signet-server/auth/guards` | isDevAuthEnabled, requireEnv, checkEnv | Configuration guards |
| `@dapplelight/signet-server/auth/hono` | requireSession, requireSharedToken, requireAuth, DualAuthOptions | Hono middleware |
| `@dapplelight/signet-server/auth/passcode` | hashPasscode, verifyPasscode | Shared-passcode auth |
| `@dapplelight/signet-server/auth/session` | timingSafeEqual, issueSession, verifySession, sessionCookie, clearCookie, readSessionCookie, … | Stateless HMAC-signed session cookie |
| `@dapplelight/signet-server/env` | initRuntimeEnv, getRuntimeEnv, resetRuntimeEnv, createEnv, CreateEnvOptions | re-exports runtime, schema |
| `@dapplelight/signet-server/env/runtime` | initRuntimeEnv, getRuntimeEnv, resetRuntimeEnv | Runtime environment access that works on both Workers and Node/Bun |
| `@dapplelight/signet-server/env/schema` | createEnv, CreateEnvOptions | Validate environment once, lazily, against a Zod schema |
| `@dapplelight/signet-server/http` | defaultRequestId, ApiException, STATUS_CODES, errorHandler, ErrorHandlerOptions, ApiErrorStatus, … | re-exports errors, validate |
| `@dapplelight/signet-server/http/errors` | defaultRequestId, ApiException, STATUS_CODES, errorHandler, ErrorHandlerOptions, ApiErrorStatus | Server half of the error envelope |
| `@dapplelight/signet-server/http/validate` | parseBody, parseQuery, parseParams | Zod request validation |
| `@dapplelight/signet-server/mcp` | toolResult, defineTool, createMcpServer, ToolAnnotations, ToolContext, CallToolResult, … | re-exports server |
| `@dapplelight/signet-server/mcp/hono` | mcpHandler, mountMcp, McpHandlerOptions | Serve MCP over streamable HTTP from a Hono route |
| `@dapplelight/signet-server/middleware` | corsMiddleware, CorsOptions, memoryStore, clientIp, rateLimit, RateLimitResult, … | re-exports cors, rate-limit, request-id, secure-headers |
| `@dapplelight/signet-server/middleware/cors` | corsMiddleware, CorsOptions | CORS |
| `@dapplelight/signet-server/middleware/rate-limit` | memoryStore, clientIp, rateLimit, RateLimitResult, RateLimitStore, RateLimitOptions | Rate limiting with a pluggable store |
| `@dapplelight/signet-server/middleware/rate-limit-do` | RateLimitCounter, durableObjectStore, RateLimitCounterState, RateLimitNamespace | Exact rate limiting on Cloudflare Workers, backed by a Durable Object |
| `@dapplelight/signet-server/middleware/request-id` | requestId, RequestIdOptions |  |
| `@dapplelight/signet-server/middleware/secure-headers` | STRICT_CSP, DOCS_CSP, secureHeaders, SecureHeadersOptions | Security headers |
| `@dapplelight/signet-server/notify` | createEmailer, EmailConfig, EmailMessage, isGone, createPusher, PushSubscription, … | re-exports email, push, telegram |
| `@dapplelight/signet-server/notify/email` | createEmailer, EmailConfig, EmailMessage | Transactional email via Resend |
| `@dapplelight/signet-server/notify/push` | isGone, createPusher, PushSubscription, PushPayload, PushSender, PushConfig | Web push fan-out with dead-subscription pruning |
| `@dapplelight/signet-server/notify/telegram` | escapeMarkdown, createTelegram, TelegramConfig | Telegram messages |
| `@dapplelight/signet-server/oauth-rs` | SUPPORTED_ALGS, createJwksCache, Jwk, SupportedAlg, JwksOptions, JwksCache, … | re-exports jwks, metadata, verify |
| `@dapplelight/signet-server/oauth-rs/hono` | METADATA_PATH, registerProtectedResourceMetadata, requireToken, requireScopes, RequireTokenOptions | Hono bindings for the resource server |
| `@dapplelight/signet-server/oauth-rs/jwks` | SUPPORTED_ALGS, createJwksCache, Jwk, SupportedAlg, JwksOptions, JwksCache | JWKS fetching, caching and rotation |
| `@dapplelight/signet-server/oauth-rs/metadata` | protectedResourceMetadata, wwwAuthenticate, ProtectedResourceMetadata, MetadataOptions | Protected Resource Metadata — RFC 9728 |
| `@dapplelight/signet-server/oauth-rs/verify` | TokenError, scopesOf, createTokenVerifier, Claims, VerifiedToken, VerifierOptions, … | OAuth 2.1 access token verification for a RESOURCE SERVER |
| `@dapplelight/signet-server/observability/logger` | LEVELS, createLogger, redactFields, LevelName, LevelSetting, LogFields, … | Structured JSON logger with pino's call shape and redaction by default |
| `@dapplelight/signet-server/observability/sentry` | redactSecrets, createSentry, SentryConfig, SentryEvent, Sentry | Sentry reporting over the Store HTTP API |

## @dapplelight/signet-tokens

Signet design tokens. One theme file per design system; all themes satisfy CONTRACT.md.

| Import | Exports | What |
|---|---|---|
| `@dapplelight/signet-tokens/base.css` | — | stylesheet |
| `@dapplelight/signet-tokens/cinematic.css` | — | stylesheet |
| `@dapplelight/signet-tokens/editorial.css` | — | stylesheet |
| `@dapplelight/signet-tokens/finance.css` | — | stylesheet |

## @dapplelight/signet-ui

Signet component kit — token-driven React primitives.

`import { X } from "@dapplelight/signet-ui/components/<name>"` — 41 components:

`alert` · `answer-headline` · `badge` · `button` · `calendar` · `card` · `chart` · `checkbox` · `combobox` · `data-table` · `dialog` · `drawer` · `dropdown-menu` · `emoji-picker` · `empty-state` · `error-state` · `input` · `input-group` · `input-otp` · `kbd` · `label` · `markdown` · `pagination` · `pill-group` · `popover` · `privacy-mask` · `progress` · `responsive-sheet` · `search-input` · `select` · `shortcuts` · `skeleton` · `slider` · `stat-strip` · `switch` · `table` · `tabs` · `textarea` · `theme-provider` · `theme-toggle` · `tooltip`

Barrel import also works: `import { Button, Card } from "@dapplelight/signet-ui"`.

| Import | Exports | What |
|---|---|---|
| `@dapplelight/signet-ui` | — |  |
| `@dapplelight/signet-ui/domain/trend-chip` | — |  |
| `@dapplelight/signet-ui/hooks/use-media-query` | DESKTOP_QUERY, useMediaQuery |  |
| `@dapplelight/signet-ui/utils` | TYPE_RAMP, cn |  |

## Not here

`scheduled.ts` (app-a cron map — product-specific) · `@dapplelight/signet-blocks` (invite
blocks, deliberately not built) · a UI `form.tsx` (use `@dapplelight/signet-lib/form`).
