JSPM

  • Created
  • Published
  • Downloads 568
  • Score
    100M100P100Q33275F
  • License MIT

Package Exports

  • @contractspec/lib.contracts
  • @contractspec/lib.contracts/app-config
  • @contractspec/lib.contracts/app-config/app-config.feature
  • @contractspec/lib.contracts/app-config/branding
  • @contractspec/lib.contracts/app-config/contracts
  • @contractspec/lib.contracts/app-config/docs/app-config.docblock
  • @contractspec/lib.contracts/app-config/events
  • @contractspec/lib.contracts/app-config/lifecycle
  • @contractspec/lib.contracts/app-config/lifecycle-contracts
  • @contractspec/lib.contracts/app-config/runtime
  • @contractspec/lib.contracts/app-config/spec
  • @contractspec/lib.contracts/app-config/validation
  • @contractspec/lib.contracts/capabilities
  • @contractspec/lib.contracts/capabilities/capabilities
  • @contractspec/lib.contracts/capabilities/docs/capabilities.docblock
  • @contractspec/lib.contracts/capabilities/openbanking
  • @contractspec/lib.contracts/client
  • @contractspec/lib.contracts/client/react
  • @contractspec/lib.contracts/client/react/drivers/rn-reusables
  • @contractspec/lib.contracts/client/react/drivers/shadcn
  • @contractspec/lib.contracts/client/react/feature-render
  • @contractspec/lib.contracts/client/react/form-render
  • @contractspec/lib.contracts/contract-registry
  • @contractspec/lib.contracts/contract-registry/schemas
  • @contractspec/lib.contracts/contract-registry/types
  • @contractspec/lib.contracts/data-views
  • @contractspec/lib.contracts/data-views/data-views
  • @contractspec/lib.contracts/data-views/docs/data-views.docblock
  • @contractspec/lib.contracts/data-views/query-generator
  • @contractspec/lib.contracts/data-views/registry
  • @contractspec/lib.contracts/data-views/runtime
  • @contractspec/lib.contracts/data-views/spec
  • @contractspec/lib.contracts/data-views/types
  • @contractspec/lib.contracts/docs
  • @contractspec/lib.contracts/docs/accessibility_wcag_compliance_specs.docblock
  • @contractspec/lib.contracts/docs/meta.docs
  • @contractspec/lib.contracts/docs/presentations
  • @contractspec/lib.contracts/docs/registry
  • @contractspec/lib.contracts/docs/tech-contracts.docs
  • @contractspec/lib.contracts/docs/tech/auth/better-auth-nextjs.docblock
  • @contractspec/lib.contracts/docs/tech/contracts/README.docblock
  • @contractspec/lib.contracts/docs/tech/contracts/create-subscription.docblock
  • @contractspec/lib.contracts/docs/tech/contracts/graphql-typed-outputs.docblock
  • @contractspec/lib.contracts/docs/tech/contracts/migrations.docblock
  • @contractspec/lib.contracts/docs/tech/contracts/openapi-export.docblock
  • @contractspec/lib.contracts/docs/tech/contracts/openapi-import.docblock
  • @contractspec/lib.contracts/docs/tech/contracts/ops-to-presentation-linking.docblock
  • @contractspec/lib.contracts/docs/tech/contracts/overlays.docblock
  • @contractspec/lib.contracts/docs/tech/contracts/tests.docblock
  • @contractspec/lib.contracts/docs/tech/contracts/themes.docblock
  • @contractspec/lib.contracts/docs/tech/contracts/vertical-pocket-family-office.docblock
  • @contractspec/lib.contracts/docs/tech/lifecycle-stage-system.docblock
  • @contractspec/lib.contracts/docs/tech/llm/llm-integration.docblock
  • @contractspec/lib.contracts/docs/tech/mcp-endpoints.docblock
  • @contractspec/lib.contracts/docs/tech/presentation-runtime.docblock
  • @contractspec/lib.contracts/docs/tech/schema/README.docblock
  • @contractspec/lib.contracts/docs/tech/studio/learning-events.docblock
  • @contractspec/lib.contracts/docs/tech/studio/learning-journeys.docblock
  • @contractspec/lib.contracts/docs/tech/studio/platform-admin-panel.docblock
  • @contractspec/lib.contracts/docs/tech/studio/project-access-teams.docblock
  • @contractspec/lib.contracts/docs/tech/studio/project-routing.docblock
  • @contractspec/lib.contracts/docs/tech/studio/sandbox-unlogged.docblock
  • @contractspec/lib.contracts/docs/tech/studio/team-invitations.docblock
  • @contractspec/lib.contracts/docs/tech/studio/workspace-ops.docblock
  • @contractspec/lib.contracts/docs/tech/studio/workspaces.docblock
  • @contractspec/lib.contracts/docs/tech/telemetry-ingest.docblock
  • @contractspec/lib.contracts/docs/tech/templates/runtime.docblock
  • @contractspec/lib.contracts/docs/tech/vscode-extension.docblock
  • @contractspec/lib.contracts/docs/types
  • @contractspec/lib.contracts/events
  • @contractspec/lib.contracts/experiments/docs/experiments.docblock
  • @contractspec/lib.contracts/experiments/evaluator
  • @contractspec/lib.contracts/experiments/spec
  • @contractspec/lib.contracts/experiments/spec-resolver
  • @contractspec/lib.contracts/features
  • @contractspec/lib.contracts/features/install
  • @contractspec/lib.contracts/features/registry
  • @contractspec/lib.contracts/features/types
  • @contractspec/lib.contracts/features/validation
  • @contractspec/lib.contracts/forms
  • @contractspec/lib.contracts/forms/docs/forms.docblock
  • @contractspec/lib.contracts/forms/forms
  • @contractspec/lib.contracts/install
  • @contractspec/lib.contracts/integrations
  • @contractspec/lib.contracts/integrations/binding
  • @contractspec/lib.contracts/integrations/connection
  • @contractspec/lib.contracts/integrations/docs/integrations.docblock
  • @contractspec/lib.contracts/integrations/health
  • @contractspec/lib.contracts/integrations/integrations.feature
  • @contractspec/lib.contracts/integrations/openbanking/contracts
  • @contractspec/lib.contracts/integrations/openbanking/contracts/accounts
  • @contractspec/lib.contracts/integrations/openbanking/contracts/balances
  • @contractspec/lib.contracts/integrations/openbanking/contracts/transactions
  • @contractspec/lib.contracts/integrations/openbanking/guards
  • @contractspec/lib.contracts/integrations/openbanking/models
  • @contractspec/lib.contracts/integrations/openbanking/openbanking.feature
  • @contractspec/lib.contracts/integrations/openbanking/telemetry
  • @contractspec/lib.contracts/integrations/operations
  • @contractspec/lib.contracts/integrations/providers
  • @contractspec/lib.contracts/integrations/providers/calendar
  • @contractspec/lib.contracts/integrations/providers/elevenlabs
  • @contractspec/lib.contracts/integrations/providers/email
  • @contractspec/lib.contracts/integrations/providers/embedding
  • @contractspec/lib.contracts/integrations/providers/gcs-storage
  • @contractspec/lib.contracts/integrations/providers/gmail
  • @contractspec/lib.contracts/integrations/providers/google-calendar
  • @contractspec/lib.contracts/integrations/providers/impls
  • @contractspec/lib.contracts/integrations/providers/impls/elevenlabs-voice
  • @contractspec/lib.contracts/integrations/providers/impls/gcs-storage
  • @contractspec/lib.contracts/integrations/providers/impls/gmail-inbound
  • @contractspec/lib.contracts/integrations/providers/impls/gmail-outbound
  • @contractspec/lib.contracts/integrations/providers/impls/google-calendar
  • @contractspec/lib.contracts/integrations/providers/impls/mistral-embedding
  • @contractspec/lib.contracts/integrations/providers/impls/mistral-llm
  • @contractspec/lib.contracts/integrations/providers/impls/postmark-email
  • @contractspec/lib.contracts/integrations/providers/impls/powens-client
  • @contractspec/lib.contracts/integrations/providers/impls/powens-openbanking
  • @contractspec/lib.contracts/integrations/providers/impls/provider-factory
  • @contractspec/lib.contracts/integrations/providers/impls/qdrant-vector
  • @contractspec/lib.contracts/integrations/providers/impls/stripe-payments
  • @contractspec/lib.contracts/integrations/providers/impls/twilio-sms
  • @contractspec/lib.contracts/integrations/providers/llm
  • @contractspec/lib.contracts/integrations/providers/mistral
  • @contractspec/lib.contracts/integrations/providers/openbanking
  • @contractspec/lib.contracts/integrations/providers/payments
  • @contractspec/lib.contracts/integrations/providers/postmark
  • @contractspec/lib.contracts/integrations/providers/powens
  • @contractspec/lib.contracts/integrations/providers/qdrant
  • @contractspec/lib.contracts/integrations/providers/registry
  • @contractspec/lib.contracts/integrations/providers/sms
  • @contractspec/lib.contracts/integrations/providers/storage
  • @contractspec/lib.contracts/integrations/providers/stripe
  • @contractspec/lib.contracts/integrations/providers/twilio-sms
  • @contractspec/lib.contracts/integrations/providers/vector-store
  • @contractspec/lib.contracts/integrations/providers/voice
  • @contractspec/lib.contracts/integrations/runtime
  • @contractspec/lib.contracts/integrations/secrets
  • @contractspec/lib.contracts/integrations/secrets-types
  • @contractspec/lib.contracts/integrations/secrets/aws-secret-manager
  • @contractspec/lib.contracts/integrations/secrets/env-secret-provider
  • @contractspec/lib.contracts/integrations/secrets/gcp-secret-manager
  • @contractspec/lib.contracts/integrations/secrets/manager
  • @contractspec/lib.contracts/integrations/secrets/provider
  • @contractspec/lib.contracts/integrations/secrets/scaleway-secret-manager
  • @contractspec/lib.contracts/integrations/spec
  • @contractspec/lib.contracts/jobs
  • @contractspec/lib.contracts/jobs/define-job
  • @contractspec/lib.contracts/jobs/gcp-cloud-tasks
  • @contractspec/lib.contracts/jobs/gcp-pubsub
  • @contractspec/lib.contracts/jobs/handlers
  • @contractspec/lib.contracts/jobs/handlers/gmail-sync-handler
  • @contractspec/lib.contracts/jobs/handlers/ping-handler
  • @contractspec/lib.contracts/jobs/handlers/storage-document-handler
  • @contractspec/lib.contracts/jobs/memory-queue
  • @contractspec/lib.contracts/jobs/queue
  • @contractspec/lib.contracts/jobs/scaleway-sqs-queue
  • @contractspec/lib.contracts/jsonschema
  • @contractspec/lib.contracts/knowledge
  • @contractspec/lib.contracts/knowledge/binding
  • @contractspec/lib.contracts/knowledge/docs/knowledge.docblock
  • @contractspec/lib.contracts/knowledge/ingestion
  • @contractspec/lib.contracts/knowledge/ingestion/document-processor
  • @contractspec/lib.contracts/knowledge/ingestion/embedding-service
  • @contractspec/lib.contracts/knowledge/ingestion/gmail-adapter
  • @contractspec/lib.contracts/knowledge/ingestion/storage-adapter
  • @contractspec/lib.contracts/knowledge/ingestion/vector-indexer
  • @contractspec/lib.contracts/knowledge/knowledge.feature
  • @contractspec/lib.contracts/knowledge/operations
  • @contractspec/lib.contracts/knowledge/query
  • @contractspec/lib.contracts/knowledge/query/service
  • @contractspec/lib.contracts/knowledge/runtime
  • @contractspec/lib.contracts/knowledge/source
  • @contractspec/lib.contracts/knowledge/spaces
  • @contractspec/lib.contracts/knowledge/spaces/email-threads
  • @contractspec/lib.contracts/knowledge/spaces/financial-docs
  • @contractspec/lib.contracts/knowledge/spaces/financial-overview
  • @contractspec/lib.contracts/knowledge/spaces/product-canon
  • @contractspec/lib.contracts/knowledge/spaces/support-faq
  • @contractspec/lib.contracts/knowledge/spaces/uploaded-docs
  • @contractspec/lib.contracts/knowledge/spec
  • @contractspec/lib.contracts/llm
  • @contractspec/lib.contracts/llm/exporters
  • @contractspec/lib.contracts/llm/prompts
  • @contractspec/lib.contracts/llm/types
  • @contractspec/lib.contracts/markdown
  • @contractspec/lib.contracts/migrations
  • @contractspec/lib.contracts/model-registry
  • @contractspec/lib.contracts/onboarding-base
  • @contractspec/lib.contracts/openapi
  • @contractspec/lib.contracts/operations
  • @contractspec/lib.contracts/operations/operation
  • @contractspec/lib.contracts/operations/registry
  • @contractspec/lib.contracts/ownership
  • @contractspec/lib.contracts/policy
  • @contractspec/lib.contracts/policy/docs/policy.docblock
  • @contractspec/lib.contracts/policy/engine
  • @contractspec/lib.contracts/policy/opa-adapter
  • @contractspec/lib.contracts/policy/registry
  • @contractspec/lib.contracts/policy/spec
  • @contractspec/lib.contracts/presentations
  • @contractspec/lib.contracts/presentations/docs/presentations-conventions.docblock
  • @contractspec/lib.contracts/presentations/presentations
  • @contractspec/lib.contracts/presentations/registry
  • @contractspec/lib.contracts/presentations/transform-engine
  • @contractspec/lib.contracts/prompt
  • @contractspec/lib.contracts/promptRegistry
  • @contractspec/lib.contracts/regenerator
  • @contractspec/lib.contracts/regenerator/adapters
  • @contractspec/lib.contracts/regenerator/docs/regenerator.docblock
  • @contractspec/lib.contracts/regenerator/executor
  • @contractspec/lib.contracts/regenerator/service
  • @contractspec/lib.contracts/regenerator/sinks
  • @contractspec/lib.contracts/regenerator/types
  • @contractspec/lib.contracts/regenerator/utils
  • @contractspec/lib.contracts/registry
  • @contractspec/lib.contracts/registry-utils
  • @contractspec/lib.contracts/resources
  • @contractspec/lib.contracts/schema-to-markdown
  • @contractspec/lib.contracts/server
  • @contractspec/lib.contracts/server/contracts-adapter-hydration
  • @contractspec/lib.contracts/server/contracts-adapter-input
  • @contractspec/lib.contracts/server/graphql-pothos
  • @contractspec/lib.contracts/server/mcp/createMcpServer
  • @contractspec/lib.contracts/server/mcp/mcpTypes
  • @contractspec/lib.contracts/server/mcp/registerPresentations
  • @contractspec/lib.contracts/server/mcp/registerPrompts
  • @contractspec/lib.contracts/server/mcp/registerResources
  • @contractspec/lib.contracts/server/mcp/registerTools
  • @contractspec/lib.contracts/server/provider-mcp
  • @contractspec/lib.contracts/server/rest-elysia
  • @contractspec/lib.contracts/server/rest-express
  • @contractspec/lib.contracts/server/rest-generic
  • @contractspec/lib.contracts/server/rest-next-app
  • @contractspec/lib.contracts/server/rest-next-mcp
  • @contractspec/lib.contracts/server/rest-next-pages
  • @contractspec/lib.contracts/telemetry
  • @contractspec/lib.contracts/telemetry/anomaly
  • @contractspec/lib.contracts/telemetry/docs/telemetry.docblock
  • @contractspec/lib.contracts/telemetry/spec
  • @contractspec/lib.contracts/telemetry/tracker
  • @contractspec/lib.contracts/tests
  • @contractspec/lib.contracts/tests/runner
  • @contractspec/lib.contracts/tests/spec
  • @contractspec/lib.contracts/themes
  • @contractspec/lib.contracts/translations/catalog
  • @contractspec/lib.contracts/translations/tenant
  • @contractspec/lib.contracts/types
  • @contractspec/lib.contracts/workflow
  • @contractspec/lib.contracts/workflow/adapters
  • @contractspec/lib.contracts/workflow/adapters/db-adapter
  • @contractspec/lib.contracts/workflow/adapters/file-adapter
  • @contractspec/lib.contracts/workflow/adapters/memory-store
  • @contractspec/lib.contracts/workflow/expression
  • @contractspec/lib.contracts/workflow/overview.docblock
  • @contractspec/lib.contracts/workflow/runner
  • @contractspec/lib.contracts/workflow/sla-monitor
  • @contractspec/lib.contracts/workflow/spec
  • @contractspec/lib.contracts/workflow/state
  • @contractspec/lib.contracts/workflow/validation
  • @contractspec/lib.contracts/workspace-config
  • @contractspec/lib.contracts/workspace-config/contractsrc-schema
  • @contractspec/lib.contracts/workspace-config/workspace-config.docblock

Readme

@contractspec/lib.contracts

npm version npm downloads Ask DeepWiki

Website: https://contractspec.io/

The core of ContractSpec — Define contracts once, generate consistent code across all surfaces.

Unified specifications for Operations (commands/queries), Events, and Presentations. Contracts serve as the canonical source of truth that AI agents and code generators read to understand system constraints.

Purpose

To provide a single, typed source of truth for backend operations (ContractSpec), events (EventSpec), and UI/data presentations. This enables runtime adapters (REST, GraphQL, MCP, UI) to automatically generate endpoints, schemas, and user interfaces without code duplication.

Installation

npm install @contractspec/lib.contracts @contractspec/lib.schema
# or
bun add @contractspec/lib.contracts @contractspec/lib.schema

Key Concepts

  • Spec-First, TypeScript-First: Define operations in pure TypeScript (no YAML).
  • Runtime Adapters: The OperationSpecRegistry is passed to adapters (e.g., makeNextAppHandler) to serve APIs dynamically. There is no intermediate "compile" step to generate code; the spec is the code.
  • Capabilities: defineCommand (writes) and defineQuery (reads) with Zod-backed I/O.
  • Events: defineEvent for type-safe side effects.
  • Presentations: (V2) Describe how data is rendered (Web Components, Markdown, Data) for automated UI generation.

Exports

  • Core: OperationSpecRegistry, defineCommand, defineQuery, defineEvent.
  • Config: SchemaFormat ('contractspec' | 'zod' | 'json-schema' | 'graphql').
  • Adapters:
    • server/rest-next-app: Next.js App Router adapter.
    • server/provider-mcp: Model Context Protocol (MCP) adapter for AI agents.
    • server/graphql-pothos: GraphQL schema generator.
  • Docs: markdown utilities to generate human-readable documentation from specs.

Usage

1. Define a Spec

import { defineCommand, defineQuery } from '@contractspec/lib.contracts';
import * as z from "zod";
import { SchemaModel, ScalarTypeEnum } from '@contractspec/lib.schema';

const UserInput = new SchemaModel({
  name: 'UserInput',
  fields: {
    email: { type: ScalarTypeEnum.Email(), isOptional: false },
  },
});

export const CreateUser = defineCommand({
  meta: {
    name: 'user.create',
    version: 1,
    description: 'Register a new user',
    owners: ['team-auth'],
    tags: ['auth'],
    goal: 'Onboard users',
    context: 'Public registration',
    stability: 'stable',
  },
  io: {
    input: UserInput,
    output: new SchemaModel({
      name: 'UserOutput',
      fields: {
        id: { type: ScalarTypeEnum.String(), isOptional: false },
      },
    }),
  },
  policy: {
    auth: 'anonymous',
  },
});

2. Register and Implement

import { OperationSpecRegistry, installOp } from '@contractspec/lib.contracts';

const reg = new OperationSpecRegistry();

installOp(reg, CreateUser, async (ctx, input) => {
  // Implementation logic here
  return { id: '123' };
});

3. Serve (Next.js Adapter)

// app/api/[...route]/route.ts
import { makeNextAppHandler } from '@contractspec/lib.contracts/server/rest-next-app';

const handler = makeNextAppHandler(reg, (req) => ({ actor: 'anonymous' }));

export { handler as GET, handler as POST };