Package Exports
- @contractspec/lib.contracts
- @contractspec/lib.contracts/app-config
- @contractspec/lib.contracts/app-config/app-config.capability
- @contractspec/lib.contracts/app-config/app-config.contracts
- @contractspec/lib.contracts/app-config/app-config.feature
- @contractspec/lib.contracts/app-config/branding
- @contractspec/lib.contracts/app-config/docs/app-config.docblock
- @contractspec/lib.contracts/app-config/events
- @contractspec/lib.contracts/app-config/index
- @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/context
- @contractspec/lib.contracts/capabilities/docs/capabilities.docblock
- @contractspec/lib.contracts/capabilities/guards
- @contractspec/lib.contracts/capabilities/index
- @contractspec/lib.contracts/capabilities/meeting-recorder
- @contractspec/lib.contracts/capabilities/openbanking
- @contractspec/lib.contracts/capabilities/validation
- @contractspec/lib.contracts/client
- @contractspec/lib.contracts/client/index
- @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/client/react/index
- @contractspec/lib.contracts/contract-registry
- @contractspec/lib.contracts/contract-registry/index
- @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/index
- @contractspec/lib.contracts/data-views/query-generator
- @contractspec/lib.contracts/data-views/registry
- @contractspec/lib.contracts/data-views/report/contractVerificationTable
- @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/capabilities
- @contractspec/lib.contracts/docs/capabilities/documentationSystem.capability
- @contractspec/lib.contracts/docs/capabilities/index
- @contractspec/lib.contracts/docs/commands
- @contractspec/lib.contracts/docs/commands/docsGenerate.command
- @contractspec/lib.contracts/docs/commands/docsPublish.command
- @contractspec/lib.contracts/docs/commands/index
- @contractspec/lib.contracts/docs/constants
- @contractspec/lib.contracts/docs/contracts
- @contractspec/lib.contracts/docs/ensure-docblocks
- @contractspec/lib.contracts/docs/events
- @contractspec/lib.contracts/docs/events/docsGenerated.event
- @contractspec/lib.contracts/docs/events/docsPublished.event
- @contractspec/lib.contracts/docs/events/index
- @contractspec/lib.contracts/docs/forms
- @contractspec/lib.contracts/docs/forms/docsSearch.form
- @contractspec/lib.contracts/docs/forms/index
- @contractspec/lib.contracts/docs/index
- @contractspec/lib.contracts/docs/meta.docs
- @contractspec/lib.contracts/docs/presentations
- @contractspec/lib.contracts/docs/presentations/docsLayout.presentation
- @contractspec/lib.contracts/docs/presentations/docsReferencePage.presentation
- @contractspec/lib.contracts/docs/presentations/index
- @contractspec/lib.contracts/docs/queries
- @contractspec/lib.contracts/docs/queries/contractReference.query
- @contractspec/lib.contracts/docs/queries/docsIndex.query
- @contractspec/lib.contracts/docs/queries/index
- @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/cli.docblock
- @contractspec/lib.contracts/docs/tech/contracts/README.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/docs-system.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/report-verification-table.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/vscode-extension.docblock
- @contractspec/lib.contracts/docs/types
- @contractspec/lib.contracts/docs/views
- @contractspec/lib.contracts/docs/views/contractReference.dataView
- @contractspec/lib.contracts/docs/views/docsIndex.dataView
- @contractspec/lib.contracts/docs/views/exampleCatalog.dataView
- @contractspec/lib.contracts/docs/views/index
- @contractspec/lib.contracts/events
- @contractspec/lib.contracts/examples
- @contractspec/lib.contracts/examples/docs/examples.docblock
- @contractspec/lib.contracts/examples/index
- @contractspec/lib.contracts/examples/registry
- @contractspec/lib.contracts/examples/schema
- @contractspec/lib.contracts/examples/types
- @contractspec/lib.contracts/examples/validation
- @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/index
- @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/forms/index
- @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/index
- @contractspec/lib.contracts/integrations/integrations.capability
- @contractspec/lib.contracts/integrations/integrations.feature
- @contractspec/lib.contracts/integrations/meeting-recorder/contracts
- @contractspec/lib.contracts/integrations/meeting-recorder/contracts/index
- @contractspec/lib.contracts/integrations/meeting-recorder/contracts/meetings
- @contractspec/lib.contracts/integrations/meeting-recorder/contracts/transcripts
- @contractspec/lib.contracts/integrations/meeting-recorder/contracts/webhooks
- @contractspec/lib.contracts/integrations/meeting-recorder/meeting-recorder.capability
- @contractspec/lib.contracts/integrations/meeting-recorder/meeting-recorder.feature
- @contractspec/lib.contracts/integrations/meeting-recorder/models
- @contractspec/lib.contracts/integrations/meeting-recorder/telemetry
- @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/index
- @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.capability
- @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/analytics
- @contractspec/lib.contracts/integrations/providers/analytics-reader
- @contractspec/lib.contracts/integrations/providers/analytics-writer
- @contractspec/lib.contracts/integrations/providers/calendar
- @contractspec/lib.contracts/integrations/providers/database
- @contractspec/lib.contracts/integrations/providers/elevenlabs
- @contractspec/lib.contracts/integrations/providers/email
- @contractspec/lib.contracts/integrations/providers/embedding
- @contractspec/lib.contracts/integrations/providers/fal
- @contractspec/lib.contracts/integrations/providers/fathom
- @contractspec/lib.contracts/integrations/providers/fireflies
- @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/gradium
- @contractspec/lib.contracts/integrations/providers/granola
- @contractspec/lib.contracts/integrations/providers/index
- @contractspec/lib.contracts/integrations/providers/jira
- @contractspec/lib.contracts/integrations/providers/linear
- @contractspec/lib.contracts/integrations/providers/llm
- @contractspec/lib.contracts/integrations/providers/meeting-recorder
- @contractspec/lib.contracts/integrations/providers/mistral
- @contractspec/lib.contracts/integrations/providers/notion
- @contractspec/lib.contracts/integrations/providers/openbanking
- @contractspec/lib.contracts/integrations/providers/payments
- @contractspec/lib.contracts/integrations/providers/posthog
- @contractspec/lib.contracts/integrations/providers/posthog-llm-telemetry
- @contractspec/lib.contracts/integrations/providers/postmark
- @contractspec/lib.contracts/integrations/providers/powens
- @contractspec/lib.contracts/integrations/providers/project-management
- @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/supabase-postgres
- @contractspec/lib.contracts/integrations/providers/supabase-vector
- @contractspec/lib.contracts/integrations/providers/tldv
- @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/index
- @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/index
- @contractspec/lib.contracts/jobs/handlers/ping-handler
- @contractspec/lib.contracts/jobs/handlers/storage-document-handler
- @contractspec/lib.contracts/jobs/index
- @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/index
- @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/index
- @contractspec/lib.contracts/knowledge/ingestion/storage-adapter
- @contractspec/lib.contracts/knowledge/ingestion/vector-indexer
- @contractspec/lib.contracts/knowledge/knowledge.capability
- @contractspec/lib.contracts/knowledge/knowledge.feature
- @contractspec/lib.contracts/knowledge/operations
- @contractspec/lib.contracts/knowledge/query
- @contractspec/lib.contracts/knowledge/query/index
- @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/index
- @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/index
- @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/index
- @contractspec/lib.contracts/operations/operation
- @contractspec/lib.contracts/operations/registry
- @contractspec/lib.contracts/operations/report
- @contractspec/lib.contracts/operations/report/getContractVerificationStatus
- @contractspec/lib.contracts/operations/report/index
- @contractspec/lib.contracts/ownership
- @contractspec/lib.contracts/policy
- @contractspec/lib.contracts/policy/context
- @contractspec/lib.contracts/policy/docs/policy.docblock
- @contractspec/lib.contracts/policy/engine
- @contractspec/lib.contracts/policy/guards
- @contractspec/lib.contracts/policy/index
- @contractspec/lib.contracts/policy/opa-adapter
- @contractspec/lib.contracts/policy/registry
- @contractspec/lib.contracts/policy/spec
- @contractspec/lib.contracts/policy/validation
- @contractspec/lib.contracts/presentations
- @contractspec/lib.contracts/presentations/docs/presentations-conventions.docblock
- @contractspec/lib.contracts/presentations/index
- @contractspec/lib.contracts/presentations/presentations
- @contractspec/lib.contracts/presentations/registry
- @contractspec/lib.contracts/presentations/transform-engine
- @contractspec/lib.contracts/product-intent
- @contractspec/lib.contracts/product-intent/contract-patch-intent
- @contractspec/lib.contracts/product-intent/contract-spec-patch
- @contractspec/lib.contracts/product-intent/evidence
- @contractspec/lib.contracts/product-intent/findings
- @contractspec/lib.contracts/product-intent/impact-report
- @contractspec/lib.contracts/product-intent/index
- @contractspec/lib.contracts/product-intent/insights
- @contractspec/lib.contracts/product-intent/opportunity-brief
- @contractspec/lib.contracts/product-intent/problems
- @contractspec/lib.contracts/product-intent/registry
- @contractspec/lib.contracts/product-intent/runtime
- @contractspec/lib.contracts/product-intent/spec
- @contractspec/lib.contracts/product-intent/task-pack
- @contractspec/lib.contracts/product-intent/tickets
- @contractspec/lib.contracts/product-intent/types
- @contractspec/lib.contracts/product-intent/ui-wireframe
- @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/index
- @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/serialization
- @contractspec/lib.contracts/serialization/index
- @contractspec/lib.contracts/serialization/serializers
- @contractspec/lib.contracts/serialization/types
- @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/index
- @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/index
- @contractspec/lib.contracts/telemetry/spec
- @contractspec/lib.contracts/telemetry/tracker
- @contractspec/lib.contracts/tests
- @contractspec/lib.contracts/tests/index
- @contractspec/lib.contracts/tests/runner
- @contractspec/lib.contracts/tests/spec
- @contractspec/lib.contracts/themes
- @contractspec/lib.contracts/translations
- @contractspec/lib.contracts/translations/catalog
- @contractspec/lib.contracts/translations/index
- @contractspec/lib.contracts/translations/registry
- @contractspec/lib.contracts/translations/spec
- @contractspec/lib.contracts/translations/tenant
- @contractspec/lib.contracts/translations/validation
- @contractspec/lib.contracts/types
- @contractspec/lib.contracts/versioning
- @contractspec/lib.contracts/versioning/index
- @contractspec/lib.contracts/versioning/refs
- @contractspec/lib.contracts/versioning/types
- @contractspec/lib.contracts/versioning/utils
- @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/index
- @contractspec/lib.contracts/workflow/adapters/memory-store
- @contractspec/lib.contracts/workflow/context
- @contractspec/lib.contracts/workflow/expression
- @contractspec/lib.contracts/workflow/index
- @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/contractsrc-types
- @contractspec/lib.contracts/workspace-config/index
- @contractspec/lib.contracts/workspace-config/workspace-config.docblock
Readme
@contractspec/lib.contracts
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.schemaKey Concepts
- Spec-First, TypeScript-First: Define operations in pure TypeScript (no YAML).
- Runtime Adapters: The
OperationSpecRegistryis 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) anddefineQuery(reads) with Zod-backed I/O. - Events:
defineEventfor 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:
markdownutilities 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.0.0',
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 };