@contractspec/bundle.library 3.9.5 → 3.9.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.turbo/turbo-build.log +154 -150
- package/CHANGELOG.md +85 -0
- package/dist/components/docs/DocsIndexPage.js +2 -2
- package/dist/components/docs/docsManifest.js +1 -1
- package/dist/components/docs/guides/GuideContractDrivenFormsPage.content.d.ts +3 -0
- package/dist/components/docs/guides/GuideContractDrivenFormsPage.content.js +95 -0
- package/dist/components/docs/guides/GuideContractDrivenFormsPage.d.ts +1 -0
- package/dist/components/docs/guides/GuideContractDrivenFormsPage.js +95 -0
- package/dist/components/docs/guides/GuideSpecValidationTypingPage.js +1 -1
- package/dist/components/docs/guides/GuidesIndexPage.js +2 -2
- package/dist/components/docs/guides/guides.docblocks.js +3 -1
- package/dist/components/docs/guides/index.d.ts +1 -0
- package/dist/components/docs/guides/index.js +139 -44
- package/dist/components/docs/index.js +352 -257
- package/dist/index.js +363 -268
- package/dist/libs/posthog/client.js +1 -1
- package/dist/node/components/docs/DocsIndexPage.js +2 -2
- package/dist/node/components/docs/docsManifest.js +1 -1
- package/dist/node/components/docs/guides/GuideContractDrivenFormsPage.content.js +94 -0
- package/dist/node/components/docs/guides/GuideContractDrivenFormsPage.js +94 -0
- package/dist/node/components/docs/guides/GuideSpecValidationTypingPage.js +1 -1
- package/dist/node/components/docs/guides/GuidesIndexPage.js +2 -2
- package/dist/node/components/docs/guides/guides.docblocks.js +3 -1
- package/dist/node/components/docs/guides/index.js +139 -44
- package/dist/node/components/docs/index.js +352 -257
- package/dist/node/index.js +363 -268
- package/dist/node/libs/posthog/client.js +1 -1
- package/package.json +47 -23
- package/src/components/docs/docsManifest.ts +12 -0
- package/src/components/docs/generated/docs-index._common.json +2008 -1699
- package/src/components/docs/generated/docs-index.agent-console.json +377 -377
- package/src/components/docs/generated/docs-index.ai-chat-assistant.json +17 -17
- package/src/components/docs/generated/docs-index.ai-chat.json +105 -105
- package/src/components/docs/generated/docs-index.ai-support-bot.json +9 -9
- package/src/components/docs/generated/docs-index.analytics-dashboard.json +169 -169
- package/src/components/docs/generated/docs-index.app-config.json +137 -137
- package/src/components/docs/generated/docs-index.artisan-knowledge-product.json +17 -17
- package/src/components/docs/generated/docs-index.artisan-payments-stripe.json +33 -33
- package/src/components/docs/generated/docs-index.audit-trail.json +49 -49
- package/src/components/docs/generated/docs-index.calendar-google.json +9 -9
- package/src/components/docs/generated/docs-index.content-generation.json +9 -9
- package/src/components/docs/generated/docs-index.control-plane.json +17 -17
- package/src/components/docs/generated/docs-index.crm-pipeline.json +161 -161
- package/src/components/docs/generated/docs-index.data-grid-showcase.json +25 -25
- package/src/components/docs/generated/docs-index.defineExample.json +9 -9
- package/src/components/docs/generated/docs-index.email-gmail.json +9 -9
- package/src/components/docs/generated/docs-index.feature-flags.json +217 -217
- package/src/components/docs/generated/docs-index.files.json +177 -177
- package/src/components/docs/generated/docs-index.generated.ts +20 -20
- package/src/components/docs/generated/docs-index.harness-lab.json +9 -9
- package/src/components/docs/generated/docs-index.health.json +97 -97
- package/src/components/docs/generated/docs-index.identity-rbac.json +313 -313
- package/src/components/docs/generated/docs-index.in-app-docs.json +9 -9
- package/src/components/docs/generated/docs-index.integration-hub.json +265 -265
- package/src/components/docs/generated/docs-index.integration-posthog.json +9 -9
- package/src/components/docs/generated/docs-index.integration-stripe.json +9 -9
- package/src/components/docs/generated/docs-index.integration-supabase.json +9 -9
- package/src/components/docs/generated/docs-index.jobs.json +137 -137
- package/src/components/docs/generated/docs-index.kb-update-pipeline.json +129 -129
- package/src/components/docs/generated/docs-index.knowledge-canon.json +9 -9
- package/src/components/docs/generated/docs-index.learning-journey-ambient-coach.json +9 -9
- package/src/components/docs/generated/docs-index.learning-journey-crm-onboarding.json +49 -49
- package/src/components/docs/generated/docs-index.learning-journey-duo-drills.json +9 -9
- package/src/components/docs/generated/docs-index.learning-journey-platform-tour.json +49 -49
- package/src/components/docs/generated/docs-index.learning-journey-quest-challenges.json +9 -9
- package/src/components/docs/generated/docs-index.learning-journey-registry.json +33 -33
- package/src/components/docs/generated/docs-index.learning-journey-studio-onboarding.json +49 -49
- package/src/components/docs/generated/docs-index.learning-journey-ui-coaching.json +9 -9
- package/src/components/docs/generated/docs-index.learning-journey-ui-gamified.json +9 -9
- package/src/components/docs/generated/docs-index.learning-journey-ui-onboarding.json +9 -9
- package/src/components/docs/generated/docs-index.learning-journey-ui-shared.json +9 -9
- package/src/components/docs/generated/docs-index.learning-journey.json +241 -241
- package/src/components/docs/generated/docs-index.learning-patterns.json +9 -9
- package/src/components/docs/generated/docs-index.lifecycle-cli.json +9 -9
- package/src/components/docs/generated/docs-index.lifecycle-dashboard.json +9 -9
- package/src/components/docs/generated/docs-index.locale-jurisdiction-gate.json +65 -65
- package/src/components/docs/generated/docs-index.marketplace.json +337 -337
- package/src/components/docs/generated/docs-index.meeting-recorder-providers.json +9 -9
- package/src/components/docs/generated/docs-index.meeting-recorder.json +49 -49
- package/src/components/docs/generated/docs-index.messaging-agent-actions.json +17 -17
- package/src/components/docs/generated/docs-index.metrics.json +201 -201
- package/src/components/docs/generated/docs-index.minimal.json +17 -17
- package/src/components/docs/generated/docs-index.mobile-demo-landing.json +41 -41
- package/src/components/docs/generated/docs-index.notifications.json +65 -65
- package/src/components/docs/generated/docs-index.openbanking-powens.json +9 -9
- package/src/components/docs/generated/docs-index.openbanking.json +65 -65
- package/src/components/docs/generated/docs-index.opencode-cli.json +17 -17
- package/src/components/docs/generated/docs-index.personalization.json +9 -9
- package/src/components/docs/generated/docs-index.platform-acp.json +137 -137
- package/src/components/docs/generated/docs-index.platform-agent.json +201 -201
- package/src/components/docs/generated/docs-index.platform-context.json +121 -121
- package/src/components/docs/generated/docs-index.platform-control-plane.json +321 -321
- package/src/components/docs/generated/docs-index.platform-database.json +89 -89
- package/src/components/docs/generated/docs-index.platform-docs.json +161 -161
- package/src/components/docs/generated/docs-index.platform-harness.json +177 -177
- package/src/components/docs/generated/docs-index.platform-integrations.json +329 -329
- package/src/components/docs/generated/docs-index.platform-knowledge.json +57 -57
- package/src/components/docs/generated/docs-index.platform-provider-ranking.json +217 -217
- package/src/components/docs/generated/docs-index.pocket-family-office.json +129 -129
- package/src/components/docs/generated/docs-index.policy-safe-knowledge-assistant.json +9 -9
- package/src/components/docs/generated/docs-index.product-intent.json +9 -9
- package/src/components/docs/generated/docs-index.project-management-sync.json +9 -9
- package/src/components/docs/generated/docs-index.saas-boilerplate.json +209 -209
- package/src/components/docs/generated/docs-index.service-business-os.json +193 -193
- package/src/components/docs/generated/docs-index.team-hub.json +185 -185
- package/src/components/docs/generated/docs-index.unknown.json +521 -521
- package/src/components/docs/generated/docs-index.versioned-knowledge-base.json +81 -81
- package/src/components/docs/generated/docs-index.video-api-showcase.json +33 -33
- package/src/components/docs/generated/docs-index.video-docs-terminal.json +9 -9
- package/src/components/docs/generated/docs-index.video-marketing-clip.json +9 -9
- package/src/components/docs/generated/docs-index.visualization-showcase.json +17 -17
- package/src/components/docs/generated/docs-index.voice-providers.json +9 -9
- package/src/components/docs/generated/docs-index.wealth-snapshot.json +153 -153
- package/src/components/docs/generated/docs-index.workflow-system.json +433 -433
- package/src/components/docs/generated/docs-index.workspace-cli.json +9 -9
- package/src/components/docs/guides/GuideContractDrivenFormsPage.content.ts +98 -0
- package/src/components/docs/guides/GuideContractDrivenFormsPage.tsx +143 -0
- package/src/components/docs/guides/GuideSpecValidationTypingPage.tsx +2 -2
- package/src/components/docs/guides/GuidesIndexPage.tsx +7 -0
- package/src/components/docs/guides/guides.docblocks.ts +12 -0
- package/src/components/docs/guides/index.ts +1 -0
- package/src/libs/posthog/client.ts +11 -9
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,90 @@
|
|
|
1
1
|
# @contractspec/bundle.library
|
|
2
2
|
|
|
3
|
+
## 3.9.7
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- Make the form-only showcase previewable from the templates catalog and restore sandbox routing for non-inline template previews.
|
|
8
|
+
- Packages: @contractspec/example.form-showcase (minor), @contractspec/module.examples (patch), @contractspec/bundle.marketing (patch), @contractspec/bundle.library (patch), @contractspec/app.web-landing (patch)
|
|
9
|
+
- Add a form-only example template and public docs links for ContractSpec form adoption.
|
|
10
|
+
- Packages: @contractspec/example.form-showcase (minor), @contractspec/module.examples (patch), @contractspec/bundle.library (patch), @contractspec/app.web-landing (patch)
|
|
11
|
+
- Updated dependencies because of chore: auto-bump internal dependents
|
|
12
|
+
- Updated dependencies because of Remove avoidable Node crypto imports from ContractSpec runtime surfaces and keep signing helpers isolated.
|
|
13
|
+
- Updated dependencies because of Add grouped option support to design-system Select controls across web and native.
|
|
14
|
+
- Updated dependencies because of Make the form-only showcase previewable from the templates catalog and restore sandbox routing for non-inline template previews.
|
|
15
|
+
- Updated dependencies because of Add a form-only example template and public docs links for ContractSpec form adoption.
|
|
16
|
+
- Updated dependencies because of Improve FormSpec autocomplete rendering and resolver-backed search.
|
|
17
|
+
- Updated dependencies because of Keep web FormSpec datetime controls inside their responsive form columns.
|
|
18
|
+
- Updated dependencies because of Add first-class FormSpec email fields with native renderer affordances.
|
|
19
|
+
- Updated dependencies because of Preserve FormSpec email input behavior when optional renderer metadata is omitted.
|
|
20
|
+
- Updated dependencies because of Add ThemeSpec Tailwind aliases for FormSpec option surface backgrounds.
|
|
21
|
+
- Updated dependencies because of Fix FormSpec password visibility toggles so rendered password fields can reveal and re-mask values.
|
|
22
|
+
- Updated dependencies because of Add progressive FormSpec section and step layout metadata with shared React and design-system rendering support.
|
|
23
|
+
- Updated dependencies because of Forward refs through the web Button primitive and its slotted rendering path to stabilize Radix `asChild` triggers.
|
|
24
|
+
- @contractspec/bundle.workspace@4.5.5
|
|
25
|
+
- @contractspec/example.data-grid-showcase@3.8.19
|
|
26
|
+
- @contractspec/lib.ai-providers@3.7.18
|
|
27
|
+
- @contractspec/lib.content-gen@3.7.25
|
|
28
|
+
- @contractspec/lib.contracts-integrations@3.8.17
|
|
29
|
+
- @contractspec/lib.contracts-library@3.7.25
|
|
30
|
+
- @contractspec/lib.contracts-runtime-server-graphql@3.8.4
|
|
31
|
+
- @contractspec/lib.contracts-runtime-server-mcp@3.8.5
|
|
32
|
+
- @contractspec/lib.contracts-runtime-server-rest@3.8.4
|
|
33
|
+
- @contractspec/lib.example-shared-ui@7.0.4
|
|
34
|
+
- @contractspec/lib.knowledge@3.8.1
|
|
35
|
+
- @contractspec/lib.logger@3.7.18
|
|
36
|
+
- @contractspec/lib.provider-ranking@0.7.18
|
|
37
|
+
- @contractspec/lib.runtime-sandbox@3.0.4
|
|
38
|
+
- @contractspec/lib.surface-runtime@0.5.25
|
|
39
|
+
- @contractspec/lib.ui-link@3.7.20
|
|
40
|
+
- @contractspec/module.context-storage@0.7.24
|
|
41
|
+
- @contractspec/lib.contracts-spec@6.0.0
|
|
42
|
+
- @contractspec/lib.design-system@4.2.0
|
|
43
|
+
- @contractspec/module.examples@4.0.4
|
|
44
|
+
- @contractspec/lib.contracts-runtime-client-react@3.12.0
|
|
45
|
+
- @contractspec/lib.ui-kit-web@3.13.0
|
|
46
|
+
|
|
47
|
+
## 3.9.6
|
|
48
|
+
|
|
49
|
+
### Patch Changes
|
|
50
|
+
|
|
51
|
+
- chore: auto-bump internal dependents
|
|
52
|
+
- Updated dependencies because of chore: auto-bump internal dependents
|
|
53
|
+
- Updated dependencies because of Add Biome guardrails that keep JSX layout and text compatible with React and React Native.
|
|
54
|
+
- Updated dependencies because of Add mobile-safe FormSpec layout helpers and scoped DataView filters.
|
|
55
|
+
|
|
56
|
+
FormSpec authors can now use `responsiveFormColumns(...)` for explicit mobile-first column metadata without changing legacy numeric `layout.columns` behavior. DataView contracts can declare `filterScope.initial` and `filterScope.locked` filters so generic list/search contracts can be reused in context-restricted screens while keeping locked constraints out of user-editable URL state.
|
|
57
|
+
|
|
58
|
+
- Updated dependencies because of Add OSS harness CLI verification with deterministic Playwright, optional agent-browser visual runs, auth profile refs, visual diff evidence, replay bundles, and core scenario success semantics.
|
|
59
|
+
- Updated dependencies because of Complete the knowledge OSS surface with stricter guardrails and an easier runtime path.
|
|
60
|
+
|
|
61
|
+
`@contractspec/lib.knowledge` now exposes a higher-level `KnowledgeRuntime` helper for the common ingest -> retrieve -> answer flow, adds per-query overrides on `KnowledgeQueryService`, and makes typed retrieval filters (`locale`, `category`) real rather than documentation-only. The access guard now enforces `automationWritable` and denies missing workflow/agent bindings when scoped allow-lists exist, which aligns runtime behavior with the contracts-spec knowledge semantics. The package also gains deeper regression coverage over previously untested public primitives.
|
|
62
|
+
|
|
63
|
+
`@contractspec/example.knowledge-canon` now demonstrates a real `lib.knowledge` retrieval path instead of a placeholder TODO, so OSS consumers have a concrete example package they can reuse.
|
|
64
|
+
|
|
65
|
+
- @contractspec/bundle.workspace@4.5.4
|
|
66
|
+
- @contractspec/example.data-grid-showcase@3.8.18
|
|
67
|
+
- @contractspec/lib.ai-providers@3.7.17
|
|
68
|
+
- @contractspec/lib.content-gen@3.7.24
|
|
69
|
+
- @contractspec/lib.contracts-integrations@3.8.16
|
|
70
|
+
- @contractspec/lib.contracts-library@3.7.24
|
|
71
|
+
- @contractspec/lib.contracts-runtime-server-graphql@3.8.3
|
|
72
|
+
- @contractspec/lib.contracts-runtime-server-mcp@3.8.4
|
|
73
|
+
- @contractspec/lib.contracts-runtime-server-rest@3.8.3
|
|
74
|
+
- @contractspec/lib.example-shared-ui@7.0.3
|
|
75
|
+
- @contractspec/lib.logger@3.7.17
|
|
76
|
+
- @contractspec/lib.provider-ranking@0.7.17
|
|
77
|
+
- @contractspec/lib.runtime-sandbox@3.0.3
|
|
78
|
+
- @contractspec/lib.surface-runtime@0.5.24
|
|
79
|
+
- @contractspec/lib.ui-link@3.7.19
|
|
80
|
+
- @contractspec/module.context-storage@0.7.23
|
|
81
|
+
- @contractspec/module.examples@4.0.3
|
|
82
|
+
- @contractspec/lib.ui-kit-web@3.12.1
|
|
83
|
+
- @contractspec/lib.design-system@4.1.0
|
|
84
|
+
- @contractspec/lib.contracts-spec@5.7.0
|
|
85
|
+
- @contractspec/lib.contracts-runtime-client-react@3.11.1
|
|
86
|
+
- @contractspec/lib.knowledge@3.8.0
|
|
87
|
+
|
|
3
88
|
## 3.9.5
|
|
4
89
|
|
|
5
90
|
### Patch Changes
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
// @bun
|
|
2
|
-
var m=Object.defineProperty;var h=(i)=>i;function f(i,o){this[i]=h.bind(null,o)}var S=(i,o)=>{for(var t in o)m(i,t,{get:o[t],enumerable:!0,configurable:!0,set:f.bind(o,t)})};var M=(i,o)=>()=>(i&&(o=i(i=0)),o);var c=[{key:"start",title:"Start",description:"Install ContractSpec, wire a first contract, and adopt it into an existing codebase."},{key:"core-model",title:"Core Model",description:"Learn how contracts, generated surfaces, policies, overlays, and safe regeneration fit together."},{key:"build",title:"Build",description:"Use practical guides, libraries, architecture patterns, and examples to ship real surfaces."},{key:"operate",title:"Operate",description:"Run the system safely with governance, auditability, tracing, and operator-grade controls."},{key:"integrations",title:"Integrations",description:"Connect models, messaging, storage, payments, search, and external systems through typed bindings."},{key:"reference",title:"Reference",description:"Search generated contract docs, inspect example packages, and navigate the system as source of truth."},{key:"studio",title:"Studio",description:"Understand what Studio adds on top of the open system and when to adopt it."}],n=[{href:"/docs",title:"Documentation",description:"OSS-first documentation for ContractSpec, the open spec system for AI-native software.",audience:"oss",ctaMode:"oss-next"},{href:"/docs/getting-started/start-here",title:"Start here",description:"The fastest path from install to your first contract and generated surface.",section:"start",order:10,primaryNav:!0,audience:"oss",ctaMode:"oss-next"},{href:"/docs/getting-started/installation",title:"Installation",description:"Install the CLI and core packages, then prepare a workspace for incremental adoption.",section:"start",order:20,primaryNav:!0,audience:"oss",ctaMode:"oss-next"},{href:"/docs/getting-started/hello-world",title:"Hello world",description:"Define a first operation, generate the surface, and verify the end-to-end loop.",section:"start",order:30,primaryNav:!0,audience:"oss",ctaMode:"oss-next"},{href:"/docs/getting-started/compatibility",title:"Compatibility",description:"Check the supported runtimes, package managers, and adoption assumptions before rollout.",section:"start",order:40,primaryNav:!0,audience:"oss",ctaMode:"oss-next"},{href:"/docs/getting-started/tools",title:"Developer tools",description:"Use the CLI, editors, and helper tooling that make the OSS workflow practical day to day.",section:"start",order:50,primaryNav:!0,audience:"oss",ctaMode:"oss-next"},{href:"/docs/getting-started/troubleshooting",title:"Troubleshooting",description:"Resolve the common installation, validation, and runtime mistakes you hit during first adoption.",section:"start",order:60,primaryNav:!0,audience:"oss",ctaMode:"oss-next"},{href:"/docs/specs",title:"Contracts and specs",description:"Understand the spec model that drives generated surfaces, validation, policy, and safe regeneration.",section:"core-model",order:10,primaryNav:!0,audience:"oss",ctaMode:"oss-next"},{href:"/docs/specs/capabilities",title:"Capabilities",description:"Model commands, queries, presentations, and events as explicit contract surfaces.",section:"core-model",order:20,primaryNav:!0,audience:"oss",ctaMode:"oss-next"},{href:"/docs/specs/dataviews",title:"Data views",description:"Define queryable, presentable views that stay aligned with the rest of the system.",section:"core-model",order:30,primaryNav:!0,audience:"oss",ctaMode:"oss-next"},{href:"/docs/specs/workflows",title:"Workflows",description:"Compose multi-step behavior from typed contracts, policies, and runtime orchestration.",section:"core-model",order:40,primaryNav:!0,audience:"oss",ctaMode:"oss-next"},{href:"/docs/specs/policy",title:"Policy",description:"Apply consistent governance, access rules, and risk controls across every surface.",section:"core-model",order:50,primaryNav:!0,audience:"operator",ctaMode:"oss-next"},{href:"/docs/specs/overlays",title:"Overlays",description:"Customize generated surfaces safely without forking the system or breaking regeneration.",section:"core-model",order:60,primaryNav:!0,audience:"oss",ctaMode:"oss-next"},{href:"/docs/specs/module-bundles",title:"Module bundles",description:"Define AI-native surfaces as typed bundle specs that resolve into personalized, auditable runtime plans.",section:"core-model",order:70,primaryNav:!0,audience:"oss",ctaMode:"oss-next"},{href:"/docs/specs/connect",title:"ContractSpec Connect",description:"Guard coding-agent edits and shell actions with task-scoped context, plan packets, patch verdicts, and review packets.",section:"core-model",order:80,navTitle:"Connect",primaryNav:!0,audience:"operator",ctaMode:"oss-next"},{href:"/docs/specs/builder-control-plane",title:"Builder control plane",description:"Route multimodal authoring work through governed builder contracts, provider policies, readiness gates, and mobile review flows.",section:"core-model",order:90,primaryNav:!0,audience:"studio-bridge",ctaMode:"studio-bridge"},{href:"/docs/guides/contract-types",title:"Contract types",description:"Choose the right contract surface for the behavior you want to make explicit.",section:"core-model",order:100,primaryNav:!0,audience:"oss",ctaMode:"oss-next"},{href:"/docs/guides",title:"Guides",description:"Follow concrete adoption paths for existing apps, generated docs, CI gating, and typed surfaces.",section:"build",order:10,primaryNav:!0,audience:"oss",ctaMode:"oss-next"},{href:"/docs/guides/nextjs-one-endpoint",title:"Adopt one endpoint in Next.js",description:"Start with one endpoint, one contract, and one generated surface in an existing Next.js app.",section:"build",order:20,navTitle:"Next.js endpoint",primaryNav:!0,audience:"oss",ctaMode:"oss-next"},{href:"/docs/guides/import-existing-codebases",title:"Import an existing codebase",description:"Stabilize a live codebase incrementally instead of rewriting it from scratch.",section:"build",order:30,navTitle:"Import existing code",primaryNav:!0,audience:"oss",ctaMode:"oss-next"},{href:"/docs/guides/spec-validation-and-typing",title:"Validation and typing",description:"Keep runtime validation and TypeScript types aligned from the same source definitions.",section:"build",order:40,navTitle:"Validation and typing",primaryNav:!0,audience:"oss",ctaMode:"oss-next"},{href:"/docs/guides/generate-docs-clients-schemas",title:"Generate docs, clients, and schemas",description:"Export stable docs and client-facing artifacts from the same contract layer.",section:"build",order:50,navTitle:"Generate docs and clients",primaryNav:!0,audience:"oss",ctaMode:"reference"},{href:"/docs/guides/docs-generation-pipeline",title:"Docs generation pipeline",description:"Feed generated docs into the public docs site without breaking source-of-truth ownership.",section:"build",order:60,navTitle:"Docs pipeline",primaryNav:!0,audience:"oss",ctaMode:"reference"},{href:"/docs/guides/first-module-bundle",title:"Build a first module bundle",description:"Define one bundle spec, resolve a personalized surface plan, and render it through the React host layer.",section:"build",order:65,navTitle:"First module bundle",primaryNav:!0,audience:"oss",ctaMode:"oss-next"},{href:"/docs/guides/host-builder-workbench",title:"Host the Builder workbench",description:"Load a Builder workspace snapshot, wire common commands, and keep runtime mode plus mobile review flows explicit.",section:"build",order:66,navTitle:"Host Builder workbench",primaryNav:!0,audience:"studio-bridge",ctaMode:"studio-bridge"},{href:"/docs/guides/connect-in-a-repo",title:"Use Connect in a repo",description:"Enable Connect in workspace config, verify agent actions, and inspect local review and replay artifacts.",section:"build",order:67,navTitle:"Connect in a repo",primaryNav:!0,audience:"operator",ctaMode:"oss-next"},{href:"/docs/libraries",title:"Libraries overview",description:"Navigate the core libraries, runtimes, and system packages that make up the open foundation.",section:"build",order:70,primaryNav:!0,audience:"oss",ctaMode:"oss-next"},{href:"/docs/libraries/cross-platform-ui",title:"Cross-platform UI",description:"Understand how the presentation runtimes, ui-kit-web, ui-kit, and design-system stay aligned across React and React Native.",section:"build",order:71,audience:"oss",ctaMode:"oss-next"},{href:"/docs/architecture",title:"Architecture",description:"See how the spec layer, runtimes, integrations, and multi-surface outputs fit together.",section:"build",order:80,primaryNav:!0,audience:"oss",ctaMode:"oss-next"},{href:"/docs/safety",title:"Operate safely",description:"Add auditability, migrations, policy controls, and trustworthy release behavior from the start.",section:"operate",order:10,navTitle:"Safety overview",primaryNav:!0,audience:"operator",ctaMode:"oss-next"},{href:"/docs/guides/ci-contract-diff-gating",title:"CI diff gating",description:"Use deterministic checks to block drift and risky changes before they reach production.",section:"operate",order:20,primaryNav:!0,audience:"operator",ctaMode:"oss-next"},{href:"/docs/guides/release-capsules",title:"Author release capsules",description:"Pair changesets with structured release capsules, generate release artifacts, and keep changelog plus docs surfaces aligned.",section:"operate",order:25,navTitle:"Release capsules",primaryNav:!0,audience:"operator",ctaMode:"reference"},{href:"/docs/safety/security-trust",title:"Security and trust",description:"Understand the trust model, artifact validation expectations, and operational boundaries.",section:"operate",order:30,primaryNav:!0,audience:"operator",ctaMode:"oss-next"},{href:"/docs/safety/auditing",title:"Audit trails",description:"Track changes, policy decisions, and operational actions with a clear evidence trail.",section:"operate",order:40,primaryNav:!0,audience:"operator",ctaMode:"oss-next"},{href:"/docs/safety/migrations",title:"Migrations",description:"Evolve schemas and data safely without abandoning the contract layer.",section:"operate",order:50,primaryNav:!0,audience:"operator",ctaMode:"oss-next"},{href:"/docs/safety/tenant-isolation",title:"Tenant isolation",description:"Keep tenant data, config, policies, and integrations separated at runtime.",section:"operate",order:60,primaryNav:!0,audience:"operator",ctaMode:"oss-next"},{href:"/docs/knowledge",title:"Knowledge and context",description:"Bind trusted knowledge sources to the system without losing governance or isolation.",section:"operate",order:70,primaryNav:!0,audience:"operator",ctaMode:"oss-next"},{href:"/docs/advanced/telemetry",title:"Telemetry",description:"Instrument surfaces, collect evidence, and keep observability aligned with the contract model.",section:"operate",order:80,primaryNav:!0,audience:"operator",ctaMode:"oss-next"},{href:"/docs/advanced/workflow-monitoring",title:"Workflow monitoring",description:"Observe multi-step execution with enough context to understand failures and regressions.",section:"operate",order:90,primaryNav:!0,audience:"operator",ctaMode:"oss-next"},{href:"/docs/ops/distributed-tracing",title:"Distributed tracing",description:"Trace contract execution across integrations, workflows, and generated surfaces.",section:"operate",order:100,primaryNav:!0,audience:"operator",ctaMode:"oss-next"},{href:"/docs/integrations",title:"Integrations overview",description:"Understand the binding model for external services, providers, and tenant-owned connections.",section:"integrations",order:10,primaryNav:!0,audience:"oss",ctaMode:"oss-next"},{href:"/docs/integrations/spec-model",title:"Integration spec model",description:"Define what an integration provides before wiring it into an app or runtime.",section:"integrations",order:20,primaryNav:!0,audience:"oss",ctaMode:"oss-next"},{href:"/docs/integrations/openai",title:"OpenAI integration",description:"Connect OpenAI through typed capabilities, explicit provider config, and governed runtime usage.",section:"integrations",order:30,primaryNav:!0,audience:"oss",ctaMode:"oss-next"},{href:"/docs/integrations/mistral",title:"Mistral integration",description:"Use Mistral through the same provider contract model and runtime guardrails.",section:"integrations",order:40,primaryNav:!0,audience:"oss",ctaMode:"oss-next"},{href:"/docs/integrations/qdrant",title:"Qdrant integration",description:"Store and retrieve knowledge embeddings with explicit provider configuration and ownership.",section:"integrations",order:50,primaryNav:!0,audience:"operator",ctaMode:"oss-next"},{href:"/docs/integrations/stripe",title:"Stripe integration",description:"Bind payments and billing behavior without smearing provider logic across the codebase.",section:"integrations",order:60,primaryNav:!0,audience:"oss",ctaMode:"oss-next"},{href:"/docs/integrations/twilio",title:"Twilio integration",description:"Handle messaging and telephony through typed transport boundaries and explicit configuration.",section:"integrations",order:70,primaryNav:!0,audience:"oss",ctaMode:"oss-next"},{href:"/docs/integrations/github",title:"GitHub integration",description:"Push execution context into GitHub workflows and automation surfaces without hidden glue.",section:"integrations",order:80,primaryNav:!0,audience:"oss",ctaMode:"oss-next"},{href:"/docs/reference",title:"Contract reference",description:"Browse the generated reference index for public contract surfaces, versions, and examples.",section:"reference",order:10,primaryNav:!0,audience:"reference",ctaMode:"reference"},{href:"/docs/examples",title:"Examples",description:"Explore runnable examples and use them as reference implementations for new systems.",section:"reference",order:20,primaryNav:!0,audience:"reference",ctaMode:"reference"},{href:"/docs/studio",title:"Studio overview",description:"See what Studio adds on top of OSS ContractSpec and when a team should adopt the operating layer.",section:"studio",order:10,primaryNav:!0,audience:"studio-bridge",ctaMode:"studio-bridge"},{href:"/docs/manifesto",title:"Manifesto",description:"Why ContractSpec is built as an open system, how incremental adoption works, and why Studio stays additive.",audience:"secondary"},{href:"/docs/intent/contract-first-api",title:"Contract-first API",description:"Use contracts as the durable source of truth for API behavior and generated surfaces.",audience:"secondary"},{href:"/docs/intent/spec-driven-development",title:"Spec-driven development",description:"See how explicit specs stabilize change across APIs, UI, data, and agent-facing surfaces.",audience:"secondary"},{href:"/docs/intent/deterministic-codegen",title:"Deterministic regeneration",description:"Understand safe regeneration, conflict boundaries, and why teams keep control of the output.",audience:"secondary"},{href:"/docs/intent/schema-validation-typescript",title:"Schema validation and TypeScript",description:"Keep schema, runtime validation, and TypeScript behavior aligned without duplicate work.",audience:"secondary"},{href:"/docs/intent/openapi-alternative",title:"OpenAPI alternative",description:"Compare a multi-surface contract system with API-only description tooling.",audience:"secondary"},{href:"/docs/intent/generate-client-from-schema",title:"Generate client from schema",description:"Generate client-facing artifacts from the same source that drives runtime behavior.",audience:"secondary"},{href:"/docs/comparison",title:"Comparison overview",description:"Compare ContractSpec with workflow engines, internal-tool builders, and enterprise orchestration products.",audience:"secondary"},{href:"/docs/comparison/workflow-engines",title:"Workflow engines",description:"Contrast a contract system with workflow-only orchestration approaches.",audience:"secondary"},{href:"/docs/comparison/internal-tool-builders",title:"Internal-tool builders",description:"Compare ContractSpec with builders that optimize for screens instead of durable system contracts.",audience:"secondary"},{href:"/docs/comparison/automation-platforms",title:"Automation platforms",description:"Compare automation-first tools with a system that owns explicit contracts and generated surfaces.",audience:"secondary"},{href:"/docs/comparison/windmill",title:"Windmill comparison",description:"Understand where Windmill fits and where ContractSpec solves a different class of system problem.",audience:"secondary"},{href:"/docs/comparison/enterprise-platforms",title:"Enterprise orchestrators",description:"Compare ContractSpec with enterprise platforms that centralize execution in a closed operating surface.",audience:"secondary"},{href:"/docs/ecosystem/templates",title:"Templates",description:"Use templates and starter systems as proof points and accelerators for OSS adoption.",audience:"secondary"},{href:"/docs/ecosystem/plugins",title:"Plugins",description:"Explore marketplace and editor integrations that support the OSS workflow.",audience:"secondary"},{href:"/docs/ecosystem/registry",title:"Registry",description:"Inspect registry and manifest concepts that help package reusable capability surfaces.",audience:"secondary"}];function I(i){return n.find((o)=>o.href===i)}function g(){return c.map((i)=>({...i,items:n.filter((o)=>o.section===i.key&&o.primaryNav).sort((o,t)=>(o.order??0)-(t.order??0))}))}function y(){return n.filter((i)=>i.primaryNav).sort((i,o)=>c.findIndex((t)=>t.key===i.section)-c.findIndex((t)=>t.key===o.section)||(i.order??0)-(o.order??0))}function D(i){let o=y(),t=o.findIndex((a)=>a.href===i);if(t<0)return{previous:null,next:null};return{previous:o[t-1]??null,next:o[t+1]??null}}function l(){return n.filter((i)=>i.audience==="secondary")}function p(){return g().map((i)=>({...i,featured:i.items.slice(0,3)}))}import{CodeBlock as v}from"@contractspec/lib.design-system";import s from"@contractspec/lib.ui-link";import{ArrowRight as d,Boxes as u,FileSearch as b,ShieldCheck as w,Waypoints as N}from"lucide-react";import{jsx as e,jsxs as r}from"react/jsx-runtime";var k=[{title:"One system, many surfaces",body:"Define explicit contracts once, then keep APIs, UI, data, events, and agent-facing surfaces aligned.",icon:u},{title:"Incremental adoption",body:"Start with one endpoint, one workflow, or one unsafe module. You do not need a rewrite to begin.",icon:N},{title:"Operator-grade controls",body:"Carry policy, auditability, migrations, tracing, and integration boundaries forward with the same system model.",icon:w}],x=[{title:"ContractSpec Connect",body:"Guard coding-agent edits and commands with local-first context, plan packets, patch verdicts, and review packets.",specHref:"/docs/specs/connect",guideHref:"/docs/guides/connect-in-a-repo"},{title:"Module bundles",body:"Define AI-native surfaces as typed bundle specs that resolve into auditable runtime plans.",specHref:"/docs/specs/module-bundles",guideHref:"/docs/guides/first-module-bundle"},{title:"Builder control plane",body:"Coordinate multimodal authoring, provider routing, readiness, export, and mobile review through governed contracts.",specHref:"/docs/specs/builder-control-plane",guideHref:"/docs/guides/host-builder-workbench"}];function H(){let i=p(),o=l().slice(0,6);return r("div",{className:"space-y-12",children:[r("section",{className:"space-y-6",children:[e("p",{className:"editorial-kicker",children:"OSS documentation"}),e("h1",{className:"editorial-title max-w-5xl",children:"Build AI-native systems on explicit contracts, then add Studio when you want the operating layer."}),e("p",{className:"editorial-subtitle",children:"These docs are optimized for OSS adopters first. Learn the contract model, generate and govern surfaces safely, wire integrations, and run the system in production without giving up ownership of your code."}),r("div",{className:"flex flex-wrap gap-3",children:[r(s,{href:"/docs/getting-started/start-here",className:"btn-primary text-sm",children:["Start with OSS ",e(d,{size:16})]}),e(s,{href:"/docs/studio",className:"btn-ghost text-sm",children:"See what Studio adds"})]})]}),e("section",{className:"grid gap-5 md:grid-cols-3",children:k.map((t)=>{let a=t.icon;return r("article",{className:"editorial-panel space-y-3",children:[r("div",{className:"flex items-center gap-3",children:[e("div",{className:"rounded-full border border-border/80 bg-background/85 p-2",children:e(a,{size:18})}),e("h2",{className:"font-semibold text-xl",children:t.title})]}),e("p",{className:"editorial-copy text-sm",children:t.body})]},t.title)})}),r("section",{className:"space-y-5",children:[r("div",{className:"space-y-2",children:[e("p",{className:"editorial-kicker",children:"Implemented packs"}),e("h2",{className:"editorial-panel-title",children:"Use the three higher-order systems that are already wired"}),e("p",{className:"editorial-copy text-sm",children:"These pages are the canonical landing points for agent enforcement, AI-native surface composition, and Builder authoring. Each one now has a matching practical guide."})]}),e("div",{className:"grid gap-4 lg:grid-cols-3",children:x.map((t)=>r("article",{className:"editorial-panel space-y-4",children:[r("div",{children:[e("h3",{className:"font-semibold text-xl",children:t.title}),e("p",{className:"mt-2 text-muted-foreground text-sm leading-7",children:t.body})]}),r("div",{className:"flex flex-wrap gap-3",children:[r(s,{href:t.specHref,className:"btn-primary text-sm",children:["Open spec page ",e(d,{size:16})]}),e(s,{href:t.guideHref,className:"btn-ghost text-sm",children:"Read practical guide"})]})]},t.title))})]}),r("section",{className:"editorial-panel space-y-5",children:[r("div",{className:"space-y-2",children:[e("p",{className:"editorial-kicker",children:"Quick start"}),e("h2",{className:"editorial-panel-title",children:"Start with one contract"}),e("p",{className:"editorial-copy text-sm",children:"Use the CLI and core libraries to define one explicit capability, generate the surface, and validate the contract boundary before you expand."})]}),e(v,{language:"bash",filename:"docs-quick-start",code:`bun add -D contractspec
|
|
2
|
+
var m=Object.defineProperty;var h=(i)=>i;function f(i,o){this[i]=h.bind(null,o)}var S=(i,o)=>{for(var t in o)m(i,t,{get:o[t],enumerable:!0,configurable:!0,set:f.bind(o,t)})};var M=(i,o)=>()=>(i&&(o=i(i=0)),o);var c=[{key:"start",title:"Start",description:"Install ContractSpec, wire a first contract, and adopt it into an existing codebase."},{key:"core-model",title:"Core Model",description:"Learn how contracts, generated surfaces, policies, overlays, and safe regeneration fit together."},{key:"build",title:"Build",description:"Use practical guides, libraries, architecture patterns, and examples to ship real surfaces."},{key:"operate",title:"Operate",description:"Run the system safely with governance, auditability, tracing, and operator-grade controls."},{key:"integrations",title:"Integrations",description:"Connect models, messaging, storage, payments, search, and external systems through typed bindings."},{key:"reference",title:"Reference",description:"Search generated contract docs, inspect example packages, and navigate the system as source of truth."},{key:"studio",title:"Studio",description:"Understand what Studio adds on top of the open system and when to adopt it."}],n=[{href:"/docs",title:"Documentation",description:"OSS-first documentation for ContractSpec, the open spec system for AI-native software.",audience:"oss",ctaMode:"oss-next"},{href:"/docs/getting-started/start-here",title:"Start here",description:"The fastest path from install to your first contract and generated surface.",section:"start",order:10,primaryNav:!0,audience:"oss",ctaMode:"oss-next"},{href:"/docs/getting-started/installation",title:"Installation",description:"Install the CLI and core packages, then prepare a workspace for incremental adoption.",section:"start",order:20,primaryNav:!0,audience:"oss",ctaMode:"oss-next"},{href:"/docs/getting-started/hello-world",title:"Hello world",description:"Define a first operation, generate the surface, and verify the end-to-end loop.",section:"start",order:30,primaryNav:!0,audience:"oss",ctaMode:"oss-next"},{href:"/docs/getting-started/compatibility",title:"Compatibility",description:"Check the supported runtimes, package managers, and adoption assumptions before rollout.",section:"start",order:40,primaryNav:!0,audience:"oss",ctaMode:"oss-next"},{href:"/docs/getting-started/tools",title:"Developer tools",description:"Use the CLI, editors, and helper tooling that make the OSS workflow practical day to day.",section:"start",order:50,primaryNav:!0,audience:"oss",ctaMode:"oss-next"},{href:"/docs/getting-started/troubleshooting",title:"Troubleshooting",description:"Resolve the common installation, validation, and runtime mistakes you hit during first adoption.",section:"start",order:60,primaryNav:!0,audience:"oss",ctaMode:"oss-next"},{href:"/docs/specs",title:"Contracts and specs",description:"Understand the spec model that drives generated surfaces, validation, policy, and safe regeneration.",section:"core-model",order:10,primaryNav:!0,audience:"oss",ctaMode:"oss-next"},{href:"/docs/specs/capabilities",title:"Capabilities",description:"Model commands, queries, presentations, and events as explicit contract surfaces.",section:"core-model",order:20,primaryNav:!0,audience:"oss",ctaMode:"oss-next"},{href:"/docs/specs/dataviews",title:"Data views",description:"Define queryable, presentable views that stay aligned with the rest of the system.",section:"core-model",order:30,primaryNav:!0,audience:"oss",ctaMode:"oss-next"},{href:"/docs/specs/workflows",title:"Workflows",description:"Compose multi-step behavior from typed contracts, policies, and runtime orchestration.",section:"core-model",order:40,primaryNav:!0,audience:"oss",ctaMode:"oss-next"},{href:"/docs/specs/policy",title:"Policy",description:"Apply consistent governance, access rules, and risk controls across every surface.",section:"core-model",order:50,primaryNav:!0,audience:"operator",ctaMode:"oss-next"},{href:"/docs/specs/overlays",title:"Overlays",description:"Customize generated surfaces safely without forking the system or breaking regeneration.",section:"core-model",order:60,primaryNav:!0,audience:"oss",ctaMode:"oss-next"},{href:"/docs/specs/module-bundles",title:"Module bundles",description:"Define AI-native surfaces as typed bundle specs that resolve into personalized, auditable runtime plans.",section:"core-model",order:70,primaryNav:!0,audience:"oss",ctaMode:"oss-next"},{href:"/docs/specs/connect",title:"ContractSpec Connect",description:"Guard coding-agent edits and shell actions with task-scoped context, plan packets, patch verdicts, and review packets.",section:"core-model",order:80,navTitle:"Connect",primaryNav:!0,audience:"operator",ctaMode:"oss-next"},{href:"/docs/specs/builder-control-plane",title:"Builder control plane",description:"Route multimodal authoring work through governed builder contracts, provider policies, readiness gates, and mobile review flows.",section:"core-model",order:90,primaryNav:!0,audience:"studio-bridge",ctaMode:"studio-bridge"},{href:"/docs/guides/contract-types",title:"Contract types",description:"Choose the right contract surface for the behavior you want to make explicit.",section:"core-model",order:100,primaryNav:!0,audience:"oss",ctaMode:"oss-next"},{href:"/docs/guides",title:"Guides",description:"Follow concrete adoption paths for existing apps, generated docs, CI gating, and typed surfaces.",section:"build",order:10,primaryNav:!0,audience:"oss",ctaMode:"oss-next"},{href:"/docs/guides/nextjs-one-endpoint",title:"Adopt one endpoint in Next.js",description:"Start with one endpoint, one contract, and one generated surface in an existing Next.js app.",section:"build",order:20,navTitle:"Next.js endpoint",primaryNav:!0,audience:"oss",ctaMode:"oss-next"},{href:"/docs/guides/import-existing-codebases",title:"Import an existing codebase",description:"Stabilize a live codebase incrementally instead of rewriting it from scratch.",section:"build",order:30,navTitle:"Import existing code",primaryNav:!0,audience:"oss",ctaMode:"oss-next"},{href:"/docs/guides/spec-validation-and-typing",title:"Validation and typing",description:"Keep runtime validation and TypeScript types aligned from the same source definitions.",section:"build",order:40,navTitle:"Validation and typing",primaryNav:!0,audience:"oss",ctaMode:"oss-next"},{href:"/docs/guides/contract-driven-forms",title:"Build a contract-driven form",description:"Define schema-backed form data, fields, layout, policy, and submit actions as one reusable ContractSpec surface.",section:"build",order:45,navTitle:"Contract-driven forms",primaryNav:!0,audience:"oss",ctaMode:"oss-next"},{href:"/docs/guides/generate-docs-clients-schemas",title:"Generate docs, clients, and schemas",description:"Export stable docs and client-facing artifacts from the same contract layer.",section:"build",order:50,navTitle:"Generate docs and clients",primaryNav:!0,audience:"oss",ctaMode:"reference"},{href:"/docs/guides/docs-generation-pipeline",title:"Docs generation pipeline",description:"Feed generated docs into the public docs site without breaking source-of-truth ownership.",section:"build",order:60,navTitle:"Docs pipeline",primaryNav:!0,audience:"oss",ctaMode:"reference"},{href:"/docs/guides/first-module-bundle",title:"Build a first module bundle",description:"Define one bundle spec, resolve a personalized surface plan, and render it through the React host layer.",section:"build",order:65,navTitle:"First module bundle",primaryNav:!0,audience:"oss",ctaMode:"oss-next"},{href:"/docs/guides/host-builder-workbench",title:"Host the Builder workbench",description:"Load a Builder workspace snapshot, wire common commands, and keep runtime mode plus mobile review flows explicit.",section:"build",order:66,navTitle:"Host Builder workbench",primaryNav:!0,audience:"studio-bridge",ctaMode:"studio-bridge"},{href:"/docs/guides/connect-in-a-repo",title:"Use Connect in a repo",description:"Enable Connect in workspace config, verify agent actions, and inspect local review and replay artifacts.",section:"build",order:67,navTitle:"Connect in a repo",primaryNav:!0,audience:"operator",ctaMode:"oss-next"},{href:"/docs/libraries",title:"Libraries overview",description:"Navigate the core libraries, runtimes, and system packages that make up the open foundation.",section:"build",order:70,primaryNav:!0,audience:"oss",ctaMode:"oss-next"},{href:"/docs/libraries/cross-platform-ui",title:"Cross-platform UI",description:"Understand how the presentation runtimes, ui-kit-web, ui-kit, and design-system stay aligned across React and React Native.",section:"build",order:71,audience:"oss",ctaMode:"oss-next"},{href:"/docs/architecture",title:"Architecture",description:"See how the spec layer, runtimes, integrations, and multi-surface outputs fit together.",section:"build",order:80,primaryNav:!0,audience:"oss",ctaMode:"oss-next"},{href:"/docs/safety",title:"Operate safely",description:"Add auditability, migrations, policy controls, and trustworthy release behavior from the start.",section:"operate",order:10,navTitle:"Safety overview",primaryNav:!0,audience:"operator",ctaMode:"oss-next"},{href:"/docs/guides/ci-contract-diff-gating",title:"CI diff gating",description:"Use deterministic checks to block drift and risky changes before they reach production.",section:"operate",order:20,primaryNav:!0,audience:"operator",ctaMode:"oss-next"},{href:"/docs/guides/release-capsules",title:"Author release capsules",description:"Pair changesets with structured release capsules, generate release artifacts, and keep changelog plus docs surfaces aligned.",section:"operate",order:25,navTitle:"Release capsules",primaryNav:!0,audience:"operator",ctaMode:"reference"},{href:"/docs/safety/security-trust",title:"Security and trust",description:"Understand the trust model, artifact validation expectations, and operational boundaries.",section:"operate",order:30,primaryNav:!0,audience:"operator",ctaMode:"oss-next"},{href:"/docs/safety/auditing",title:"Audit trails",description:"Track changes, policy decisions, and operational actions with a clear evidence trail.",section:"operate",order:40,primaryNav:!0,audience:"operator",ctaMode:"oss-next"},{href:"/docs/safety/migrations",title:"Migrations",description:"Evolve schemas and data safely without abandoning the contract layer.",section:"operate",order:50,primaryNav:!0,audience:"operator",ctaMode:"oss-next"},{href:"/docs/safety/tenant-isolation",title:"Tenant isolation",description:"Keep tenant data, config, policies, and integrations separated at runtime.",section:"operate",order:60,primaryNav:!0,audience:"operator",ctaMode:"oss-next"},{href:"/docs/knowledge",title:"Knowledge and context",description:"Bind trusted knowledge sources to the system without losing governance or isolation.",section:"operate",order:70,primaryNav:!0,audience:"operator",ctaMode:"oss-next"},{href:"/docs/advanced/telemetry",title:"Telemetry",description:"Instrument surfaces, collect evidence, and keep observability aligned with the contract model.",section:"operate",order:80,primaryNav:!0,audience:"operator",ctaMode:"oss-next"},{href:"/docs/advanced/workflow-monitoring",title:"Workflow monitoring",description:"Observe multi-step execution with enough context to understand failures and regressions.",section:"operate",order:90,primaryNav:!0,audience:"operator",ctaMode:"oss-next"},{href:"/docs/ops/distributed-tracing",title:"Distributed tracing",description:"Trace contract execution across integrations, workflows, and generated surfaces.",section:"operate",order:100,primaryNav:!0,audience:"operator",ctaMode:"oss-next"},{href:"/docs/integrations",title:"Integrations overview",description:"Understand the binding model for external services, providers, and tenant-owned connections.",section:"integrations",order:10,primaryNav:!0,audience:"oss",ctaMode:"oss-next"},{href:"/docs/integrations/spec-model",title:"Integration spec model",description:"Define what an integration provides before wiring it into an app or runtime.",section:"integrations",order:20,primaryNav:!0,audience:"oss",ctaMode:"oss-next"},{href:"/docs/integrations/openai",title:"OpenAI integration",description:"Connect OpenAI through typed capabilities, explicit provider config, and governed runtime usage.",section:"integrations",order:30,primaryNav:!0,audience:"oss",ctaMode:"oss-next"},{href:"/docs/integrations/mistral",title:"Mistral integration",description:"Use Mistral through the same provider contract model and runtime guardrails.",section:"integrations",order:40,primaryNav:!0,audience:"oss",ctaMode:"oss-next"},{href:"/docs/integrations/qdrant",title:"Qdrant integration",description:"Store and retrieve knowledge embeddings with explicit provider configuration and ownership.",section:"integrations",order:50,primaryNav:!0,audience:"operator",ctaMode:"oss-next"},{href:"/docs/integrations/stripe",title:"Stripe integration",description:"Bind payments and billing behavior without smearing provider logic across the codebase.",section:"integrations",order:60,primaryNav:!0,audience:"oss",ctaMode:"oss-next"},{href:"/docs/integrations/twilio",title:"Twilio integration",description:"Handle messaging and telephony through typed transport boundaries and explicit configuration.",section:"integrations",order:70,primaryNav:!0,audience:"oss",ctaMode:"oss-next"},{href:"/docs/integrations/github",title:"GitHub integration",description:"Push execution context into GitHub workflows and automation surfaces without hidden glue.",section:"integrations",order:80,primaryNav:!0,audience:"oss",ctaMode:"oss-next"},{href:"/docs/reference",title:"Contract reference",description:"Browse the generated reference index for public contract surfaces, versions, and examples.",section:"reference",order:10,primaryNav:!0,audience:"reference",ctaMode:"reference"},{href:"/docs/examples",title:"Examples",description:"Explore runnable examples and use them as reference implementations for new systems.",section:"reference",order:20,primaryNav:!0,audience:"reference",ctaMode:"reference"},{href:"/docs/studio",title:"Studio overview",description:"See what Studio adds on top of OSS ContractSpec and when a team should adopt the operating layer.",section:"studio",order:10,primaryNav:!0,audience:"studio-bridge",ctaMode:"studio-bridge"},{href:"/docs/manifesto",title:"Manifesto",description:"Why ContractSpec is built as an open system, how incremental adoption works, and why Studio stays additive.",audience:"secondary"},{href:"/docs/intent/contract-first-api",title:"Contract-first API",description:"Use contracts as the durable source of truth for API behavior and generated surfaces.",audience:"secondary"},{href:"/docs/intent/spec-driven-development",title:"Spec-driven development",description:"See how explicit specs stabilize change across APIs, UI, data, and agent-facing surfaces.",audience:"secondary"},{href:"/docs/intent/deterministic-codegen",title:"Deterministic regeneration",description:"Understand safe regeneration, conflict boundaries, and why teams keep control of the output.",audience:"secondary"},{href:"/docs/intent/schema-validation-typescript",title:"Schema validation and TypeScript",description:"Keep schema, runtime validation, and TypeScript behavior aligned without duplicate work.",audience:"secondary"},{href:"/docs/intent/openapi-alternative",title:"OpenAPI alternative",description:"Compare a multi-surface contract system with API-only description tooling.",audience:"secondary"},{href:"/docs/intent/generate-client-from-schema",title:"Generate client from schema",description:"Generate client-facing artifacts from the same source that drives runtime behavior.",audience:"secondary"},{href:"/docs/comparison",title:"Comparison overview",description:"Compare ContractSpec with workflow engines, internal-tool builders, and enterprise orchestration products.",audience:"secondary"},{href:"/docs/comparison/workflow-engines",title:"Workflow engines",description:"Contrast a contract system with workflow-only orchestration approaches.",audience:"secondary"},{href:"/docs/comparison/internal-tool-builders",title:"Internal-tool builders",description:"Compare ContractSpec with builders that optimize for screens instead of durable system contracts.",audience:"secondary"},{href:"/docs/comparison/automation-platforms",title:"Automation platforms",description:"Compare automation-first tools with a system that owns explicit contracts and generated surfaces.",audience:"secondary"},{href:"/docs/comparison/windmill",title:"Windmill comparison",description:"Understand where Windmill fits and where ContractSpec solves a different class of system problem.",audience:"secondary"},{href:"/docs/comparison/enterprise-platforms",title:"Enterprise orchestrators",description:"Compare ContractSpec with enterprise platforms that centralize execution in a closed operating surface.",audience:"secondary"},{href:"/docs/ecosystem/templates",title:"Templates",description:"Use templates and starter systems as proof points and accelerators for OSS adoption.",audience:"secondary"},{href:"/docs/ecosystem/plugins",title:"Plugins",description:"Explore marketplace and editor integrations that support the OSS workflow.",audience:"secondary"},{href:"/docs/ecosystem/registry",title:"Registry",description:"Inspect registry and manifest concepts that help package reusable capability surfaces.",audience:"secondary"}];function I(i){return n.find((o)=>o.href===i)}function g(){return c.map((i)=>({...i,items:n.filter((o)=>o.section===i.key&&o.primaryNav).sort((o,t)=>(o.order??0)-(t.order??0))}))}function y(){return n.filter((i)=>i.primaryNav).sort((i,o)=>c.findIndex((t)=>t.key===i.section)-c.findIndex((t)=>t.key===o.section)||(i.order??0)-(o.order??0))}function D(i){let o=y(),t=o.findIndex((a)=>a.href===i);if(t<0)return{previous:null,next:null};return{previous:o[t-1]??null,next:o[t+1]??null}}function l(){return n.filter((i)=>i.audience==="secondary")}function p(){return g().map((i)=>({...i,featured:i.items.slice(0,3)}))}import{CodeBlock as v}from"@contractspec/lib.design-system";import s from"@contractspec/lib.ui-link";import{ArrowRight as d,Boxes as u,FileSearch as b,ShieldCheck as w,Waypoints as N}from"lucide-react";import{jsx as e,jsxs as r}from"react/jsx-runtime";var k=[{title:"One system, many surfaces",body:"Define explicit contracts once, then keep APIs, UI, data, events, and agent-facing surfaces aligned.",icon:u},{title:"Incremental adoption",body:"Start with one endpoint, one workflow, or one unsafe module. You do not need a rewrite to begin.",icon:N},{title:"Operator-grade controls",body:"Carry policy, auditability, migrations, tracing, and integration boundaries forward with the same system model.",icon:w}],x=[{title:"ContractSpec Connect",body:"Guard coding-agent edits and commands with local-first context, plan packets, patch verdicts, and review packets.",specHref:"/docs/specs/connect",guideHref:"/docs/guides/connect-in-a-repo"},{title:"Module bundles",body:"Define AI-native surfaces as typed bundle specs that resolve into auditable runtime plans.",specHref:"/docs/specs/module-bundles",guideHref:"/docs/guides/first-module-bundle"},{title:"Builder control plane",body:"Coordinate multimodal authoring, provider routing, readiness, export, and mobile review through governed contracts.",specHref:"/docs/specs/builder-control-plane",guideHref:"/docs/guides/host-builder-workbench"}];function B(){let i=p(),o=l().slice(0,6);return r("div",{className:"space-y-12",children:[r("section",{className:"space-y-6",children:[e("p",{className:"editorial-kicker",children:"OSS documentation"}),e("h1",{className:"editorial-title max-w-5xl",children:"Build AI-native systems on explicit contracts, then add Studio when you want the operating layer."}),e("p",{className:"editorial-subtitle",children:"These docs are optimized for OSS adopters first. Learn the contract model, generate and govern surfaces safely, wire integrations, and run the system in production without giving up ownership of your code."}),r("div",{className:"flex flex-wrap gap-3",children:[r(s,{href:"/docs/getting-started/start-here",className:"btn-primary text-sm",children:["Start with OSS ",e(d,{size:16})]}),e(s,{href:"/docs/studio",className:"btn-ghost text-sm",children:"See what Studio adds"})]})]}),e("section",{className:"grid gap-5 md:grid-cols-3",children:k.map((t)=>{let a=t.icon;return r("article",{className:"editorial-panel space-y-3",children:[r("div",{className:"flex items-center gap-3",children:[e("div",{className:"rounded-full border border-border/80 bg-background/85 p-2",children:e(a,{size:18})}),e("h2",{className:"font-semibold text-xl",children:t.title})]}),e("p",{className:"editorial-copy text-sm",children:t.body})]},t.title)})}),r("section",{className:"space-y-5",children:[r("div",{className:"space-y-2",children:[e("p",{className:"editorial-kicker",children:"Implemented packs"}),e("h2",{className:"editorial-panel-title",children:"Use the three higher-order systems that are already wired"}),e("p",{className:"editorial-copy text-sm",children:"These pages are the canonical landing points for agent enforcement, AI-native surface composition, and Builder authoring. Each one now has a matching practical guide."})]}),e("div",{className:"grid gap-4 lg:grid-cols-3",children:x.map((t)=>r("article",{className:"editorial-panel space-y-4",children:[r("div",{children:[e("h3",{className:"font-semibold text-xl",children:t.title}),e("p",{className:"mt-2 text-muted-foreground text-sm leading-7",children:t.body})]}),r("div",{className:"flex flex-wrap gap-3",children:[r(s,{href:t.specHref,className:"btn-primary text-sm",children:["Open spec page ",e(d,{size:16})]}),e(s,{href:t.guideHref,className:"btn-ghost text-sm",children:"Read practical guide"})]})]},t.title))})]}),r("section",{className:"editorial-panel space-y-5",children:[r("div",{className:"space-y-2",children:[e("p",{className:"editorial-kicker",children:"Quick start"}),e("h2",{className:"editorial-panel-title",children:"Start with one contract"}),e("p",{className:"editorial-copy text-sm",children:"Use the CLI and core libraries to define one explicit capability, generate the surface, and validate the contract boundary before you expand."})]}),e(v,{language:"bash",filename:"docs-quick-start",code:`bun add -D contractspec
|
|
3
3
|
bun add @contractspec/lib.contracts-spec @contractspec/lib.schema
|
|
4
4
|
|
|
5
5
|
contractspec init
|
|
6
6
|
contractspec create --type operation
|
|
7
7
|
contractspec build src/contracts/mySpec.ts
|
|
8
|
-
contractspec validate src/contracts/mySpec.ts`})]}),r("section",{className:"space-y-5",children:[r("div",{className:"space-y-2",children:[e("p",{className:"editorial-kicker",children:"Primary path"}),e("h2",{className:"editorial-panel-title",children:"Move through the system in the right order"}),e("p",{className:"editorial-copy text-sm",children:"Start with onboarding, then learn the model, then build and operate with confidence. The primary docs path is intentionally shorter than the full route inventory."})]}),e("div",{className:"grid gap-5 lg:grid-cols-2",children:i.map((t)=>r("article",{className:"editorial-panel space-y-4",children:[r("div",{children:[e("p",{className:"editorial-kicker",children:t.title}),e("h3",{className:"mt-2 font-serif text-3xl tracking-[-0.03em]",children:t.title}),e("p",{className:"mt-3 text-muted-foreground text-sm leading-7",children:t.description})]}),e("div",{className:"space-y-3",children:t.featured.map((a)=>r(s,{href:a.href,className:"flex items-start justify-between gap-4 rounded-[22px] border border-border/70 bg-background/70 p-4 transition-colors hover:border-[color:rgb(162_79_42_/_0.45)]",children:[r("div",{children:[e("h4",{className:"font-semibold text-base",children:a.title}),e("p",{className:"mt-1 text-muted-foreground text-sm leading-6",children:a.description})]}),e(d,{className:"mt-1 shrink-0",size:16})]},a.href))})]},t.key))})]}),r("section",{className:"grid gap-5 lg:grid-cols-[1.2fr_0.8fr]",children:[r("article",{className:"editorial-panel space-y-4",children:[r("div",{className:"space-y-2",children:[e("p",{className:"editorial-kicker",children:"Reference and evidence"}),e("h2",{className:"editorial-panel-title",children:"Use generated docs and examples as proof, not just narrative copy"}),e("p",{className:"editorial-copy text-sm",children:"The reference index and example catalog stay close to the repo truth. Use them when you need exact public surfaces, not just the explanatory layer."})]}),r("div",{className:"grid gap-4 md:grid-cols-2",children:[r(s,{href:"/docs/reference",className:"docs-footer-link",children:[r("div",{className:"flex items-center gap-2 text-muted-foreground text-sm",children:[e(b,{size:16}),e("span",{children:"Reference index"})]}),e("p",{className:"text-muted-foreground text-sm",children:"Search generated contract docs, versions, tags, and visibility metadata."})]}),r(s,{href:"/docs/examples",className:"docs-footer-link",children:[r("div",{className:"flex items-center gap-2 text-muted-foreground text-sm",children:[e(u,{size:16}),e("span",{children:"Examples"})]}),e("p",{className:"text-muted-foreground text-sm",children:"Browse runnable examples and follow the reference routes back to their source artifacts."})]})]})]}),r("article",{className:"editorial-panel space-y-4",children:[r("div",{className:"space-y-2",children:[e("p",{className:"editorial-kicker",children:"Secondary reading"}),e("h2",{className:"editorial-panel-title",children:"Why ContractSpec"}),e("p",{className:"editorial-copy text-sm",children:"Positioning, comparisons, and philosophy remain available, but they no longer define the main docs path."})]}),e("div",{className:"flex flex-wrap gap-2",children:o.map((t)=>e(s,{href:t.href,className:"docs-chip-link",children:t.title},t.href))})]})]})]})}export{
|
|
8
|
+
contractspec validate src/contracts/mySpec.ts`})]}),r("section",{className:"space-y-5",children:[r("div",{className:"space-y-2",children:[e("p",{className:"editorial-kicker",children:"Primary path"}),e("h2",{className:"editorial-panel-title",children:"Move through the system in the right order"}),e("p",{className:"editorial-copy text-sm",children:"Start with onboarding, then learn the model, then build and operate with confidence. The primary docs path is intentionally shorter than the full route inventory."})]}),e("div",{className:"grid gap-5 lg:grid-cols-2",children:i.map((t)=>r("article",{className:"editorial-panel space-y-4",children:[r("div",{children:[e("p",{className:"editorial-kicker",children:t.title}),e("h3",{className:"mt-2 font-serif text-3xl tracking-[-0.03em]",children:t.title}),e("p",{className:"mt-3 text-muted-foreground text-sm leading-7",children:t.description})]}),e("div",{className:"space-y-3",children:t.featured.map((a)=>r(s,{href:a.href,className:"flex items-start justify-between gap-4 rounded-[22px] border border-border/70 bg-background/70 p-4 transition-colors hover:border-[color:rgb(162_79_42_/_0.45)]",children:[r("div",{children:[e("h4",{className:"font-semibold text-base",children:a.title}),e("p",{className:"mt-1 text-muted-foreground text-sm leading-6",children:a.description})]}),e(d,{className:"mt-1 shrink-0",size:16})]},a.href))})]},t.key))})]}),r("section",{className:"grid gap-5 lg:grid-cols-[1.2fr_0.8fr]",children:[r("article",{className:"editorial-panel space-y-4",children:[r("div",{className:"space-y-2",children:[e("p",{className:"editorial-kicker",children:"Reference and evidence"}),e("h2",{className:"editorial-panel-title",children:"Use generated docs and examples as proof, not just narrative copy"}),e("p",{className:"editorial-copy text-sm",children:"The reference index and example catalog stay close to the repo truth. Use them when you need exact public surfaces, not just the explanatory layer."})]}),r("div",{className:"grid gap-4 md:grid-cols-2",children:[r(s,{href:"/docs/reference",className:"docs-footer-link",children:[r("div",{className:"flex items-center gap-2 text-muted-foreground text-sm",children:[e(b,{size:16}),e("span",{children:"Reference index"})]}),e("p",{className:"text-muted-foreground text-sm",children:"Search generated contract docs, versions, tags, and visibility metadata."})]}),r(s,{href:"/docs/examples",className:"docs-footer-link",children:[r("div",{className:"flex items-center gap-2 text-muted-foreground text-sm",children:[e(u,{size:16}),e("span",{children:"Examples"})]}),e("p",{className:"text-muted-foreground text-sm",children:"Browse runnable examples and follow the reference routes back to their source artifacts."})]})]})]}),r("article",{className:"editorial-panel space-y-4",children:[r("div",{className:"space-y-2",children:[e("p",{className:"editorial-kicker",children:"Secondary reading"}),e("h2",{className:"editorial-panel-title",children:"Why ContractSpec"}),e("p",{className:"editorial-copy text-sm",children:"Positioning, comparisons, and philosophy remain available, but they no longer define the main docs path."})]}),e("div",{className:"flex flex-wrap gap-2",children:o.map((t)=>e(s,{href:t.href,className:"docs-chip-link",children:t.title},t.href))})]})]})]})}export{B as DocsIndexPage};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
// @bun
|
|
2
|
-
var n=Object.defineProperty;var a=(e)=>e;function c(e,t){this[e]=a.bind(null,t)}var l=(e,t)=>{for(var r in t)n(e,r,{get:t[r],enumerable:!0,configurable:!0,set:c.bind(t,r)})};var u=(e,t)=>()=>(e&&(t=e(e=0)),t);var i=[{key:"start",title:"Start",description:"Install ContractSpec, wire a first contract, and adopt it into an existing codebase."},{key:"core-model",title:"Core Model",description:"Learn how contracts, generated surfaces, policies, overlays, and safe regeneration fit together."},{key:"build",title:"Build",description:"Use practical guides, libraries, architecture patterns, and examples to ship real surfaces."},{key:"operate",title:"Operate",description:"Run the system safely with governance, auditability, tracing, and operator-grade controls."},{key:"integrations",title:"Integrations",description:"Connect models, messaging, storage, payments, search, and external systems through typed bindings."},{key:"reference",title:"Reference",description:"Search generated contract docs, inspect example packages, and navigate the system as source of truth."},{key:"studio",title:"Studio",description:"Understand what Studio adds on top of the open system and when to adopt it."}],o=[{href:"/docs",title:"Documentation",description:"OSS-first documentation for ContractSpec, the open spec system for AI-native software.",audience:"oss",ctaMode:"oss-next"},{href:"/docs/getting-started/start-here",title:"Start here",description:"The fastest path from install to your first contract and generated surface.",section:"start",order:10,primaryNav:!0,audience:"oss",ctaMode:"oss-next"},{href:"/docs/getting-started/installation",title:"Installation",description:"Install the CLI and core packages, then prepare a workspace for incremental adoption.",section:"start",order:20,primaryNav:!0,audience:"oss",ctaMode:"oss-next"},{href:"/docs/getting-started/hello-world",title:"Hello world",description:"Define a first operation, generate the surface, and verify the end-to-end loop.",section:"start",order:30,primaryNav:!0,audience:"oss",ctaMode:"oss-next"},{href:"/docs/getting-started/compatibility",title:"Compatibility",description:"Check the supported runtimes, package managers, and adoption assumptions before rollout.",section:"start",order:40,primaryNav:!0,audience:"oss",ctaMode:"oss-next"},{href:"/docs/getting-started/tools",title:"Developer tools",description:"Use the CLI, editors, and helper tooling that make the OSS workflow practical day to day.",section:"start",order:50,primaryNav:!0,audience:"oss",ctaMode:"oss-next"},{href:"/docs/getting-started/troubleshooting",title:"Troubleshooting",description:"Resolve the common installation, validation, and runtime mistakes you hit during first adoption.",section:"start",order:60,primaryNav:!0,audience:"oss",ctaMode:"oss-next"},{href:"/docs/specs",title:"Contracts and specs",description:"Understand the spec model that drives generated surfaces, validation, policy, and safe regeneration.",section:"core-model",order:10,primaryNav:!0,audience:"oss",ctaMode:"oss-next"},{href:"/docs/specs/capabilities",title:"Capabilities",description:"Model commands, queries, presentations, and events as explicit contract surfaces.",section:"core-model",order:20,primaryNav:!0,audience:"oss",ctaMode:"oss-next"},{href:"/docs/specs/dataviews",title:"Data views",description:"Define queryable, presentable views that stay aligned with the rest of the system.",section:"core-model",order:30,primaryNav:!0,audience:"oss",ctaMode:"oss-next"},{href:"/docs/specs/workflows",title:"Workflows",description:"Compose multi-step behavior from typed contracts, policies, and runtime orchestration.",section:"core-model",order:40,primaryNav:!0,audience:"oss",ctaMode:"oss-next"},{href:"/docs/specs/policy",title:"Policy",description:"Apply consistent governance, access rules, and risk controls across every surface.",section:"core-model",order:50,primaryNav:!0,audience:"operator",ctaMode:"oss-next"},{href:"/docs/specs/overlays",title:"Overlays",description:"Customize generated surfaces safely without forking the system or breaking regeneration.",section:"core-model",order:60,primaryNav:!0,audience:"oss",ctaMode:"oss-next"},{href:"/docs/specs/module-bundles",title:"Module bundles",description:"Define AI-native surfaces as typed bundle specs that resolve into personalized, auditable runtime plans.",section:"core-model",order:70,primaryNav:!0,audience:"oss",ctaMode:"oss-next"},{href:"/docs/specs/connect",title:"ContractSpec Connect",description:"Guard coding-agent edits and shell actions with task-scoped context, plan packets, patch verdicts, and review packets.",section:"core-model",order:80,navTitle:"Connect",primaryNav:!0,audience:"operator",ctaMode:"oss-next"},{href:"/docs/specs/builder-control-plane",title:"Builder control plane",description:"Route multimodal authoring work through governed builder contracts, provider policies, readiness gates, and mobile review flows.",section:"core-model",order:90,primaryNav:!0,audience:"studio-bridge",ctaMode:"studio-bridge"},{href:"/docs/guides/contract-types",title:"Contract types",description:"Choose the right contract surface for the behavior you want to make explicit.",section:"core-model",order:100,primaryNav:!0,audience:"oss",ctaMode:"oss-next"},{href:"/docs/guides",title:"Guides",description:"Follow concrete adoption paths for existing apps, generated docs, CI gating, and typed surfaces.",section:"build",order:10,primaryNav:!0,audience:"oss",ctaMode:"oss-next"},{href:"/docs/guides/nextjs-one-endpoint",title:"Adopt one endpoint in Next.js",description:"Start with one endpoint, one contract, and one generated surface in an existing Next.js app.",section:"build",order:20,navTitle:"Next.js endpoint",primaryNav:!0,audience:"oss",ctaMode:"oss-next"},{href:"/docs/guides/import-existing-codebases",title:"Import an existing codebase",description:"Stabilize a live codebase incrementally instead of rewriting it from scratch.",section:"build",order:30,navTitle:"Import existing code",primaryNav:!0,audience:"oss",ctaMode:"oss-next"},{href:"/docs/guides/spec-validation-and-typing",title:"Validation and typing",description:"Keep runtime validation and TypeScript types aligned from the same source definitions.",section:"build",order:40,navTitle:"Validation and typing",primaryNav:!0,audience:"oss",ctaMode:"oss-next"},{href:"/docs/guides/generate-docs-clients-schemas",title:"Generate docs, clients, and schemas",description:"Export stable docs and client-facing artifacts from the same contract layer.",section:"build",order:50,navTitle:"Generate docs and clients",primaryNav:!0,audience:"oss",ctaMode:"reference"},{href:"/docs/guides/docs-generation-pipeline",title:"Docs generation pipeline",description:"Feed generated docs into the public docs site without breaking source-of-truth ownership.",section:"build",order:60,navTitle:"Docs pipeline",primaryNav:!0,audience:"oss",ctaMode:"reference"},{href:"/docs/guides/first-module-bundle",title:"Build a first module bundle",description:"Define one bundle spec, resolve a personalized surface plan, and render it through the React host layer.",section:"build",order:65,navTitle:"First module bundle",primaryNav:!0,audience:"oss",ctaMode:"oss-next"},{href:"/docs/guides/host-builder-workbench",title:"Host the Builder workbench",description:"Load a Builder workspace snapshot, wire common commands, and keep runtime mode plus mobile review flows explicit.",section:"build",order:66,navTitle:"Host Builder workbench",primaryNav:!0,audience:"studio-bridge",ctaMode:"studio-bridge"},{href:"/docs/guides/connect-in-a-repo",title:"Use Connect in a repo",description:"Enable Connect in workspace config, verify agent actions, and inspect local review and replay artifacts.",section:"build",order:67,navTitle:"Connect in a repo",primaryNav:!0,audience:"operator",ctaMode:"oss-next"},{href:"/docs/libraries",title:"Libraries overview",description:"Navigate the core libraries, runtimes, and system packages that make up the open foundation.",section:"build",order:70,primaryNav:!0,audience:"oss",ctaMode:"oss-next"},{href:"/docs/libraries/cross-platform-ui",title:"Cross-platform UI",description:"Understand how the presentation runtimes, ui-kit-web, ui-kit, and design-system stay aligned across React and React Native.",section:"build",order:71,audience:"oss",ctaMode:"oss-next"},{href:"/docs/architecture",title:"Architecture",description:"See how the spec layer, runtimes, integrations, and multi-surface outputs fit together.",section:"build",order:80,primaryNav:!0,audience:"oss",ctaMode:"oss-next"},{href:"/docs/safety",title:"Operate safely",description:"Add auditability, migrations, policy controls, and trustworthy release behavior from the start.",section:"operate",order:10,navTitle:"Safety overview",primaryNav:!0,audience:"operator",ctaMode:"oss-next"},{href:"/docs/guides/ci-contract-diff-gating",title:"CI diff gating",description:"Use deterministic checks to block drift and risky changes before they reach production.",section:"operate",order:20,primaryNav:!0,audience:"operator",ctaMode:"oss-next"},{href:"/docs/guides/release-capsules",title:"Author release capsules",description:"Pair changesets with structured release capsules, generate release artifacts, and keep changelog plus docs surfaces aligned.",section:"operate",order:25,navTitle:"Release capsules",primaryNav:!0,audience:"operator",ctaMode:"reference"},{href:"/docs/safety/security-trust",title:"Security and trust",description:"Understand the trust model, artifact validation expectations, and operational boundaries.",section:"operate",order:30,primaryNav:!0,audience:"operator",ctaMode:"oss-next"},{href:"/docs/safety/auditing",title:"Audit trails",description:"Track changes, policy decisions, and operational actions with a clear evidence trail.",section:"operate",order:40,primaryNav:!0,audience:"operator",ctaMode:"oss-next"},{href:"/docs/safety/migrations",title:"Migrations",description:"Evolve schemas and data safely without abandoning the contract layer.",section:"operate",order:50,primaryNav:!0,audience:"operator",ctaMode:"oss-next"},{href:"/docs/safety/tenant-isolation",title:"Tenant isolation",description:"Keep tenant data, config, policies, and integrations separated at runtime.",section:"operate",order:60,primaryNav:!0,audience:"operator",ctaMode:"oss-next"},{href:"/docs/knowledge",title:"Knowledge and context",description:"Bind trusted knowledge sources to the system without losing governance or isolation.",section:"operate",order:70,primaryNav:!0,audience:"operator",ctaMode:"oss-next"},{href:"/docs/advanced/telemetry",title:"Telemetry",description:"Instrument surfaces, collect evidence, and keep observability aligned with the contract model.",section:"operate",order:80,primaryNav:!0,audience:"operator",ctaMode:"oss-next"},{href:"/docs/advanced/workflow-monitoring",title:"Workflow monitoring",description:"Observe multi-step execution with enough context to understand failures and regressions.",section:"operate",order:90,primaryNav:!0,audience:"operator",ctaMode:"oss-next"},{href:"/docs/ops/distributed-tracing",title:"Distributed tracing",description:"Trace contract execution across integrations, workflows, and generated surfaces.",section:"operate",order:100,primaryNav:!0,audience:"operator",ctaMode:"oss-next"},{href:"/docs/integrations",title:"Integrations overview",description:"Understand the binding model for external services, providers, and tenant-owned connections.",section:"integrations",order:10,primaryNav:!0,audience:"oss",ctaMode:"oss-next"},{href:"/docs/integrations/spec-model",title:"Integration spec model",description:"Define what an integration provides before wiring it into an app or runtime.",section:"integrations",order:20,primaryNav:!0,audience:"oss",ctaMode:"oss-next"},{href:"/docs/integrations/openai",title:"OpenAI integration",description:"Connect OpenAI through typed capabilities, explicit provider config, and governed runtime usage.",section:"integrations",order:30,primaryNav:!0,audience:"oss",ctaMode:"oss-next"},{href:"/docs/integrations/mistral",title:"Mistral integration",description:"Use Mistral through the same provider contract model and runtime guardrails.",section:"integrations",order:40,primaryNav:!0,audience:"oss",ctaMode:"oss-next"},{href:"/docs/integrations/qdrant",title:"Qdrant integration",description:"Store and retrieve knowledge embeddings with explicit provider configuration and ownership.",section:"integrations",order:50,primaryNav:!0,audience:"operator",ctaMode:"oss-next"},{href:"/docs/integrations/stripe",title:"Stripe integration",description:"Bind payments and billing behavior without smearing provider logic across the codebase.",section:"integrations",order:60,primaryNav:!0,audience:"oss",ctaMode:"oss-next"},{href:"/docs/integrations/twilio",title:"Twilio integration",description:"Handle messaging and telephony through typed transport boundaries and explicit configuration.",section:"integrations",order:70,primaryNav:!0,audience:"oss",ctaMode:"oss-next"},{href:"/docs/integrations/github",title:"GitHub integration",description:"Push execution context into GitHub workflows and automation surfaces without hidden glue.",section:"integrations",order:80,primaryNav:!0,audience:"oss",ctaMode:"oss-next"},{href:"/docs/reference",title:"Contract reference",description:"Browse the generated reference index for public contract surfaces, versions, and examples.",section:"reference",order:10,primaryNav:!0,audience:"reference",ctaMode:"reference"},{href:"/docs/examples",title:"Examples",description:"Explore runnable examples and use them as reference implementations for new systems.",section:"reference",order:20,primaryNav:!0,audience:"reference",ctaMode:"reference"},{href:"/docs/studio",title:"Studio overview",description:"See what Studio adds on top of OSS ContractSpec and when a team should adopt the operating layer.",section:"studio",order:10,primaryNav:!0,audience:"studio-bridge",ctaMode:"studio-bridge"},{href:"/docs/manifesto",title:"Manifesto",description:"Why ContractSpec is built as an open system, how incremental adoption works, and why Studio stays additive.",audience:"secondary"},{href:"/docs/intent/contract-first-api",title:"Contract-first API",description:"Use contracts as the durable source of truth for API behavior and generated surfaces.",audience:"secondary"},{href:"/docs/intent/spec-driven-development",title:"Spec-driven development",description:"See how explicit specs stabilize change across APIs, UI, data, and agent-facing surfaces.",audience:"secondary"},{href:"/docs/intent/deterministic-codegen",title:"Deterministic regeneration",description:"Understand safe regeneration, conflict boundaries, and why teams keep control of the output.",audience:"secondary"},{href:"/docs/intent/schema-validation-typescript",title:"Schema validation and TypeScript",description:"Keep schema, runtime validation, and TypeScript behavior aligned without duplicate work.",audience:"secondary"},{href:"/docs/intent/openapi-alternative",title:"OpenAPI alternative",description:"Compare a multi-surface contract system with API-only description tooling.",audience:"secondary"},{href:"/docs/intent/generate-client-from-schema",title:"Generate client from schema",description:"Generate client-facing artifacts from the same source that drives runtime behavior.",audience:"secondary"},{href:"/docs/comparison",title:"Comparison overview",description:"Compare ContractSpec with workflow engines, internal-tool builders, and enterprise orchestration products.",audience:"secondary"},{href:"/docs/comparison/workflow-engines",title:"Workflow engines",description:"Contrast a contract system with workflow-only orchestration approaches.",audience:"secondary"},{href:"/docs/comparison/internal-tool-builders",title:"Internal-tool builders",description:"Compare ContractSpec with builders that optimize for screens instead of durable system contracts.",audience:"secondary"},{href:"/docs/comparison/automation-platforms",title:"Automation platforms",description:"Compare automation-first tools with a system that owns explicit contracts and generated surfaces.",audience:"secondary"},{href:"/docs/comparison/windmill",title:"Windmill comparison",description:"Understand where Windmill fits and where ContractSpec solves a different class of system problem.",audience:"secondary"},{href:"/docs/comparison/enterprise-platforms",title:"Enterprise orchestrators",description:"Compare ContractSpec with enterprise platforms that centralize execution in a closed operating surface.",audience:"secondary"},{href:"/docs/ecosystem/templates",title:"Templates",description:"Use templates and starter systems as proof points and accelerators for OSS adoption.",audience:"secondary"},{href:"/docs/ecosystem/plugins",title:"Plugins",description:"Explore marketplace and editor integrations that support the OSS workflow.",audience:"secondary"},{href:"/docs/ecosystem/registry",title:"Registry",description:"Inspect registry and manifest concepts that help package reusable capability surfaces.",audience:"secondary"}];function h(e){return o.find((t)=>t.href===e)}function d(){return i.map((e)=>({...e,items:o.filter((t)=>t.section===e.key&&t.primaryNav).sort((t,r)=>(t.order??0)-(r.order??0))}))}function p(){return o.filter((e)=>e.primaryNav).sort((e,t)=>i.findIndex((r)=>r.key===e.section)-i.findIndex((r)=>r.key===t.section)||(e.order??0)-(t.order??0))}function m(e){let t=p(),r=t.findIndex((s)=>s.href===e);if(r<0)return{previous:null,next:null};return{previous:t[r-1]??null,next:t[r+1]??null}}function g(){return o.filter((e)=>e.audience==="secondary")}function y(){return d().map((e)=>({...e,featured:e.items.slice(0,3)}))}export{g as getSecondaryDocsPages,p as getPrimaryDocsTraversal,d as getPrimaryDocsSections,h as getDocsPageByHref,m as getDocsNextPrevious,y as getDocsHomeSections,i as DOCS_PRIMARY_SECTIONS,o as DOCS_PAGES};
|
|
2
|
+
var n=Object.defineProperty;var a=(e)=>e;function c(e,t){this[e]=a.bind(null,t)}var l=(e,t)=>{for(var r in t)n(e,r,{get:t[r],enumerable:!0,configurable:!0,set:c.bind(t,r)})};var u=(e,t)=>()=>(e&&(t=e(e=0)),t);var i=[{key:"start",title:"Start",description:"Install ContractSpec, wire a first contract, and adopt it into an existing codebase."},{key:"core-model",title:"Core Model",description:"Learn how contracts, generated surfaces, policies, overlays, and safe regeneration fit together."},{key:"build",title:"Build",description:"Use practical guides, libraries, architecture patterns, and examples to ship real surfaces."},{key:"operate",title:"Operate",description:"Run the system safely with governance, auditability, tracing, and operator-grade controls."},{key:"integrations",title:"Integrations",description:"Connect models, messaging, storage, payments, search, and external systems through typed bindings."},{key:"reference",title:"Reference",description:"Search generated contract docs, inspect example packages, and navigate the system as source of truth."},{key:"studio",title:"Studio",description:"Understand what Studio adds on top of the open system and when to adopt it."}],o=[{href:"/docs",title:"Documentation",description:"OSS-first documentation for ContractSpec, the open spec system for AI-native software.",audience:"oss",ctaMode:"oss-next"},{href:"/docs/getting-started/start-here",title:"Start here",description:"The fastest path from install to your first contract and generated surface.",section:"start",order:10,primaryNav:!0,audience:"oss",ctaMode:"oss-next"},{href:"/docs/getting-started/installation",title:"Installation",description:"Install the CLI and core packages, then prepare a workspace for incremental adoption.",section:"start",order:20,primaryNav:!0,audience:"oss",ctaMode:"oss-next"},{href:"/docs/getting-started/hello-world",title:"Hello world",description:"Define a first operation, generate the surface, and verify the end-to-end loop.",section:"start",order:30,primaryNav:!0,audience:"oss",ctaMode:"oss-next"},{href:"/docs/getting-started/compatibility",title:"Compatibility",description:"Check the supported runtimes, package managers, and adoption assumptions before rollout.",section:"start",order:40,primaryNav:!0,audience:"oss",ctaMode:"oss-next"},{href:"/docs/getting-started/tools",title:"Developer tools",description:"Use the CLI, editors, and helper tooling that make the OSS workflow practical day to day.",section:"start",order:50,primaryNav:!0,audience:"oss",ctaMode:"oss-next"},{href:"/docs/getting-started/troubleshooting",title:"Troubleshooting",description:"Resolve the common installation, validation, and runtime mistakes you hit during first adoption.",section:"start",order:60,primaryNav:!0,audience:"oss",ctaMode:"oss-next"},{href:"/docs/specs",title:"Contracts and specs",description:"Understand the spec model that drives generated surfaces, validation, policy, and safe regeneration.",section:"core-model",order:10,primaryNav:!0,audience:"oss",ctaMode:"oss-next"},{href:"/docs/specs/capabilities",title:"Capabilities",description:"Model commands, queries, presentations, and events as explicit contract surfaces.",section:"core-model",order:20,primaryNav:!0,audience:"oss",ctaMode:"oss-next"},{href:"/docs/specs/dataviews",title:"Data views",description:"Define queryable, presentable views that stay aligned with the rest of the system.",section:"core-model",order:30,primaryNav:!0,audience:"oss",ctaMode:"oss-next"},{href:"/docs/specs/workflows",title:"Workflows",description:"Compose multi-step behavior from typed contracts, policies, and runtime orchestration.",section:"core-model",order:40,primaryNav:!0,audience:"oss",ctaMode:"oss-next"},{href:"/docs/specs/policy",title:"Policy",description:"Apply consistent governance, access rules, and risk controls across every surface.",section:"core-model",order:50,primaryNav:!0,audience:"operator",ctaMode:"oss-next"},{href:"/docs/specs/overlays",title:"Overlays",description:"Customize generated surfaces safely without forking the system or breaking regeneration.",section:"core-model",order:60,primaryNav:!0,audience:"oss",ctaMode:"oss-next"},{href:"/docs/specs/module-bundles",title:"Module bundles",description:"Define AI-native surfaces as typed bundle specs that resolve into personalized, auditable runtime plans.",section:"core-model",order:70,primaryNav:!0,audience:"oss",ctaMode:"oss-next"},{href:"/docs/specs/connect",title:"ContractSpec Connect",description:"Guard coding-agent edits and shell actions with task-scoped context, plan packets, patch verdicts, and review packets.",section:"core-model",order:80,navTitle:"Connect",primaryNav:!0,audience:"operator",ctaMode:"oss-next"},{href:"/docs/specs/builder-control-plane",title:"Builder control plane",description:"Route multimodal authoring work through governed builder contracts, provider policies, readiness gates, and mobile review flows.",section:"core-model",order:90,primaryNav:!0,audience:"studio-bridge",ctaMode:"studio-bridge"},{href:"/docs/guides/contract-types",title:"Contract types",description:"Choose the right contract surface for the behavior you want to make explicit.",section:"core-model",order:100,primaryNav:!0,audience:"oss",ctaMode:"oss-next"},{href:"/docs/guides",title:"Guides",description:"Follow concrete adoption paths for existing apps, generated docs, CI gating, and typed surfaces.",section:"build",order:10,primaryNav:!0,audience:"oss",ctaMode:"oss-next"},{href:"/docs/guides/nextjs-one-endpoint",title:"Adopt one endpoint in Next.js",description:"Start with one endpoint, one contract, and one generated surface in an existing Next.js app.",section:"build",order:20,navTitle:"Next.js endpoint",primaryNav:!0,audience:"oss",ctaMode:"oss-next"},{href:"/docs/guides/import-existing-codebases",title:"Import an existing codebase",description:"Stabilize a live codebase incrementally instead of rewriting it from scratch.",section:"build",order:30,navTitle:"Import existing code",primaryNav:!0,audience:"oss",ctaMode:"oss-next"},{href:"/docs/guides/spec-validation-and-typing",title:"Validation and typing",description:"Keep runtime validation and TypeScript types aligned from the same source definitions.",section:"build",order:40,navTitle:"Validation and typing",primaryNav:!0,audience:"oss",ctaMode:"oss-next"},{href:"/docs/guides/contract-driven-forms",title:"Build a contract-driven form",description:"Define schema-backed form data, fields, layout, policy, and submit actions as one reusable ContractSpec surface.",section:"build",order:45,navTitle:"Contract-driven forms",primaryNav:!0,audience:"oss",ctaMode:"oss-next"},{href:"/docs/guides/generate-docs-clients-schemas",title:"Generate docs, clients, and schemas",description:"Export stable docs and client-facing artifacts from the same contract layer.",section:"build",order:50,navTitle:"Generate docs and clients",primaryNav:!0,audience:"oss",ctaMode:"reference"},{href:"/docs/guides/docs-generation-pipeline",title:"Docs generation pipeline",description:"Feed generated docs into the public docs site without breaking source-of-truth ownership.",section:"build",order:60,navTitle:"Docs pipeline",primaryNav:!0,audience:"oss",ctaMode:"reference"},{href:"/docs/guides/first-module-bundle",title:"Build a first module bundle",description:"Define one bundle spec, resolve a personalized surface plan, and render it through the React host layer.",section:"build",order:65,navTitle:"First module bundle",primaryNav:!0,audience:"oss",ctaMode:"oss-next"},{href:"/docs/guides/host-builder-workbench",title:"Host the Builder workbench",description:"Load a Builder workspace snapshot, wire common commands, and keep runtime mode plus mobile review flows explicit.",section:"build",order:66,navTitle:"Host Builder workbench",primaryNav:!0,audience:"studio-bridge",ctaMode:"studio-bridge"},{href:"/docs/guides/connect-in-a-repo",title:"Use Connect in a repo",description:"Enable Connect in workspace config, verify agent actions, and inspect local review and replay artifacts.",section:"build",order:67,navTitle:"Connect in a repo",primaryNav:!0,audience:"operator",ctaMode:"oss-next"},{href:"/docs/libraries",title:"Libraries overview",description:"Navigate the core libraries, runtimes, and system packages that make up the open foundation.",section:"build",order:70,primaryNav:!0,audience:"oss",ctaMode:"oss-next"},{href:"/docs/libraries/cross-platform-ui",title:"Cross-platform UI",description:"Understand how the presentation runtimes, ui-kit-web, ui-kit, and design-system stay aligned across React and React Native.",section:"build",order:71,audience:"oss",ctaMode:"oss-next"},{href:"/docs/architecture",title:"Architecture",description:"See how the spec layer, runtimes, integrations, and multi-surface outputs fit together.",section:"build",order:80,primaryNav:!0,audience:"oss",ctaMode:"oss-next"},{href:"/docs/safety",title:"Operate safely",description:"Add auditability, migrations, policy controls, and trustworthy release behavior from the start.",section:"operate",order:10,navTitle:"Safety overview",primaryNav:!0,audience:"operator",ctaMode:"oss-next"},{href:"/docs/guides/ci-contract-diff-gating",title:"CI diff gating",description:"Use deterministic checks to block drift and risky changes before they reach production.",section:"operate",order:20,primaryNav:!0,audience:"operator",ctaMode:"oss-next"},{href:"/docs/guides/release-capsules",title:"Author release capsules",description:"Pair changesets with structured release capsules, generate release artifacts, and keep changelog plus docs surfaces aligned.",section:"operate",order:25,navTitle:"Release capsules",primaryNav:!0,audience:"operator",ctaMode:"reference"},{href:"/docs/safety/security-trust",title:"Security and trust",description:"Understand the trust model, artifact validation expectations, and operational boundaries.",section:"operate",order:30,primaryNav:!0,audience:"operator",ctaMode:"oss-next"},{href:"/docs/safety/auditing",title:"Audit trails",description:"Track changes, policy decisions, and operational actions with a clear evidence trail.",section:"operate",order:40,primaryNav:!0,audience:"operator",ctaMode:"oss-next"},{href:"/docs/safety/migrations",title:"Migrations",description:"Evolve schemas and data safely without abandoning the contract layer.",section:"operate",order:50,primaryNav:!0,audience:"operator",ctaMode:"oss-next"},{href:"/docs/safety/tenant-isolation",title:"Tenant isolation",description:"Keep tenant data, config, policies, and integrations separated at runtime.",section:"operate",order:60,primaryNav:!0,audience:"operator",ctaMode:"oss-next"},{href:"/docs/knowledge",title:"Knowledge and context",description:"Bind trusted knowledge sources to the system without losing governance or isolation.",section:"operate",order:70,primaryNav:!0,audience:"operator",ctaMode:"oss-next"},{href:"/docs/advanced/telemetry",title:"Telemetry",description:"Instrument surfaces, collect evidence, and keep observability aligned with the contract model.",section:"operate",order:80,primaryNav:!0,audience:"operator",ctaMode:"oss-next"},{href:"/docs/advanced/workflow-monitoring",title:"Workflow monitoring",description:"Observe multi-step execution with enough context to understand failures and regressions.",section:"operate",order:90,primaryNav:!0,audience:"operator",ctaMode:"oss-next"},{href:"/docs/ops/distributed-tracing",title:"Distributed tracing",description:"Trace contract execution across integrations, workflows, and generated surfaces.",section:"operate",order:100,primaryNav:!0,audience:"operator",ctaMode:"oss-next"},{href:"/docs/integrations",title:"Integrations overview",description:"Understand the binding model for external services, providers, and tenant-owned connections.",section:"integrations",order:10,primaryNav:!0,audience:"oss",ctaMode:"oss-next"},{href:"/docs/integrations/spec-model",title:"Integration spec model",description:"Define what an integration provides before wiring it into an app or runtime.",section:"integrations",order:20,primaryNav:!0,audience:"oss",ctaMode:"oss-next"},{href:"/docs/integrations/openai",title:"OpenAI integration",description:"Connect OpenAI through typed capabilities, explicit provider config, and governed runtime usage.",section:"integrations",order:30,primaryNav:!0,audience:"oss",ctaMode:"oss-next"},{href:"/docs/integrations/mistral",title:"Mistral integration",description:"Use Mistral through the same provider contract model and runtime guardrails.",section:"integrations",order:40,primaryNav:!0,audience:"oss",ctaMode:"oss-next"},{href:"/docs/integrations/qdrant",title:"Qdrant integration",description:"Store and retrieve knowledge embeddings with explicit provider configuration and ownership.",section:"integrations",order:50,primaryNav:!0,audience:"operator",ctaMode:"oss-next"},{href:"/docs/integrations/stripe",title:"Stripe integration",description:"Bind payments and billing behavior without smearing provider logic across the codebase.",section:"integrations",order:60,primaryNav:!0,audience:"oss",ctaMode:"oss-next"},{href:"/docs/integrations/twilio",title:"Twilio integration",description:"Handle messaging and telephony through typed transport boundaries and explicit configuration.",section:"integrations",order:70,primaryNav:!0,audience:"oss",ctaMode:"oss-next"},{href:"/docs/integrations/github",title:"GitHub integration",description:"Push execution context into GitHub workflows and automation surfaces without hidden glue.",section:"integrations",order:80,primaryNav:!0,audience:"oss",ctaMode:"oss-next"},{href:"/docs/reference",title:"Contract reference",description:"Browse the generated reference index for public contract surfaces, versions, and examples.",section:"reference",order:10,primaryNav:!0,audience:"reference",ctaMode:"reference"},{href:"/docs/examples",title:"Examples",description:"Explore runnable examples and use them as reference implementations for new systems.",section:"reference",order:20,primaryNav:!0,audience:"reference",ctaMode:"reference"},{href:"/docs/studio",title:"Studio overview",description:"See what Studio adds on top of OSS ContractSpec and when a team should adopt the operating layer.",section:"studio",order:10,primaryNav:!0,audience:"studio-bridge",ctaMode:"studio-bridge"},{href:"/docs/manifesto",title:"Manifesto",description:"Why ContractSpec is built as an open system, how incremental adoption works, and why Studio stays additive.",audience:"secondary"},{href:"/docs/intent/contract-first-api",title:"Contract-first API",description:"Use contracts as the durable source of truth for API behavior and generated surfaces.",audience:"secondary"},{href:"/docs/intent/spec-driven-development",title:"Spec-driven development",description:"See how explicit specs stabilize change across APIs, UI, data, and agent-facing surfaces.",audience:"secondary"},{href:"/docs/intent/deterministic-codegen",title:"Deterministic regeneration",description:"Understand safe regeneration, conflict boundaries, and why teams keep control of the output.",audience:"secondary"},{href:"/docs/intent/schema-validation-typescript",title:"Schema validation and TypeScript",description:"Keep schema, runtime validation, and TypeScript behavior aligned without duplicate work.",audience:"secondary"},{href:"/docs/intent/openapi-alternative",title:"OpenAPI alternative",description:"Compare a multi-surface contract system with API-only description tooling.",audience:"secondary"},{href:"/docs/intent/generate-client-from-schema",title:"Generate client from schema",description:"Generate client-facing artifacts from the same source that drives runtime behavior.",audience:"secondary"},{href:"/docs/comparison",title:"Comparison overview",description:"Compare ContractSpec with workflow engines, internal-tool builders, and enterprise orchestration products.",audience:"secondary"},{href:"/docs/comparison/workflow-engines",title:"Workflow engines",description:"Contrast a contract system with workflow-only orchestration approaches.",audience:"secondary"},{href:"/docs/comparison/internal-tool-builders",title:"Internal-tool builders",description:"Compare ContractSpec with builders that optimize for screens instead of durable system contracts.",audience:"secondary"},{href:"/docs/comparison/automation-platforms",title:"Automation platforms",description:"Compare automation-first tools with a system that owns explicit contracts and generated surfaces.",audience:"secondary"},{href:"/docs/comparison/windmill",title:"Windmill comparison",description:"Understand where Windmill fits and where ContractSpec solves a different class of system problem.",audience:"secondary"},{href:"/docs/comparison/enterprise-platforms",title:"Enterprise orchestrators",description:"Compare ContractSpec with enterprise platforms that centralize execution in a closed operating surface.",audience:"secondary"},{href:"/docs/ecosystem/templates",title:"Templates",description:"Use templates and starter systems as proof points and accelerators for OSS adoption.",audience:"secondary"},{href:"/docs/ecosystem/plugins",title:"Plugins",description:"Explore marketplace and editor integrations that support the OSS workflow.",audience:"secondary"},{href:"/docs/ecosystem/registry",title:"Registry",description:"Inspect registry and manifest concepts that help package reusable capability surfaces.",audience:"secondary"}];function h(e){return o.find((t)=>t.href===e)}function d(){return i.map((e)=>({...e,items:o.filter((t)=>t.section===e.key&&t.primaryNav).sort((t,r)=>(t.order??0)-(r.order??0))}))}function p(){return o.filter((e)=>e.primaryNav).sort((e,t)=>i.findIndex((r)=>r.key===e.section)-i.findIndex((r)=>r.key===t.section)||(e.order??0)-(t.order??0))}function m(e){let t=p(),r=t.findIndex((s)=>s.href===e);if(r<0)return{previous:null,next:null};return{previous:t[r-1]??null,next:t[r+1]??null}}function g(){return o.filter((e)=>e.audience==="secondary")}function y(){return d().map((e)=>({...e,featured:e.items.slice(0,3)}))}export{g as getSecondaryDocsPages,p as getPrimaryDocsTraversal,d as getPrimaryDocsSections,h as getDocsPageByHref,m as getDocsNextPrevious,y as getDocsHomeSections,i as DOCS_PRIMARY_SECTIONS,o as DOCS_PAGES};
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export declare const leadCaptureFormCode = "import {\n defineFormSpec,\n FormRegistry,\n responsiveFormColumns,\n} from \"@contractspec/lib.contracts-spec/forms\";\nimport { fromZod } from \"@contractspec/lib.schema\";\nimport { z } from \"zod\";\n\nconst LeadCaptureModel = fromZod(\n z.object({\n fullName: z.string().min(1),\n email: z.string().email(),\n company: z.string().min(1),\n intent: z.enum([\"demo\", \"pricing\", \"pilot\"]),\n notes: z.string().max(1000).optional(),\n newsletter: z.boolean().optional(),\n }),\n { name: \"LeadCaptureModel\" },\n);\n\nexport const LeadCaptureForm = defineFormSpec({\n meta: {\n key: \"marketing.lead.form\",\n version: \"1.0.0\",\n title: \"Lead capture form\",\n description: \"Collect qualified OSS and Studio leads.\",\n domain: \"marketing\",\n owners: [\"@growth\"],\n tags: [\"forms\", \"leads\"],\n stability: \"experimental\",\n },\n model: LeadCaptureModel,\n layout: {\n columns: responsiveFormColumns(2),\n gap: \"md\",\n flow: {\n kind: \"sections\",\n sections: [\n { key: \"identity\", titleI18n: \"Who you are\", fieldNames: [\"fullName\", \"email\", \"company\"] },\n { key: \"request\", titleI18n: \"What you need\", fieldNames: [\"intent\", \"notes\", \"newsletter\"] },\n ],\n },\n },\n fields: [\n { kind: \"text\", name: \"fullName\", labelI18n: \"Full name\", required: true, autoComplete: \"name\" },\n { kind: \"email\", name: \"email\", labelI18n: \"Work email\", required: true, autoComplete: \"email\" },\n { kind: \"text\", name: \"company\", labelI18n: \"Company\", required: true, autoComplete: \"organization\" },\n {\n kind: \"select\",\n name: \"intent\",\n labelI18n: \"Primary goal\",\n required: true,\n options: [\n { labelI18n: \"Book a demo\", value: \"demo\" },\n { labelI18n: \"Understand pricing\", value: \"pricing\" },\n { labelI18n: \"Plan a pilot\", value: \"pilot\" },\n ],\n },\n { kind: \"textarea\", name: \"notes\", labelI18n: \"Context\", rows: 4, layout: { colSpan: \"full\" } },\n { kind: \"checkbox\", name: \"newsletter\", labelI18n: \"Send product updates\" },\n ],\n actions: [{ key: \"submit\", labelI18n: \"Send request\", op: { name: \"lead.create\", version: \"1.0.0\" } }],\n policy: { flags: [\"lead-capture\"], pii: [\"fullName\", \"email\", \"company\", \"notes\"] },\n renderHints: { ui: \"shadcn\", form: \"react-hook-form\" },\n});\n\nexport const formRegistry = new FormRegistry().register(LeadCaptureForm);";
|
|
2
|
+
export declare const leadCapturePanelCode = "\"use client\";\n\nimport { formRenderer } from \"@contractspec/lib.design-system/renderers/form-contract\";\nimport { LeadCaptureForm } from \"../contracts/forms/lead-capture.form\";\n\nexport function LeadCapturePanel() {\n return formRenderer.render(LeadCaptureForm, {\n defaultValues: { newsletter: true },\n overrides: {\n onSubmitOverride: async (values, actionKey) => {\n await fetch(\"/api/leads\", {\n method: \"POST\",\n headers: { \"content-type\": \"application/json\" },\n body: JSON.stringify({ actionKey, values }),\n });\n },\n },\n });\n}";
|
|
3
|
+
export declare const formShowcaseTemplateCode = "bun add @contractspec/example.form-showcase\n\n# Full form-only example docs\nopen https://www.contractspec.io/docs/examples/form-showcase\n\n# Template catalog filtered to forms\nopen https://www.contractspec.io/templates?tag=forms\n\n# Sandbox spec preview\nopen https://www.contractspec.io/sandbox?template=form-showcase";
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
// @bun
|
|
2
|
+
var a=Object.defineProperty;var r=(e)=>e;function n(e,t){this[e]=r.bind(null,t)}var l=(e,t)=>{for(var o in t)a(e,o,{get:t[o],enumerable:!0,configurable:!0,set:n.bind(t,o)})};var i=(e,t)=>()=>(e&&(t=e(e=0)),t);var s=`import {
|
|
3
|
+
defineFormSpec,
|
|
4
|
+
FormRegistry,
|
|
5
|
+
responsiveFormColumns,
|
|
6
|
+
} from "@contractspec/lib.contracts-spec/forms";
|
|
7
|
+
import { fromZod } from "@contractspec/lib.schema";
|
|
8
|
+
import { z } from "zod";
|
|
9
|
+
|
|
10
|
+
const LeadCaptureModel = fromZod(
|
|
11
|
+
z.object({
|
|
12
|
+
fullName: z.string().min(1),
|
|
13
|
+
email: z.string().email(),
|
|
14
|
+
company: z.string().min(1),
|
|
15
|
+
intent: z.enum(["demo", "pricing", "pilot"]),
|
|
16
|
+
notes: z.string().max(1000).optional(),
|
|
17
|
+
newsletter: z.boolean().optional(),
|
|
18
|
+
}),
|
|
19
|
+
{ name: "LeadCaptureModel" },
|
|
20
|
+
);
|
|
21
|
+
|
|
22
|
+
export const LeadCaptureForm = defineFormSpec({
|
|
23
|
+
meta: {
|
|
24
|
+
key: "marketing.lead.form",
|
|
25
|
+
version: "1.0.0",
|
|
26
|
+
title: "Lead capture form",
|
|
27
|
+
description: "Collect qualified OSS and Studio leads.",
|
|
28
|
+
domain: "marketing",
|
|
29
|
+
owners: ["@growth"],
|
|
30
|
+
tags: ["forms", "leads"],
|
|
31
|
+
stability: "experimental",
|
|
32
|
+
},
|
|
33
|
+
model: LeadCaptureModel,
|
|
34
|
+
layout: {
|
|
35
|
+
columns: responsiveFormColumns(2),
|
|
36
|
+
gap: "md",
|
|
37
|
+
flow: {
|
|
38
|
+
kind: "sections",
|
|
39
|
+
sections: [
|
|
40
|
+
{ key: "identity", titleI18n: "Who you are", fieldNames: ["fullName", "email", "company"] },
|
|
41
|
+
{ key: "request", titleI18n: "What you need", fieldNames: ["intent", "notes", "newsletter"] },
|
|
42
|
+
],
|
|
43
|
+
},
|
|
44
|
+
},
|
|
45
|
+
fields: [
|
|
46
|
+
{ kind: "text", name: "fullName", labelI18n: "Full name", required: true, autoComplete: "name" },
|
|
47
|
+
{ kind: "email", name: "email", labelI18n: "Work email", required: true, autoComplete: "email" },
|
|
48
|
+
{ kind: "text", name: "company", labelI18n: "Company", required: true, autoComplete: "organization" },
|
|
49
|
+
{
|
|
50
|
+
kind: "select",
|
|
51
|
+
name: "intent",
|
|
52
|
+
labelI18n: "Primary goal",
|
|
53
|
+
required: true,
|
|
54
|
+
options: [
|
|
55
|
+
{ labelI18n: "Book a demo", value: "demo" },
|
|
56
|
+
{ labelI18n: "Understand pricing", value: "pricing" },
|
|
57
|
+
{ labelI18n: "Plan a pilot", value: "pilot" },
|
|
58
|
+
],
|
|
59
|
+
},
|
|
60
|
+
{ kind: "textarea", name: "notes", labelI18n: "Context", rows: 4, layout: { colSpan: "full" } },
|
|
61
|
+
{ kind: "checkbox", name: "newsletter", labelI18n: "Send product updates" },
|
|
62
|
+
],
|
|
63
|
+
actions: [{ key: "submit", labelI18n: "Send request", op: { name: "lead.create", version: "1.0.0" } }],
|
|
64
|
+
policy: { flags: ["lead-capture"], pii: ["fullName", "email", "company", "notes"] },
|
|
65
|
+
renderHints: { ui: "shadcn", form: "react-hook-form" },
|
|
66
|
+
});
|
|
67
|
+
|
|
68
|
+
export const formRegistry = new FormRegistry().register(LeadCaptureForm);`,d=`"use client";
|
|
69
|
+
|
|
70
|
+
import { formRenderer } from "@contractspec/lib.design-system/renderers/form-contract";
|
|
71
|
+
import { LeadCaptureForm } from "../contracts/forms/lead-capture.form";
|
|
72
|
+
|
|
73
|
+
export function LeadCapturePanel() {
|
|
74
|
+
return formRenderer.render(LeadCaptureForm, {
|
|
75
|
+
defaultValues: { newsletter: true },
|
|
76
|
+
overrides: {
|
|
77
|
+
onSubmitOverride: async (values, actionKey) => {
|
|
78
|
+
await fetch("/api/leads", {
|
|
79
|
+
method: "POST",
|
|
80
|
+
headers: { "content-type": "application/json" },
|
|
81
|
+
body: JSON.stringify({ actionKey, values }),
|
|
82
|
+
});
|
|
83
|
+
},
|
|
84
|
+
},
|
|
85
|
+
});
|
|
86
|
+
}`,p=`bun add @contractspec/example.form-showcase
|
|
87
|
+
|
|
88
|
+
# Full form-only example docs
|
|
89
|
+
open https://www.contractspec.io/docs/examples/form-showcase
|
|
90
|
+
|
|
91
|
+
# Template catalog filtered to forms
|
|
92
|
+
open https://www.contractspec.io/templates?tag=forms
|
|
93
|
+
|
|
94
|
+
# Sandbox spec preview
|
|
95
|
+
open https://www.contractspec.io/sandbox?template=form-showcase`;export{d as leadCapturePanelCode,s as leadCaptureFormCode,p as formShowcaseTemplateCode};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function GuideContractDrivenFormsPage(): import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
// @bun
|
|
2
|
+
var v=Object.defineProperty;var N=(o)=>o;function F(o,r){this[o]=N.bind(null,r)}var L=(o,r)=>{for(var i in r)v(o,i,{get:r[i],enumerable:!0,configurable:!0,set:F.bind(r,i)})};var R=(o,r)=>()=>(o&&(r=o(o=0)),r);import S from"@contractspec/lib.ui-link";import{jsx as c,jsxs as z}from"react/jsx-runtime";function s({title:o="Need the operating layer on top of OSS ContractSpec?",body:r="ContractSpec Studio helps teams turn evidence into proposed spec changes, governed delivery loops, and execution-ready task packs while keeping the open contract system as the source of truth.",ctaLabel:i="See what Studio adds",href:h="https://www.contractspec.studio/docs"}){return z("div",{className:"card-subtle space-y-3 p-6",children:[c("h3",{className:"font-semibold text-lg",children:o}),c("p",{className:"text-muted-foreground text-sm",children:r}),c(S,{href:h,className:"btn-primary",children:i})]})}var f=`import {
|
|
3
|
+
defineFormSpec,
|
|
4
|
+
FormRegistry,
|
|
5
|
+
responsiveFormColumns,
|
|
6
|
+
} from "@contractspec/lib.contracts-spec/forms";
|
|
7
|
+
import { fromZod } from "@contractspec/lib.schema";
|
|
8
|
+
import { z } from "zod";
|
|
9
|
+
|
|
10
|
+
const LeadCaptureModel = fromZod(
|
|
11
|
+
z.object({
|
|
12
|
+
fullName: z.string().min(1),
|
|
13
|
+
email: z.string().email(),
|
|
14
|
+
company: z.string().min(1),
|
|
15
|
+
intent: z.enum(["demo", "pricing", "pilot"]),
|
|
16
|
+
notes: z.string().max(1000).optional(),
|
|
17
|
+
newsletter: z.boolean().optional(),
|
|
18
|
+
}),
|
|
19
|
+
{ name: "LeadCaptureModel" },
|
|
20
|
+
);
|
|
21
|
+
|
|
22
|
+
export const LeadCaptureForm = defineFormSpec({
|
|
23
|
+
meta: {
|
|
24
|
+
key: "marketing.lead.form",
|
|
25
|
+
version: "1.0.0",
|
|
26
|
+
title: "Lead capture form",
|
|
27
|
+
description: "Collect qualified OSS and Studio leads.",
|
|
28
|
+
domain: "marketing",
|
|
29
|
+
owners: ["@growth"],
|
|
30
|
+
tags: ["forms", "leads"],
|
|
31
|
+
stability: "experimental",
|
|
32
|
+
},
|
|
33
|
+
model: LeadCaptureModel,
|
|
34
|
+
layout: {
|
|
35
|
+
columns: responsiveFormColumns(2),
|
|
36
|
+
gap: "md",
|
|
37
|
+
flow: {
|
|
38
|
+
kind: "sections",
|
|
39
|
+
sections: [
|
|
40
|
+
{ key: "identity", titleI18n: "Who you are", fieldNames: ["fullName", "email", "company"] },
|
|
41
|
+
{ key: "request", titleI18n: "What you need", fieldNames: ["intent", "notes", "newsletter"] },
|
|
42
|
+
],
|
|
43
|
+
},
|
|
44
|
+
},
|
|
45
|
+
fields: [
|
|
46
|
+
{ kind: "text", name: "fullName", labelI18n: "Full name", required: true, autoComplete: "name" },
|
|
47
|
+
{ kind: "email", name: "email", labelI18n: "Work email", required: true, autoComplete: "email" },
|
|
48
|
+
{ kind: "text", name: "company", labelI18n: "Company", required: true, autoComplete: "organization" },
|
|
49
|
+
{
|
|
50
|
+
kind: "select",
|
|
51
|
+
name: "intent",
|
|
52
|
+
labelI18n: "Primary goal",
|
|
53
|
+
required: true,
|
|
54
|
+
options: [
|
|
55
|
+
{ labelI18n: "Book a demo", value: "demo" },
|
|
56
|
+
{ labelI18n: "Understand pricing", value: "pricing" },
|
|
57
|
+
{ labelI18n: "Plan a pilot", value: "pilot" },
|
|
58
|
+
],
|
|
59
|
+
},
|
|
60
|
+
{ kind: "textarea", name: "notes", labelI18n: "Context", rows: 4, layout: { colSpan: "full" } },
|
|
61
|
+
{ kind: "checkbox", name: "newsletter", labelI18n: "Send product updates" },
|
|
62
|
+
],
|
|
63
|
+
actions: [{ key: "submit", labelI18n: "Send request", op: { name: "lead.create", version: "1.0.0" } }],
|
|
64
|
+
policy: { flags: ["lead-capture"], pii: ["fullName", "email", "company", "notes"] },
|
|
65
|
+
renderHints: { ui: "shadcn", form: "react-hook-form" },
|
|
66
|
+
});
|
|
67
|
+
|
|
68
|
+
export const formRegistry = new FormRegistry().register(LeadCaptureForm);`,y=`"use client";
|
|
69
|
+
|
|
70
|
+
import { formRenderer } from "@contractspec/lib.design-system/renderers/form-contract";
|
|
71
|
+
import { LeadCaptureForm } from "../contracts/forms/lead-capture.form";
|
|
72
|
+
|
|
73
|
+
export function LeadCapturePanel() {
|
|
74
|
+
return formRenderer.render(LeadCaptureForm, {
|
|
75
|
+
defaultValues: { newsletter: true },
|
|
76
|
+
overrides: {
|
|
77
|
+
onSubmitOverride: async (values, actionKey) => {
|
|
78
|
+
await fetch("/api/leads", {
|
|
79
|
+
method: "POST",
|
|
80
|
+
headers: { "content-type": "application/json" },
|
|
81
|
+
body: JSON.stringify({ actionKey, values }),
|
|
82
|
+
});
|
|
83
|
+
},
|
|
84
|
+
},
|
|
85
|
+
});
|
|
86
|
+
}`,g=`bun add @contractspec/example.form-showcase
|
|
87
|
+
|
|
88
|
+
# Full form-only example docs
|
|
89
|
+
open https://www.contractspec.io/docs/examples/form-showcase
|
|
90
|
+
|
|
91
|
+
# Template catalog filtered to forms
|
|
92
|
+
open https://www.contractspec.io/templates?tag=forms
|
|
93
|
+
|
|
94
|
+
# Sandbox spec preview
|
|
95
|
+
open https://www.contractspec.io/sandbox?template=form-showcase`;import{CodeBlock as l}from"@contractspec/lib.design-system";import{HStack as C,VStack as a}from"@contractspec/lib.design-system/layout";import{List as I,ListItem as u}from"@contractspec/lib.design-system/list";import{Code as b,H1 as q,H2 as p,H3 as w,P as n,Text as m}from"@contractspec/lib.design-system/typography";import d from"@contractspec/lib.ui-link";import{ChevronRight as O}from"lucide-react";import{jsx as e,jsxs as t}from"react/jsx-runtime";function _(){return t(a,{className:"space-y-8",children:[t(a,{className:"space-y-3",children:[e(q,{className:"font-bold text-4xl",children:"Build a contract-driven form"}),e(n,{className:"text-lg text-muted-foreground",children:"Define form data, fields, layout, policy, and submit behavior once, then let your app render from the same ContractSpec surface."})]}),t(a,{className:"card-subtle space-y-4 p-6",children:[e(p,{className:"font-bold text-2xl",children:"What you'll build"}),t(I,{className:"space-y-2 text-muted-foreground text-sm",children:[e(u,{children:e(m,{children:"A schema-backed FormSpec for a lead capture form."})}),e(u,{children:e(m,{children:"A FormRegistry that exposes the latest version by stable key."})}),e(u,{children:e(m,{children:"A React renderer that keeps UI, validation, and policy aligned."})})]})]}),t(a,{className:"space-y-6",children:[t(a,{className:"space-y-3",children:[e(p,{className:"font-bold text-2xl",children:"1) Define the form spec"}),t(n,{className:"text-muted-foreground text-sm",children:["Create ",e(b,{children:"src/contracts/forms/lead-capture.form.ts"}),":"]}),e(l,{language:"typescript",filename:"src/contracts/forms/lead-capture.form.ts",code:f})]}),t(a,{className:"card-subtle space-y-3 p-6",children:[e(w,{className:"font-semibold text-lg",children:"Need every form field?"}),t(n,{className:"text-muted-foreground text-sm",children:["Start from the"," ",e(d,{href:"/docs/examples/form-showcase",children:"Form Showcase example"})," ","or the"," ",e(d,{href:"/templates?tag=forms",children:"form template catalog"}),". It is focused only on forms and covers field kinds, section layouts, step layouts, arrays, groups, conditionals, and validation hints."]}),e(l,{language:"bash",filename:"form-showcase-template",code:g})]}),t(a,{className:"space-y-3",children:[e(p,{className:"font-bold text-2xl",children:"2) Render from the contract"}),e(n,{className:"text-muted-foreground text-sm",children:"Use the shared renderer, or provide your own driver if your app uses a different component library."}),e(l,{language:"tsx",filename:"src/components/LeadCapturePanel.tsx",code:y})]}),t(a,{className:"space-y-3",children:[e(p,{className:"font-bold text-2xl",children:"3) Validate and evolve"}),e(l,{language:"bash",filename:"validate-form",code:"contractspec validate src/contracts/forms/lead-capture.form.ts"}),t(n,{className:"text-muted-foreground text-sm",children:["Expected output: ",e(b,{children:"Validation passed"}),". When the form becomes public contract surface, version changes deliberately instead of editing field meaning in place."]})]}),t(a,{className:"card-subtle space-y-3 p-6",children:[e(w,{className:"font-semibold text-lg",children:"Repo tutorial"}),e(n,{className:"text-muted-foreground text-sm",children:"The repository guide adds the longer implementation checklist, custom renderer notes, and rollout rules."}),e(l,{language:"bash",filename:"repo-guide",code:"open docs/tutorials/contract-driven-forms.md"})]}),e(s,{title:"Need governed form changes?",body:"Studio can connect form edits to customer evidence, approval packets, and rollout checks before teams regenerate public surfaces."})]}),t(C,{className:"flex items-center gap-4 pt-4",children:[t(d,{href:"/docs/guides/generate-docs-clients-schemas",className:"btn-primary",children:[e(m,{children:"Next: Generate docs + clients"}),e(O,{size:16})]}),e(d,{href:"/docs/guides",className:"btn-ghost",children:e(m,{children:"Back to guides"})})]})]})}export{_ as GuideContractDrivenFormsPage};
|
|
@@ -61,4 +61,4 @@ export const ContactCreateCommand = defineCommand({
|
|
|
61
61
|
cd packages/examples/crm-pipeline
|
|
62
62
|
bun install
|
|
63
63
|
bun run build
|
|
64
|
-
bun run validate`})]}),e(r,{title:"Need validation tied to real outcomes?",body:"Studio links checks to evidence, focus decisions, and post-release verification so specs evolve with product truth."})]}),t("div",{className:"flex items-center gap-4 pt-4",children:[t(s,{href:"/docs/guides/
|
|
64
|
+
bun run validate`})]}),e(r,{title:"Need validation tied to real outcomes?",body:"Studio links checks to evidence, focus decisions, and post-release verification so specs evolve with product truth."})]}),t("div",{className:"flex items-center gap-4 pt-4",children:[t(s,{href:"/docs/guides/contract-driven-forms",className:"btn-primary",children:["Next: Contract-driven forms ",e(f,{size:16})]}),e(s,{href:"/docs/guides",className:"btn-ghost",children:"Back to guides"})]})]})}export{O as GuideSpecValidationTypingPage};
|