@contractspec/lib.contracts
The core library for defining what your application can do. Unified specifications for Operations, Events, Presentations, and Features.
Installation
bun add @contractspec/lib.contracts @contractspec/lib.schemaWhat lives where
- @contractspec/lib.contracts (root): The core contracts definitions (OperationSpec, PresentationSpec, Registry).
- @contractspec/lib.contracts/client: Browser-safe helpers (React renderers, client SDK). Import this for web/React Native.
- @contractspec/lib.contracts/server: HTTP/MCP adapters, registries, integrations (Node-only).
- @contractspec/lib.schema: Schema dictionary (SchemaModel, FieldType) for I/O definitions.
Quick Example
import { defineCommand } from '@contractspec/lib.contracts';
import { SchemaModel, ScalarTypeEnum } from '@contractspec/lib.schema';
const CreateUserInput = new SchemaModel({
name: 'CreateUserInput',
fields: {
email: { type: ScalarTypeEnum.Email(), isOptional: false },
name: { type: ScalarTypeEnum.NonEmptyString(), isOptional: false },
},
});
export const CreateUser = defineCommand({
meta: {
key: 'users.createUser',
version: '1.0.0',
description: 'Create a new user account',
},
io: {
input: CreateUserInput,
output: /* ... */,
},
policy: { auth: 'admin' },
});Core Concepts
- OperationSpec: Immutable description of an operation (Command or Query). Defines I/O, policy, and metadata.
- OperationSpecRegistry: Registry of specs + handlers. Use
installOpto attach a handler. - CapabilitySpec: Canonical capability declaration (requires/provides).
- PolicySpec: Declarative policy rules (ABAC/ReBAC, rate limits).
- TelemetrySpec: Analytics definitions and privacy levels.
- PresentationSpec (V2): Describes how data is rendered (Web Components, Markdown, Data).
Lifecycle
- Define the spec (I/O via SchemaModel or Zod).
- Register it:
installOp(registry, spec, handler). - Expose it via an adapter (REST, GraphQL, MCP).
- Validate at runtime automatically.
Adapters
server/rest-next-app: Next.js App Router adapterserver/provider-mcp: Model Context Protocol (MCP) for AI agentsserver/graphql-pothos: GraphQL schema generator