@contractspec/bundle.library 3.9.0 → 3.9.3

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.
Files changed (724) hide show
  1. package/.turbo/turbo-build.log +612 -608
  2. package/CHANGELOG.md +89 -0
  3. package/README.md +2 -1
  4. package/dist/__tests__/mocks/prisma.d.ts +5 -5
  5. package/dist/application/context-storage/index.js +1 -1
  6. package/dist/application/index.js +6 -6
  7. package/dist/application/mcp/cliMcp.js +2 -2
  8. package/dist/application/mcp/cliMcp.onboarding.js +1 -1
  9. package/dist/application/mcp/common.js +1 -1
  10. package/dist/application/mcp/contractsMcp.js +2 -2
  11. package/dist/application/mcp/contractsMcpAdoptionTools.js +1 -1
  12. package/dist/application/mcp/contractsMcpResources.js +2 -2
  13. package/dist/application/mcp/contractsMcpTools.js +1 -1
  14. package/dist/application/mcp/docsMcp.catalog.js +2 -2
  15. package/dist/application/mcp/docsMcp.data.js +1 -1
  16. package/dist/application/mcp/docsMcp.js +3 -3
  17. package/dist/application/mcp/docsMcp.prompts.js +3 -3
  18. package/dist/application/mcp/docsMcp.reference.js +2 -2
  19. package/dist/application/mcp/docsMcp.resources.js +2 -2
  20. package/dist/application/mcp/docsMcp.tools.js +2 -2
  21. package/dist/application/mcp/index.js +6 -6
  22. package/dist/application/mcp/internalMcp.js +2 -2
  23. package/dist/application/mcp/normalizeMcpRequest.js +1 -1
  24. package/dist/application/mcp/providerRankingMcp.js +1 -1
  25. package/dist/bundles/LibraryBundle.d.ts +19 -111
  26. package/dist/bundles/LibraryBundle.js +1 -1
  27. package/dist/bundles/index.js +1 -1
  28. package/dist/components/docs/DocsIndexPage.js +2 -2
  29. package/dist/components/docs/advanced/AdvancedMCPPage.js +3 -3
  30. package/dist/components/docs/advanced/AdvancedOverlayEditorPage.js +1 -1
  31. package/dist/components/docs/advanced/AdvancedRenderersPage.js +2 -2
  32. package/dist/components/docs/advanced/AdvancedSpecExperimentsPage.js +4 -4
  33. package/dist/components/docs/advanced/AdvancedTelemetryPage.js +2 -2
  34. package/dist/components/docs/advanced/AdvancedWorkflowMonitoringPage.js +2 -2
  35. package/dist/components/docs/advanced/index.js +9 -9
  36. package/dist/components/docs/architecture/ArchitectureAppConfigPage.js +6 -6
  37. package/dist/components/docs/architecture/ArchitectureControlPlanePage.js +3 -3
  38. package/dist/components/docs/architecture/ArchitectureIntegrationBindingPage.js +7 -7
  39. package/dist/components/docs/architecture/ArchitectureKnowledgeBindingPage.js +6 -6
  40. package/dist/components/docs/architecture/ArchitectureMultiTenancyPage.js +2 -2
  41. package/dist/components/docs/architecture/ArchitectureOverviewPage.js +1 -1
  42. package/dist/components/docs/architecture/index.js +20 -20
  43. package/dist/components/docs/comparison/ComparisonAutomationPlatformsPage.js +1 -1
  44. package/dist/components/docs/comparison/ComparisonEnterprisePlatformsPage.js +1 -1
  45. package/dist/components/docs/comparison/ComparisonInternalToolBuildersPage.js +1 -1
  46. package/dist/components/docs/comparison/ComparisonOverviewPage.js +1 -1
  47. package/dist/components/docs/comparison/ComparisonWindmillPage.js +1 -1
  48. package/dist/components/docs/comparison/ComparisonWorkflowEnginesPage.js +1 -1
  49. package/dist/components/docs/comparison/index.js +1 -1
  50. package/dist/components/docs/docsManifest.js +1 -1
  51. package/dist/components/docs/ecosystem/IntegrationsPage.js +2 -2
  52. package/dist/components/docs/ecosystem/PluginsPage.js +4 -4
  53. package/dist/components/docs/ecosystem/RegistryPage.js +4 -4
  54. package/dist/components/docs/ecosystem/TemplatesPage.js +3 -3
  55. package/dist/components/docs/ecosystem/index.js +11 -11
  56. package/dist/components/docs/examples/DocsExamplesPage.js +1 -1
  57. package/dist/components/docs/examples/ExampleShowcasePage.js +2 -2
  58. package/dist/components/docs/examples/exampleShowcaseData.js +2 -2
  59. package/dist/components/docs/examples/index.js +2 -2
  60. package/dist/components/docs/generated/docs-index.generated.js +1 -1
  61. package/dist/components/docs/generated/index.d.ts +7 -1
  62. package/dist/components/docs/generated/index.js +1 -1
  63. package/dist/components/docs/generated/loader.js +1 -1
  64. package/dist/components/docs/getting-started/CLIPage.js +4 -4
  65. package/dist/components/docs/getting-started/CompatibilityPage.js +1 -1
  66. package/dist/components/docs/getting-started/DataViewTutorialPage.js +4 -4
  67. package/dist/components/docs/getting-started/DeveloperToolsPage.js +1 -1
  68. package/dist/components/docs/getting-started/HelloWorldPage.js +5 -5
  69. package/dist/components/docs/getting-started/InstallationPage.js +3 -3
  70. package/dist/components/docs/getting-started/StartHerePage.js +3 -3
  71. package/dist/components/docs/getting-started/TroubleshootingPage.js +2 -2
  72. package/dist/components/docs/getting-started/VSCodeExtensionPage.js +1 -1
  73. package/dist/components/docs/getting-started/getting-started.docblocks.js +2 -2
  74. package/dist/components/docs/getting-started/index.js +17 -17
  75. package/dist/components/docs/guides/GuideCIDiffGatingPage.js +2 -2
  76. package/dist/components/docs/guides/GuideConnectInRepoPage.js +6 -6
  77. package/dist/components/docs/guides/GuideContractTypesPage.js +6 -6
  78. package/dist/components/docs/guides/GuideDocsPipelinePage.js +3 -3
  79. package/dist/components/docs/guides/GuideFirstModuleBundlePage.js +4 -4
  80. package/dist/components/docs/guides/GuideGenerateDocsClientsSchemasPage.js +2 -2
  81. package/dist/components/docs/guides/GuideHostBuilderWorkbenchPage.js +7 -7
  82. package/dist/components/docs/guides/GuideImportExistingCodebasesPage.js +8 -8
  83. package/dist/components/docs/guides/GuideNextjsOneEndpointPage.js +6 -6
  84. package/dist/components/docs/guides/GuideReleaseCapsulesPage.js +3 -3
  85. package/dist/components/docs/guides/GuideSpecValidationTypingPage.js +4 -4
  86. package/dist/components/docs/guides/GuidesIndexPage.js +2 -2
  87. package/dist/components/docs/guides/index.js +43 -43
  88. package/dist/components/docs/index.js +375 -255
  89. package/dist/components/docs/integrations/IntegrationsCircuitBreakersPage.js +2 -2
  90. package/dist/components/docs/integrations/IntegrationsElevenLabsPage.js +3 -3
  91. package/dist/components/docs/integrations/IntegrationsGithubPage.js +2 -2
  92. package/dist/components/docs/integrations/IntegrationsGmailPage.js +3 -3
  93. package/dist/components/docs/integrations/IntegrationsGoogleCalendarPage.js +3 -3
  94. package/dist/components/docs/integrations/IntegrationsHealthRoutingPage.js +2 -2
  95. package/dist/components/docs/integrations/IntegrationsMistralPage.js +2 -2
  96. package/dist/components/docs/integrations/IntegrationsOpenAIPage.js +2 -2
  97. package/dist/components/docs/integrations/IntegrationsOverviewPage.js +1 -1
  98. package/dist/components/docs/integrations/IntegrationsPostmarkPage.js +2 -2
  99. package/dist/components/docs/integrations/IntegrationsPowensPage.js +2 -2
  100. package/dist/components/docs/integrations/IntegrationsQdrantPage.js +5 -5
  101. package/dist/components/docs/integrations/IntegrationsResendPage.js +3 -3
  102. package/dist/components/docs/integrations/IntegrationsS3Page.js +4 -4
  103. package/dist/components/docs/integrations/IntegrationsSlackPage.js +2 -2
  104. package/dist/components/docs/integrations/IntegrationsSpecModelPage.js +2 -2
  105. package/dist/components/docs/integrations/IntegrationsStripePage.js +2 -2
  106. package/dist/components/docs/integrations/IntegrationsTwilioPage.js +3 -3
  107. package/dist/components/docs/integrations/IntegrationsWhatsappMetaPage.js +2 -2
  108. package/dist/components/docs/integrations/IntegrationsWhatsappTwilioPage.js +2 -2
  109. package/dist/components/docs/integrations/index.js +39 -39
  110. package/dist/components/docs/intent/ContractFirstApiPage.js +2 -2
  111. package/dist/components/docs/intent/DeterministicCodegenPage.js +2 -2
  112. package/dist/components/docs/intent/GenerateClientFromSchemaPage.js +7 -7
  113. package/dist/components/docs/intent/OpenapiAlternativePage.js +3 -3
  114. package/dist/components/docs/intent/SchemaValidationTypescriptPage.js +4 -4
  115. package/dist/components/docs/intent/SpecDrivenDevelopmentPage.js +2 -2
  116. package/dist/components/docs/intent/index.js +15 -15
  117. package/dist/components/docs/intent/intent-pages.docblocks.js +1 -1
  118. package/dist/components/docs/knowledge/KnowledgeCategoriesPage.js +2 -2
  119. package/dist/components/docs/knowledge/KnowledgeExamplesPage.js +2 -2
  120. package/dist/components/docs/knowledge/KnowledgeOverviewPage.js +1 -1
  121. package/dist/components/docs/knowledge/KnowledgeSourcesPage.js +2 -2
  122. package/dist/components/docs/knowledge/KnowledgeSpacesPage.js +2 -2
  123. package/dist/components/docs/knowledge/index.js +5 -5
  124. package/dist/components/docs/libraries/LibrariesAccessibilityPage.js +3 -3
  125. package/dist/components/docs/libraries/LibrariesAiAgentPage.js +3 -3
  126. package/dist/components/docs/libraries/LibrariesAnalyticsPage.js +4 -4
  127. package/dist/components/docs/libraries/LibrariesContentGenPage.js +2 -2
  128. package/dist/components/docs/libraries/LibrariesContractsPage.js +2 -2
  129. package/dist/components/docs/libraries/LibrariesCostTrackingPage.js +3 -3
  130. package/dist/components/docs/libraries/LibrariesCrossPlatformUIPage.content.d.ts +67 -0
  131. package/dist/components/docs/libraries/LibrariesCrossPlatformUIPage.content.js +86 -0
  132. package/dist/components/docs/libraries/LibrariesCrossPlatformUIPage.d.ts +1 -0
  133. package/dist/components/docs/libraries/LibrariesCrossPlatformUIPage.js +86 -0
  134. package/dist/components/docs/libraries/LibrariesDataBackendPage.js +2 -2
  135. package/dist/components/docs/libraries/LibrariesDataViewsPage.js +3 -3
  136. package/dist/components/docs/libraries/LibrariesDesignSystemPage.js +38 -2
  137. package/dist/components/docs/libraries/LibrariesEvolutionPage.js +4 -4
  138. package/dist/components/docs/libraries/LibrariesGraphQLPage.js +2 -2
  139. package/dist/components/docs/libraries/LibrariesGrowthPage.js +3 -3
  140. package/dist/components/docs/libraries/LibrariesMultiTenancyPage.js +3 -3
  141. package/dist/components/docs/libraries/LibrariesObservabilityPage.js +5 -5
  142. package/dist/components/docs/libraries/LibrariesOverlayEnginePage.js +4 -4
  143. package/dist/components/docs/libraries/LibrariesOverviewPage.js +1 -1
  144. package/dist/components/docs/libraries/LibrariesPersonalizationPage.js +4 -4
  145. package/dist/components/docs/libraries/LibrariesProgressiveDeliveryPage.js +3 -3
  146. package/dist/components/docs/libraries/LibrariesResiliencePage.js +4 -4
  147. package/dist/components/docs/libraries/LibrariesRuntimePage.js +2 -2
  148. package/dist/components/docs/libraries/LibrariesSLOPage.js +3 -3
  149. package/dist/components/docs/libraries/LibrariesSchemaPage.js +3 -3
  150. package/dist/components/docs/libraries/LibrariesSupportBotPage.js +3 -3
  151. package/dist/components/docs/libraries/LibrariesTestingPage.js +3 -3
  152. package/dist/components/docs/libraries/LibrariesUIKitPage.js +2 -2
  153. package/dist/components/docs/libraries/LibrariesUIKitWebPage.js +2 -2
  154. package/dist/components/docs/libraries/LibrariesWorkflowComposerPage.js +3 -3
  155. package/dist/components/docs/libraries/LibrariesWorkflowsPage.js +2 -2
  156. package/dist/components/docs/libraries/index.d.ts +1 -0
  157. package/dist/components/docs/libraries/index.js +173 -53
  158. package/dist/components/docs/manifesto/ManifestoPage.js +1 -1
  159. package/dist/components/docs/ops/AutoEvolutionOpsPage.js +2 -2
  160. package/dist/components/docs/ops/DistributedTracingOpsPage.js +2 -2
  161. package/dist/components/docs/ops/index.js +3 -3
  162. package/dist/components/docs/ops/ops-lifecycle.docblocks.js +2 -2
  163. package/dist/components/docs/ops/ops-runbooks-a.docblocks.js +2 -2
  164. package/dist/components/docs/ops/ops-runbooks-b.docblocks.js +2 -2
  165. package/dist/components/docs/ops/ops-slo-tenant.docblocks.js +2 -2
  166. package/dist/components/docs/ops/ops-top.docs.js +2 -2
  167. package/dist/components/docs/ops/ops.docs.js +6 -6
  168. package/dist/components/docs/product/product.docblocks.js +2 -2
  169. package/dist/components/docs/reference/DocsMarkdownContent.js +2 -2
  170. package/dist/components/docs/reference/DocsReferenceContent.js +3 -3
  171. package/dist/components/docs/reference/DocsReferenceIndexClient.js +2 -2
  172. package/dist/components/docs/reference/DocsReferenceIndexPage.js +2 -2
  173. package/dist/components/docs/reference/DocsReferencePage.js +3 -3
  174. package/dist/components/docs/reference/docsMarkdownParser.js +2 -2
  175. package/dist/components/docs/reference/index.js +4 -4
  176. package/dist/components/docs/safety/SafetyAuditingPage.js +2 -2
  177. package/dist/components/docs/safety/SafetyMigrationsPage.js +2 -2
  178. package/dist/components/docs/safety/SafetyOverviewPage.js +1 -1
  179. package/dist/components/docs/safety/SafetyPDPPage.js +2 -2
  180. package/dist/components/docs/safety/SafetySecurityTrustPage.js +1 -1
  181. package/dist/components/docs/safety/SafetySigningPage.js +3 -3
  182. package/dist/components/docs/safety/SafetyTenantIsolationPage.js +2 -2
  183. package/dist/components/docs/safety/index.js +7 -7
  184. package/dist/components/docs/shared/StudioPrompt.js +1 -1
  185. package/dist/components/docs/specs/SpecsBuilderControlPlanePage.js +4 -4
  186. package/dist/components/docs/specs/SpecsCapabilitiesPage.js +2 -2
  187. package/dist/components/docs/specs/SpecsConnectPage.js +2 -2
  188. package/dist/components/docs/specs/SpecsDataViewsPage.js +2 -2
  189. package/dist/components/docs/specs/SpecsModuleBundlesPage.js +3 -3
  190. package/dist/components/docs/specs/SpecsOverlaysPage.js +2 -2
  191. package/dist/components/docs/specs/SpecsOverviewPage.js +1 -1
  192. package/dist/components/docs/specs/SpecsPolicyPage.js +3 -3
  193. package/dist/components/docs/specs/SpecsWorkflowsPage.js +2 -2
  194. package/dist/components/docs/specs/index.js +13 -13
  195. package/dist/components/docs/studio/StudioBYOKPage.js +1 -1
  196. package/dist/components/docs/studio/StudioDeploymentsPage.js +1 -1
  197. package/dist/components/docs/studio/StudioGettingStartedPage.js +1 -1
  198. package/dist/components/docs/studio/StudioIntegrationsPage.js +1 -1
  199. package/dist/components/docs/studio/StudioOverviewPage.js +1 -1
  200. package/dist/components/docs/studio/StudioVisualBuilderPage.js +1 -1
  201. package/dist/components/docs/studio/index.js +1 -1
  202. package/dist/components/docs/tech/contracts/tech-docs.docblocks.js +2 -2
  203. package/dist/components/integrations/index.js +2 -2
  204. package/dist/components/integrations/molecules/IntegrationCard.js +1 -1
  205. package/dist/components/integrations/organisms/IntegrationMarketplace.js +1 -1
  206. package/dist/components/integrations/organisms/IntegrationSettings.js +2 -2
  207. package/dist/components/integrations/organisms/KnowledgeSourceList.js +1 -1
  208. package/dist/components/legal/PrivacyTemplate.js +1 -1
  209. package/dist/components/legal/TermsTemplate.js +1 -1
  210. package/dist/components/legal/index.js +1 -1
  211. package/dist/components/shared/FeatureGateNotice.js +1 -1
  212. package/dist/components/shared/index.js +1 -1
  213. package/dist/components/shell/WorkspaceHeader.js +1 -1
  214. package/dist/components/shell/WorkspaceProjectShellLayout.js +1 -1
  215. package/dist/components/shell/WorkspaceShellRenderer.js +1 -1
  216. package/dist/components/shell/WorkspaceSidebar.js +1 -1
  217. package/dist/components/shell/index.js +1 -1
  218. package/dist/components/templates/engine/index.js +1 -1
  219. package/dist/components/templates/index.js +11 -11
  220. package/dist/components/templates/messaging/ConversationList.js +2 -2
  221. package/dist/components/templates/messaging/MessageComposer.js +4 -4
  222. package/dist/components/templates/messaging/MessageThread.js +3 -3
  223. package/dist/components/templates/messaging/MessagingWorkspace.js +5 -5
  224. package/dist/components/templates/messaging/index.js +5 -5
  225. package/dist/components/templates/recipes/LanguageSwitcher.js +1 -1
  226. package/dist/components/templates/recipes/RecipeCard.js +1 -1
  227. package/dist/components/templates/recipes/RecipeDetail.js +1 -1
  228. package/dist/components/templates/recipes/RecipeList.js +3 -3
  229. package/dist/components/templates/recipes/index.js +3 -3
  230. package/dist/components/templates/todos/FilterBar.js +1 -1
  231. package/dist/components/templates/todos/TaskForm.js +2 -2
  232. package/dist/components/templates/todos/TaskItem.js +1 -1
  233. package/dist/components/templates/todos/TaskList.js +5 -5
  234. package/dist/components/templates/todos/index.js +5 -5
  235. package/dist/config/contractspec-blueprint.js +1 -1
  236. package/dist/config/contractspec-branding.js +1 -1
  237. package/dist/config/contractspec-routes.js +1 -1
  238. package/dist/config/index.js +1 -1
  239. package/dist/features/contracts-registry.js +1 -1
  240. package/dist/features/docs/docs.contracts.js +1 -1
  241. package/dist/features/docs/index.js +1 -1
  242. package/dist/features/docs.feature.js +1 -1
  243. package/dist/features/index.js +1 -1
  244. package/dist/features/mcp.feature.js +1 -1
  245. package/dist/features/presentations.feature.js +1 -1
  246. package/dist/features/registry.js +1 -1
  247. package/dist/index.d.ts +1 -0
  248. package/dist/index.js +382 -262
  249. package/dist/infrastructure/elysia/index.js +1 -1
  250. package/dist/infrastructure/elysia/logger.js +1 -1
  251. package/dist/infrastructure/index.js +1 -1
  252. package/dist/libs/email/client.js +1 -1
  253. package/dist/libs/email/contact.js +3 -3
  254. package/dist/libs/email/newsletter.js +3 -3
  255. package/dist/libs/email/utils.js +2 -2
  256. package/dist/libs/email/waitlist-application.js +3 -3
  257. package/dist/libs/email/waitlist.js +3 -3
  258. package/dist/libs/email.js +6 -6
  259. package/dist/libs/posthog/client.js +1 -1
  260. package/dist/libs/posthog/native.js +1 -1
  261. package/dist/libs/posthog/server.js +1 -1
  262. package/dist/libs/pricing-examples.js +1 -1
  263. package/dist/node/application/context-storage/index.js +1 -1
  264. package/dist/node/application/index.js +6 -6
  265. package/dist/node/application/mcp/cliMcp.js +2 -2
  266. package/dist/node/application/mcp/cliMcp.onboarding.js +1 -1
  267. package/dist/node/application/mcp/common.js +1 -1
  268. package/dist/node/application/mcp/contractsMcp.js +2 -2
  269. package/dist/node/application/mcp/contractsMcpAdoptionTools.js +1 -1
  270. package/dist/node/application/mcp/contractsMcpResources.js +2 -2
  271. package/dist/node/application/mcp/contractsMcpTools.js +1 -1
  272. package/dist/node/application/mcp/docsMcp.catalog.js +2 -2
  273. package/dist/node/application/mcp/docsMcp.data.js +1 -1
  274. package/dist/node/application/mcp/docsMcp.js +3 -3
  275. package/dist/node/application/mcp/docsMcp.prompts.js +3 -3
  276. package/dist/node/application/mcp/docsMcp.reference.js +2 -2
  277. package/dist/node/application/mcp/docsMcp.resources.js +2 -2
  278. package/dist/node/application/mcp/docsMcp.tools.js +2 -2
  279. package/dist/node/application/mcp/index.js +6 -6
  280. package/dist/node/application/mcp/internalMcp.js +2 -2
  281. package/dist/node/application/mcp/normalizeMcpRequest.js +1 -1
  282. package/dist/node/application/mcp/providerRankingMcp.js +1 -1
  283. package/dist/node/bundles/LibraryBundle.js +1 -1
  284. package/dist/node/bundles/index.js +1 -1
  285. package/dist/node/components/docs/DocsIndexPage.js +2 -2
  286. package/dist/node/components/docs/advanced/AdvancedMCPPage.js +3 -3
  287. package/dist/node/components/docs/advanced/AdvancedOverlayEditorPage.js +1 -1
  288. package/dist/node/components/docs/advanced/AdvancedRenderersPage.js +2 -2
  289. package/dist/node/components/docs/advanced/AdvancedSpecExperimentsPage.js +4 -4
  290. package/dist/node/components/docs/advanced/AdvancedTelemetryPage.js +2 -2
  291. package/dist/node/components/docs/advanced/AdvancedWorkflowMonitoringPage.js +2 -2
  292. package/dist/node/components/docs/advanced/index.js +9 -9
  293. package/dist/node/components/docs/architecture/ArchitectureAppConfigPage.js +6 -6
  294. package/dist/node/components/docs/architecture/ArchitectureControlPlanePage.js +3 -3
  295. package/dist/node/components/docs/architecture/ArchitectureIntegrationBindingPage.js +7 -7
  296. package/dist/node/components/docs/architecture/ArchitectureKnowledgeBindingPage.js +6 -6
  297. package/dist/node/components/docs/architecture/ArchitectureMultiTenancyPage.js +2 -2
  298. package/dist/node/components/docs/architecture/ArchitectureOverviewPage.js +1 -1
  299. package/dist/node/components/docs/architecture/index.js +20 -20
  300. package/dist/node/components/docs/comparison/ComparisonAutomationPlatformsPage.js +1 -1
  301. package/dist/node/components/docs/comparison/ComparisonEnterprisePlatformsPage.js +1 -1
  302. package/dist/node/components/docs/comparison/ComparisonInternalToolBuildersPage.js +1 -1
  303. package/dist/node/components/docs/comparison/ComparisonOverviewPage.js +1 -1
  304. package/dist/node/components/docs/comparison/ComparisonWindmillPage.js +1 -1
  305. package/dist/node/components/docs/comparison/ComparisonWorkflowEnginesPage.js +1 -1
  306. package/dist/node/components/docs/comparison/index.js +1 -1
  307. package/dist/node/components/docs/docsManifest.js +1 -1
  308. package/dist/node/components/docs/ecosystem/IntegrationsPage.js +2 -2
  309. package/dist/node/components/docs/ecosystem/PluginsPage.js +4 -4
  310. package/dist/node/components/docs/ecosystem/RegistryPage.js +4 -4
  311. package/dist/node/components/docs/ecosystem/TemplatesPage.js +3 -3
  312. package/dist/node/components/docs/ecosystem/index.js +11 -11
  313. package/dist/node/components/docs/examples/DocsExamplesPage.js +1 -1
  314. package/dist/node/components/docs/examples/ExampleShowcasePage.js +2 -2
  315. package/dist/node/components/docs/examples/exampleShowcaseData.js +2 -2
  316. package/dist/node/components/docs/examples/index.js +2 -2
  317. package/dist/node/components/docs/generated/docs-index.generated.js +1 -1
  318. package/dist/node/components/docs/generated/index.js +1 -1
  319. package/dist/node/components/docs/generated/loader.js +1 -1
  320. package/dist/node/components/docs/getting-started/CLIPage.js +4 -4
  321. package/dist/node/components/docs/getting-started/CompatibilityPage.js +1 -1
  322. package/dist/node/components/docs/getting-started/DataViewTutorialPage.js +4 -4
  323. package/dist/node/components/docs/getting-started/DeveloperToolsPage.js +1 -1
  324. package/dist/node/components/docs/getting-started/HelloWorldPage.js +5 -5
  325. package/dist/node/components/docs/getting-started/InstallationPage.js +3 -3
  326. package/dist/node/components/docs/getting-started/StartHerePage.js +3 -3
  327. package/dist/node/components/docs/getting-started/TroubleshootingPage.js +2 -2
  328. package/dist/node/components/docs/getting-started/VSCodeExtensionPage.js +1 -1
  329. package/dist/node/components/docs/getting-started/getting-started.docblocks.js +2 -2
  330. package/dist/node/components/docs/getting-started/index.js +17 -17
  331. package/dist/node/components/docs/guides/GuideCIDiffGatingPage.js +2 -2
  332. package/dist/node/components/docs/guides/GuideConnectInRepoPage.js +6 -6
  333. package/dist/node/components/docs/guides/GuideContractTypesPage.js +6 -6
  334. package/dist/node/components/docs/guides/GuideDocsPipelinePage.js +3 -3
  335. package/dist/node/components/docs/guides/GuideFirstModuleBundlePage.js +4 -4
  336. package/dist/node/components/docs/guides/GuideGenerateDocsClientsSchemasPage.js +2 -2
  337. package/dist/node/components/docs/guides/GuideHostBuilderWorkbenchPage.js +7 -7
  338. package/dist/node/components/docs/guides/GuideImportExistingCodebasesPage.js +8 -8
  339. package/dist/node/components/docs/guides/GuideNextjsOneEndpointPage.js +6 -6
  340. package/dist/node/components/docs/guides/GuideReleaseCapsulesPage.js +3 -3
  341. package/dist/node/components/docs/guides/GuideSpecValidationTypingPage.js +4 -4
  342. package/dist/node/components/docs/guides/GuidesIndexPage.js +2 -2
  343. package/dist/node/components/docs/guides/index.js +43 -43
  344. package/dist/node/components/docs/index.js +375 -255
  345. package/dist/node/components/docs/integrations/IntegrationsCircuitBreakersPage.js +2 -2
  346. package/dist/node/components/docs/integrations/IntegrationsElevenLabsPage.js +3 -3
  347. package/dist/node/components/docs/integrations/IntegrationsGithubPage.js +2 -2
  348. package/dist/node/components/docs/integrations/IntegrationsGmailPage.js +3 -3
  349. package/dist/node/components/docs/integrations/IntegrationsGoogleCalendarPage.js +3 -3
  350. package/dist/node/components/docs/integrations/IntegrationsHealthRoutingPage.js +2 -2
  351. package/dist/node/components/docs/integrations/IntegrationsMistralPage.js +2 -2
  352. package/dist/node/components/docs/integrations/IntegrationsOpenAIPage.js +2 -2
  353. package/dist/node/components/docs/integrations/IntegrationsOverviewPage.js +1 -1
  354. package/dist/node/components/docs/integrations/IntegrationsPostmarkPage.js +2 -2
  355. package/dist/node/components/docs/integrations/IntegrationsPowensPage.js +2 -2
  356. package/dist/node/components/docs/integrations/IntegrationsQdrantPage.js +5 -5
  357. package/dist/node/components/docs/integrations/IntegrationsResendPage.js +3 -3
  358. package/dist/node/components/docs/integrations/IntegrationsS3Page.js +4 -4
  359. package/dist/node/components/docs/integrations/IntegrationsSlackPage.js +2 -2
  360. package/dist/node/components/docs/integrations/IntegrationsSpecModelPage.js +2 -2
  361. package/dist/node/components/docs/integrations/IntegrationsStripePage.js +2 -2
  362. package/dist/node/components/docs/integrations/IntegrationsTwilioPage.js +3 -3
  363. package/dist/node/components/docs/integrations/IntegrationsWhatsappMetaPage.js +2 -2
  364. package/dist/node/components/docs/integrations/IntegrationsWhatsappTwilioPage.js +2 -2
  365. package/dist/node/components/docs/integrations/index.js +39 -39
  366. package/dist/node/components/docs/intent/ContractFirstApiPage.js +2 -2
  367. package/dist/node/components/docs/intent/DeterministicCodegenPage.js +2 -2
  368. package/dist/node/components/docs/intent/GenerateClientFromSchemaPage.js +7 -7
  369. package/dist/node/components/docs/intent/OpenapiAlternativePage.js +3 -3
  370. package/dist/node/components/docs/intent/SchemaValidationTypescriptPage.js +4 -4
  371. package/dist/node/components/docs/intent/SpecDrivenDevelopmentPage.js +2 -2
  372. package/dist/node/components/docs/intent/index.js +15 -15
  373. package/dist/node/components/docs/intent/intent-pages.docblocks.js +1 -1
  374. package/dist/node/components/docs/knowledge/KnowledgeCategoriesPage.js +2 -2
  375. package/dist/node/components/docs/knowledge/KnowledgeExamplesPage.js +2 -2
  376. package/dist/node/components/docs/knowledge/KnowledgeOverviewPage.js +1 -1
  377. package/dist/node/components/docs/knowledge/KnowledgeSourcesPage.js +2 -2
  378. package/dist/node/components/docs/knowledge/KnowledgeSpacesPage.js +2 -2
  379. package/dist/node/components/docs/knowledge/index.js +5 -5
  380. package/dist/node/components/docs/libraries/LibrariesAccessibilityPage.js +3 -3
  381. package/dist/node/components/docs/libraries/LibrariesAiAgentPage.js +3 -3
  382. package/dist/node/components/docs/libraries/LibrariesAnalyticsPage.js +4 -4
  383. package/dist/node/components/docs/libraries/LibrariesContentGenPage.js +2 -2
  384. package/dist/node/components/docs/libraries/LibrariesContractsPage.js +2 -2
  385. package/dist/node/components/docs/libraries/LibrariesCostTrackingPage.js +3 -3
  386. package/dist/node/components/docs/libraries/LibrariesCrossPlatformUIPage.content.js +85 -0
  387. package/dist/node/components/docs/libraries/LibrariesCrossPlatformUIPage.js +85 -0
  388. package/dist/node/components/docs/libraries/LibrariesDataBackendPage.js +2 -2
  389. package/dist/node/components/docs/libraries/LibrariesDataViewsPage.js +3 -3
  390. package/dist/node/components/docs/libraries/LibrariesDesignSystemPage.js +38 -2
  391. package/dist/node/components/docs/libraries/LibrariesEvolutionPage.js +4 -4
  392. package/dist/node/components/docs/libraries/LibrariesGraphQLPage.js +2 -2
  393. package/dist/node/components/docs/libraries/LibrariesGrowthPage.js +3 -3
  394. package/dist/node/components/docs/libraries/LibrariesMultiTenancyPage.js +3 -3
  395. package/dist/node/components/docs/libraries/LibrariesObservabilityPage.js +5 -5
  396. package/dist/node/components/docs/libraries/LibrariesOverlayEnginePage.js +4 -4
  397. package/dist/node/components/docs/libraries/LibrariesOverviewPage.js +1 -1
  398. package/dist/node/components/docs/libraries/LibrariesPersonalizationPage.js +4 -4
  399. package/dist/node/components/docs/libraries/LibrariesProgressiveDeliveryPage.js +3 -3
  400. package/dist/node/components/docs/libraries/LibrariesResiliencePage.js +4 -4
  401. package/dist/node/components/docs/libraries/LibrariesRuntimePage.js +2 -2
  402. package/dist/node/components/docs/libraries/LibrariesSLOPage.js +3 -3
  403. package/dist/node/components/docs/libraries/LibrariesSchemaPage.js +3 -3
  404. package/dist/node/components/docs/libraries/LibrariesSupportBotPage.js +3 -3
  405. package/dist/node/components/docs/libraries/LibrariesTestingPage.js +3 -3
  406. package/dist/node/components/docs/libraries/LibrariesUIKitPage.js +2 -2
  407. package/dist/node/components/docs/libraries/LibrariesUIKitWebPage.js +2 -2
  408. package/dist/node/components/docs/libraries/LibrariesWorkflowComposerPage.js +3 -3
  409. package/dist/node/components/docs/libraries/LibrariesWorkflowsPage.js +2 -2
  410. package/dist/node/components/docs/libraries/index.js +173 -53
  411. package/dist/node/components/docs/manifesto/ManifestoPage.js +1 -1
  412. package/dist/node/components/docs/ops/AutoEvolutionOpsPage.js +2 -2
  413. package/dist/node/components/docs/ops/DistributedTracingOpsPage.js +2 -2
  414. package/dist/node/components/docs/ops/index.js +3 -3
  415. package/dist/node/components/docs/ops/ops-lifecycle.docblocks.js +2 -2
  416. package/dist/node/components/docs/ops/ops-runbooks-a.docblocks.js +2 -2
  417. package/dist/node/components/docs/ops/ops-runbooks-b.docblocks.js +2 -2
  418. package/dist/node/components/docs/ops/ops-slo-tenant.docblocks.js +2 -2
  419. package/dist/node/components/docs/ops/ops-top.docs.js +2 -2
  420. package/dist/node/components/docs/ops/ops.docs.js +6 -6
  421. package/dist/node/components/docs/product/product.docblocks.js +2 -2
  422. package/dist/node/components/docs/reference/DocsMarkdownContent.js +2 -2
  423. package/dist/node/components/docs/reference/DocsReferenceContent.js +3 -3
  424. package/dist/node/components/docs/reference/DocsReferenceIndexClient.js +2 -2
  425. package/dist/node/components/docs/reference/DocsReferenceIndexPage.js +2 -2
  426. package/dist/node/components/docs/reference/DocsReferencePage.js +3 -3
  427. package/dist/node/components/docs/reference/docsMarkdownParser.js +2 -2
  428. package/dist/node/components/docs/reference/index.js +4 -4
  429. package/dist/node/components/docs/safety/SafetyAuditingPage.js +2 -2
  430. package/dist/node/components/docs/safety/SafetyMigrationsPage.js +2 -2
  431. package/dist/node/components/docs/safety/SafetyOverviewPage.js +1 -1
  432. package/dist/node/components/docs/safety/SafetyPDPPage.js +2 -2
  433. package/dist/node/components/docs/safety/SafetySecurityTrustPage.js +1 -1
  434. package/dist/node/components/docs/safety/SafetySigningPage.js +3 -3
  435. package/dist/node/components/docs/safety/SafetyTenantIsolationPage.js +2 -2
  436. package/dist/node/components/docs/safety/index.js +7 -7
  437. package/dist/node/components/docs/shared/StudioPrompt.js +1 -1
  438. package/dist/node/components/docs/specs/SpecsBuilderControlPlanePage.js +4 -4
  439. package/dist/node/components/docs/specs/SpecsCapabilitiesPage.js +2 -2
  440. package/dist/node/components/docs/specs/SpecsConnectPage.js +2 -2
  441. package/dist/node/components/docs/specs/SpecsDataViewsPage.js +2 -2
  442. package/dist/node/components/docs/specs/SpecsModuleBundlesPage.js +3 -3
  443. package/dist/node/components/docs/specs/SpecsOverlaysPage.js +2 -2
  444. package/dist/node/components/docs/specs/SpecsOverviewPage.js +1 -1
  445. package/dist/node/components/docs/specs/SpecsPolicyPage.js +3 -3
  446. package/dist/node/components/docs/specs/SpecsWorkflowsPage.js +2 -2
  447. package/dist/node/components/docs/specs/index.js +13 -13
  448. package/dist/node/components/docs/studio/StudioBYOKPage.js +1 -1
  449. package/dist/node/components/docs/studio/StudioDeploymentsPage.js +1 -1
  450. package/dist/node/components/docs/studio/StudioGettingStartedPage.js +1 -1
  451. package/dist/node/components/docs/studio/StudioIntegrationsPage.js +1 -1
  452. package/dist/node/components/docs/studio/StudioOverviewPage.js +1 -1
  453. package/dist/node/components/docs/studio/StudioVisualBuilderPage.js +1 -1
  454. package/dist/node/components/docs/studio/index.js +1 -1
  455. package/dist/node/components/docs/tech/contracts/tech-docs.docblocks.js +2 -2
  456. package/dist/node/components/integrations/index.js +2 -2
  457. package/dist/node/components/integrations/molecules/IntegrationCard.js +1 -1
  458. package/dist/node/components/integrations/organisms/IntegrationMarketplace.js +1 -1
  459. package/dist/node/components/integrations/organisms/IntegrationSettings.js +2 -2
  460. package/dist/node/components/integrations/organisms/KnowledgeSourceList.js +1 -1
  461. package/dist/node/components/legal/PrivacyTemplate.js +1 -1
  462. package/dist/node/components/legal/TermsTemplate.js +1 -1
  463. package/dist/node/components/legal/index.js +1 -1
  464. package/dist/node/components/shared/FeatureGateNotice.js +1 -1
  465. package/dist/node/components/shared/index.js +1 -1
  466. package/dist/node/components/shell/WorkspaceHeader.js +1 -1
  467. package/dist/node/components/shell/WorkspaceProjectShellLayout.js +1 -1
  468. package/dist/node/components/shell/WorkspaceShellRenderer.js +1 -1
  469. package/dist/node/components/shell/WorkspaceSidebar.js +1 -1
  470. package/dist/node/components/shell/index.js +1 -1
  471. package/dist/node/components/templates/engine/index.js +1 -1
  472. package/dist/node/components/templates/index.js +11 -11
  473. package/dist/node/components/templates/messaging/ConversationList.js +2 -2
  474. package/dist/node/components/templates/messaging/MessageComposer.js +4 -4
  475. package/dist/node/components/templates/messaging/MessageThread.js +3 -3
  476. package/dist/node/components/templates/messaging/MessagingWorkspace.js +5 -5
  477. package/dist/node/components/templates/messaging/index.js +5 -5
  478. package/dist/node/components/templates/recipes/LanguageSwitcher.js +1 -1
  479. package/dist/node/components/templates/recipes/RecipeCard.js +1 -1
  480. package/dist/node/components/templates/recipes/RecipeDetail.js +1 -1
  481. package/dist/node/components/templates/recipes/RecipeList.js +3 -3
  482. package/dist/node/components/templates/recipes/index.js +3 -3
  483. package/dist/node/components/templates/todos/FilterBar.js +1 -1
  484. package/dist/node/components/templates/todos/TaskForm.js +2 -2
  485. package/dist/node/components/templates/todos/TaskItem.js +1 -1
  486. package/dist/node/components/templates/todos/TaskList.js +5 -5
  487. package/dist/node/components/templates/todos/index.js +5 -5
  488. package/dist/node/config/contractspec-blueprint.js +1 -1
  489. package/dist/node/config/contractspec-branding.js +1 -1
  490. package/dist/node/config/contractspec-routes.js +1 -1
  491. package/dist/node/config/index.js +1 -1
  492. package/dist/node/features/contracts-registry.js +1 -1
  493. package/dist/node/features/docs/docs.contracts.js +1 -1
  494. package/dist/node/features/docs/index.js +1 -1
  495. package/dist/node/features/docs.feature.js +1 -1
  496. package/dist/node/features/index.js +1 -1
  497. package/dist/node/features/mcp.feature.js +1 -1
  498. package/dist/node/features/presentations.feature.js +1 -1
  499. package/dist/node/features/registry.js +1 -1
  500. package/dist/node/index.js +382 -262
  501. package/dist/node/infrastructure/elysia/index.js +1 -1
  502. package/dist/node/infrastructure/elysia/logger.js +1 -1
  503. package/dist/node/infrastructure/index.js +1 -1
  504. package/dist/node/libs/email/client.js +1 -1
  505. package/dist/node/libs/email/contact.js +3 -3
  506. package/dist/node/libs/email/newsletter.js +3 -3
  507. package/dist/node/libs/email/utils.js +2 -2
  508. package/dist/node/libs/email/waitlist-application.js +3 -3
  509. package/dist/node/libs/email/waitlist.js +3 -3
  510. package/dist/node/libs/email.js +6 -6
  511. package/dist/node/libs/posthog/client.js +1 -1
  512. package/dist/node/libs/posthog/native.js +1 -1
  513. package/dist/node/libs/posthog/server.js +1 -1
  514. package/dist/node/libs/pricing-examples.js +1 -1
  515. package/dist/node/presentation/features/atoms/FeatureIcon/FeatureIcon.js +1 -1
  516. package/dist/node/presentation/features/atoms/FeatureIcon/index.js +1 -1
  517. package/dist/node/presentation/features/atoms/index.js +1 -1
  518. package/dist/node/presentation/features/hooks/index.js +1 -1
  519. package/dist/node/presentation/features/hooks/useContractsRegistry.js +1 -1
  520. package/dist/node/presentation/features/hooks/useFeatureFilters.js +1 -1
  521. package/dist/node/presentation/features/hooks/useFeatureRegistry.js +1 -1
  522. package/dist/node/presentation/features/hooks/useRelatedDocs.js +1 -1
  523. package/dist/node/presentation/features/index.js +1 -1
  524. package/dist/node/presentation/features/molecules/FeatureCard/FeatureCard.js +1 -1
  525. package/dist/node/presentation/features/molecules/FeatureCard/index.js +1 -1
  526. package/dist/node/presentation/features/molecules/FeatureCategoryHeader/FeatureCategoryHeader.js +1 -1
  527. package/dist/node/presentation/features/molecules/FeatureCategoryHeader/index.js +1 -1
  528. package/dist/node/presentation/features/molecules/FeatureFilters/FeatureFilters.js +1 -1
  529. package/dist/node/presentation/features/molecules/FeatureFilters/index.js +1 -1
  530. package/dist/node/presentation/features/molecules/FeatureHoverPreview/FeatureHoverPreview.js +1 -1
  531. package/dist/node/presentation/features/molecules/FeatureHoverPreview/index.js +1 -1
  532. package/dist/node/presentation/features/molecules/index.js +1 -1
  533. package/dist/node/presentation/features/organisms/FeatureDataViewsList.js +1 -1
  534. package/dist/node/presentation/features/organisms/FeatureDetail/FeatureDetail.js +1 -1
  535. package/dist/node/presentation/features/organisms/FeatureDetail/index.js +1 -1
  536. package/dist/node/presentation/features/organisms/FeatureDiscovery/FeatureDiscovery.js +1 -1
  537. package/dist/node/presentation/features/organisms/FeatureDiscovery/index.js +1 -1
  538. package/dist/node/presentation/features/organisms/FeatureEventsList.js +1 -1
  539. package/dist/node/presentation/features/organisms/FeatureFormsList.js +1 -1
  540. package/dist/node/presentation/features/organisms/FeatureOperationsList.js +1 -1
  541. package/dist/node/presentation/features/organisms/FeaturePresentationsList.js +1 -1
  542. package/dist/node/presentation/features/organisms/index.js +1 -1
  543. package/dist/node/presentation/features/templates/FeatureDataViewDetailTemplate/FeatureDataViewDetailTemplate.js +1 -1
  544. package/dist/node/presentation/features/templates/FeatureDataViewDetailTemplate/index.js +1 -1
  545. package/dist/node/presentation/features/templates/FeatureDataViewsTemplate/FeatureDataViewsTemplate.js +1 -1
  546. package/dist/node/presentation/features/templates/FeatureDataViewsTemplate/index.js +1 -1
  547. package/dist/node/presentation/features/templates/FeatureEventDetailTemplate/FeatureEventDetailTemplate.js +1 -1
  548. package/dist/node/presentation/features/templates/FeatureEventDetailTemplate/index.js +1 -1
  549. package/dist/node/presentation/features/templates/FeatureEventsTemplate/FeatureEventsTemplate.js +1 -1
  550. package/dist/node/presentation/features/templates/FeatureEventsTemplate/index.js +1 -1
  551. package/dist/node/presentation/features/templates/FeatureFormDetailTemplate/FeatureFormDetailTemplate.js +1 -1
  552. package/dist/node/presentation/features/templates/FeatureFormDetailTemplate/index.js +1 -1
  553. package/dist/node/presentation/features/templates/FeatureFormsTemplate/FeatureFormsTemplate.js +1 -1
  554. package/dist/node/presentation/features/templates/FeatureFormsTemplate/index.js +1 -1
  555. package/dist/node/presentation/features/templates/FeatureOperationDetailTemplate/FeatureOperationDetailTemplate.js +1 -1
  556. package/dist/node/presentation/features/templates/FeatureOperationDetailTemplate/index.js +1 -1
  557. package/dist/node/presentation/features/templates/FeatureOperationsTemplate/FeatureOperationsTemplate.js +1 -1
  558. package/dist/node/presentation/features/templates/FeatureOperationsTemplate/index.js +1 -1
  559. package/dist/node/presentation/features/templates/FeatureOverviewTemplate/FeatureOverviewTemplate.js +1 -1
  560. package/dist/node/presentation/features/templates/FeatureOverviewTemplate/index.js +1 -1
  561. package/dist/node/presentation/features/templates/FeaturePresentationDetailTemplate/FeaturePresentationDetailTemplate.js +1 -1
  562. package/dist/node/presentation/features/templates/FeaturePresentationDetailTemplate/index.js +1 -1
  563. package/dist/node/presentation/features/templates/FeaturePresentationsTemplate/FeaturePresentationsTemplate.js +1 -1
  564. package/dist/node/presentation/features/templates/FeaturePresentationsTemplate/index.js +1 -1
  565. package/dist/presentation/features/atoms/FeatureIcon/FeatureIcon.js +1 -1
  566. package/dist/presentation/features/atoms/FeatureIcon/index.js +1 -1
  567. package/dist/presentation/features/atoms/index.js +1 -1
  568. package/dist/presentation/features/hooks/index.js +1 -1
  569. package/dist/presentation/features/hooks/useContractsRegistry.js +1 -1
  570. package/dist/presentation/features/hooks/useFeatureFilters.js +1 -1
  571. package/dist/presentation/features/hooks/useFeatureRegistry.js +1 -1
  572. package/dist/presentation/features/hooks/useRelatedDocs.js +1 -1
  573. package/dist/presentation/features/index.js +1 -1
  574. package/dist/presentation/features/molecules/FeatureCard/FeatureCard.js +1 -1
  575. package/dist/presentation/features/molecules/FeatureCard/index.js +1 -1
  576. package/dist/presentation/features/molecules/FeatureCategoryHeader/FeatureCategoryHeader.js +1 -1
  577. package/dist/presentation/features/molecules/FeatureCategoryHeader/index.js +1 -1
  578. package/dist/presentation/features/molecules/FeatureFilters/FeatureFilters.js +1 -1
  579. package/dist/presentation/features/molecules/FeatureFilters/index.js +1 -1
  580. package/dist/presentation/features/molecules/FeatureHoverPreview/FeatureHoverPreview.js +1 -1
  581. package/dist/presentation/features/molecules/FeatureHoverPreview/index.js +1 -1
  582. package/dist/presentation/features/molecules/index.js +1 -1
  583. package/dist/presentation/features/organisms/FeatureDataViewsList.js +1 -1
  584. package/dist/presentation/features/organisms/FeatureDetail/FeatureDetail.js +1 -1
  585. package/dist/presentation/features/organisms/FeatureDetail/index.js +1 -1
  586. package/dist/presentation/features/organisms/FeatureDiscovery/FeatureDiscovery.js +1 -1
  587. package/dist/presentation/features/organisms/FeatureDiscovery/index.js +1 -1
  588. package/dist/presentation/features/organisms/FeatureEventsList.js +1 -1
  589. package/dist/presentation/features/organisms/FeatureFormsList.js +1 -1
  590. package/dist/presentation/features/organisms/FeatureOperationsList.js +1 -1
  591. package/dist/presentation/features/organisms/FeaturePresentationsList.js +1 -1
  592. package/dist/presentation/features/organisms/index.js +1 -1
  593. package/dist/presentation/features/templates/FeatureDataViewDetailTemplate/FeatureDataViewDetailTemplate.js +1 -1
  594. package/dist/presentation/features/templates/FeatureDataViewDetailTemplate/index.js +1 -1
  595. package/dist/presentation/features/templates/FeatureDataViewsTemplate/FeatureDataViewsTemplate.js +1 -1
  596. package/dist/presentation/features/templates/FeatureDataViewsTemplate/index.js +1 -1
  597. package/dist/presentation/features/templates/FeatureEventDetailTemplate/FeatureEventDetailTemplate.js +1 -1
  598. package/dist/presentation/features/templates/FeatureEventDetailTemplate/index.js +1 -1
  599. package/dist/presentation/features/templates/FeatureEventsTemplate/FeatureEventsTemplate.js +1 -1
  600. package/dist/presentation/features/templates/FeatureEventsTemplate/index.js +1 -1
  601. package/dist/presentation/features/templates/FeatureFormDetailTemplate/FeatureFormDetailTemplate.js +1 -1
  602. package/dist/presentation/features/templates/FeatureFormDetailTemplate/index.js +1 -1
  603. package/dist/presentation/features/templates/FeatureFormsTemplate/FeatureFormsTemplate.js +1 -1
  604. package/dist/presentation/features/templates/FeatureFormsTemplate/index.js +1 -1
  605. package/dist/presentation/features/templates/FeatureOperationDetailTemplate/FeatureOperationDetailTemplate.js +1 -1
  606. package/dist/presentation/features/templates/FeatureOperationDetailTemplate/index.js +1 -1
  607. package/dist/presentation/features/templates/FeatureOperationsTemplate/FeatureOperationsTemplate.js +1 -1
  608. package/dist/presentation/features/templates/FeatureOperationsTemplate/index.js +1 -1
  609. package/dist/presentation/features/templates/FeatureOverviewTemplate/FeatureOverviewTemplate.js +1 -1
  610. package/dist/presentation/features/templates/FeatureOverviewTemplate/index.js +1 -1
  611. package/dist/presentation/features/templates/FeaturePresentationDetailTemplate/FeaturePresentationDetailTemplate.js +1 -1
  612. package/dist/presentation/features/templates/FeaturePresentationDetailTemplate/index.js +1 -1
  613. package/dist/presentation/features/templates/FeaturePresentationsTemplate/FeaturePresentationsTemplate.js +1 -1
  614. package/dist/presentation/features/templates/FeaturePresentationsTemplate/index.js +1 -1
  615. package/package.json +49 -24
  616. package/src/application/mcp/internalMcp.ts +1 -1
  617. package/src/bundles/LibraryBundle.ts +19 -130
  618. package/src/components/docs/docsManifest.test.ts +14 -0
  619. package/src/components/docs/docsManifest.ts +10 -0
  620. package/src/components/docs/examples/DocsExamplesPage.tsx +3 -3
  621. package/src/components/docs/examples/ExampleShowcasePage.tsx +1 -1
  622. package/src/components/docs/examples/exampleShowcaseData.test.ts +5 -3
  623. package/src/components/docs/examples/exampleShowcaseData.ts +3 -3
  624. package/src/components/docs/generated/docs-index._common.json +1699 -2008
  625. package/src/components/docs/generated/docs-index.agent-console.json +377 -377
  626. package/src/components/docs/generated/docs-index.ai-chat-assistant.json +17 -17
  627. package/src/components/docs/generated/docs-index.ai-chat.json +105 -105
  628. package/src/components/docs/generated/docs-index.ai-support-bot.json +9 -9
  629. package/src/components/docs/generated/docs-index.analytics-dashboard.json +169 -169
  630. package/src/components/docs/generated/docs-index.app-config.json +137 -137
  631. package/src/components/docs/generated/docs-index.artisan-knowledge-product.json +17 -17
  632. package/src/components/docs/generated/docs-index.artisan-payments-stripe.json +33 -33
  633. package/src/components/docs/generated/docs-index.audit-trail.json +49 -49
  634. package/src/components/docs/generated/docs-index.calendar-google.json +9 -9
  635. package/src/components/docs/generated/docs-index.content-generation.json +9 -9
  636. package/src/components/docs/generated/docs-index.control-plane.json +17 -17
  637. package/src/components/docs/generated/docs-index.crm-pipeline.json +161 -161
  638. package/src/components/docs/generated/docs-index.data-grid-showcase.json +25 -25
  639. package/src/components/docs/generated/docs-index.defineExample.json +9 -9
  640. package/src/components/docs/generated/docs-index.email-gmail.json +9 -9
  641. package/src/components/docs/generated/docs-index.feature-flags.json +217 -217
  642. package/src/components/docs/generated/docs-index.files.json +177 -177
  643. package/src/components/docs/generated/docs-index.generated.ts +20 -20
  644. package/src/components/docs/generated/docs-index.harness-lab.json +9 -9
  645. package/src/components/docs/generated/docs-index.health.json +97 -97
  646. package/src/components/docs/generated/docs-index.identity-rbac.json +313 -313
  647. package/src/components/docs/generated/docs-index.in-app-docs.json +9 -9
  648. package/src/components/docs/generated/docs-index.integration-hub.json +265 -265
  649. package/src/components/docs/generated/docs-index.integration-posthog.json +9 -9
  650. package/src/components/docs/generated/docs-index.integration-stripe.json +9 -9
  651. package/src/components/docs/generated/docs-index.integration-supabase.json +9 -9
  652. package/src/components/docs/generated/docs-index.jobs.json +137 -137
  653. package/src/components/docs/generated/docs-index.kb-update-pipeline.json +129 -129
  654. package/src/components/docs/generated/docs-index.knowledge-canon.json +9 -9
  655. package/src/components/docs/generated/docs-index.learning-journey-ambient-coach.json +9 -9
  656. package/src/components/docs/generated/docs-index.learning-journey-crm-onboarding.json +49 -49
  657. package/src/components/docs/generated/docs-index.learning-journey-duo-drills.json +9 -9
  658. package/src/components/docs/generated/docs-index.learning-journey-platform-tour.json +49 -49
  659. package/src/components/docs/generated/docs-index.learning-journey-quest-challenges.json +9 -9
  660. package/src/components/docs/generated/docs-index.learning-journey-registry.json +33 -33
  661. package/src/components/docs/generated/docs-index.learning-journey-studio-onboarding.json +49 -49
  662. package/src/components/docs/generated/docs-index.learning-journey-ui-coaching.json +9 -9
  663. package/src/components/docs/generated/docs-index.learning-journey-ui-gamified.json +9 -9
  664. package/src/components/docs/generated/docs-index.learning-journey-ui-onboarding.json +9 -9
  665. package/src/components/docs/generated/docs-index.learning-journey-ui-shared.json +9 -9
  666. package/src/components/docs/generated/docs-index.learning-journey.json +241 -241
  667. package/src/components/docs/generated/docs-index.learning-patterns.json +9 -9
  668. package/src/components/docs/generated/docs-index.lifecycle-cli.json +9 -9
  669. package/src/components/docs/generated/docs-index.lifecycle-dashboard.json +9 -9
  670. package/src/components/docs/generated/docs-index.locale-jurisdiction-gate.json +65 -65
  671. package/src/components/docs/generated/docs-index.manifest.json +432 -432
  672. package/src/components/docs/generated/docs-index.marketplace.json +337 -337
  673. package/src/components/docs/generated/docs-index.meeting-recorder-providers.json +9 -9
  674. package/src/components/docs/generated/docs-index.meeting-recorder.json +49 -49
  675. package/src/components/docs/generated/docs-index.messaging-agent-actions.json +17 -17
  676. package/src/components/docs/generated/docs-index.metrics.json +201 -201
  677. package/src/components/docs/generated/docs-index.minimal.json +17 -17
  678. package/src/components/docs/generated/docs-index.mobile-demo-landing.json +42 -0
  679. package/src/components/docs/generated/docs-index.notifications.json +65 -65
  680. package/src/components/docs/generated/docs-index.openbanking-powens.json +9 -9
  681. package/src/components/docs/generated/docs-index.openbanking.json +65 -65
  682. package/src/components/docs/generated/docs-index.opencode-cli.json +17 -17
  683. package/src/components/docs/generated/docs-index.personalization.json +9 -9
  684. package/src/components/docs/generated/docs-index.platform-acp.json +137 -137
  685. package/src/components/docs/generated/docs-index.platform-agent.json +201 -201
  686. package/src/components/docs/generated/docs-index.platform-context.json +121 -121
  687. package/src/components/docs/generated/docs-index.platform-control-plane.json +321 -321
  688. package/src/components/docs/generated/docs-index.platform-database.json +89 -89
  689. package/src/components/docs/generated/docs-index.platform-docs.json +161 -161
  690. package/src/components/docs/generated/docs-index.platform-harness.json +177 -177
  691. package/src/components/docs/generated/docs-index.platform-integrations.json +329 -329
  692. package/src/components/docs/generated/docs-index.platform-knowledge.json +57 -57
  693. package/src/components/docs/generated/docs-index.platform-provider-ranking.json +217 -217
  694. package/src/components/docs/generated/docs-index.pocket-family-office.json +129 -129
  695. package/src/components/docs/generated/docs-index.policy-safe-knowledge-assistant.json +9 -9
  696. package/src/components/docs/generated/docs-index.product-intent.json +9 -9
  697. package/src/components/docs/generated/docs-index.project-management-sync.json +9 -9
  698. package/src/components/docs/generated/docs-index.saas-boilerplate.json +209 -209
  699. package/src/components/docs/generated/docs-index.service-business-os.json +193 -193
  700. package/src/components/docs/generated/docs-index.team-hub.json +185 -185
  701. package/src/components/docs/generated/docs-index.unknown.json +521 -521
  702. package/src/components/docs/generated/docs-index.versioned-knowledge-base.json +81 -81
  703. package/src/components/docs/generated/docs-index.video-api-showcase.json +33 -33
  704. package/src/components/docs/generated/docs-index.video-docs-terminal.json +9 -9
  705. package/src/components/docs/generated/docs-index.video-marketing-clip.json +9 -9
  706. package/src/components/docs/generated/docs-index.visualization-showcase.json +17 -17
  707. package/src/components/docs/generated/docs-index.voice-providers.json +9 -9
  708. package/src/components/docs/generated/docs-index.wealth-snapshot.json +153 -153
  709. package/src/components/docs/generated/docs-index.workflow-system.json +433 -433
  710. package/src/components/docs/generated/docs-index.workspace-cli.json +9 -9
  711. package/src/components/docs/generated/index.ts +20 -5
  712. package/src/components/docs/generated/loader.ts +15 -8
  713. package/src/components/docs/getting-started/CompatibilityPage.tsx +14 -0
  714. package/src/components/docs/libraries/LibrariesCrossPlatformUIPage.content.ts +252 -0
  715. package/src/components/docs/libraries/LibrariesCrossPlatformUIPage.tsx +232 -0
  716. package/src/components/docs/libraries/LibrariesDesignSystemPage.tsx +79 -0
  717. package/src/components/docs/libraries/LibrariesOverviewPage.tsx +6 -0
  718. package/src/components/docs/libraries/LibrariesRuntimePage.tsx +15 -0
  719. package/src/components/docs/libraries/LibrariesUIKitPage.tsx +15 -0
  720. package/src/components/docs/libraries/LibrariesUIKitWebPage.tsx +14 -0
  721. package/src/components/docs/libraries/index.ts +1 -0
  722. package/src/components/docs/reference/DocsReferenceIndexPage.tsx +1 -1
  723. package/src/index.ts +1 -1
  724. package/src/components/docs/generated/docs-index.mobile-demo-tasks.json +0 -34
@@ -1,5 +1,5 @@
1
1
  // @bun
2
- import{CodeBlock as fe,InstallCommand as Ze}from"@contractspec/lib.design-system";import he from"@contractspec/lib.ui-link";import{ChevronRight as Xe}from"lucide-react";import{jsx as c,jsxs as g}from"react/jsx-runtime";function $e(){return g("div",{className:"space-y-8",children:[g("div",{className:"space-y-4",children:[c("h1",{className:"font-bold text-4xl",children:"@contractspec/lib.accessibility"}),c("p",{className:"text-muted-foreground",children:"Stable exports of accessibility primitives for LSSM web apps, ensuring WCAG compliance and inclusive design."})]}),g("div",{className:"space-y-4",children:[c("h2",{className:"font-bold text-2xl",children:"Installation"}),c(Ze,{package:"@contractspec/lib.accessibility"})]}),g("div",{className:"space-y-4",children:[c("h2",{className:"font-bold text-2xl",children:"Exports"}),g("ul",{className:"space-y-2 text-muted-foreground",children:[g("li",{children:[c("code",{className:"rounded bg-background/50 px-2 py-1",children:"SkipLink"}),": A link to skip navigation, visible on focus"]}),g("li",{children:[c("code",{className:"rounded bg-background/50 px-2 py-1",children:"VisuallyHidden"}),": Hide content visually but keep it for screen readers"]}),g("li",{children:[c("code",{className:"rounded bg-background/50 px-2 py-1",children:"SRLiveRegionProvider"}),","," ",c("code",{className:"rounded bg-background/50 px-2 py-1",children:"useSRLiveRegion"}),": Manage live region announcements"]}),g("li",{children:[c("code",{className:"rounded bg-background/50 px-2 py-1",children:"RouteAnnouncer"}),": Announce page title/path changes on navigation"]}),g("li",{children:[c("code",{className:"rounded bg-background/50 px-2 py-1",children:"FocusOnRouteChange"}),": Reset focus to body or main content on navigation"]}),g("li",{children:[c("code",{className:"rounded bg-background/50 px-2 py-1",children:"useReducedMotion"}),": Detect if the user prefers reduced motion"]})]})]}),g("div",{className:"space-y-4",children:[c("h2",{className:"font-bold text-2xl",children:"Example: App Setup"}),c(fe,{language:"tsx",code:`import {
2
+ var ft=Object.defineProperty;var bt=(t)=>t;function vt(t,w){this[t]=bt.bind(null,w)}var po=(t,w)=>{for(var me in w)ft(t,me,{get:w[me],enumerable:!0,configurable:!0,set:vt.bind(w,me)})};var mo=(t,w)=>()=>(t&&(w=t(t=0)),w);import{CodeBlock as ke,InstallCommand as yt}from"@contractspec/lib.design-system";import Se from"@contractspec/lib.ui-link";import{ChevronRight as Nt}from"lucide-react";import{jsx as l,jsxs as b}from"react/jsx-runtime";function wt(){return b("div",{className:"space-y-8",children:[b("div",{className:"space-y-4",children:[l("h1",{className:"font-bold text-4xl",children:"@contractspec/lib.accessibility"}),l("p",{className:"text-muted-foreground",children:"Stable exports of accessibility primitives for LSSM web apps, ensuring WCAG compliance and inclusive design."})]}),b("div",{className:"space-y-4",children:[l("h2",{className:"font-bold text-2xl",children:"Installation"}),l(yt,{package:"@contractspec/lib.accessibility"})]}),b("div",{className:"space-y-4",children:[l("h2",{className:"font-bold text-2xl",children:"Exports"}),b("ul",{className:"space-y-2 text-muted-foreground",children:[b("li",{children:[l("code",{className:"rounded bg-background/50 px-2 py-1",children:"SkipLink"}),": A link to skip navigation, visible on focus"]}),b("li",{children:[l("code",{className:"rounded bg-background/50 px-2 py-1",children:"VisuallyHidden"}),": Hide content visually but keep it for screen readers"]}),b("li",{children:[l("code",{className:"rounded bg-background/50 px-2 py-1",children:"SRLiveRegionProvider"}),","," ",l("code",{className:"rounded bg-background/50 px-2 py-1",children:"useSRLiveRegion"}),": Manage live region announcements"]}),b("li",{children:[l("code",{className:"rounded bg-background/50 px-2 py-1",children:"RouteAnnouncer"}),": Announce page title/path changes on navigation"]}),b("li",{children:[l("code",{className:"rounded bg-background/50 px-2 py-1",children:"FocusOnRouteChange"}),": Reset focus to body or main content on navigation"]}),b("li",{children:[l("code",{className:"rounded bg-background/50 px-2 py-1",children:"useReducedMotion"}),": Detect if the user prefers reduced motion"]})]})]}),b("div",{className:"space-y-4",children:[l("h2",{className:"font-bold text-2xl",children:"Example: App Setup"}),l(ke,{language:"tsx",code:`import {
3
3
  SRLiveRegionProvider,
4
4
  RouteAnnouncer,
5
5
  SkipLink
@@ -19,7 +19,7 @@ export function RootLayout({ children }) {
19
19
  </body>
20
20
  </html>
21
21
  );
22
- }`})]}),g("div",{className:"space-y-4",children:[c("h2",{className:"font-bold text-2xl",children:"Example: Live Announcements"}),c(fe,{language:"tsx",code:`import { useSRLiveRegion } from '@contractspec/lib.accessibility';
22
+ }`})]}),b("div",{className:"space-y-4",children:[l("h2",{className:"font-bold text-2xl",children:"Example: Live Announcements"}),l(ke,{language:"tsx",code:`import { useSRLiveRegion } from '@contractspec/lib.accessibility';
23
23
 
24
24
  export function TodoList() {
25
25
  const { announce } = useSRLiveRegion();
@@ -30,7 +30,7 @@ export function TodoList() {
30
30
  };
31
31
 
32
32
  return <button onClick={addTodo}>Add Todo</button>;
33
- }`})]}),g("div",{className:"space-y-4",children:[c("h2",{className:"font-bold text-2xl",children:"WCAG Compliance"}),g("p",{className:"text-muted-foreground",children:["These components map directly to WCAG 2.1 Level AA requirements documented in ",c("code",{children:"docs/accessibility_wcag_compliance_specs.md"}),":"]}),g("ul",{className:"list-inside list-disc space-y-2 text-muted-foreground",children:[c("li",{children:"2.4.1 Bypass Blocks (SkipLink)"}),c("li",{children:"4.1.3 Status Messages (LiveRegion)"}),c("li",{children:"2.4.3 Focus Order (FocusOnRouteChange)"}),c("li",{children:"2.3.3 Animation from Interactions (useReducedMotion)"})]})]}),g("div",{className:"flex items-center gap-4 pt-4",children:[c(he,{href:"/docs/libraries/design-system",className:"btn-ghost",children:"Previous: Design System"}),g(he,{href:"/docs/libraries",className:"btn-primary",children:["Back to Libraries ",c(Xe,{size:16})]})]})]})}import{CodeBlock as be,InstallCommand as Ye}from"@contractspec/lib.design-system";import ve from"@contractspec/lib.ui-link";import{ChevronRight as xe}from"lucide-react";import{jsx as f,jsxs as M}from"react/jsx-runtime";function je(){return M("div",{className:"space-y-8",children:[M("div",{className:"space-y-4",children:[f("h1",{className:"font-bold text-4xl",children:"@contractspec/lib.ai-agent"}),f("p",{className:"text-lg text-muted-foreground",children:"Define AI agents in TypeScript, run them with deterministic tool calling, capture working memory, and route low-confidence decisions to human reviewers."})]}),M("div",{className:"space-y-4",children:[f("h2",{className:"font-bold text-2xl",children:"Installation"}),f(Ye,{package:"@contractspec/lib.ai-agent"})]}),M("div",{className:"space-y-3",children:[f("h2",{className:"font-bold text-2xl",children:"Define & register"}),f(be,{language:"typescript",code:`import { defineAgent, AgentRegistry } from '@contractspec/lib.contracts-spec/agent';
33
+ }`})]}),b("div",{className:"space-y-4",children:[l("h2",{className:"font-bold text-2xl",children:"WCAG Compliance"}),b("p",{className:"text-muted-foreground",children:["These components map directly to WCAG 2.1 Level AA requirements documented in ",l("code",{children:"docs/accessibility_wcag_compliance_specs.md"}),":"]}),b("ul",{className:"list-inside list-disc space-y-2 text-muted-foreground",children:[l("li",{children:"2.4.1 Bypass Blocks (SkipLink)"}),l("li",{children:"4.1.3 Status Messages (LiveRegion)"}),l("li",{children:"2.4.3 Focus Order (FocusOnRouteChange)"}),l("li",{children:"2.3.3 Animation from Interactions (useReducedMotion)"})]})]}),b("div",{className:"flex items-center gap-4 pt-4",children:[l(Se,{href:"/docs/libraries/design-system",className:"btn-ghost",children:"Previous: Design System"}),b(Se,{href:"/docs/libraries",className:"btn-primary",children:["Back to Libraries ",l(Nt,{size:16})]})]})]})}import{CodeBlock as Ce,InstallCommand as kt}from"@contractspec/lib.design-system";import Te from"@contractspec/lib.ui-link";import{ChevronRight as St}from"lucide-react";import{jsx as v,jsxs as U}from"react/jsx-runtime";function Ct(){return U("div",{className:"space-y-8",children:[U("div",{className:"space-y-4",children:[v("h1",{className:"font-bold text-4xl",children:"@contractspec/lib.ai-agent"}),v("p",{className:"text-lg text-muted-foreground",children:"Define AI agents in TypeScript, run them with deterministic tool calling, capture working memory, and route low-confidence decisions to human reviewers."})]}),U("div",{className:"space-y-4",children:[v("h2",{className:"font-bold text-2xl",children:"Installation"}),v(kt,{package:"@contractspec/lib.ai-agent"})]}),U("div",{className:"space-y-3",children:[v("h2",{className:"font-bold text-2xl",children:"Define & register"}),v(Ce,{language:"typescript",code:`import { defineAgent, AgentRegistry } from '@contractspec/lib.contracts-spec/agent';
34
34
 
35
35
  const SupportBot = defineAgent({
36
36
  meta: {
@@ -49,7 +49,7 @@ const SupportBot = defineAgent({
49
49
  },
50
50
  });
51
51
 
52
- const registry = new AgentRegistry().register(SupportBot);`})]}),M("div",{className:"space-y-3",children:[f("h2",{className:"font-bold text-2xl",children:"Run with approvals"}),f(be,{language:"typescript",code:`import { createUnifiedAgent, ApprovalWorkflow } from '@contractspec/lib.ai-agent';
52
+ const registry = new AgentRegistry().register(SupportBot);`})]}),U("div",{className:"space-y-3",children:[v("h2",{className:"font-bold text-2xl",children:"Run with approvals"}),v(Ce,{language:"typescript",code:`import { createUnifiedAgent, ApprovalWorkflow } from '@contractspec/lib.ai-agent';
53
53
 
54
54
  const approvals = new ApprovalWorkflow();
55
55
  const agent = createUnifiedAgent(SupportBot, {
@@ -59,7 +59,7 @@ const agent = createUnifiedAgent(SupportBot, {
59
59
 
60
60
  const result = await agent.run(ticket.body);
61
61
  // Route low-confidence or manual-review flows through approvals when needed.
62
- `})]}),M("div",{className:"space-y-3",children:[f("h2",{className:"font-bold text-2xl",children:"What's inside"}),M("ul",{className:"list-inside list-disc space-y-2 text-muted-foreground",children:[M("li",{children:[f("code",{children:"createUnifiedAgent"}),", ",f("code",{children:"ContractSpecAgent"}),","," ",f("code",{children:"UnifiedAgent"})]}),f("li",{children:"MCP, operation-backed, memory, and subagent tool adapters"}),M("li",{children:[f("code",{children:"InMemoryAgentMemory"})," plus interfaces for custom stores"]}),M("li",{children:[f("code",{children:"ApprovalWorkflow"})," + ",f("code",{children:"ApprovalStore"})," for human-in-the-loop reviews"]})]})]}),M("div",{className:"flex items-center gap-4 pt-4",children:[f(ve,{href:"/docs/libraries",className:"btn-ghost",children:"Back to Libraries"}),M(ve,{href:"/docs/libraries/support-bot",className:"btn-primary",children:["Next: Support Bot ",f(xe,{size:16})]})]})]})}import{CodeBlock as re,InstallCommand as et}from"@contractspec/lib.design-system";import{jsx as F,jsxs as ae}from"react/jsx-runtime";function tt(){return ae("div",{className:"space-y-8",children:[ae("div",{className:"space-y-4",children:[F("h1",{className:"font-bold text-4xl",children:"@contractspec/lib.analytics"}),F("p",{className:"text-lg text-muted-foreground",children:"Work directly with telemetry events to understand conversion, retention, churn, and growth opportunities."})]}),ae("div",{className:"space-y-4",children:[F("h2",{className:"font-bold text-2xl",children:"Installation"}),F(et,{package:"@contractspec/lib.analytics"})]}),ae("div",{className:"space-y-3",children:[F("h2",{className:"font-bold text-2xl",children:"Funnels in memory"}),F(re,{language:"typescript",code:`import { FunnelAnalyzer } from '@contractspec/lib.analytics/funnel';
62
+ `})]}),U("div",{className:"space-y-3",children:[v("h2",{className:"font-bold text-2xl",children:"What's inside"}),U("ul",{className:"list-inside list-disc space-y-2 text-muted-foreground",children:[U("li",{children:[v("code",{children:"createUnifiedAgent"}),", ",v("code",{children:"ContractSpecAgent"}),","," ",v("code",{children:"UnifiedAgent"})]}),v("li",{children:"MCP, operation-backed, memory, and subagent tool adapters"}),U("li",{children:[v("code",{children:"InMemoryAgentMemory"})," plus interfaces for custom stores"]}),U("li",{children:[v("code",{children:"ApprovalWorkflow"})," + ",v("code",{children:"ApprovalStore"})," for human-in-the-loop reviews"]})]})]}),U("div",{className:"flex items-center gap-4 pt-4",children:[v(Te,{href:"/docs/libraries",className:"btn-ghost",children:"Back to Libraries"}),U(Te,{href:"/docs/libraries/support-bot",className:"btn-primary",children:["Next: Support Bot ",v(St,{size:16})]})]})]})}import{CodeBlock as ue,InstallCommand as Tt}from"@contractspec/lib.design-system";import{jsx as H,jsxs as ne}from"react/jsx-runtime";function Lt(){return ne("div",{className:"space-y-8",children:[ne("div",{className:"space-y-4",children:[H("h1",{className:"font-bold text-4xl",children:"@contractspec/lib.analytics"}),H("p",{className:"text-lg text-muted-foreground",children:"Work directly with telemetry events to understand conversion, retention, churn, and growth opportunities."})]}),ne("div",{className:"space-y-4",children:[H("h2",{className:"font-bold text-2xl",children:"Installation"}),H(Tt,{package:"@contractspec/lib.analytics"})]}),ne("div",{className:"space-y-3",children:[H("h2",{className:"font-bold text-2xl",children:"Funnels in memory"}),H(ue,{language:"typescript",code:`import { FunnelAnalyzer } from '@contractspec/lib.analytics/funnel';
63
63
 
64
64
  const analyzer = new FunnelAnalyzer();
65
65
  const report = analyzer.analyze(events, {
@@ -69,16 +69,16 @@ const report = analyzer.analyze(events, {
69
69
  { id: 'submit', eventName: 'signup.submit' },
70
70
  { id: 'verified', eventName: 'account.verified' },
71
71
  ],
72
- });`})]}),ae("div",{className:"space-y-3",children:[F("h2",{className:"font-bold text-2xl",children:"Cohorts & churn"}),F(re,{language:"typescript",code:`import { CohortTracker } from '@contractspec/lib.analytics/cohort';
72
+ });`})]}),ne("div",{className:"space-y-3",children:[H("h2",{className:"font-bold text-2xl",children:"Cohorts & churn"}),H(ue,{language:"typescript",code:`import { CohortTracker } from '@contractspec/lib.analytics/cohort';
73
73
  import { ChurnPredictor } from '@contractspec/lib.analytics/churn';
74
74
 
75
75
  const cohorts = new CohortTracker().analyze(events, { bucket: 'week', periods: 8 });
76
- const churn = new ChurnPredictor().score(events);`})]}),ae("div",{className:"space-y-3",children:[F("h2",{className:"font-bold text-2xl",children:"Growth hypotheses"}),F(re,{language:"typescript",code:`import { GrowthHypothesisGenerator } from '@contractspec/lib.analytics/growth';
76
+ const churn = new ChurnPredictor().score(events);`})]}),ne("div",{className:"space-y-3",children:[H("h2",{className:"font-bold text-2xl",children:"Growth hypotheses"}),H(ue,{language:"typescript",code:`import { GrowthHypothesisGenerator } from '@contractspec/lib.analytics/growth';
77
77
 
78
78
  const ideas = new GrowthHypothesisGenerator().generate([
79
79
  { name: 'Activation rate', current: 0.42, previous: 0.55, target: 0.6 },
80
80
  { name: 'Expansion ARPU', current: 1.2, previous: 0.9 },
81
- ]);`})]})]})}import{CodeBlock as at,InstallCommand as ot}from"@contractspec/lib.design-system";import ye from"@contractspec/lib.ui-link";import{ChevronRight as it}from"lucide-react";import{jsx as A,jsxs as $}from"react/jsx-runtime";function rt(){return $("div",{className:"space-y-8",children:[$("div",{className:"space-y-4",children:[A("h1",{className:"font-bold text-4xl",children:"@contractspec/lib.content-gen"}),A("p",{className:"text-lg text-muted-foreground",children:"Feed a single ContentBrief and produce cohesive marketing assets without touching a CMS."})]}),$("div",{className:"space-y-4",children:[A("h2",{className:"font-bold text-2xl",children:"Installation"}),A(ot,{package:"@contractspec/lib.content-gen"})]}),$("div",{className:"space-y-3",children:[A("h2",{className:"font-bold text-2xl",children:"One brief, many assets"}),A(at,{language:"typescript",code:`import {
81
+ ]);`})]})]})}import{CodeBlock as Rt,InstallCommand as It}from"@contractspec/lib.design-system";import Le from"@contractspec/lib.ui-link";import{ChevronRight as At}from"lucide-react";import{jsx as O,jsxs as j}from"react/jsx-runtime";function Pt(){return j("div",{className:"space-y-8",children:[j("div",{className:"space-y-4",children:[O("h1",{className:"font-bold text-4xl",children:"@contractspec/lib.content-gen"}),O("p",{className:"text-lg text-muted-foreground",children:"Feed a single ContentBrief and produce cohesive marketing assets without touching a CMS."})]}),j("div",{className:"space-y-4",children:[O("h2",{className:"font-bold text-2xl",children:"Installation"}),O(It,{package:"@contractspec/lib.content-gen"})]}),j("div",{className:"space-y-3",children:[O("h2",{className:"font-bold text-2xl",children:"One brief, many assets"}),O(Rt,{language:"typescript",code:`import {
82
82
  BlogGenerator,
83
83
  LandingPageGenerator,
84
84
  EmailCampaignGenerator,
@@ -98,7 +98,7 @@ const blog = await new BlogGenerator().generate(brief);
98
98
  const landing = await new LandingPageGenerator().generate(brief);
99
99
  const email = await new EmailCampaignGenerator().generate({ brief, variant: 'announcement' });
100
100
  const social = await new SocialPostGenerator().generate(brief);
101
- const seo = new SeoOptimizer().optimize(brief);`})]}),$("div",{className:"space-y-3",children:[A("h2",{className:"font-bold text-2xl",children:"When to use"}),$("ul",{className:"list-inside list-disc space-y-2 text-muted-foreground",children:[A("li",{children:"Ship landing page refreshes whenever specs change."}),A("li",{children:"Automate release emails + nurture sequences per vertical."}),A("li",{children:"Create social snippets that stay on-message with the same brief."}),A("li",{children:"Generate SEO metadata + Schema.org markup alongside content."})]})]}),$("div",{className:"flex items-center gap-4 pt-4",children:[A(ye,{href:"/docs/libraries",className:"btn-ghost",children:"Back to Libraries"}),$(ye,{href:"/docs/libraries/support-bot",className:"btn-primary",children:["Next: Support Bot ",A(it,{size:16})]})]})]})}import{CodeBlock as nt,InstallCommand as ct}from"@contractspec/lib.design-system";import ne from"@contractspec/lib.ui-link";import{ChevronRight as lt}from"lucide-react";import{jsx as a,jsxs as o}from"react/jsx-runtime";var st=`import { defineDataView } from '@contractspec/lib.contracts-spec/data-views';
101
+ const seo = new SeoOptimizer().optimize(brief);`})]}),j("div",{className:"space-y-3",children:[O("h2",{className:"font-bold text-2xl",children:"When to use"}),j("ul",{className:"list-inside list-disc space-y-2 text-muted-foreground",children:[O("li",{children:"Ship landing page refreshes whenever specs change."}),O("li",{children:"Automate release emails + nurture sequences per vertical."}),O("li",{children:"Create social snippets that stay on-message with the same brief."}),O("li",{children:"Generate SEO metadata + Schema.org markup alongside content."})]})]}),j("div",{className:"flex items-center gap-4 pt-4",children:[O(Le,{href:"/docs/libraries",className:"btn-ghost",children:"Back to Libraries"}),j(Le,{href:"/docs/libraries/support-bot",className:"btn-primary",children:["Next: Support Bot ",O(At,{size:16})]})]})]})}import{CodeBlock as Dt,InstallCommand as Et}from"@contractspec/lib.design-system";import ge from"@contractspec/lib.ui-link";import{ChevronRight as Bt}from"lucide-react";import{jsx as r,jsxs as n}from"react/jsx-runtime";var Ot=`import { defineDataView } from '@contractspec/lib.contracts-spec/data-views';
102
102
  import { ListDataGridShowcaseRowsQuery } from '@contractspec/example.data-grid-showcase/contracts/data-grid-showcase.operation';
103
103
 
104
104
  export const DataGridShowcaseDataView = defineDataView({
@@ -145,7 +145,7 @@ export const DataGridShowcaseDataView = defineDataView({
145
145
  { key: 'notes', label: 'Notes', dataPath: 'notes' },
146
146
  ],
147
147
  },
148
- });`;function dt(){return o("div",{className:"space-y-8",children:[o("div",{className:"space-y-4",children:[a("h1",{className:"font-bold text-4xl",children:"@contractspec/lib.contracts-spec"}),a("p",{className:"text-lg text-muted-foreground",children:"The core library for defining what your application can do. Unified specifications for Operations, Events, Presentations, and Features."})]}),o("div",{className:"space-y-4",children:[a("h2",{className:"font-bold text-2xl",children:"Installation"}),a(ct,{package:["@contractspec/lib.contracts-spec","@contractspec/lib.schema"]})]}),o("div",{className:"space-y-4",children:[a("h2",{className:"font-bold text-2xl",children:"What lives where"}),o("ul",{className:"list-inside list-disc space-y-2 text-muted-foreground",children:[o("li",{children:[a("strong",{children:"@contractspec/lib.contracts-spec"})," (root): The core contracts definitions (OperationSpec, PresentationSpec, Registry)."]}),o("li",{children:[a("strong",{children:"@contractspec/lib.contracts-runtime-client-react"}),": Browser-safe helpers (React renderers, client SDK). Import this for web/React Native."]}),o("li",{children:[a("strong",{children:"@contractspec/lib.contracts-runtime-server-rest"}),": HTTP/MCP adapters, registries, integrations (Node-only)."]}),o("li",{children:[a("strong",{children:"@contractspec/lib.schema"}),": Schema dictionary (SchemaModel, FieldType) for I/O definitions."]})]})]}),o("div",{className:"space-y-4",children:[a("h2",{className:"font-bold text-2xl",children:"Data table contract example"}),o("p",{className:"text-muted-foreground",children:["The canonical account-grid example starts here in"," ",a("code",{children:"@contractspec/lib.contracts-spec"}),". The contract declares table execution mode, selection, pinning, resizing, row expansion, and initial state before any renderer is chosen."]}),a(nt,{language:"typescript",code:st}),o("p",{className:"text-muted-foreground text-sm",children:["See the live version in"," ",a(ne,{href:"/docs/examples/data-grid-showcase",className:"text-[color:var(--rust)] underline underline-offset-4",children:"/docs/examples/data-grid-showcase"}),"."]})]}),o("div",{className:"space-y-4",children:[a("h2",{className:"font-bold text-2xl",children:"Core Concepts"}),o("ul",{className:"list-inside list-disc space-y-2 text-muted-foreground",children:[o("li",{children:[a("strong",{children:"OperationSpec"}),": Immutable description of an operation (Command or Query). Defines I/O, policy, and metadata."]}),o("li",{children:[a("strong",{children:"OperationSpecRegistry"}),": Registry of specs + handlers. Use ",a("code",{className:"font-mono text-xs",children:"installOp"})," ","to attach a handler."]}),o("li",{children:[a("strong",{children:"CapabilitySpec"}),": Canonical capability declaration (requires/provides)."]}),o("li",{children:[a("strong",{children:"PolicySpec"}),": Declarative policy rules (ABAC/ReBAC, rate limits)."]}),o("li",{children:[a("strong",{children:"TelemetrySpec"}),": Analytics definitions and privacy levels."]}),o("li",{children:[a("strong",{children:"PresentationSpec (V2)"}),": Describes how data is rendered (Web Components, Markdown, Data)."]}),o("li",{children:[a("strong",{children:"DataViewSpec"}),": Declarative list, table, grid, and detail contracts that the table showcase uses as its canonical account-grid example."]})]})]}),o("div",{className:"space-y-4",children:[a("h2",{className:"font-bold text-2xl",children:"Lifecycle"}),o("ol",{className:"list-inside list-decimal space-y-2 text-muted-foreground",children:[o("li",{children:[a("strong",{children:"Define"})," the spec (I/O via SchemaModel or Zod)."]}),o("li",{children:[a("strong",{children:"Register"})," it:"," ",a("code",{className:"font-mono text-xs",children:"installOp(registry, spec, handler)"}),"."]}),o("li",{children:[a("strong",{children:"Expose"})," it via an adapter (REST, GraphQL, MCP)."]}),o("li",{children:[a("strong",{children:"Validate"})," at runtime automatically."]})]})]}),o("div",{className:"space-y-4",children:[a("h2",{className:"font-bold text-2xl",children:"Adapters"}),o("ul",{className:"space-y-2 text-muted-foreground",children:[o("li",{children:[a("code",{className:"rounded bg-background/50 px-2 py-1",children:"server/rest-next-app"}),": Next.js App Router adapter"]}),o("li",{children:[a("code",{className:"rounded bg-background/50 px-2 py-1",children:"server/provider-mcp"}),": Model Context Protocol (MCP) for AI agents"]}),o("li",{children:[a("code",{className:"rounded bg-background/50 px-2 py-1",children:"server/graphql-pothos"}),": GraphQL schema generator"]})]})]}),o("div",{className:"flex items-center gap-4 pt-4",children:[o(ne,{href:"/docs/libraries/schema",className:"btn-primary",children:["Next: Schema ",a(lt,{size:16})]}),a(ne,{href:"/docs/specs/capabilities",className:"btn-ghost",children:"Core Concepts"})]})]})}import{CodeBlock as Ne,InstallCommand as pt}from"@contractspec/lib.design-system";import we from"@contractspec/lib.ui-link";import{ChevronRight as mt}from"lucide-react";import{jsx as z,jsxs as _}from"react/jsx-runtime";function ut(){return _("div",{className:"space-y-8",children:[_("div",{className:"space-y-4",children:[z("h1",{className:"font-bold text-4xl",children:"Cost Tracking Library"}),_("p",{className:"text-lg text-muted-foreground",children:[z("code",{children:"@contractspec/lib.cost-tracking"})," transforms raw telemetry into dollars: DB/API/compute costs per operation, budget alerts per tenant, and actionable optimization tips."]})]}),_("div",{className:"space-y-4",children:[z("h2",{className:"font-bold text-2xl",children:"Installation"}),z(pt,{package:"@contractspec/lib.cost-tracking"})]}),_("div",{className:"space-y-4",children:[z("h2",{className:"font-bold text-2xl",children:"Record Samples"}),z(Ne,{language:"typescript",code:`const tracker = new CostTracker();
148
+ });`;function Mt(){return n("div",{className:"space-y-8",children:[n("div",{className:"space-y-4",children:[r("h1",{className:"font-bold text-4xl",children:"@contractspec/lib.contracts-spec"}),r("p",{className:"text-lg text-muted-foreground",children:"The core library for defining what your application can do. Unified specifications for Operations, Events, Presentations, and Features."})]}),n("div",{className:"space-y-4",children:[r("h2",{className:"font-bold text-2xl",children:"Installation"}),r(Et,{package:["@contractspec/lib.contracts-spec","@contractspec/lib.schema"]})]}),n("div",{className:"space-y-4",children:[r("h2",{className:"font-bold text-2xl",children:"What lives where"}),n("ul",{className:"list-inside list-disc space-y-2 text-muted-foreground",children:[n("li",{children:[r("strong",{children:"@contractspec/lib.contracts-spec"})," (root): The core contracts definitions (OperationSpec, PresentationSpec, Registry)."]}),n("li",{children:[r("strong",{children:"@contractspec/lib.contracts-runtime-client-react"}),": Browser-safe helpers (React renderers, client SDK). Import this for web/React Native."]}),n("li",{children:[r("strong",{children:"@contractspec/lib.contracts-runtime-server-rest"}),": HTTP/MCP adapters, registries, integrations (Node-only)."]}),n("li",{children:[r("strong",{children:"@contractspec/lib.schema"}),": Schema dictionary (SchemaModel, FieldType) for I/O definitions."]})]})]}),n("div",{className:"space-y-4",children:[r("h2",{className:"font-bold text-2xl",children:"Data table contract example"}),n("p",{className:"text-muted-foreground",children:["The canonical account-grid example starts here in"," ",r("code",{children:"@contractspec/lib.contracts-spec"}),". The contract declares table execution mode, selection, pinning, resizing, row expansion, and initial state before any renderer is chosen."]}),r(Dt,{language:"typescript",code:Ot}),n("p",{className:"text-muted-foreground text-sm",children:["See the live version in"," ",r(ge,{href:"/docs/examples/data-grid-showcase",className:"text-[color:var(--rust)] underline underline-offset-4",children:"/docs/examples/data-grid-showcase"}),"."]})]}),n("div",{className:"space-y-4",children:[r("h2",{className:"font-bold text-2xl",children:"Core Concepts"}),n("ul",{className:"list-inside list-disc space-y-2 text-muted-foreground",children:[n("li",{children:[r("strong",{children:"OperationSpec"}),": Immutable description of an operation (Command or Query). Defines I/O, policy, and metadata."]}),n("li",{children:[r("strong",{children:"OperationSpecRegistry"}),": Registry of specs + handlers. Use ",r("code",{className:"font-mono text-xs",children:"installOp"})," ","to attach a handler."]}),n("li",{children:[r("strong",{children:"CapabilitySpec"}),": Canonical capability declaration (requires/provides)."]}),n("li",{children:[r("strong",{children:"PolicySpec"}),": Declarative policy rules (ABAC/ReBAC, rate limits)."]}),n("li",{children:[r("strong",{children:"TelemetrySpec"}),": Analytics definitions and privacy levels."]}),n("li",{children:[r("strong",{children:"PresentationSpec (V2)"}),": Describes how data is rendered (Web Components, Markdown, Data)."]}),n("li",{children:[r("strong",{children:"DataViewSpec"}),": Declarative list, table, grid, and detail contracts that the table showcase uses as its canonical account-grid example."]})]})]}),n("div",{className:"space-y-4",children:[r("h2",{className:"font-bold text-2xl",children:"Lifecycle"}),n("ol",{className:"list-inside list-decimal space-y-2 text-muted-foreground",children:[n("li",{children:[r("strong",{children:"Define"})," the spec (I/O via SchemaModel or Zod)."]}),n("li",{children:[r("strong",{children:"Register"})," it:"," ",r("code",{className:"font-mono text-xs",children:"installOp(registry, spec, handler)"}),"."]}),n("li",{children:[r("strong",{children:"Expose"})," it via an adapter (REST, GraphQL, MCP)."]}),n("li",{children:[r("strong",{children:"Validate"})," at runtime automatically."]})]})]}),n("div",{className:"space-y-4",children:[r("h2",{className:"font-bold text-2xl",children:"Adapters"}),n("ul",{className:"space-y-2 text-muted-foreground",children:[n("li",{children:[r("code",{className:"rounded bg-background/50 px-2 py-1",children:"server/rest-next-app"}),": Next.js App Router adapter"]}),n("li",{children:[r("code",{className:"rounded bg-background/50 px-2 py-1",children:"server/provider-mcp"}),": Model Context Protocol (MCP) for AI agents"]}),n("li",{children:[r("code",{className:"rounded bg-background/50 px-2 py-1",children:"server/graphql-pothos"}),": GraphQL schema generator"]})]})]}),n("div",{className:"flex items-center gap-4 pt-4",children:[n(ge,{href:"/docs/libraries/schema",className:"btn-primary",children:["Next: Schema ",r(Bt,{size:16})]}),r(ge,{href:"/docs/specs/capabilities",className:"btn-ghost",children:"Core Concepts"})]})]})}import{CodeBlock as Re,InstallCommand as Wt}from"@contractspec/lib.design-system";import Ie from"@contractspec/lib.ui-link";import{ChevronRight as zt}from"lucide-react";import{jsx as G,jsxs as q}from"react/jsx-runtime";function Ut(){return q("div",{className:"space-y-8",children:[q("div",{className:"space-y-4",children:[G("h1",{className:"font-bold text-4xl",children:"Cost Tracking Library"}),q("p",{className:"text-lg text-muted-foreground",children:[G("code",{children:"@contractspec/lib.cost-tracking"})," transforms raw telemetry into dollars: DB/API/compute costs per operation, budget alerts per tenant, and actionable optimization tips."]})]}),q("div",{className:"space-y-4",children:[G("h2",{className:"font-bold text-2xl",children:"Installation"}),G(Wt,{package:"@contractspec/lib.cost-tracking"})]}),q("div",{className:"space-y-4",children:[G("h2",{className:"font-bold text-2xl",children:"Record Samples"}),G(Re,{language:"typescript",code:`const tracker = new CostTracker();
149
149
  tracker.recordSample({
150
150
  operation: 'orders.list',
151
151
  tenantId: 'acme',
@@ -153,12 +153,96 @@ tracker.recordSample({
153
153
  dbWrites: 4,
154
154
  computeMs: 180,
155
155
  externalCalls: [{ provider: 'stripe', cost: 0.02 }],
156
- });`})]}),_("div",{className:"space-y-4",children:[z("h2",{className:"font-bold text-2xl",children:"Budget Alerts"}),z(Ne,{language:"typescript",code:`const budgets = new BudgetAlertManager({
156
+ });`})]}),q("div",{className:"space-y-4",children:[G("h2",{className:"font-bold text-2xl",children:"Budget Alerts"}),G(Re,{language:"typescript",code:`const budgets = new BudgetAlertManager({
157
157
  budgets: [{ tenantId: 'acme', monthlyLimit: 150 }],
158
158
  onAlert: ({ tenantId, total }) => notifyFinance(tenantId, total),
159
159
  });
160
160
 
161
- tracker.getTotals({ tenantId: 'acme' }).forEach((summary) => budgets.track(summary));`})]}),_("div",{className:"space-y-4",children:[z("h2",{className:"font-bold text-2xl",children:"Optimization Suggestions"}),_("p",{className:"text-muted-foreground text-sm",children:["Feed summaries into ",z("code",{children:"OptimizationRecommender"})," to surface N+1 queries, compute-heavy steps, or expensive external calls. Store the generated suggestions in the new Prisma model to power Ops playbooks."]})]}),_("div",{className:"flex items-center gap-4 pt-4",children:[z(we,{href:"/docs/libraries",className:"btn-ghost",children:"Back to Libraries"}),_(we,{href:"/docs/libraries/slo",className:"btn-primary",children:["Next: SLO ",z(mt,{size:16})]})]})]})}import{CodeBlock as gt}from"@contractspec/lib.design-system";import ke from"@contractspec/lib.ui-link";import{ChevronRight as ft}from"lucide-react";import{jsx as h,jsxs as b}from"react/jsx-runtime";function ht(){return b("div",{className:"space-y-8",children:[b("div",{className:"space-y-4",children:[h("h1",{className:"font-bold text-4xl",children:"Data & Backend"}),h("p",{className:"text-muted-foreground",children:"A collection of robust, platform-agnostic libraries for building the backend infrastructure of your LSSM applications."})]}),b("div",{className:"space-y-4",children:[h("h2",{className:"font-bold text-2xl",children:"Libraries"}),b("div",{className:"space-y-6",children:[b("div",{className:"card-subtle p-6",children:[h("h3",{className:"font-bold text-lg",children:"@contractspec/app.cli-database"}),b("p",{className:"mt-2 text-muted-foreground text-sm",children:[h("strong",{children:"Prisma Wrapper & CLI"}),". Provides a unified way to manage database schemas, migrations, and clients. Includes seeders and factory patterns for testing."]})]}),b("div",{className:"card-subtle p-6",children:[h("h3",{className:"font-bold text-lg",children:"@contractspec/lib.bus"}),b("p",{className:"mt-2 text-muted-foreground text-sm",children:[h("strong",{children:"Type-Safe Event Bus"}),". Decouple your architecture with typed events. Supports in-memory dispatch for monoliths and can be extended for distributed message queues (Redis, SQS)."]})]}),b("div",{className:"card-subtle p-6",children:[h("h3",{className:"font-bold text-lg",children:"@contractspec/lib.logger"}),b("p",{className:"mt-2 text-muted-foreground text-sm",children:[h("strong",{children:"High-Performance Logging"}),". Optimized for Bun and structured JSON output. Includes plugins for ElysiaJS to log HTTP requests automatically."]})]}),b("div",{className:"card-subtle p-6",children:[h("h3",{className:"font-bold text-lg",children:"@contractspec/lib.error"}),b("p",{className:"mt-2 text-muted-foreground text-sm",children:[h("strong",{children:"Standardized Errors"}),". Use `AppError` with standard codes (NOT_FOUND, UNAUTHORIZED) to ensure consistent HTTP responses and error handling across services."]})]}),b("div",{className:"card-subtle p-6",children:[h("h3",{className:"font-bold text-lg",children:"@contractspec/lib.exporter"}),b("p",{className:"mt-2 text-muted-foreground text-sm",children:[h("strong",{children:"Data Export"}),". Generate CSV and XML files from your data. Platform-agnostic and streaming-friendly."]})]})]})]}),b("div",{className:"space-y-4",children:[h("h2",{className:"font-bold text-2xl",children:"Example: Unified Backend Flow"}),h(gt,{language:"typescript",code:`import { logger } from '@contractspec/lib.logger';
161
+ tracker.getTotals({ tenantId: 'acme' }).forEach((summary) => budgets.track(summary));`})]}),q("div",{className:"space-y-4",children:[G("h2",{className:"font-bold text-2xl",children:"Optimization Suggestions"}),q("p",{className:"text-muted-foreground text-sm",children:["Feed summaries into ",G("code",{children:"OptimizationRecommender"})," to surface N+1 queries, compute-heavy steps, or expensive external calls. Store the generated suggestions in the new Prisma model to power Ops playbooks."]})]}),q("div",{className:"flex items-center gap-4 pt-4",children:[G(Ie,{href:"/docs/libraries",className:"btn-ghost",children:"Back to Libraries"}),q(Ie,{href:"/docs/libraries/slo",className:"btn-primary",children:["Next: SLO ",G(zt,{size:16})]})]})]})}var Ae=[{title:"@contractspec/lib.presentation-runtime-core",body:"Shared state, table models, workflow logic, visualization helpers, and the alias helpers consumed by web and native builds."},{title:"@contractspec/lib.presentation-runtime-react",body:"React-facing hooks such as useContractTable, useDataViewTable, and useWorkflow. This is the shared hook surface most product code starts from."},{title:"@contractspec/lib.presentation-runtime-react-native",body:"Native entrypoint for mobile apps. It re-exports the shared table and data-view hooks so the controller API stays aligned with the React package."},{title:"@contractspec/lib.ui-kit-web",body:"Browser-first primitives and accessibility helpers. Reach for this layer when you want direct control over the web renderer."},{title:"@contractspec/lib.ui-kit",body:"Native-first primitives for Expo and React Native. Reach for this layer when the render surface should stay mobile-native."},{title:"@contractspec/lib.design-system",body:"Composed components, ThemeSpec/TranslationSpec-aware controls, token helpers, and paired web/mobile implementations that sit on top of both UI kits."}],Pe=[{title:"useContractTable",body:"Use this when your rows and column definitions already live in product code and you want one headless controller for sorting, pagination, selection, visibility, pinning, sizing, and expansion."},{title:"useDataViewTable",body:"Use this when the table should stay driven by a DataViewSpec instead of hand-authored columns. It adapts the spec to the same generic controller model."},{title:"Native re-export boundary",body:"On native apps, import the same hook names from @contractspec/lib.presentation-runtime-react-native when you want the import path itself to signal a mobile boundary."}],De=[{title:"Next.js / Turbopack",body:"Use withPresentationTurbopackAliases as the default path in current Next.js apps. It patches nextConfig.turbopack instead of mutating a webpack config object."},{title:"Next.js / Webpack fallback",body:"Use withPresentationWebpackAliases only when a Next.js app explicitly opts back into webpack via the CLI flags."},{title:"Expo / Metro",body:"Use withPresentationMetroAliases on Metro when native platforms should resolve web ui-kit /ui imports and the shared React runtime root to native implementations."}],Ee=[{title:"withPlatformUI",body:"Use this lightweight adapter when a design-system surface needs one object that carries the current platform, tokens, and breakpoints."},{title:"mapTokensForPlatform",body:"Use this when resolved tokens need to be mapped into platform-specific token shapes before the final renderer consumes them."}],Be=[{title:"What Webpack remaps",items:["@contractspec/lib.ui-kit -> @contractspec/lib.ui-kit-web","@contractspec/lib.presentation-runtime-react-native -> @contractspec/lib.presentation-runtime-react","Prepends .web.js, .web.jsx, .web.ts, and .web.tsx to webpack resolve.extensions"]},{title:"What Turbopack remaps",items:["@contractspec/lib.ui-kit -> @contractspec/lib.ui-kit-web","@contractspec/lib.presentation-runtime-react-native -> @contractspec/lib.presentation-runtime-react","Initializes or merges turbopack.resolveExtensions with a web-first extension list"]},{title:"What Metro remaps",items:["@contractspec/lib.ui-kit-web/ui/* -> @contractspec/lib.ui-kit/ui/* on ios/android/native/mobile","Root @contractspec/lib.presentation-runtime-react -> @contractspec/lib.presentation-runtime-react-native","Enables package exports and expands platform resolution ordering"]}],Oe=["Set gap, align, justify, and wrap explicitly in shared code because defaults are not identical between web and native.","Shared-safe subset: VStack, HStack, and Box with className, gap, align, justify, and wrap.","Web-only feature: as lets stack primitives emit semantic elements such as section, header, main, or article.","Native-only extras: spacing, width, and padding exist on the native stack primitives and should stay out of shared renderer code.","HStack and Box reverse-wrap tokens differ: wrapReverse on web, reverse on native. Prefer nowrap or wrap in shared code.","Box defaults to nowrap on web and wrap on native, so shared code should set wrap intentionally."],Me=["withPresentationNextAliases no longer exists. Use withPresentationTurbopackAliases for the default Next.js path or withPresentationWebpackAliases for explicit webpack fallback.","Prefer root runtime imports when alias helpers matter. Metro remaps the root @contractspec/lib.presentation-runtime-react package, not arbitrary deep hook subpaths.","Metro only rewrites @contractspec/lib.ui-kit-web/ui/* imports. Router-specific web packages and other web-only helpers still need platform-aware imports.","presentation-runtime-core is headless. It owns models and config helpers, not rendered React components.","design-system compatibility comes from paired .tsx / .mobile.tsx implementations and token helpers such as withPlatformUI and mapTokensForPlatform.","Form controls should come from @contractspec/lib.design-system when product code needs ThemeSpec or TranslationSpec support.","Stack primitives are similar across platforms, but the prop surface is not identical. Stay inside the common subset for shared renderers.","Alias helpers solve module resolution only. They do not replace app-level monorepo watchFolders, Expo Router setup, or other Next configuration."],We="Copy these markdown snippets into your own AGENTS.md, LLM guide, README, or engineering playbook when you want to enforce the same cross-surface rules across customer projects.",ze=`import { withPresentationTurbopackAliases } from '@contractspec/lib.presentation-runtime-core';
162
+
163
+ /** @type {import('next').NextConfig} */
164
+ const nextConfig = withPresentationTurbopackAliases({
165
+ turbopack: {
166
+ resolveAlias: {
167
+ fs: { browser: 'browserify-fs' },
168
+ },
169
+ },
170
+ });
171
+
172
+ export default nextConfig;`,Ue=`import { withPresentationWebpackAliases } from '@contractspec/lib.presentation-runtime-core';
173
+
174
+ /** @type {import('next').NextConfig} */
175
+ const nextConfig = {
176
+ webpack: (config) => withPresentationWebpackAliases(config),
177
+ };
178
+
179
+ export default nextConfig;`,Ge=`const { getDefaultConfig } = require('expo/metro-config');
180
+ const {
181
+ withPresentationMetroAliases,
182
+ } = require('@contractspec/lib.presentation-runtime-core');
183
+
184
+ const projectRoot = __dirname;
185
+ const config = getDefaultConfig(projectRoot);
186
+
187
+ module.exports = withPresentationMetroAliases(config);`,Fe=["import {"," defaultTokens,"," mapTokensForPlatform,"," withPlatformUI,","} from '@contractspec/lib.design-system';","","const nativeTokens = mapTokensForPlatform('native', defaultTokens);","","const ui = withPlatformUI({"," tokens: defaultTokens,"," platform: 'web',","});","","// ui is a lightweight config object for design-system consumers.","// nativeTokens is the mapped token shape for a native renderer."].join(`
188
+ `),Ve=`import { Box, HStack, VStack } from '@contractspec/lib.ui-kit-web/ui/stack';
189
+
190
+ export function AccountSummaryHeader() {
191
+ return (
192
+ <VStack gap="lg" align="stretch" className="w-full">
193
+ <HStack gap="sm" align="center" justify="between" wrap="wrap">
194
+ <Box gap="xs" align="center" justify="start" wrap="nowrap">
195
+ <StatusDot />
196
+ <Title />
197
+ </Box>
198
+ <Actions />
199
+ </HStack>
200
+ <Filters />
201
+ </VStack>
202
+ );
203
+ }
204
+
205
+ // In native-only files, swap the import to:
206
+ // @contractspec/lib.ui-kit/ui/stack
207
+ //
208
+ // On web-only pages, VStack / HStack / Box also support:
209
+ // <VStack as="section">...</VStack>`,_e=`import { DataTable as DesignSystemTable } from '@contractspec/lib.design-system';
210
+ import { DataTable as NativeTable } from '@contractspec/lib.ui-kit/ui/data-table';
211
+ import { DataTable as WebTable } from '@contractspec/lib.ui-kit-web/ui/data-table';
212
+ import { useContractTable } from '@contractspec/lib.presentation-runtime-react';
213
+
214
+ export function useAccountsController(data, columns) {
215
+ return useContractTable({
216
+ data,
217
+ columns,
218
+ selectionMode: 'single',
219
+ initialState: {
220
+ sorting: [{ id: 'arr', desc: true }],
221
+ pagination: { pageIndex: 0, pageSize: 5 },
222
+ },
223
+ });
224
+ }
225
+
226
+ export function WebAccounts({ controller }) {
227
+ return <WebTable controller={controller} />;
228
+ }
229
+
230
+ export function NativeAccounts({ controller }) {
231
+ return <NativeTable controller={controller} />;
232
+ }
233
+
234
+ export function ProductAccounts({ controller }) {
235
+ return (
236
+ <DesignSystemTable
237
+ controller={controller}
238
+ title="Accounts"
239
+ description="Same controller, composed ContractSpec shell."
240
+ />
241
+ );
242
+ }
243
+
244
+ // If the table is spec-driven instead of hand-authored,
245
+ // swap useContractTable for useDataViewTable.`,He="# Cross-Surface Rendering Policy\n\n- Import runtime bundler helpers from `@contractspec/lib.presentation-runtime-core` root only.\n- Use `withPresentationTurbopackAliases` for default Next.js projects.\n- Use `withPresentationWebpackAliases` only when the app explicitly opts into webpack.\n- Use `withPresentationMetroAliases` for Expo and Metro builds.\n- Prefer `@contractspec/lib.design-system` for shared product-facing surfaces.\n- Use design-system controls when a field must respect ThemeSpec component variants or TranslationSpec messages.\n- Use `@contractspec/lib.ui-kit-web` only for web-specific primitive lanes.\n- Use `@contractspec/lib.ui-kit` only for native-specific primitive lanes.\n- Keep shared layout code inside the common `VStack` / `HStack` / `Box` subset.\n- Do not use removed `withPresentationNextAliases`.\n- Treat `.tsx` / `.mobile.tsx` pairs as the standard design-system compatibility boundary.",qe="# Cross-Surface Rendering Checklist\n\n1. Configure the bundler aliases before sharing any UI code.\n2. Choose the controller layer:\n - use `useContractTable` for app-owned rows and columns\n - use `useDataViewTable` for DataViewSpec-driven tables\n3. Choose the renderer lane:\n - web primitive: `@contractspec/lib.ui-kit-web`\n - native primitive: `@contractspec/lib.ui-kit`\n - shared product surface: `@contractspec/lib.design-system`\n4. Verify mirrored `.tsx` / `.mobile.tsx` implementations where the design-system owns the surface.\n5. Wrap product surfaces in `DesignSystemThemeProvider` and `DesignSystemTranslationProvider` when ThemeSpec or TranslationSpec data is available.\n6. In shared layout code, set `gap`, `align`, `justify`, and `wrap` explicitly.\n7. Check docs and examples for root imports and current helper names before copying them into product code.";import{CodeBlock as ee}from"@contractspec/lib.design-system";import ce from"@contractspec/lib.ui-link";import{ChevronRight as Gt}from"lucide-react";import{jsx as e,jsxs as h}from"react/jsx-runtime";function Ft(){return h("div",{className:"space-y-8",children:[h("div",{className:"space-y-4",children:[e("h1",{className:"font-bold text-4xl",children:"Cross-platform UI"}),e("p",{className:"text-lg text-muted-foreground",children:"How ContractSpec keeps React and React Native components compatible by splitting responsibility across shared runtime models, platform primitives, resolver aliases, and the composed design-system layer."})]}),h("div",{className:"space-y-4",children:[e("h2",{className:"font-bold text-2xl",children:"What cross-platform means here"}),e("p",{className:"text-muted-foreground",children:"The shared rendering story is layered: the core package owns models and resolver helpers, the React packages own hook APIs, the UI kits own raw primitives, and the design-system owns the higher-level product surfaces that pair web and mobile implementations."}),e("div",{className:"grid gap-4 md:grid-cols-2",children:Ae.map((t)=>h("div",{className:"rounded-[20px] border border-border/70 p-4",children:[e("h3",{className:"font-semibold text-base",children:t.title}),e("p",{className:"mt-2 text-muted-foreground text-sm leading-7",children:t.body})]},t.title))}),e("div",{className:"grid gap-4 md:grid-cols-3",children:Pe.map((t)=>h("div",{className:"card-subtle p-4",children:[e("h3",{className:"font-semibold",children:t.title}),e("p",{className:"mt-2 text-muted-foreground text-sm leading-7",children:t.body})]},t.title))}),h("div",{className:"grid gap-4 lg:grid-cols-[1.1fr_0.9fr]",children:[e("div",{className:"grid gap-4 md:grid-cols-2",children:Ee.map((t)=>h("div",{className:"card-subtle p-4",children:[e("h3",{className:"font-semibold",children:t.title}),e("p",{className:"mt-2 text-muted-foreground text-sm leading-7",children:t.body})]},t.title))}),e(ee,{language:"typescript",filename:"design-system-platform.ts",code:Fe})]})]}),h("div",{className:"space-y-4",children:[e("h2",{className:"font-bold text-2xl",children:"Resolver and alias setup"}),h("p",{className:"text-muted-foreground",children:["Teach the bundler what \u201Cweb\u201D and \u201Cnative\u201D mean before you try to share component code. These helpers are public from the root",e("code",{children:" @contractspec/lib.presentation-runtime-core "}),"entrypoint."]}),e("div",{className:"grid gap-4 md:grid-cols-2",children:De.map((t)=>h("div",{className:"card-subtle p-4",children:[e("h3",{className:"font-semibold",children:t.title}),e("p",{className:"mt-2 text-muted-foreground text-sm leading-7",children:t.body})]},t.title))}),h("div",{className:"grid gap-4 xl:grid-cols-3",children:[e(ee,{language:"typescript",filename:"next.config.mjs",code:ze}),e(ee,{language:"typescript",filename:"next.config.mjs",code:Ue}),e(ee,{language:"javascript",filename:"metro.config.js",code:Ge})]})]}),h("div",{className:"space-y-4",children:[e("h2",{className:"font-bold text-2xl",children:"How the remapping works"}),e("p",{className:"text-muted-foreground",children:"The helpers are intentionally asymmetric because Turbopack patches the Next config object, Webpack mutates a resolver config, and Metro maps modules at request time for native platforms."}),e("div",{className:"grid gap-4 xl:grid-cols-3",children:Be.map((t)=>h("div",{className:"card-subtle p-4",children:[e("h3",{className:"font-semibold",children:t.title}),e("ul",{className:"mt-2 space-y-2 text-muted-foreground text-sm leading-7",children:t.items.map((w)=>e("li",{children:w},w))})]},t.title))})]}),h("div",{className:"space-y-4",children:[e("h2",{className:"font-bold text-2xl",children:"Layout primitives"}),h("p",{className:"text-muted-foreground",children:[e("code",{children:"VStack"}),", ",e("code",{children:"HStack"}),", and ",e("code",{children:"Box"})," are the closest thing to a shared layout vocabulary, but their defaults and a few props still differ across the web and native packages."]}),e("div",{className:"grid gap-4 md:grid-cols-2",children:Oe.map((t)=>e("div",{className:"card-subtle p-4 text-muted-foreground text-sm leading-7",children:t},t))}),e(ee,{language:"tsx",filename:"stack-layout.tsx",code:Ve})]}),h("div",{className:"space-y-4",children:[e("h2",{className:"font-bold text-2xl",children:"Rendering patterns"}),e("p",{className:"text-muted-foreground",children:"Keep the controller stable, then decide whether the final surface should be a raw web primitive, a raw native primitive, or a composed design-system wrapper."}),e(ee,{language:"tsx",filename:"cross-platform-rendering.tsx",code:_e}),h("div",{className:"card-subtle p-4 text-muted-foreground text-sm leading-7",children:["For higher-level shared rendering, use the design-system surfaces that already ship paired implementations such as"," ",e("code",{children:"DataViewRenderer"}),", ",e("code",{children:"ListTablePage"}),", and"," ",e("code",{children:"DataTable"}),". The web and mobile files stay separate inside the package while your app imports one design-system boundary."]})]}),h("div",{className:"space-y-4",children:[e("h2",{className:"font-bold text-2xl",children:"Gotchas and boundaries"}),e("ul",{className:"space-y-2 text-muted-foreground leading-7",children:Me.map((t)=>e("li",{children:t},t))})]}),h("div",{className:"space-y-4",children:[e("h2",{className:"font-bold text-2xl",children:"Customer markdown kit"}),e("p",{className:"text-muted-foreground",children:We}),h("div",{className:"grid gap-4 xl:grid-cols-2",children:[e(ee,{language:"markdown",filename:"cross-surface-policy.md",code:He}),e(ee,{language:"markdown",filename:"cross-surface-checklist.md",code:qe})]})]}),h("div",{className:"flex flex-wrap items-center gap-3 pt-2",children:[e(ce,{href:"/docs/libraries/runtime",className:"btn-ghost",children:"Runtime libraries"}),e(ce,{href:"/docs/libraries/ui-kit",className:"btn-ghost",children:"UI Kit"}),e(ce,{href:"/docs/libraries/ui-kit-web",className:"btn-ghost",children:"UI Kit Web"}),h(ce,{href:"/docs/libraries/design-system",className:"btn-primary",children:["Design System ",e(Gt,{size:16})]})]})]})}import{CodeBlock as Vt}from"@contractspec/lib.design-system";import Qe from"@contractspec/lib.ui-link";import{ChevronRight as _t}from"lucide-react";import{jsx as y,jsxs as N}from"react/jsx-runtime";function Ht(){return N("div",{className:"space-y-8",children:[N("div",{className:"space-y-4",children:[y("h1",{className:"font-bold text-4xl",children:"Data & Backend"}),y("p",{className:"text-muted-foreground",children:"A collection of robust, platform-agnostic libraries for building the backend infrastructure of your LSSM applications."})]}),N("div",{className:"space-y-4",children:[y("h2",{className:"font-bold text-2xl",children:"Libraries"}),N("div",{className:"space-y-6",children:[N("div",{className:"card-subtle p-6",children:[y("h3",{className:"font-bold text-lg",children:"@contractspec/app.cli-database"}),N("p",{className:"mt-2 text-muted-foreground text-sm",children:[y("strong",{children:"Prisma Wrapper & CLI"}),". Provides a unified way to manage database schemas, migrations, and clients. Includes seeders and factory patterns for testing."]})]}),N("div",{className:"card-subtle p-6",children:[y("h3",{className:"font-bold text-lg",children:"@contractspec/lib.bus"}),N("p",{className:"mt-2 text-muted-foreground text-sm",children:[y("strong",{children:"Type-Safe Event Bus"}),". Decouple your architecture with typed events. Supports in-memory dispatch for monoliths and can be extended for distributed message queues (Redis, SQS)."]})]}),N("div",{className:"card-subtle p-6",children:[y("h3",{className:"font-bold text-lg",children:"@contractspec/lib.logger"}),N("p",{className:"mt-2 text-muted-foreground text-sm",children:[y("strong",{children:"High-Performance Logging"}),". Optimized for Bun and structured JSON output. Includes plugins for ElysiaJS to log HTTP requests automatically."]})]}),N("div",{className:"card-subtle p-6",children:[y("h3",{className:"font-bold text-lg",children:"@contractspec/lib.error"}),N("p",{className:"mt-2 text-muted-foreground text-sm",children:[y("strong",{children:"Standardized Errors"}),". Use `AppError` with standard codes (NOT_FOUND, UNAUTHORIZED) to ensure consistent HTTP responses and error handling across services."]})]}),N("div",{className:"card-subtle p-6",children:[y("h3",{className:"font-bold text-lg",children:"@contractspec/lib.exporter"}),N("p",{className:"mt-2 text-muted-foreground text-sm",children:[y("strong",{children:"Data Export"}),". Generate CSV and XML files from your data. Platform-agnostic and streaming-friendly."]})]})]})]}),N("div",{className:"space-y-4",children:[y("h2",{className:"font-bold text-2xl",children:"Example: Unified Backend Flow"}),y(Vt,{language:"typescript",code:`import { logger } from '@contractspec/lib.logger';
162
246
  import { AppError } from '@contractspec/lib.error';
163
247
  import { db } from '@contractspec/app.cli-database';
164
248
  import { EventBus } from '@contractspec/lib.bus';
@@ -176,7 +260,7 @@ export async function createUser(email: string) {
176
260
  await EventBus.publish('user.created', { userId: user.id });
177
261
 
178
262
  return user;
179
- }`})]}),b("div",{className:"flex items-center gap-4 pt-4",children:[b(ke,{href:"/docs/libraries/runtime",className:"btn-primary",children:["Next: Runtime ",h(ft,{size:16})]}),h(ke,{href:"/docs/libraries",className:"btn-ghost",children:"Back to Libraries"})]})]})}import{CodeBlock as Se,InstallCommand as bt}from"@contractspec/lib.design-system";import Ce from"@contractspec/lib.ui-link";import{ChevronRight as vt}from"lucide-react";import{jsx as l,jsxs as v}from"react/jsx-runtime";function yt(){return v("div",{className:"space-y-8",children:[v("div",{className:"space-y-4",children:[l("h1",{className:"font-bold text-4xl",children:"DataViews Runtime Library"}),v("p",{className:"text-lg text-muted-foreground",children:["The ",l("code",{children:"@contractspec/lib.contracts-spec/data-views"})," and"," ",l("code",{children:"@contractspec/lib.design-system"})," libraries provide the runtime logic and UI components to render DataViews in your application."]})]}),v("div",{className:"space-y-4",children:[l("h2",{className:"font-bold text-2xl",children:"Installation"}),l(bt,{package:["@contractspec/lib.contracts-spec","@contractspec/lib.design-system"]})]}),v("div",{className:"space-y-4",children:[l("h2",{className:"font-bold text-2xl",children:"DataViewRenderer"}),l("p",{className:"text-muted-foreground",children:"The primary component for rendering any DataView. It automatically selects the correct layout (List, Table, Grid, Detail) based on the spec."}),l(Se,{language:"tsx",code:`import { DataViewRenderer } from '@contractspec/lib.design-system';
263
+ }`})]}),N("div",{className:"flex items-center gap-4 pt-4",children:[N(Qe,{href:"/docs/libraries/runtime",className:"btn-primary",children:["Next: Runtime ",y(_t,{size:16})]}),y(Qe,{href:"/docs/libraries",className:"btn-ghost",children:"Back to Libraries"})]})]})}import{CodeBlock as Ke,InstallCommand as qt}from"@contractspec/lib.design-system";import Je from"@contractspec/lib.ui-link";import{ChevronRight as Qt}from"lucide-react";import{jsx as m,jsxs as k}from"react/jsx-runtime";function Kt(){return k("div",{className:"space-y-8",children:[k("div",{className:"space-y-4",children:[m("h1",{className:"font-bold text-4xl",children:"DataViews Runtime Library"}),k("p",{className:"text-lg text-muted-foreground",children:["The ",m("code",{children:"@contractspec/lib.contracts-spec/data-views"})," and"," ",m("code",{children:"@contractspec/lib.design-system"})," libraries provide the runtime logic and UI components to render DataViews in your application."]})]}),k("div",{className:"space-y-4",children:[m("h2",{className:"font-bold text-2xl",children:"Installation"}),m(qt,{package:["@contractspec/lib.contracts-spec","@contractspec/lib.design-system"]})]}),k("div",{className:"space-y-4",children:[m("h2",{className:"font-bold text-2xl",children:"DataViewRenderer"}),m("p",{className:"text-muted-foreground",children:"The primary component for rendering any DataView. It automatically selects the correct layout (List, Table, Grid, Detail) based on the spec."}),m(Ke,{language:"tsx",code:`import { DataViewRenderer } from '@contractspec/lib.design-system';
180
264
  import { MyUserList } from './specs/users.data-view';
181
265
 
182
266
  export function UserPage() {
@@ -188,7 +272,7 @@ export function UserPage() {
188
272
  onPageChange={(page) => fetchPage(page)}
189
273
  />
190
274
  );
191
- }`}),l("h3",{className:"font-semibold text-xl",children:"Props"}),v("ul",{className:"list-disc space-y-2 pl-6 text-muted-foreground",children:[v("li",{children:[l("code",{children:"spec"}),": The DataViewSpec definition."]}),v("li",{children:[l("code",{children:"items"}),": Array of data items to render."]}),v("li",{children:[l("code",{children:"filters"}),": Current filter state object."]}),v("li",{children:[l("code",{children:"onFilterChange"}),": Callback when filters change."]}),v("li",{children:[l("code",{children:"pagination"}),": Object with ",l("code",{children:"page"}),","," ",l("code",{children:"pageSize"}),", ",l("code",{children:"total"}),"."]}),v("li",{children:[l("code",{children:"onPageChange"}),": Callback when page changes."]})]})]}),v("div",{className:"space-y-4",children:[l("h2",{className:"font-bold text-2xl",children:"Query Generation"}),v("p",{className:"text-muted-foreground",children:["The ",l("code",{children:"DataViewQueryGenerator"})," utility helps translate DataView parameters (filters, sorting, pagination) into query arguments for your backend."]}),l(Se,{language:"typescript",code:`import { DataViewQueryGenerator } from '@contractspec/lib.contracts-spec/data-views/query-generator';
275
+ }`}),m("h3",{className:"font-semibold text-xl",children:"Props"}),k("ul",{className:"list-disc space-y-2 pl-6 text-muted-foreground",children:[k("li",{children:[m("code",{children:"spec"}),": The DataViewSpec definition."]}),k("li",{children:[m("code",{children:"items"}),": Array of data items to render."]}),k("li",{children:[m("code",{children:"filters"}),": Current filter state object."]}),k("li",{children:[m("code",{children:"onFilterChange"}),": Callback when filters change."]}),k("li",{children:[m("code",{children:"pagination"}),": Object with ",m("code",{children:"page"}),","," ",m("code",{children:"pageSize"}),", ",m("code",{children:"total"}),"."]}),k("li",{children:[m("code",{children:"onPageChange"}),": Callback when page changes."]})]})]}),k("div",{className:"space-y-4",children:[m("h2",{className:"font-bold text-2xl",children:"Query Generation"}),k("p",{className:"text-muted-foreground",children:["The ",m("code",{children:"DataViewQueryGenerator"})," utility helps translate DataView parameters (filters, sorting, pagination) into query arguments for your backend."]}),m(Ke,{language:"typescript",code:`import { DataViewQueryGenerator } from '@contractspec/lib.contracts-spec/data-views/query-generator';
192
276
 
193
277
  const generator = new DataViewQueryGenerator(MyUserList);
194
278
  const query = generator.generate({
@@ -196,7 +280,7 @@ const query = generator.generate({
196
280
  filters: { role: 'admin' }
197
281
  });
198
282
 
199
- // query.input contains { skip: 0, take: 20, role: 'admin' }`})]}),v("div",{className:"flex items-center gap-4 pt-4",children:[l(Ce,{href:"/docs/libraries",className:"btn-ghost",children:"Back to Libraries"}),v(Ce,{href:"/docs/libraries/data-backend",className:"btn-primary",children:["Next: Data & Backend ",l(vt,{size:16})]})]})]})}import{CodeBlock as Nt,InstallCommand as wt}from"@contractspec/lib.design-system";import ce from"@contractspec/lib.ui-link";import{ChevronRight as kt}from"lucide-react";import{jsx as t,jsxs as n}from"react/jsx-runtime";var St=`import { Button, DataTable } from '@contractspec/lib.design-system';
283
+ // query.input contains { skip: 0, take: 20, role: 'admin' }`})]}),k("div",{className:"flex items-center gap-4 pt-4",children:[m(Je,{href:"/docs/libraries",className:"btn-ghost",children:"Back to Libraries"}),k(Je,{href:"/docs/libraries/data-backend",className:"btn-primary",children:["Next: Data & Backend ",m(Qt,{size:16})]})]})]})}import{CodeBlock as he,InstallCommand as Jt}from"@contractspec/lib.design-system";import se from"@contractspec/lib.ui-link";import{ChevronRight as Zt}from"lucide-react";import{jsx as o,jsxs as c}from"react/jsx-runtime";var Xt=`import { Button, DataTable } from '@contractspec/lib.design-system';
200
284
  import { useContractTable } from '@contractspec/lib.presentation-runtime-react';
201
285
 
202
286
  import { SHOWCASE_ROWS } from '@contractspec/example.data-grid-showcase/ui/data-grid-showcase.data';
@@ -244,7 +328,43 @@ export function AccountHealthTable() {
244
328
  footer={\`Page \${controller.pageIndex + 1} of \${controller.pageCount}\`}
245
329
  />
246
330
  );
247
- }`;function Ct(){return n("div",{className:"space-y-8",children:[n("div",{className:"space-y-4",children:[t("h1",{className:"font-bold text-4xl",children:"@contractspec/lib.design-system"}),n("p",{className:"text-muted-foreground",children:["High-level design system components, patterns, and layouts for LSSM applications. Built on top of ",t("code",{children:"@contractspec/lib.ui-kit"}),"."]})]}),n("div",{className:"space-y-4",children:[t("h2",{className:"font-bold text-2xl",children:"Installation"}),t(wt,{package:"@contractspec/lib.design-system"})]}),n("div",{className:"space-y-4",children:[t("h2",{className:"font-bold text-2xl",children:"What It Provides"}),n("ul",{className:"list-inside list-disc space-y-2 text-muted-foreground",children:[n("li",{children:[t("strong",{children:"Composite Components"}),": Molecules and Organisms that solve common UI problems"]}),n("li",{children:[t("strong",{children:"Layouts"}),": Ready-to-use page structures for dashboards, marketing sites, and lists"]}),n("li",{children:[t("strong",{children:"Data Views"}),": Standardized renderers for lists, tables, and detail views"]}),n("li",{children:[t("strong",{children:"Forms"}),": Zod-integrated form layouts and components"]}),n("li",{children:[t("strong",{children:"Code Display"}),": Syntax-highlighted code blocks with package manager tabs"]}),n("li",{children:[t("strong",{children:"Platform Utilities"}),": Hooks for responsive and adaptive design"]}),n("li",{children:[t("strong",{children:"Legal Templates"}),": Compliant templates for Terms, Privacy, and GDPR"]})]})]}),n("div",{className:"space-y-4",children:[t("h2",{className:"font-bold text-2xl",children:"Data table example"}),n("p",{className:"text-muted-foreground",children:["This is the composed lane from the canonical"," ",t(ce,{href:"/docs/examples/data-grid-showcase",className:"text-[color:var(--rust)] underline underline-offset-4",children:"Data Grid Showcase"}),". The design-system wrapper owns title, description, header actions, and the opinionated card shell on top of the raw web primitive."]}),t(Nt,{language:"tsx",code:St})]}),n("div",{className:"space-y-4",children:[t("h2",{className:"font-bold text-2xl",children:"Key Exports"}),n("div",{className:"grid gap-4 md:grid-cols-2",children:[n("div",{className:"card-subtle p-4",children:[t("h3",{className:"mb-2 font-semibold",children:"Organisms"}),n("ul",{className:"space-y-1 text-muted-foreground text-sm",children:[t("li",{children:"AppLayout, AppHeader, AppSidebar"}),t("li",{children:"MarketingLayout, HeroSection"}),t("li",{children:"ListCardPage, ListTablePage"})]})]}),n("div",{className:"card-subtle p-4",children:[t("h3",{className:"mb-2 font-semibold",children:"Data & Forms"}),n("ul",{className:"space-y-1 text-muted-foreground text-sm",children:[t("li",{children:"DataTable"}),t("li",{children:"DataViewTable"}),t("li",{children:"DataViewRenderer"}),t("li",{children:"ZodForm"}),t("li",{children:"FormLayout, FormDialog"})]})]}),n("div",{className:"card-subtle p-4",children:[t("h3",{className:"mb-2 font-semibold",children:"Code Display"}),n("ul",{className:"space-y-1 text-muted-foreground text-sm",children:[t("li",{children:"CodeBlock (syntax highlighting)"}),t("li",{children:"CommandTabs (package manager tabs)"}),t("li",{children:"InstallCommand (convenience wrapper)"}),t("li",{children:"CopyButton"})]})]}),n("div",{className:"card-subtle p-4",children:[t("h3",{className:"mb-2 font-semibold",children:"Providers"}),t("ul",{className:"space-y-1 text-muted-foreground text-sm",children:t("li",{children:"PackageManagerProvider"})})]})]})]}),n("div",{className:"flex items-center gap-4 pt-4",children:[t(ce,{href:"/docs/libraries/ui-kit-web",className:"btn-ghost",children:"Previous: UI Kit Web"}),n(ce,{href:"/docs/libraries/accessibility",className:"btn-primary",children:["Next: Accessibility ",t(kt,{size:16})]})]})]})}import{CodeBlock as le,InstallCommand as Lt}from"@contractspec/lib.design-system";import Le from"@contractspec/lib.ui-link";import{ChevronRight as Rt}from"lucide-react";import{jsx as w,jsxs as Q}from"react/jsx-runtime";function It(){return Q("div",{className:"space-y-8",children:[Q("div",{className:"space-y-4",children:[w("h1",{className:"font-bold text-4xl",children:"@contractspec/lib.evolution"}),w("p",{className:"text-lg text-muted-foreground",children:"Analyze production telemetry, surface anomalies, and turn them into AI-reviewed spec proposals that can be approved, rolled out, or reverted."})]}),Q("div",{className:"space-y-4",children:[w("h2",{className:"font-bold text-2xl",children:"Installation"}),w(Lt,{package:"@contractspec/lib.evolution"})]}),Q("div",{className:"space-y-3",children:[w("h2",{className:"font-bold text-2xl",children:"From telemetry to intent"}),w(le,{language:"typescript",code:`import { SpecAnalyzer } from '@contractspec/lib.evolution/analyzer';
331
+ }`,$t=`import {
332
+ DesignSystemThemeProvider,
333
+ resolveThemeModeTokens,
334
+ themeSpecToCssVariables,
335
+ themeSpecToTailwindCss,
336
+ themeSpecToTailwindPreset,
337
+ } from '@contractspec/lib.design-system';
338
+
339
+ const tokens = resolveThemeModeTokens(themeSpec, 'light', {
340
+ targets: ['tenant:acme'],
341
+ });
342
+
343
+ export default themeSpecToTailwindPreset(tokens);
344
+
345
+ const css = themeSpecToTailwindCss(
346
+ themeSpecToCssVariables(themeSpec, { targets: ['tenant:acme'] }),
347
+ { includeCustomVariant: true }
348
+ );
349
+
350
+ export function TenantSurface({ children }: { children: React.ReactNode }) {
351
+ return (
352
+ <DesignSystemThemeProvider
353
+ theme={themeSpec}
354
+ targets={['tenant:acme']}
355
+ mode="dark"
356
+ applyCssVariables
357
+ >
358
+ {children}
359
+ </DesignSystemThemeProvider>
360
+ );
361
+ }`,Yt=`import { themeSpecToTailwindPreset } from '@contractspec/lib.design-system/theme';
362
+ import { Select } from '@contractspec/lib.design-system/controls';
363
+ import { FormDialog } from '@contractspec/lib.design-system/forms';
364
+ import { HStack } from '@contractspec/lib.design-system/layout';
365
+
366
+ // Root imports remain supported:
367
+ import { Button, DataTable } from '@contractspec/lib.design-system';`;function xt(){return c("div",{className:"space-y-8",children:[c("div",{className:"space-y-4",children:[o("h1",{className:"font-bold text-4xl",children:"@contractspec/lib.design-system"}),c("p",{className:"text-muted-foreground",children:["High-level design system components, patterns, and layouts for LSSM applications. Built on top of ",o("code",{children:"@contractspec/lib.ui-kit"}),"."]})]}),c("div",{className:"space-y-4",children:[o("h2",{className:"font-bold text-2xl",children:"Installation"}),o(Jt,{package:"@contractspec/lib.design-system"})]}),c("div",{className:"space-y-4",children:[o("h2",{className:"font-bold text-2xl",children:"What It Provides"}),c("ul",{className:"list-inside list-disc space-y-2 text-muted-foreground",children:[c("li",{children:[o("strong",{children:"Composite Components"}),": Molecules and Organisms that solve common UI problems"]}),c("li",{children:[o("strong",{children:"Layouts"}),": Ready-to-use page structures for dashboards, marketing sites, and lists"]}),c("li",{children:[o("strong",{children:"Data Views"}),": Standardized renderers for lists, tables, and detail views"]}),c("li",{children:[o("strong",{children:"Forms"}),": Zod-integrated form layouts and components"]}),c("li",{children:[o("strong",{children:"Code Display"}),": Syntax-highlighted code blocks with package manager tabs"]}),c("li",{children:[o("strong",{children:"Platform Utilities"}),": Hooks for responsive and adaptive design"]}),c("li",{children:[o("strong",{children:"Theme Bridge"}),": ThemeSpec to Tailwind variables, presets, CSS text, and runtime light/dark mode"]}),c("li",{children:[o("strong",{children:"Legal Templates"}),": Compliant templates for Terms, Privacy, and GDPR"]})]})]}),c("div",{className:"space-y-4",children:[o("h2",{className:"font-bold text-2xl",children:"ThemeSpec to Tailwind"}),c("p",{className:"text-muted-foreground",children:["The theme bridge keeps ",o("code",{children:"ThemeSpec"})," as the source of truth and exposes no-generation Tailwind helpers, optional CSS text serialization, runtime CSS variables, light/dark modes, and OKLCH color pass-through."]}),o(he,{language:"tsx",code:$t})]}),c("div",{className:"space-y-4",children:[o("h2",{className:"font-bold text-2xl",children:"Focused import surfaces"}),o("p",{className:"text-muted-foreground",children:"New code can use focused subpaths for theme, controls, forms, and layout while existing root imports remain compatible."}),o(he,{language:"tsx",code:Yt})]}),c("div",{className:"space-y-4",children:[o("h2",{className:"font-bold text-2xl",children:"Data table example"}),c("p",{className:"text-muted-foreground",children:["This is the composed lane from the canonical"," ",o(se,{href:"/docs/examples/data-grid-showcase",className:"text-[color:var(--rust)] underline underline-offset-4",children:"Data Grid Showcase"}),". The design-system wrapper owns title, description, header actions, and the opinionated card shell on top of the raw web primitive."]}),o(he,{language:"tsx",code:Xt})]}),c("div",{className:"space-y-4",children:[o("h2",{className:"font-bold text-2xl",children:"Key Exports"}),c("div",{className:"grid gap-4 md:grid-cols-2",children:[c("div",{className:"card-subtle p-4",children:[o("h3",{className:"mb-2 font-semibold",children:"Organisms"}),c("ul",{className:"space-y-1 text-muted-foreground text-sm",children:[o("li",{children:"AppLayout, AppHeader, AppSidebar"}),o("li",{children:"MarketingLayout, HeroSection"}),o("li",{children:"ListCardPage, ListTablePage"})]})]}),c("div",{className:"card-subtle p-4",children:[o("h3",{className:"mb-2 font-semibold",children:"Data & Forms"}),c("ul",{className:"space-y-1 text-muted-foreground text-sm",children:[o("li",{children:"DataTable"}),o("li",{children:"DataViewTable"}),o("li",{children:"DataViewRenderer"}),o("li",{children:"ZodForm"}),o("li",{children:"FormLayout, FormDialog"})]})]}),c("div",{className:"card-subtle p-4",children:[o("h3",{className:"mb-2 font-semibold",children:"Code Display"}),c("ul",{className:"space-y-1 text-muted-foreground text-sm",children:[o("li",{children:"CodeBlock (syntax highlighting)"}),o("li",{children:"CommandTabs (package manager tabs)"}),o("li",{children:"InstallCommand (convenience wrapper)"}),o("li",{children:"CopyButton"})]})]}),c("div",{className:"card-subtle p-4",children:[o("h3",{className:"mb-2 font-semibold",children:"Providers"}),o("ul",{className:"space-y-1 text-muted-foreground text-sm",children:o("li",{children:"PackageManagerProvider"})})]})]})]}),c("div",{className:"card-subtle space-y-3 p-6",children:[o("h2",{className:"font-bold text-2xl",children:"Where this layer fits"}),c("p",{className:"text-muted-foreground",children:["Read"," ",o(se,{href:"/docs/libraries/cross-platform-ui",className:"text-[color:var(--rust)] underline underline-offset-4",children:"Cross-platform UI"})," ","for the package split between shared runtime controllers, leaf platform primitives, and this composed design-system layer."]})]}),c("div",{className:"flex items-center gap-4 pt-4",children:[o(se,{href:"/docs/libraries/ui-kit-web",className:"btn-ghost",children:"Previous: UI Kit Web"}),c(se,{href:"/docs/libraries/accessibility",className:"btn-primary",children:["Next: Accessibility ",o(Zt,{size:16})]})]})]})}import{CodeBlock as fe,InstallCommand as jt}from"@contractspec/lib.design-system";import Ze from"@contractspec/lib.ui-link";import{ChevronRight as ea}from"lucide-react";import{jsx as T,jsxs as X}from"react/jsx-runtime";function ta(){return X("div",{className:"space-y-8",children:[X("div",{className:"space-y-4",children:[T("h1",{className:"font-bold text-4xl",children:"@contractspec/lib.evolution"}),T("p",{className:"text-lg text-muted-foreground",children:"Analyze production telemetry, surface anomalies, and turn them into AI-reviewed spec proposals that can be approved, rolled out, or reverted."})]}),X("div",{className:"space-y-4",children:[T("h2",{className:"font-bold text-2xl",children:"Installation"}),T(jt,{package:"@contractspec/lib.evolution"})]}),X("div",{className:"space-y-3",children:[T("h2",{className:"font-bold text-2xl",children:"From telemetry to intent"}),T(fe,{language:"typescript",code:`import { SpecAnalyzer } from '@contractspec/lib.evolution/analyzer';
248
368
  import { EvolutionPipeline } from '@contractspec/lib.observability';
249
369
 
250
370
  const analyzer = new SpecAnalyzer();
@@ -259,7 +379,7 @@ pipeline.ingest({
259
379
  success: false,
260
380
  timestamp: new Date(),
261
381
  errorCode: 'VALIDATION_FAILED',
262
- });`})]}),Q("div",{className:"space-y-3",children:[w("h2",{className:"font-bold text-2xl",children:"Generate & approve suggestions"}),w(le,{language:"typescript",code:`import {
382
+ });`})]}),X("div",{className:"space-y-3",children:[T("h2",{className:"font-bold text-2xl",children:"Generate & approve suggestions"}),T(fe,{language:"typescript",code:`import {
263
383
  SpecGenerator,
264
384
  SpecSuggestionOrchestrator,
265
385
  InMemorySpecSuggestionRepository,
@@ -273,7 +393,7 @@ const suggestion = generator.generateFromIntent(intentPattern, {
273
393
  summary: 'Add PO number requirement for acme.corp',
274
394
  });
275
395
 
276
- await orchestrator.submit(suggestion, sessionState);`})]}),Q("div",{className:"space-y-3",children:[w("h2",{className:"font-bold text-2xl",children:"Write approved specs back to git"}),w(le,{language:"typescript",code:`import { FileSystemSuggestionWriter } from '@contractspec/lib.evolution/approval';
396
+ await orchestrator.submit(suggestion, sessionState);`})]}),X("div",{className:"space-y-3",children:[T("h2",{className:"font-bold text-2xl",children:"Write approved specs back to git"}),T(fe,{language:"typescript",code:`import { FileSystemSuggestionWriter } from '@contractspec/lib.evolution/approval';
277
397
 
278
398
  const writer = new FileSystemSuggestionWriter({
279
399
  outputDir:
@@ -284,7 +404,7 @@ await writer.write({
284
404
  ...suggestion,
285
405
  status: 'approved',
286
406
  approvals: { reviewer: 'ops@contractspec', decidedAt: new Date() },
287
- });`})]}),w("div",{className:"grid gap-4 md:grid-cols-2",children:[{title:"Approvals by default",description:"Every suggestion flows through @contractspec/lib.ai-agent's ApprovalWorkflow. Tune auto-approval thresholds per environment."},{title:"Pluggable storage",description:"Use the Prisma repository in production, in-memory for tests, or stream serialized suggestions into your own queue."}].map((E)=>Q("div",{className:"card-subtle space-y-2 p-4",children:[w("h3",{className:"font-semibold text-lg",children:E.title}),w("p",{className:"text-muted-foreground text-sm",children:E.description})]},E.title))}),Q("div",{className:"flex items-center gap-4 pt-4",children:[w(Le,{href:"/docs/libraries",className:"btn-ghost",children:"Back to Libraries"}),Q(Le,{href:"/docs/libraries/observability",className:"btn-primary",children:["Next: Observability ",w(Rt,{size:16})]})]})]})}import{CodeBlock as Tt,InstallCommand as At}from"@contractspec/lib.design-system";import Re from"@contractspec/lib.ui-link";import{ChevronRight as Pt}from"lucide-react";import{jsx as u,jsxs as y}from"react/jsx-runtime";function Bt(){return y("div",{className:"space-y-8",children:[y("div",{className:"space-y-4",children:[u("h1",{className:"font-bold text-4xl",children:"GraphQL Libraries"}),u("p",{className:"text-muted-foreground",children:"This suite of libraries enables seamless GraphQL integration, transforming your ContractSpecs into a type-safe Pothos schema, connecting with Prisma, and enabling Apollo Federation."})]}),y("div",{className:"space-y-4",children:[u("h2",{className:"font-bold text-2xl",children:"Libraries"}),y("div",{className:"grid gap-4 md:grid-cols-1",children:[y("div",{className:"card-subtle p-6",children:[u("h3",{className:"font-bold text-lg",children:"@contractspec/lib.graphql-core"}),u("p",{className:"mt-2 text-muted-foreground text-sm",children:"The foundation. Provides a configured Pothos builder, common scalars (JSON, DateTime), and utilities for mapping ContractSpec I/O to Pothos types."})]}),y("div",{className:"card-subtle p-6",children:[u("h3",{className:"font-bold text-lg",children:"@contractspec/lib.graphql-prisma"}),u("p",{className:"mt-2 text-muted-foreground text-sm",children:"Connects Pothos to Prisma. Automatically generates GraphQL types from your Prisma schema and optimizes queries to prevent N+1 issues."})]}),y("div",{className:"card-subtle p-6",children:[u("h3",{className:"font-bold text-lg",children:"@contractspec/lib.graphql-federation"}),u("p",{className:"mt-2 text-muted-foreground text-sm",children:"Adds Apollo Federation V2 support. Allows your subgraph to define keys and entities, making it ready for a supergraph."})]})]})]}),y("div",{className:"space-y-4",children:[u("h2",{className:"font-bold text-2xl",children:"Installation"}),u(At,{package:["@contractspec/lib.graphql-core","@contractspec/lib.graphql-prisma","@contractspec/lib.graphql-federation"]})]}),y("div",{className:"space-y-4",children:[u("h2",{className:"font-bold text-2xl",children:"Usage: Building a Schema"}),u("p",{className:"text-muted-foreground",children:"Here's how to assemble a federated GraphQL schema from your specs:"}),u(Tt,{language:"typescript",code:`import { builder } from '@contractspec/lib.graphql-core';
407
+ });`})]}),T("div",{className:"grid gap-4 md:grid-cols-2",children:[{title:"Approvals by default",description:"Every suggestion flows through @contractspec/lib.ai-agent's ApprovalWorkflow. Tune auto-approval thresholds per environment."},{title:"Pluggable storage",description:"Use the Prisma repository in production, in-memory for tests, or stream serialized suggestions into your own queue."}].map((t)=>X("div",{className:"card-subtle space-y-2 p-4",children:[T("h3",{className:"font-semibold text-lg",children:t.title}),T("p",{className:"text-muted-foreground text-sm",children:t.description})]},t.title))}),X("div",{className:"flex items-center gap-4 pt-4",children:[T(Ze,{href:"/docs/libraries",className:"btn-ghost",children:"Back to Libraries"}),X(Ze,{href:"/docs/libraries/observability",className:"btn-primary",children:["Next: Observability ",T(ea,{size:16})]})]})]})}import{CodeBlock as aa,InstallCommand as oa}from"@contractspec/lib.design-system";import Xe from"@contractspec/lib.ui-link";import{ChevronRight as ia}from"lucide-react";import{jsx as f,jsxs as S}from"react/jsx-runtime";function ra(){return S("div",{className:"space-y-8",children:[S("div",{className:"space-y-4",children:[f("h1",{className:"font-bold text-4xl",children:"GraphQL Libraries"}),f("p",{className:"text-muted-foreground",children:"This suite of libraries enables seamless GraphQL integration, transforming your ContractSpecs into a type-safe Pothos schema, connecting with Prisma, and enabling Apollo Federation."})]}),S("div",{className:"space-y-4",children:[f("h2",{className:"font-bold text-2xl",children:"Libraries"}),S("div",{className:"grid gap-4 md:grid-cols-1",children:[S("div",{className:"card-subtle p-6",children:[f("h3",{className:"font-bold text-lg",children:"@contractspec/lib.graphql-core"}),f("p",{className:"mt-2 text-muted-foreground text-sm",children:"The foundation. Provides a configured Pothos builder, common scalars (JSON, DateTime), and utilities for mapping ContractSpec I/O to Pothos types."})]}),S("div",{className:"card-subtle p-6",children:[f("h3",{className:"font-bold text-lg",children:"@contractspec/lib.graphql-prisma"}),f("p",{className:"mt-2 text-muted-foreground text-sm",children:"Connects Pothos to Prisma. Automatically generates GraphQL types from your Prisma schema and optimizes queries to prevent N+1 issues."})]}),S("div",{className:"card-subtle p-6",children:[f("h3",{className:"font-bold text-lg",children:"@contractspec/lib.graphql-federation"}),f("p",{className:"mt-2 text-muted-foreground text-sm",children:"Adds Apollo Federation V2 support. Allows your subgraph to define keys and entities, making it ready for a supergraph."})]})]})]}),S("div",{className:"space-y-4",children:[f("h2",{className:"font-bold text-2xl",children:"Installation"}),f(oa,{package:["@contractspec/lib.graphql-core","@contractspec/lib.graphql-prisma","@contractspec/lib.graphql-federation"]})]}),S("div",{className:"space-y-4",children:[f("h2",{className:"font-bold text-2xl",children:"Usage: Building a Schema"}),f("p",{className:"text-muted-foreground",children:"Here's how to assemble a federated GraphQL schema from your specs:"}),f(aa,{language:"typescript",code:`import { builder } from '@contractspec/lib.graphql-core';
288
408
  import { registerContractsOnBuilder } from '@contractspec/lib.contracts-runtime-server-graphql/graphql-pothos';
289
409
  import { OperationSpecRegistry } from '@contractspec/lib.contracts-spec';
290
410
  import { MySpecs } from './specs';
@@ -298,7 +418,7 @@ registerContractsOnBuilder(builder, registry);
298
418
 
299
419
  // 3. Build and print schema
300
420
  const schema = builder.toSchema();
301
- console.log(printSchema(schema));`})]}),y("div",{className:"space-y-4",children:[u("h2",{className:"font-bold text-2xl",children:"Features"}),y("ul",{className:"list-inside list-disc space-y-2 text-muted-foreground",children:[y("li",{children:[u("strong",{children:"Code-First"}),": Define schema in TypeScript (Pothos), get SDL as artifact."]}),y("li",{children:[u("strong",{children:"Spec Integration"}),": `registerContractsOnBuilder` automatically converts Command/Query specs into Mutations/Queries."]}),y("li",{children:[u("strong",{children:"Federation Ready"}),": Just add `provider: 'federation'` to your config."]})]})]}),y("div",{className:"flex items-center gap-4 pt-4",children:[y(Re,{href:"/docs/libraries/data-backend",className:"btn-primary",children:["Next: Data & Backend ",u(Pt,{size:16})]}),u(Re,{href:"/docs/libraries",className:"btn-ghost",children:"Back to Libraries"})]})]})}import{CodeBlock as Ie,InstallCommand as Ot}from"@contractspec/lib.design-system";import Te from"@contractspec/lib.ui-link";import{ChevronRight as Dt}from"lucide-react";import{jsx as U,jsxs as ee}from"react/jsx-runtime";function Et(){return ee("div",{className:"space-y-8",children:[ee("div",{className:"space-y-4",children:[U("h1",{className:"font-bold text-4xl",children:"@contractspec/lib.growth"}),U("p",{className:"text-lg text-muted-foreground",children:"Launch experiments without third-party SDKs. Register variants, assign users deterministically, track exposures, and compute significance."})]}),ee("div",{className:"space-y-4",children:[U("h2",{className:"font-bold text-2xl",children:"Installation"}),U(Ot,{package:"@contractspec/lib.growth"})]}),ee("div",{className:"space-y-3",children:[U("h2",{className:"font-bold text-2xl",children:"Register + assign"}),U(Ie,{language:"typescript",code:`import { ExperimentRegistry, ExperimentRunner } from '@contractspec/lib.growth/experiments';
421
+ console.log(printSchema(schema));`})]}),S("div",{className:"space-y-4",children:[f("h2",{className:"font-bold text-2xl",children:"Features"}),S("ul",{className:"list-inside list-disc space-y-2 text-muted-foreground",children:[S("li",{children:[f("strong",{children:"Code-First"}),": Define schema in TypeScript (Pothos), get SDL as artifact."]}),S("li",{children:[f("strong",{children:"Spec Integration"}),": `registerContractsOnBuilder` automatically converts Command/Query specs into Mutations/Queries."]}),S("li",{children:[f("strong",{children:"Federation Ready"}),": Just add `provider: 'federation'` to your config."]})]})]}),S("div",{className:"flex items-center gap-4 pt-4",children:[S(Xe,{href:"/docs/libraries/data-backend",className:"btn-primary",children:["Next: Data & Backend ",f(ia,{size:16})]}),f(Xe,{href:"/docs/libraries",className:"btn-ghost",children:"Back to Libraries"})]})]})}import{CodeBlock as $e,InstallCommand as na}from"@contractspec/lib.design-system";import Ye from"@contractspec/lib.ui-link";import{ChevronRight as ca}from"lucide-react";import{jsx as Q,jsxs as ie}from"react/jsx-runtime";function sa(){return ie("div",{className:"space-y-8",children:[ie("div",{className:"space-y-4",children:[Q("h1",{className:"font-bold text-4xl",children:"@contractspec/lib.growth"}),Q("p",{className:"text-lg text-muted-foreground",children:"Launch experiments without third-party SDKs. Register variants, assign users deterministically, track exposures, and compute significance."})]}),ie("div",{className:"space-y-4",children:[Q("h2",{className:"font-bold text-2xl",children:"Installation"}),Q(na,{package:"@contractspec/lib.growth"})]}),ie("div",{className:"space-y-3",children:[Q("h2",{className:"font-bold text-2xl",children:"Register + assign"}),Q($e,{language:"typescript",code:`import { ExperimentRegistry, ExperimentRunner } from '@contractspec/lib.growth/experiments';
302
422
 
303
423
  const registry = new ExperimentRegistry().register({
304
424
  key: 'pricing.cta',
@@ -312,7 +432,7 @@ const registry = new ExperimentRegistry().register({
312
432
  });
313
433
 
314
434
  const runner = new ExperimentRunner();
315
- const assignment = runner.assign(registry.get('pricing.cta')!, 'user_123');`})]}),ee("div",{className:"space-y-3",children:[U("h2",{className:"font-bold text-2xl",children:"Track + analyze"}),U(Ie,{language:"typescript",code:`import { ExperimentTracker } from '@contractspec/lib.growth/tracker';
435
+ const assignment = runner.assign(registry.get('pricing.cta')!, 'user_123');`})]}),ie("div",{className:"space-y-3",children:[Q("h2",{className:"font-bold text-2xl",children:"Track + analyze"}),Q($e,{language:"typescript",code:`import { ExperimentTracker } from '@contractspec/lib.growth/tracker';
316
436
  import { StatsEngine } from '@contractspec/lib.growth/stats';
317
437
 
318
438
  const tracker = new ExperimentTracker(new InMemoryTrackerStore());
@@ -328,11 +448,11 @@ await tracker.recordSample({
328
448
  const stats = new StatsEngine().summarize(
329
449
  await tracker.getSamples(assignment.experimentKey, 'demo_booked'),
330
450
  'demo_booked'
331
- );`})]}),ee("div",{className:"flex items-center gap-4 pt-4",children:[U(Te,{href:"/docs/libraries",className:"btn-ghost",children:"Back to Libraries"}),ee(Te,{href:"/docs/libraries/analytics",className:"btn-primary",children:["Next: Analytics ",U(Dt,{size:16})]})]})]})}import{CodeBlock as Ae,InstallCommand as Mt}from"@contractspec/lib.design-system";import Pe from"@contractspec/lib.ui-link";import{ChevronRight as zt}from"lucide-react";import{jsx as W,jsxs as K}from"react/jsx-runtime";function Wt(){return K("div",{className:"space-y-8",children:[K("div",{className:"space-y-4",children:[W("h1",{className:"font-bold text-4xl",children:"Multi-Tenancy Library"}),K("p",{className:"text-lg text-muted-foreground",children:["The ",W("code",{children:"@contractspec/lib.multi-tenancy"})," library provides the core building blocks for secure SaaS applications."]})]}),K("div",{className:"space-y-4",children:[W("h2",{className:"font-bold text-2xl",children:"Installation"}),W(Mt,{package:"@contractspec/lib.multi-tenancy"})]}),K("div",{className:"space-y-4",children:[W("h2",{className:"font-bold text-2xl",children:"Prisma RLS Middleware"}),K("p",{className:"text-muted-foreground",children:["Automatically injects ",W("code",{children:"tenantId"})," into all queries."]}),W(Ae,{language:"typescript",code:`import { createRlsMiddleware } from '@contractspec/lib.multi-tenancy/rls';
451
+ );`})]}),ie("div",{className:"flex items-center gap-4 pt-4",children:[Q(Ye,{href:"/docs/libraries",className:"btn-ghost",children:"Back to Libraries"}),ie(Ye,{href:"/docs/libraries/analytics",className:"btn-primary",children:["Next: Analytics ",Q(ca,{size:16})]})]})]})}import{CodeBlock as xe,InstallCommand as la}from"@contractspec/lib.design-system";import je from"@contractspec/lib.ui-link";import{ChevronRight as da}from"lucide-react";import{jsx as F,jsxs as $}from"react/jsx-runtime";function pa(){return $("div",{className:"space-y-8",children:[$("div",{className:"space-y-4",children:[F("h1",{className:"font-bold text-4xl",children:"Multi-Tenancy Library"}),$("p",{className:"text-lg text-muted-foreground",children:["The ",F("code",{children:"@contractspec/lib.multi-tenancy"})," library provides the core building blocks for secure SaaS applications."]})]}),$("div",{className:"space-y-4",children:[F("h2",{className:"font-bold text-2xl",children:"Installation"}),F(la,{package:"@contractspec/lib.multi-tenancy"})]}),$("div",{className:"space-y-4",children:[F("h2",{className:"font-bold text-2xl",children:"Prisma RLS Middleware"}),$("p",{className:"text-muted-foreground",children:["Automatically injects ",F("code",{children:"tenantId"})," into all queries."]}),F(xe,{language:"typescript",code:`import { createRlsMiddleware } from '@contractspec/lib.multi-tenancy/rls';
332
452
  import { prisma } from './db';
333
453
  import { getTenantId } from './context';
334
454
 
335
- prisma.$use(createRlsMiddleware(() => getTenantId()));`})]}),K("div",{className:"space-y-4",children:[W("h2",{className:"font-bold text-2xl",children:"Provisioning Service"}),W("p",{className:"text-muted-foreground",children:"Automates the creation of new tenants, including database setup and default user creation."}),W(Ae,{language:"typescript",code:`import { TenantProvisioningService } from '@contractspec/lib.multi-tenancy/provisioning';
455
+ prisma.$use(createRlsMiddleware(() => getTenantId()));`})]}),$("div",{className:"space-y-4",children:[F("h2",{className:"font-bold text-2xl",children:"Provisioning Service"}),F("p",{className:"text-muted-foreground",children:"Automates the creation of new tenants, including database setup and default user creation."}),F(xe,{language:"typescript",code:`import { TenantProvisioningService } from '@contractspec/lib.multi-tenancy/provisioning';
336
456
 
337
457
  const service = new TenantProvisioningService({ db: prisma });
338
458
  await service.provision({
@@ -340,20 +460,20 @@ await service.provision({
340
460
  name: 'Acme Corp',
341
461
  slug: 'acme',
342
462
  ownerEmail: 'admin@acme.com'
343
- });`})]}),K("div",{className:"flex items-center gap-4 pt-4",children:[W(Pe,{href:"/docs/libraries",className:"btn-ghost",children:"Back to Libraries"}),K(Pe,{href:"/docs/libraries/progressive-delivery",className:"btn-primary",children:["Next: Progressive Delivery ",W(zt,{size:16})]})]})]})}import{CodeBlock as ie,InstallCommand as Gt}from"@contractspec/lib.design-system";import Be from"@contractspec/lib.ui-link";import{ChevronRight as Ft}from"lucide-react";import{jsx as N,jsxs as V}from"react/jsx-runtime";function _t(){return V("div",{className:"space-y-8",children:[V("div",{className:"space-y-4",children:[N("h1",{className:"font-bold text-4xl",children:"Observability Library"}),V("p",{className:"text-lg text-muted-foreground",children:["The ",N("code",{children:"@contractspec/lib.observability"})," library provides a thin wrapper around OpenTelemetry to simplify instrumentation."]})]}),V("div",{className:"space-y-4",children:[N("h2",{className:"font-bold text-2xl",children:"Installation"}),N(Gt,{package:"@contractspec/lib.observability"})]}),V("div",{className:"space-y-4",children:[N("h2",{className:"font-bold text-2xl",children:"Tracing"}),N(ie,{language:"typescript",code:`import { traceAsync, traceSync } from '@contractspec/lib.observability/tracing';
463
+ });`})]}),$("div",{className:"flex items-center gap-4 pt-4",children:[F(je,{href:"/docs/libraries",className:"btn-ghost",children:"Back to Libraries"}),$(je,{href:"/docs/libraries/progressive-delivery",className:"btn-primary",children:["Next: Progressive Delivery ",F(da,{size:16})]})]})]})}import{CodeBlock as le,InstallCommand as ma}from"@contractspec/lib.design-system";import et from"@contractspec/lib.ui-link";import{ChevronRight as ua}from"lucide-react";import{jsx as C,jsxs as K}from"react/jsx-runtime";function ga(){return K("div",{className:"space-y-8",children:[K("div",{className:"space-y-4",children:[C("h1",{className:"font-bold text-4xl",children:"Observability Library"}),K("p",{className:"text-lg text-muted-foreground",children:["The ",C("code",{children:"@contractspec/lib.observability"})," library provides a thin wrapper around OpenTelemetry to simplify instrumentation."]})]}),K("div",{className:"space-y-4",children:[C("h2",{className:"font-bold text-2xl",children:"Installation"}),C(ma,{package:"@contractspec/lib.observability"})]}),K("div",{className:"space-y-4",children:[C("h2",{className:"font-bold text-2xl",children:"Tracing"}),C(le,{language:"typescript",code:`import { traceAsync, traceSync } from '@contractspec/lib.observability/tracing';
344
464
 
345
465
  await traceAsync('process_order', async (span) => {
346
466
  span.setAttribute('order_id', order.id);
347
467
  await db.save(order);
348
- });`})]}),V("div",{className:"space-y-4",children:[N("h2",{className:"font-bold text-2xl",children:"Metrics"}),N(ie,{language:"typescript",code:`import { createCounter, createHistogram } from '@contractspec/lib.observability/metrics';
468
+ });`})]}),K("div",{className:"space-y-4",children:[C("h2",{className:"font-bold text-2xl",children:"Metrics"}),C(le,{language:"typescript",code:`import { createCounter, createHistogram } from '@contractspec/lib.observability/metrics';
349
469
 
350
470
  const ordersCounter = createCounter('orders_total');
351
471
  const latencyHistogram = createHistogram('request_duration_seconds');
352
472
 
353
473
  ordersCounter.add(1, { status: 'success' });
354
- latencyHistogram.record(0.123);`})]}),V("div",{className:"space-y-4",children:[N("h2",{className:"font-bold text-2xl",children:"Middleware"}),N("p",{className:"text-muted-foreground",children:"Automatically instrument your HTTP handlers:"}),N(ie,{language:"typescript",code:`import { createTracingMiddleware } from '@contractspec/lib.observability/tracing/middleware';
474
+ latencyHistogram.record(0.123);`})]}),K("div",{className:"space-y-4",children:[C("h2",{className:"font-bold text-2xl",children:"Middleware"}),C("p",{className:"text-muted-foreground",children:"Automatically instrument your HTTP handlers:"}),C(le,{language:"typescript",code:`import { createTracingMiddleware } from '@contractspec/lib.observability/tracing/middleware';
355
475
 
356
- app.use(createTracingMiddleware());`})]}),V("div",{className:"space-y-4",children:[N("h2",{className:"font-bold text-2xl",children:"Anomaly Detection"}),N("p",{className:"text-muted-foreground text-sm",children:"Includes baseline calculation and anomaly detection helpers for auto-rollback without writing custom math."}),N(ie,{language:"typescript",code:`import { AnomalyDetector, RootCauseAnalyzer, AlertManager } from '@contractspec/lib.observability';
476
+ app.use(createTracingMiddleware());`})]}),K("div",{className:"space-y-4",children:[C("h2",{className:"font-bold text-2xl",children:"Anomaly Detection"}),C("p",{className:"text-muted-foreground text-sm",children:"Includes baseline calculation and anomaly detection helpers for auto-rollback without writing custom math."}),C(le,{language:"typescript",code:`import { AnomalyDetector, RootCauseAnalyzer, AlertManager } from '@contractspec/lib.observability';
357
477
 
358
478
  const detector = new AnomalyDetector({ errorRateDelta: 0.4 });
359
479
  const analyzer = new RootCauseAnalyzer();
@@ -363,7 +483,7 @@ const signals = detector.evaluate(point);
363
483
  signals.forEach((signal) => {
364
484
  const analysis = analyzer.analyze(signal, recentDeployments);
365
485
  alertManager.notify(signal, analysis);
366
- });`})]}),V("div",{className:"flex items-center gap-4 pt-4",children:[N(Be,{href:"/docs/libraries",className:"btn-ghost",children:"Back to Libraries"}),V(Be,{href:"/docs/libraries/slo",className:"btn-primary",children:["Next: SLO ",N(Ft,{size:16})]})]})]})}import{CodeBlock as se,InstallCommand as Ut}from"@contractspec/lib.design-system";import Oe from"@contractspec/lib.ui-link";import{ChevronRight as Vt}from"lucide-react";import{jsx as I,jsxs as Y}from"react/jsx-runtime";function Ht(){return Y("div",{className:"space-y-8",children:[Y("div",{className:"space-y-4",children:[I("h1",{className:"font-bold text-4xl",children:"Overlay Engine"}),I("p",{className:"text-lg text-muted-foreground",children:"`@contractspec/lib.overlay-engine` keeps OverlaySpecs typed, signed, and auditable across tenants, roles, users, and devices."})]}),Y("div",{className:"space-y-4",children:[I("h2",{className:"font-bold text-2xl",children:"Installation"}),I(Ut,{package:"@contractspec/lib.overlay-engine"})]}),Y("div",{className:"space-y-4",children:[I("h2",{className:"font-bold text-2xl",children:"Define + Sign"}),I(se,{language:"typescript",code:`import { defineOverlay } from '@contractspec/lib.overlay-engine/spec';
486
+ });`})]}),K("div",{className:"flex items-center gap-4 pt-4",children:[C(et,{href:"/docs/libraries",className:"btn-ghost",children:"Back to Libraries"}),K(et,{href:"/docs/libraries/slo",className:"btn-primary",children:["Next: SLO ",C(ua,{size:16})]})]})]})}import{CodeBlock as be,InstallCommand as ha}from"@contractspec/lib.design-system";import tt from"@contractspec/lib.ui-link";import{ChevronRight as fa}from"lucide-react";import{jsx as E,jsxs as te}from"react/jsx-runtime";function ba(){return te("div",{className:"space-y-8",children:[te("div",{className:"space-y-4",children:[E("h1",{className:"font-bold text-4xl",children:"Overlay Engine"}),E("p",{className:"text-lg text-muted-foreground",children:"`@contractspec/lib.overlay-engine` keeps OverlaySpecs typed, signed, and auditable across tenants, roles, users, and devices."})]}),te("div",{className:"space-y-4",children:[E("h2",{className:"font-bold text-2xl",children:"Installation"}),E(ha,{package:"@contractspec/lib.overlay-engine"})]}),te("div",{className:"space-y-4",children:[E("h2",{className:"font-bold text-2xl",children:"Define + Sign"}),E(be,{language:"typescript",code:`import { defineOverlay } from '@contractspec/lib.overlay-engine/spec';
367
487
  import { signOverlay } from '@contractspec/lib.overlay-engine/signer';
368
488
 
369
489
  const overlay = defineOverlay({
@@ -373,7 +493,7 @@ const overlay = defineOverlay({
373
493
  modifications: [{ type: 'hideField', field: 'internalNotes' }],
374
494
  });
375
495
 
376
- const signed = await signOverlay(overlay, privateKeyPem);`})]}),Y("div",{className:"space-y-4",children:[I("h2",{className:"font-bold text-2xl",children:"Runtime"}),I("p",{className:"text-muted-foreground",children:"`OverlayRegistry` stores signed overlays with specificity scoring. `OverlayEngine` merges modifications and emits audit events."}),I(se,{language:"typescript",code:`const registry = new OverlayRegistry();
496
+ const signed = await signOverlay(overlay, privateKeyPem);`})]}),te("div",{className:"space-y-4",children:[E("h2",{className:"font-bold text-2xl",children:"Runtime"}),E("p",{className:"text-muted-foreground",children:"`OverlayRegistry` stores signed overlays with specificity scoring. `OverlayEngine` merges modifications and emits audit events."}),E(be,{language:"typescript",code:`const registry = new OverlayRegistry();
377
497
  registry.register(signed);
378
498
 
379
499
  const engine = new OverlayEngine({
@@ -385,13 +505,13 @@ const result = engine.apply({
385
505
  target: { fields },
386
506
  capability: 'billing.createOrder',
387
507
  tenantId: 'acme',
388
- });`})]}),Y("div",{className:"space-y-4",children:[I("h2",{className:"font-bold text-2xl",children:"React Hooks"}),I("p",{className:"text-muted-foreground",children:"Render overlays in React/React Native via `useOverlay`."}),I(se,{language:"typescript",code:`import { useOverlay } from '@contractspec/lib.overlay-engine/react';
508
+ });`})]}),te("div",{className:"space-y-4",children:[E("h2",{className:"font-bold text-2xl",children:"React Hooks"}),E("p",{className:"text-muted-foreground",children:"Render overlays in React/React Native via `useOverlay`."}),E(be,{language:"typescript",code:`import { useOverlay } from '@contractspec/lib.overlay-engine/react';
389
509
 
390
510
  const { target } = useOverlay(engine, {
391
511
  target: { fields },
392
512
  capability: 'billing.createOrder',
393
513
  tenantId: 'acme',
394
- });`})]}),Y("div",{className:"flex items-center gap-4 pt-4",children:[I(Oe,{href:"/docs/libraries",className:"btn-ghost",children:"Back to Libraries"}),Y(Oe,{href:"/docs/libraries/workflow-composer",className:"btn-primary",children:["Next: Workflow Composer ",I(Vt,{size:16})]})]})]})}import qt from"@contractspec/lib.ui-link";import{ChevronRight as Qt}from"lucide-react";import{jsx as P,jsxs as x}from"react/jsx-runtime";var Kt=[{title:"Contract and schema foundation",body:"Use these packages to define explicit contracts, schemas, and generated artifacts without inventing a new platform-specific language.",items:[{title:"@contractspec/lib.contracts-spec",description:"Define operations, events, policies, and generated surfaces in TypeScript.",href:"/docs/libraries/contracts"},{title:"@contractspec/lib.schema",description:"Share type-safe schema definitions across validation, clients, and runtime adapters.",href:"/docs/libraries/schema"}]},{title:"Runtime and surface libraries",body:"These packages execute the contract model across UI, data, observability, workflows, and generated runtime behavior.",items:[{title:"@contractspec/lib.runtime",description:"Run typed capability surfaces, execute policies, and connect runtime adapters.",href:"/docs/libraries/runtime"},{title:"@contractspec/lib.ui-kit",description:"Render shared surfaces across web and React Native without forking the contract layer.",href:"/docs/libraries/ui-kit"},{title:"@contractspec/lib.ui-kit-web",description:"Use the raw web primitive layer directly when you want the browser table, accessibility, and interaction model without the design-system shell.",href:"/docs/libraries/ui-kit-web"},{title:"@contractspec/lib.design-system",description:"Build higher-level product surfaces and documented marketing/docs primitives on top of the web and native UI packages.",href:"/docs/libraries/design-system"},{title:"@contractspec/lib.data-views",description:"Generate and render list/detail style surfaces that stay aligned with data contracts.",href:"/docs/libraries/data-views"}]},{title:"Operator and system packages",body:"These packages matter once the system is live and you need governance, resilience, and observability.",items:[{title:"@contractspec/lib.observability",description:"Trace, log, and measure contract execution using the same system boundaries.",href:"/docs/libraries/observability"},{title:"@contractspec/lib.resilience",description:"Add circuit breakers, retries, and failure controls without hiding the integration model.",href:"/docs/libraries/resilience"},{title:"@contractspec/lib.multi-tenancy",description:"Keep tenant-specific config, policy, and surface resolution explicit.",href:"/docs/libraries/multi-tenancy"},{title:"@contractspec/lib.workflow-composer",description:"Compose and extend workflows without smearing orchestration concerns across apps.",href:"/docs/libraries/workflow-composer"}]}];function Jt(){return x("div",{className:"space-y-10",children:[x("div",{className:"space-y-3",children:[P("p",{className:"editorial-kicker",children:"Build"}),P("h1",{className:"font-serif text-4xl tracking-[-0.04em] md:text-5xl",children:"The OSS foundation is a library system, not a closed platform."}),P("p",{className:"max-w-3xl text-lg text-muted-foreground leading-8",children:"ContractSpec is assembled from libraries that remain useful on their own and stronger together. Start with the contract and schema foundation, then add runtime, UI, integration, and operator packages as your system grows."})]}),x("div",{className:"editorial-proof-strip",children:[x("div",{className:"editorial-stat",children:[P("span",{className:"editorial-label",children:"Layering rule"}),P("span",{className:"editorial-stat-value",children:"libs \u2192 bundles \u2192 apps"})]}),P("p",{className:"max-w-2xl text-muted-foreground text-sm leading-7",children:"Keep reusable behavior in libraries, compose it into bundle-level surfaces, and reserve app packages for concrete delivery shells."})]}),P("div",{className:"space-y-6",children:Kt.map((E)=>x("section",{className:"editorial-panel space-y-5",children:[x("div",{className:"space-y-2",children:[P("h2",{className:"font-serif text-3xl tracking-[-0.03em]",children:E.title}),P("p",{className:"text-muted-foreground text-sm leading-7",children:E.body})]}),P("div",{className:"grid gap-4 md:grid-cols-2",children:E.items.map((oe)=>x(qt,{href:oe.href,className:"rounded-[24px] border border-border/75 bg-background/70 p-5 transition-colors hover:border-[color:rgb(162_79_42_/_0.45)]",children:[P("h3",{className:"font-semibold text-lg",children:oe.title}),P("p",{className:"mt-2 text-muted-foreground text-sm leading-7",children:oe.description}),x("div",{className:"mt-3 flex items-center gap-2 text-[color:var(--rust)] text-sm",children:["Learn more ",P(Qt,{size:14})]})]},oe.title))})]},E.title))})]})}import{CodeBlock as de,InstallCommand as Zt}from"@contractspec/lib.design-system";import De from"@contractspec/lib.ui-link";import{ChevronRight as Xt}from"lucide-react";import{jsx as k,jsxs as j}from"react/jsx-runtime";function $t(){return j("div",{className:"space-y-8",children:[j("div",{className:"space-y-4",children:[k("h1",{className:"font-bold text-4xl",children:"@contractspec/lib.personalization"}),k("p",{className:"text-lg text-muted-foreground",children:"Track field/feature/workflow usage, analyze drop-offs, and convert insights into OverlaySpecs or workflow tweaks."})]}),j("div",{className:"space-y-4",children:[k("h2",{className:"font-bold text-2xl",children:"Installation"}),k(Zt,{package:"@contractspec/lib.personalization"})]}),j("div",{className:"space-y-4",children:[k("h2",{className:"font-bold text-2xl",children:"Tracker"}),k("p",{className:"text-muted-foreground",children:"Buffer events per tenant/user and emit OpenTelemetry counters automatically."}),k(de,{language:"typescript",code:`import { createBehaviorTracker } from '@contractspec/lib.personalization';
514
+ });`})]}),te("div",{className:"flex items-center gap-4 pt-4",children:[E(tt,{href:"/docs/libraries",className:"btn-ghost",children:"Back to Libraries"}),te(tt,{href:"/docs/libraries/workflow-composer",className:"btn-primary",children:["Next: Workflow Composer ",E(fa,{size:16})]})]})]})}import va from"@contractspec/lib.ui-link";import{ChevronRight as ya}from"lucide-react";import{jsx as M,jsxs as ae}from"react/jsx-runtime";var Na=[{title:"Contract and schema foundation",body:"Use these packages to define explicit contracts, schemas, and generated artifacts without inventing a new platform-specific language.",items:[{title:"@contractspec/lib.contracts-spec",description:"Define operations, events, policies, and generated surfaces in TypeScript.",href:"/docs/libraries/contracts"},{title:"@contractspec/lib.schema",description:"Share type-safe schema definitions across validation, clients, and runtime adapters.",href:"/docs/libraries/schema"}]},{title:"Runtime and surface libraries",body:"These packages execute the contract model across UI, data, observability, workflows, and generated runtime behavior.",items:[{title:"@contractspec/lib.runtime",description:"Run typed capability surfaces, execute policies, and connect runtime adapters.",href:"/docs/libraries/runtime"},{title:"@contractspec/lib.ui-kit",description:"Render shared surfaces across web and React Native without forking the contract layer.",href:"/docs/libraries/ui-kit"},{title:"@contractspec/lib.ui-kit-web",description:"Use the raw web primitive layer directly when you want the browser table, accessibility, and interaction model without the design-system shell.",href:"/docs/libraries/ui-kit-web"},{title:"@contractspec/lib.design-system",description:"Build higher-level product surfaces and documented marketing/docs primitives on top of the web and native UI packages.",href:"/docs/libraries/design-system"},{title:"Cross-platform UI",description:"See how the presentation runtimes, ui-kit-web, ui-kit, and design-system stay compatible across React and React Native.",href:"/docs/libraries/cross-platform-ui"},{title:"@contractspec/lib.data-views",description:"Generate and render list/detail style surfaces that stay aligned with data contracts.",href:"/docs/libraries/data-views"}]},{title:"Operator and system packages",body:"These packages matter once the system is live and you need governance, resilience, and observability.",items:[{title:"@contractspec/lib.observability",description:"Trace, log, and measure contract execution using the same system boundaries.",href:"/docs/libraries/observability"},{title:"@contractspec/lib.resilience",description:"Add circuit breakers, retries, and failure controls without hiding the integration model.",href:"/docs/libraries/resilience"},{title:"@contractspec/lib.multi-tenancy",description:"Keep tenant-specific config, policy, and surface resolution explicit.",href:"/docs/libraries/multi-tenancy"},{title:"@contractspec/lib.workflow-composer",description:"Compose and extend workflows without smearing orchestration concerns across apps.",href:"/docs/libraries/workflow-composer"}]}];function wa(){return ae("div",{className:"space-y-10",children:[ae("div",{className:"space-y-3",children:[M("p",{className:"editorial-kicker",children:"Build"}),M("h1",{className:"font-serif text-4xl tracking-[-0.04em] md:text-5xl",children:"The OSS foundation is a library system, not a closed platform."}),M("p",{className:"max-w-3xl text-lg text-muted-foreground leading-8",children:"ContractSpec is assembled from libraries that remain useful on their own and stronger together. Start with the contract and schema foundation, then add runtime, UI, integration, and operator packages as your system grows."})]}),ae("div",{className:"editorial-proof-strip",children:[ae("div",{className:"editorial-stat",children:[M("span",{className:"editorial-label",children:"Layering rule"}),M("span",{className:"editorial-stat-value",children:"libs \u2192 bundles \u2192 apps"})]}),M("p",{className:"max-w-2xl text-muted-foreground text-sm leading-7",children:"Keep reusable behavior in libraries, compose it into bundle-level surfaces, and reserve app packages for concrete delivery shells."})]}),M("div",{className:"space-y-6",children:Na.map((t)=>ae("section",{className:"editorial-panel space-y-5",children:[ae("div",{className:"space-y-2",children:[M("h2",{className:"font-serif text-3xl tracking-[-0.03em]",children:t.title}),M("p",{className:"text-muted-foreground text-sm leading-7",children:t.body})]}),M("div",{className:"grid gap-4 md:grid-cols-2",children:t.items.map((w)=>ae(va,{href:w.href,className:"rounded-[24px] border border-border/75 bg-background/70 p-5 transition-colors hover:border-[color:rgb(162_79_42_/_0.45)]",children:[M("h3",{className:"font-semibold text-lg",children:w.title}),M("p",{className:"mt-2 text-muted-foreground text-sm leading-7",children:w.description}),ae("div",{className:"mt-3 flex items-center gap-2 text-[color:var(--rust)] text-sm",children:["Learn more ",M(ya,{size:14})]})]},w.title))})]},t.title))})]})}import{CodeBlock as ve,InstallCommand as ka}from"@contractspec/lib.design-system";import at from"@contractspec/lib.ui-link";import{ChevronRight as Sa}from"lucide-react";import{jsx as L,jsxs as oe}from"react/jsx-runtime";function Ca(){return oe("div",{className:"space-y-8",children:[oe("div",{className:"space-y-4",children:[L("h1",{className:"font-bold text-4xl",children:"@contractspec/lib.personalization"}),L("p",{className:"text-lg text-muted-foreground",children:"Track field/feature/workflow usage, analyze drop-offs, and convert insights into OverlaySpecs or workflow tweaks."})]}),oe("div",{className:"space-y-4",children:[L("h2",{className:"font-bold text-2xl",children:"Installation"}),L(ka,{package:"@contractspec/lib.personalization"})]}),oe("div",{className:"space-y-4",children:[L("h2",{className:"font-bold text-2xl",children:"Tracker"}),L("p",{className:"text-muted-foreground",children:"Buffer events per tenant/user and emit OpenTelemetry counters automatically."}),L(ve,{language:"typescript",code:`import { createBehaviorTracker } from '@contractspec/lib.personalization';
395
515
 
396
516
  const tracker = createBehaviorTracker({
397
517
  store,
@@ -399,17 +519,17 @@ const tracker = createBehaviorTracker({
399
519
  });
400
520
 
401
521
  tracker.trackFieldAccess({ operation: 'billing.createOrder', field: 'items' });
402
- tracker.trackWorkflowStep({ workflow: 'invoice', step: 'review', status: 'entered' });`})]}),j("div",{className:"space-y-4",children:[k("h2",{className:"font-bold text-2xl",children:"Analyzer"}),k("p",{className:"text-muted-foreground",children:"Summarize events and highlight unused UI, frequent fields, and workflow bottlenecks."}),k(de,{language:"typescript",code:`import { BehaviorAnalyzer } from '@contractspec/lib.personalization/analyzer';
522
+ tracker.trackWorkflowStep({ workflow: 'invoice', step: 'review', status: 'entered' });`})]}),oe("div",{className:"space-y-4",children:[L("h2",{className:"font-bold text-2xl",children:"Analyzer"}),L("p",{className:"text-muted-foreground",children:"Summarize events and highlight unused UI, frequent fields, and workflow bottlenecks."}),L(ve,{language:"typescript",code:`import { BehaviorAnalyzer } from '@contractspec/lib.personalization/analyzer';
403
523
 
404
524
  const analyzer = new BehaviorAnalyzer(store);
405
525
  const insights = await analyzer.analyze({ tenantId: 'acme', userId: 'ops-42' });
406
- // { unusedFields: ['internalNotes'], workflowBottlenecks: [...] }`})]}),j("div",{className:"space-y-4",children:[k("h2",{className:"font-bold text-2xl",children:"Adapter"}),k("p",{className:"text-muted-foreground",children:"Convert insights into overlays or workflow extension hints."}),k(de,{language:"typescript",code:`import { insightsToOverlaySuggestion } from '@contractspec/lib.personalization/adapter';
526
+ // { unusedFields: ['internalNotes'], workflowBottlenecks: [...] }`})]}),oe("div",{className:"space-y-4",children:[L("h2",{className:"font-bold text-2xl",children:"Adapter"}),L("p",{className:"text-muted-foreground",children:"Convert insights into overlays or workflow extension hints."}),L(ve,{language:"typescript",code:`import { insightsToOverlaySuggestion } from '@contractspec/lib.personalization/adapter';
407
527
 
408
528
  const overlay = insightsToOverlaySuggestion(insights, {
409
529
  overlayId: 'acme-order-form',
410
530
  tenantId: 'acme',
411
531
  capability: 'billing.createOrder',
412
- });`})]}),j("div",{className:"flex items-center gap-4 pt-4",children:[k(De,{href:"/docs/libraries",className:"btn-ghost",children:"Back to Libraries"}),j(De,{href:"/docs/libraries/overlay-engine",className:"btn-primary",children:["Next: Overlay Engine ",k(Xt,{size:16})]})]})]})}import{CodeBlock as Ee,InstallCommand as Yt}from"@contractspec/lib.design-system";import Me from"@contractspec/lib.ui-link";import{ChevronRight as xt}from"lucide-react";import{jsx as S,jsxs as G}from"react/jsx-runtime";function jt(){return G("div",{className:"space-y-8",children:[G("div",{className:"space-y-4",children:[S("h1",{className:"font-bold text-4xl",children:"Progressive Delivery Library"}),G("p",{className:"text-lg text-muted-foreground",children:["The ",S("code",{children:"@contractspec/lib.progressive-delivery"})," package helps you ship new specs with confidence: canary + blue-green strategies, metric guardrails, and rollback hooks in one place."]})]}),G("div",{className:"space-y-4",children:[S("h2",{className:"font-bold text-2xl",children:"Installation"}),S(Yt,{package:"@contractspec/lib.progressive-delivery"})]}),G("div",{className:"space-y-4",children:[S("h2",{className:"font-bold text-2xl",children:"Define a Strategy"}),S(Ee,{language:"typescript",code:`import { DeploymentCoordinator, createDefaultCanaryController, TrafficShifter, RollbackManager } from '@contractspec/lib.progressive-delivery';
532
+ });`})]}),oe("div",{className:"flex items-center gap-4 pt-4",children:[L(at,{href:"/docs/libraries",className:"btn-ghost",children:"Back to Libraries"}),oe(at,{href:"/docs/libraries/overlay-engine",className:"btn-primary",children:["Next: Overlay Engine ",L(Sa,{size:16})]})]})]})}import{CodeBlock as ot,InstallCommand as Ta}from"@contractspec/lib.design-system";import it from"@contractspec/lib.ui-link";import{ChevronRight as La}from"lucide-react";import{jsx as R,jsxs as V}from"react/jsx-runtime";function Ra(){return V("div",{className:"space-y-8",children:[V("div",{className:"space-y-4",children:[R("h1",{className:"font-bold text-4xl",children:"Progressive Delivery Library"}),V("p",{className:"text-lg text-muted-foreground",children:["The ",R("code",{children:"@contractspec/lib.progressive-delivery"})," package helps you ship new specs with confidence: canary + blue-green strategies, metric guardrails, and rollback hooks in one place."]})]}),V("div",{className:"space-y-4",children:[R("h2",{className:"font-bold text-2xl",children:"Installation"}),R(Ta,{package:"@contractspec/lib.progressive-delivery"})]}),V("div",{className:"space-y-4",children:[R("h2",{className:"font-bold text-2xl",children:"Define a Strategy"}),R(ot,{language:"typescript",code:`import { DeploymentCoordinator, createDefaultCanaryController, TrafficShifter, RollbackManager } from '@contractspec/lib.progressive-delivery';
413
533
 
414
534
  const strategy = {
415
535
  target: { name: 'billing.createInvoice', version: 7 },
@@ -419,7 +539,7 @@ const strategy = {
419
539
  latencyP99: 500,
420
540
  latencyP95: 250,
421
541
  },
422
- };`})]}),G("div",{className:"space-y-4",children:[S("h2",{className:"font-bold text-2xl",children:"Run the Coordinator"}),S(Ee,{language:"typescript",code:`const eventBus = new DeploymentEventBus();
542
+ };`})]}),V("div",{className:"space-y-4",children:[R("h2",{className:"font-bold text-2xl",children:"Run the Coordinator"}),R(ot,{language:"typescript",code:`const eventBus = new DeploymentEventBus();
423
543
  const controller = createDefaultCanaryController(strategy, fetchMetrics, eventBus);
424
544
  const coordinator = new DeploymentCoordinator({
425
545
  strategy,
@@ -430,7 +550,7 @@ const coordinator = new DeploymentCoordinator({
430
550
  eventBus,
431
551
  });
432
552
 
433
- const result = await coordinator.run();`}),G("p",{className:"text-muted-foreground text-sm",children:["The coordinator emits ",S("code",{children:"stage_started"}),","," ",S("code",{children:"stage_failed"}),", and ",S("code",{children:"rolled_back"})," events, making it easy to power dashboards or alerting workflows."]})]}),G("div",{className:"space-y-4",children:[S("h2",{className:"font-bold text-2xl",children:"Blue-Green Swap"}),G("p",{className:"text-muted-foreground text-sm",children:["Switch to ",S("code",{children:"mode: 'blue-green'"})," to warm up the new stack in parallel and cut over once smoke tests pass. The same guardrails apply before the final swap."]})]}),G("div",{className:"flex items-center gap-4 pt-4",children:[S(Me,{href:"/docs/libraries",className:"btn-ghost",children:"Back to Libraries"}),G(Me,{href:"/docs/libraries/resilience",className:"btn-primary",children:["Next: Resilience ",S(xt,{size:16})]})]})]})}import{CodeBlock as pe,InstallCommand as ea}from"@contractspec/lib.design-system";import ze from"@contractspec/lib.ui-link";import{ChevronRight as ta}from"lucide-react";import{jsx as C,jsxs as J}from"react/jsx-runtime";function aa(){return J("div",{className:"space-y-8",children:[J("div",{className:"space-y-4",children:[C("h1",{className:"font-bold text-4xl",children:"Resilience Library"}),J("p",{className:"text-lg text-muted-foreground",children:["The ",C("code",{children:"@contractspec/lib.resilience"})," library provides primitives to handle failures gracefully."]})]}),J("div",{className:"space-y-4",children:[C("h2",{className:"font-bold text-2xl",children:"Installation"}),C(ea,{package:"@contractspec/lib.resilience"})]}),J("div",{className:"space-y-4",children:[C("h2",{className:"font-bold text-2xl",children:"Circuit Breaker"}),C("p",{className:"text-muted-foreground",children:"Prevent cascading failures by stopping calls to a failing dependency."}),C(pe,{language:"typescript",code:`import { CircuitBreaker } from '@contractspec/lib.resilience/circuit-breaker';
553
+ const result = await coordinator.run();`}),V("p",{className:"text-muted-foreground text-sm",children:["The coordinator emits ",R("code",{children:"stage_started"}),","," ",R("code",{children:"stage_failed"}),", and ",R("code",{children:"rolled_back"})," events, making it easy to power dashboards or alerting workflows."]})]}),V("div",{className:"space-y-4",children:[R("h2",{className:"font-bold text-2xl",children:"Blue-Green Swap"}),V("p",{className:"text-muted-foreground text-sm",children:["Switch to ",R("code",{children:"mode: 'blue-green'"})," to warm up the new stack in parallel and cut over once smoke tests pass. The same guardrails apply before the final swap."]})]}),V("div",{className:"flex items-center gap-4 pt-4",children:[R(it,{href:"/docs/libraries",className:"btn-ghost",children:"Back to Libraries"}),V(it,{href:"/docs/libraries/resilience",className:"btn-primary",children:["Next: Resilience ",R(La,{size:16})]})]})]})}import{CodeBlock as ye,InstallCommand as Ia}from"@contractspec/lib.design-system";import rt from"@contractspec/lib.ui-link";import{ChevronRight as Aa}from"lucide-react";import{jsx as I,jsxs as Y}from"react/jsx-runtime";function Pa(){return Y("div",{className:"space-y-8",children:[Y("div",{className:"space-y-4",children:[I("h1",{className:"font-bold text-4xl",children:"Resilience Library"}),Y("p",{className:"text-lg text-muted-foreground",children:["The ",I("code",{children:"@contractspec/lib.resilience"})," library provides primitives to handle failures gracefully."]})]}),Y("div",{className:"space-y-4",children:[I("h2",{className:"font-bold text-2xl",children:"Installation"}),I(Ia,{package:"@contractspec/lib.resilience"})]}),Y("div",{className:"space-y-4",children:[I("h2",{className:"font-bold text-2xl",children:"Circuit Breaker"}),I("p",{className:"text-muted-foreground",children:"Prevent cascading failures by stopping calls to a failing dependency."}),I(ye,{language:"typescript",code:`import { CircuitBreaker } from '@contractspec/lib.resilience/circuit-breaker';
434
554
 
435
555
  const breaker = new CircuitBreaker({
436
556
  failureThreshold: 5,
@@ -439,19 +559,19 @@ const breaker = new CircuitBreaker({
439
559
 
440
560
  const result = await breaker.execute(async () => {
441
561
  return await fetch('https://api.stripe.com/v1/charges');
442
- });`})]}),J("div",{className:"space-y-4",children:[C("h2",{className:"font-bold text-2xl",children:"Retry"}),C("p",{className:"text-muted-foreground",children:"Automatically retry transient failures with exponential backoff."}),C(pe,{language:"typescript",code:`import { retry } from '@contractspec/lib.resilience/retry';
562
+ });`})]}),Y("div",{className:"space-y-4",children:[I("h2",{className:"font-bold text-2xl",children:"Retry"}),I("p",{className:"text-muted-foreground",children:"Automatically retry transient failures with exponential backoff."}),I(ye,{language:"typescript",code:`import { retry } from '@contractspec/lib.resilience/retry';
443
563
 
444
564
  const result = await retry(
445
565
  async () => fetchUser(id),
446
566
  3, // retries
447
567
  1000, // initial delay
448
568
  true // backoff
449
- );`})]}),J("div",{className:"space-y-4",children:[C("h2",{className:"font-bold text-2xl",children:"Timeout & Fallback"}),C("p",{className:"text-muted-foreground",children:"Set hard limits on execution time and provide default values on failure."}),C(pe,{language:"typescript",code:`import { timeout, fallback } from '@contractspec/lib.resilience';
569
+ );`})]}),Y("div",{className:"space-y-4",children:[I("h2",{className:"font-bold text-2xl",children:"Timeout & Fallback"}),I("p",{className:"text-muted-foreground",children:"Set hard limits on execution time and provide default values on failure."}),I(ye,{language:"typescript",code:`import { timeout, fallback } from '@contractspec/lib.resilience';
450
570
 
451
571
  const result = await fallback(
452
572
  () => timeout(slowOperation, 5000),
453
573
  defaultValue
454
- );`})]}),J("div",{className:"flex items-center gap-4 pt-4",children:[C(ze,{href:"/docs/libraries",className:"btn-ghost",children:"Back to Libraries"}),J(ze,{href:"/docs/libraries/testing",className:"btn-primary",children:["Next: Testing ",C(ta,{size:16})]})]})]})}import{CodeBlock as oa,InstallCommand as ia}from"@contractspec/lib.design-system";import We from"@contractspec/lib.ui-link";import{ChevronRight as ra}from"lucide-react";import{jsx as d,jsxs as m}from"react/jsx-runtime";function na(){return m("div",{className:"space-y-8",children:[m("div",{className:"space-y-4",children:[d("h1",{className:"font-bold text-4xl",children:"Runtime Libraries"}),d("p",{className:"text-muted-foreground",children:"The presentation runtime libraries provide the engine for rendering ContractSpec-defined UIs. They handle state management, validation, step navigation, and component rendering for Workflows and DataViews."})]}),m("div",{className:"space-y-4",children:[d("h2",{className:"font-bold text-2xl",children:"Installation"}),d(ia,{package:"@contractspec/lib.presentation-runtime-react"})]}),m("div",{className:"space-y-4",children:[d("h2",{className:"font-bold text-2xl",children:"Libraries"}),m("div",{className:"space-y-6",children:[m("div",{className:"card-subtle p-6",children:[d("h3",{className:"font-bold text-lg",children:"@contractspec/lib.presentation-runtime-core"}),m("p",{className:"mt-2 text-muted-foreground text-sm",children:[d("strong",{children:"Framework-Agnostic Core"}),". Contains the state machines, validation logic, and navigation rules for workflows. Can be used to build renderers for any platform (Vue, Svelte, CLI)."]})]}),m("div",{className:"card-subtle p-6",children:[d("h3",{className:"font-bold text-lg",children:"@contractspec/lib.presentation-runtime-react"}),m("p",{className:"mt-2 text-muted-foreground text-sm",children:[d("strong",{children:"React Bindings"}),". Hooks (`useWorkflow`) and components (`WorkflowStepper`, `WorkflowStepRenderer`) for React Web applications. Integrates with `ui-kit-web`."]})]}),m("div",{className:"card-subtle p-6",children:[d("h3",{className:"font-bold text-lg",children:"@contractspec/lib.presentation-runtime-react-native"}),m("p",{className:"mt-2 text-muted-foreground text-sm",children:[d("strong",{children:"React Native Bindings"}),". Optimized for mobile experiences. Handles native navigation integration and uses universal components from `ui-kit`."]})]})]})]}),m("div",{className:"space-y-4",children:[d("h2",{className:"font-bold text-2xl",children:"Example: React Workflow"}),d(oa,{language:"tsx",code:`import { useWorkflow, WorkflowStepRenderer } from '@contractspec/lib.presentation-runtime-react';
574
+ );`})]}),Y("div",{className:"flex items-center gap-4 pt-4",children:[I(rt,{href:"/docs/libraries",className:"btn-ghost",children:"Back to Libraries"}),Y(rt,{href:"/docs/libraries/testing",className:"btn-primary",children:["Next: Testing ",I(Aa,{size:16})]})]})]})}import{CodeBlock as Da,InstallCommand as Ea}from"@contractspec/lib.design-system";import Ne from"@contractspec/lib.ui-link";import{ChevronRight as Ba}from"lucide-react";import{jsx as d,jsxs as u}from"react/jsx-runtime";function Oa(){return u("div",{className:"space-y-8",children:[u("div",{className:"space-y-4",children:[d("h1",{className:"font-bold text-4xl",children:"Runtime Libraries"}),d("p",{className:"text-muted-foreground",children:"The presentation runtime libraries provide the engine for rendering ContractSpec-defined UIs. They handle state management, validation, step navigation, and component rendering for Workflows and DataViews."})]}),u("div",{className:"space-y-4",children:[d("h2",{className:"font-bold text-2xl",children:"Installation"}),d(Ea,{package:"@contractspec/lib.presentation-runtime-react"})]}),u("div",{className:"space-y-4",children:[d("h2",{className:"font-bold text-2xl",children:"Libraries"}),u("div",{className:"space-y-6",children:[u("div",{className:"card-subtle p-6",children:[d("h3",{className:"font-bold text-lg",children:"@contractspec/lib.presentation-runtime-core"}),u("p",{className:"mt-2 text-muted-foreground text-sm",children:[d("strong",{children:"Framework-Agnostic Core"}),". Contains the state machines, validation logic, and navigation rules for workflows. Can be used to build renderers for any platform (Vue, Svelte, CLI)."]})]}),u("div",{className:"card-subtle p-6",children:[d("h3",{className:"font-bold text-lg",children:"@contractspec/lib.presentation-runtime-react"}),u("p",{className:"mt-2 text-muted-foreground text-sm",children:[d("strong",{children:"React Bindings"}),". Hooks (`useWorkflow`) and components (`WorkflowStepper`, `WorkflowStepRenderer`) for React Web applications. Integrates with `ui-kit-web`."]})]}),u("div",{className:"card-subtle p-6",children:[d("h3",{className:"font-bold text-lg",children:"@contractspec/lib.presentation-runtime-react-native"}),u("p",{className:"mt-2 text-muted-foreground text-sm",children:[d("strong",{children:"React Native Bindings"}),". Optimized for mobile experiences. Handles native navigation integration and uses universal components from `ui-kit`."]})]})]})]}),u("div",{className:"space-y-4",children:[d("h2",{className:"font-bold text-2xl",children:"Example: React Workflow"}),d(Da,{language:"tsx",code:`import { useWorkflow, WorkflowStepRenderer } from '@contractspec/lib.presentation-runtime-react';
455
575
  import { OnboardingFlow } from './specs/onboarding';
456
576
 
457
577
  export function OnboardingPage() {
@@ -491,7 +611,7 @@ export function OnboardingPage() {
491
611
  </div>
492
612
  </div>
493
613
  );
494
- }`})]}),m("div",{className:"space-y-4",children:[d("h2",{className:"font-bold text-2xl",children:"Architecture"}),d("p",{className:"text-muted-foreground",children:'The runtime follows a "render-loop" pattern:'}),m("ol",{className:"list-inside list-decimal space-y-2 text-muted-foreground",children:[m("li",{children:[d("strong",{children:"Spec"}),": Defines the flow, fields, and validation rules."]}),m("li",{children:[d("strong",{children:"Core"}),": Tracks current step, data state, and validation errors."]}),m("li",{children:[d("strong",{children:"Renderer"}),": Maps spec fields to UI components (Input, Select, etc.)."]}),m("li",{children:[d("strong",{children:"User"}),": Interacts with components, updating core state."]}),m("li",{children:[d("strong",{children:"Policy"}),": (Optional) Re-evaluates visibility on every change."]})]})]}),m("div",{className:"flex items-center gap-4 pt-4",children:[d(We,{href:"/docs/libraries/data-backend",className:"btn-ghost",children:"Previous: Data & Backend"}),m(We,{href:"/docs/libraries",className:"btn-primary",children:["Back to Libraries ",d(ra,{size:16})]})]})]})}import{CodeBlock as Ge,InstallCommand as ca}from"@contractspec/lib.design-system";import Fe from"@contractspec/lib.ui-link";import{ChevronRight as la}from"lucide-react";import{jsx as e,jsxs as s}from"react/jsx-runtime";function sa(){return s("div",{className:"space-y-8",children:[s("div",{className:"space-y-4",children:[e("h1",{className:"font-bold text-4xl",children:"@contractspec/lib.schema"}),e("p",{className:"text-muted-foreground",children:"A small schema dictionary to describe operation I/O once and export to Zod (runtime validation), Pothos (GraphQL type refs), and JSON Schema."})]}),s("div",{className:"space-y-4",children:[e("h2",{className:"font-bold text-2xl",children:"Installation"}),e(ca,{package:"@contractspec/lib.schema"})]}),s("div",{className:"space-y-4",children:[e("h2",{className:"font-bold text-2xl",children:"Core Exports"}),s("ul",{className:"space-y-2 text-muted-foreground",children:[s("li",{children:[e("code",{className:"rounded bg-background/50 px-2 py-1",children:"SchemaModel"}),": Compose fields into typed object models"]}),s("li",{children:[e("code",{className:"rounded bg-background/50 px-2 py-1",children:"ScalarTypeEnum"}),": Common scalar types (NonEmptyString, Email, DateTime, etc.)"]}),s("li",{children:[e("code",{className:"rounded bg-background/50 px-2 py-1",children:"defineEnum"}),": Create type-safe enums"]}),s("li",{children:[e("code",{className:"rounded bg-background/50 px-2 py-1",children:"FieldType"}),": Wrap scalars with Zod/GraphQL/JSON Schema"]})]})]}),s("div",{className:"space-y-4",children:[e("h2",{className:"font-bold text-2xl",children:"Example: Basic Schema"}),e(Ge,{language:"typescript",code:`import { SchemaModel, ScalarTypeEnum } from '@contractspec/lib.schema';
614
+ }`})]}),u("div",{className:"space-y-4",children:[d("h2",{className:"font-bold text-2xl",children:"Architecture"}),d("p",{className:"text-muted-foreground",children:'The runtime follows a "render-loop" pattern:'}),u("ol",{className:"list-inside list-decimal space-y-2 text-muted-foreground",children:[u("li",{children:[d("strong",{children:"Spec"}),": Defines the flow, fields, and validation rules."]}),u("li",{children:[d("strong",{children:"Core"}),": Tracks current step, data state, and validation errors."]}),u("li",{children:[d("strong",{children:"Renderer"}),": Maps spec fields to UI components (Input, Select, etc.)."]}),u("li",{children:[d("strong",{children:"User"}),": Interacts with components, updating core state."]}),u("li",{children:[d("strong",{children:"Policy"}),": (Optional) Re-evaluates visibility on every change."]})]})]}),u("div",{className:"card-subtle space-y-3 p-6",children:[d("h2",{className:"font-bold text-2xl",children:"Related reading"}),u("p",{className:"text-muted-foreground",children:["For the full React and React Native layering story across runtime, primitives, and composed components, read"," ",d(Ne,{href:"/docs/libraries/cross-platform-ui",className:"text-[color:var(--rust)] underline underline-offset-4",children:"Cross-platform UI"}),"."]})]}),u("div",{className:"flex items-center gap-4 pt-4",children:[d(Ne,{href:"/docs/libraries/data-backend",className:"btn-ghost",children:"Previous: Data & Backend"}),u(Ne,{href:"/docs/libraries",className:"btn-primary",children:["Back to Libraries ",d(Ba,{size:16})]})]})]})}import{CodeBlock as nt,InstallCommand as Ma}from"@contractspec/lib.design-system";import ct from"@contractspec/lib.ui-link";import{ChevronRight as Wa}from"lucide-react";import{jsx as a,jsxs as g}from"react/jsx-runtime";function za(){return g("div",{className:"space-y-8",children:[g("div",{className:"space-y-4",children:[a("h1",{className:"font-bold text-4xl",children:"@contractspec/lib.schema"}),a("p",{className:"text-muted-foreground",children:"A small schema dictionary to describe operation I/O once and export to Zod (runtime validation), Pothos (GraphQL type refs), and JSON Schema."})]}),g("div",{className:"space-y-4",children:[a("h2",{className:"font-bold text-2xl",children:"Installation"}),a(Ma,{package:"@contractspec/lib.schema"})]}),g("div",{className:"space-y-4",children:[a("h2",{className:"font-bold text-2xl",children:"Core Exports"}),g("ul",{className:"space-y-2 text-muted-foreground",children:[g("li",{children:[a("code",{className:"rounded bg-background/50 px-2 py-1",children:"SchemaModel"}),": Compose fields into typed object models"]}),g("li",{children:[a("code",{className:"rounded bg-background/50 px-2 py-1",children:"ScalarTypeEnum"}),": Common scalar types (NonEmptyString, Email, DateTime, etc.)"]}),g("li",{children:[a("code",{className:"rounded bg-background/50 px-2 py-1",children:"defineEnum"}),": Create type-safe enums"]}),g("li",{children:[a("code",{className:"rounded bg-background/50 px-2 py-1",children:"FieldType"}),": Wrap scalars with Zod/GraphQL/JSON Schema"]})]})]}),g("div",{className:"space-y-4",children:[a("h2",{className:"font-bold text-2xl",children:"Example: Basic Schema"}),a(nt,{language:"typescript",code:`import { SchemaModel, ScalarTypeEnum } from '@contractspec/lib.schema';
495
615
 
496
616
  export const CreateSpotInput = new SchemaModel({
497
617
  name: 'CreateSpotInput',
@@ -509,7 +629,7 @@ const zodSchema = CreateSpotInput.getZod();
509
629
  const pothosName = CreateSpotInput.getPothosInput();
510
630
 
511
631
  // Get JSON Schema
512
- const jsonSchema = CreateSpotInput.getJsonSchema();`})]}),s("div",{className:"space-y-4",children:[e("h2",{className:"font-bold text-2xl",children:"Example: Enums"}),e(Ge,{language:"typescript",code:`import { defineEnum, SchemaModel } from '@contractspec/lib.schema';
632
+ const jsonSchema = CreateSpotInput.getJsonSchema();`})]}),g("div",{className:"space-y-4",children:[a("h2",{className:"font-bold text-2xl",children:"Example: Enums"}),a(nt,{language:"typescript",code:`import { defineEnum, SchemaModel } from '@contractspec/lib.schema';
513
633
 
514
634
  const Weekday = defineEnum('Weekday', [
515
635
  'MO', 'TU', 'WE', 'TH', 'FR', 'SA', 'SU',
@@ -524,19 +644,19 @@ const RecurrenceRule = new SchemaModel({
524
644
  },
525
645
  byWeekday: { type: Weekday, isOptional: true, isArray: true },
526
646
  },
527
- });`})]}),s("div",{className:"space-y-4",children:[e("h2",{className:"font-bold text-2xl",children:"Available Scalars"}),s("div",{className:"grid gap-4 md:grid-cols-2",children:[s("div",{className:"card-subtle p-4",children:[e("h3",{className:"mb-2 font-semibold",children:"Strings"}),s("ul",{className:"space-y-1 text-muted-foreground text-sm",children:[e("li",{children:e("code",{children:"NonEmptyString()"})}),e("li",{children:e("code",{children:"Email()"})}),e("li",{children:e("code",{children:"PhoneNumber()"})}),e("li",{children:e("code",{children:"CountryCode()"})}),e("li",{children:e("code",{children:"Locale()"})}),e("li",{children:e("code",{children:"TimeZone()"})})]})]}),s("div",{className:"card-subtle p-4",children:[e("h3",{className:"mb-2 font-semibold",children:"Numbers"}),s("ul",{className:"space-y-1 text-muted-foreground text-sm",children:[e("li",{children:e("code",{children:"PositiveNumber()"})}),e("li",{children:e("code",{children:"Latitude()"})}),e("li",{children:e("code",{children:"Longitude()"})})]})]}),s("div",{className:"card-subtle p-4",children:[e("h3",{className:"mb-2 font-semibold",children:"Dates & Times"}),s("ul",{className:"space-y-1 text-muted-foreground text-sm",children:[e("li",{children:e("code",{children:"Date()"})}),e("li",{children:e("code",{children:"DateTime()"})})]})]}),s("div",{className:"card-subtle p-4",children:[e("h3",{className:"mb-2 font-semibold",children:"Generic"}),s("ul",{className:"space-y-1 text-muted-foreground text-sm",children:[e("li",{children:e("code",{children:"String()"})}),e("li",{children:e("code",{children:"JSON()"})})]})]})]})]}),s("div",{className:"flex items-center gap-4 pt-4",children:[e(Fe,{href:"/docs/libraries/contracts",className:"btn-ghost",children:"Previous: Contracts"}),s(Fe,{href:"/docs/libraries/ui-kit",className:"btn-primary",children:["Next: UI Kit ",e(la,{size:16})]})]})]})}import{CodeBlock as _e,InstallCommand as da}from"@contractspec/lib.design-system";import Ue from"@contractspec/lib.ui-link";import{ChevronRight as pa}from"lucide-react";import{jsx as B,jsxs as H}from"react/jsx-runtime";function ma(){return H("div",{className:"space-y-8",children:[H("div",{className:"space-y-4",children:[B("h1",{className:"font-bold text-4xl",children:"SLO Library"}),H("p",{className:"text-lg text-muted-foreground",children:[B("code",{children:"@contractspec/lib.slo"})," keeps service level objectives front and center\u2014declarative definitions, rolling snapshots, burn-rate math, and automated incidents."]})]}),H("div",{className:"space-y-4",children:[B("h2",{className:"font-bold text-2xl",children:"Installation"}),B(da,{package:"@contractspec/lib.slo"})]}),H("div",{className:"space-y-4",children:[B("h2",{className:"font-bold text-2xl",children:"Define Targets"}),B(_e,{language:"typescript",code:`const definition: SLODefinition = {
647
+ });`})]}),g("div",{className:"space-y-4",children:[a("h2",{className:"font-bold text-2xl",children:"Available Scalars"}),g("div",{className:"grid gap-4 md:grid-cols-2",children:[g("div",{className:"card-subtle p-4",children:[a("h3",{className:"mb-2 font-semibold",children:"Strings"}),g("ul",{className:"space-y-1 text-muted-foreground text-sm",children:[a("li",{children:a("code",{children:"NonEmptyString()"})}),a("li",{children:a("code",{children:"Email()"})}),a("li",{children:a("code",{children:"PhoneNumber()"})}),a("li",{children:a("code",{children:"CountryCode()"})}),a("li",{children:a("code",{children:"Locale()"})}),a("li",{children:a("code",{children:"TimeZone()"})})]})]}),g("div",{className:"card-subtle p-4",children:[a("h3",{className:"mb-2 font-semibold",children:"Numbers"}),g("ul",{className:"space-y-1 text-muted-foreground text-sm",children:[a("li",{children:a("code",{children:"PositiveNumber()"})}),a("li",{children:a("code",{children:"Latitude()"})}),a("li",{children:a("code",{children:"Longitude()"})})]})]}),g("div",{className:"card-subtle p-4",children:[a("h3",{className:"mb-2 font-semibold",children:"Dates & Times"}),g("ul",{className:"space-y-1 text-muted-foreground text-sm",children:[a("li",{children:a("code",{children:"Date()"})}),a("li",{children:a("code",{children:"DateTime()"})})]})]}),g("div",{className:"card-subtle p-4",children:[a("h3",{className:"mb-2 font-semibold",children:"Generic"}),g("ul",{className:"space-y-1 text-muted-foreground text-sm",children:[a("li",{children:a("code",{children:"String()"})}),a("li",{children:a("code",{children:"JSON()"})})]})]})]})]}),g("div",{className:"flex items-center gap-4 pt-4",children:[a(ct,{href:"/docs/libraries/contracts",className:"btn-ghost",children:"Previous: Contracts"}),g(ct,{href:"/docs/libraries/ui-kit",className:"btn-primary",children:["Next: UI Kit ",a(Wa,{size:16})]})]})]})}import{CodeBlock as st,InstallCommand as Ua}from"@contractspec/lib.design-system";import lt from"@contractspec/lib.ui-link";import{ChevronRight as Ga}from"lucide-react";import{jsx as W,jsxs as J}from"react/jsx-runtime";function Fa(){return J("div",{className:"space-y-8",children:[J("div",{className:"space-y-4",children:[W("h1",{className:"font-bold text-4xl",children:"SLO Library"}),J("p",{className:"text-lg text-muted-foreground",children:[W("code",{children:"@contractspec/lib.slo"})," keeps service level objectives front and center\u2014declarative definitions, rolling snapshots, burn-rate math, and automated incidents."]})]}),J("div",{className:"space-y-4",children:[W("h2",{className:"font-bold text-2xl",children:"Installation"}),W(Ua,{package:"@contractspec/lib.slo"})]}),J("div",{className:"space-y-4",children:[W("h2",{className:"font-bold text-2xl",children:"Define Targets"}),W(st,{language:"typescript",code:`const definition: SLODefinition = {
528
648
  id: 'billing.createInvoice.availability',
529
649
  targetAvailability: 0.999,
530
650
  latencyP99TargetMs: 500,
531
651
  rollingWindowMs: 7 * 24 * 60 * 60 * 1000,
532
652
  alerts: { fastBurnThreshold: 14, slowBurnThreshold: 6 },
533
- };`})]}),H("div",{className:"space-y-4",children:[B("h2",{className:"font-bold text-2xl",children:"Monitor Burn Rate"}),B(_e,{language:"typescript",code:`const monitor = new SLOMonitor({ definition, incidentManager });
653
+ };`})]}),J("div",{className:"space-y-4",children:[W("h2",{className:"font-bold text-2xl",children:"Monitor Burn Rate"}),W(st,{language:"typescript",code:`const monitor = new SLOMonitor({ definition, incidentManager });
534
654
  const { snapshot, burnRate } = monitor.recordWindow({
535
655
  good: 12500,
536
656
  bad: 3,
537
657
  latencyP99: 420,
538
658
  latencyP95: 210,
539
- });`}),H("p",{className:"text-muted-foreground text-sm",children:["When burn rate exceeds the configured thresholds the monitor calls your",B("code",{children:"IncidentManager"}),", providing the snapshot that triggered the alert."]})]}),H("div",{className:"space-y-4",children:[B("h2",{className:"font-bold text-2xl",children:"History & Reporting"}),B("p",{className:"text-muted-foreground text-sm",children:"`SLOTracker.getHistory()` returns the latest snapshots so dashboards can show trends without hitting a warehouse. Prisma models persist everything for long-term audits."})]}),H("div",{className:"flex items-center gap-4 pt-4",children:[B(Ue,{href:"/docs/libraries",className:"btn-ghost",children:"Back to Libraries"}),H(Ue,{href:"/docs/libraries/cost-tracking",className:"btn-primary",children:["Next: Cost Tracking ",B(pa,{size:16})]})]})]})}import{CodeBlock as Ve,InstallCommand as ua}from"@contractspec/lib.design-system";import He from"@contractspec/lib.ui-link";import{ChevronRight as ga}from"lucide-react";import{jsx as L,jsxs as O}from"react/jsx-runtime";function fa(){return O("div",{className:"space-y-8",children:[O("div",{className:"space-y-4",children:[L("h1",{className:"font-bold text-4xl",children:"@contractspec/lib.support-bot"}),L("p",{className:"text-lg text-muted-foreground",children:"Build AI-first support flows using drop-in classifiers, knowledge-grounded resolvers, and tone-aware responders\u2014all wired into the agent runner."})]}),O("div",{className:"space-y-4",children:[L("h2",{className:"font-bold text-2xl",children:"Installation"}),L(ua,{package:"@contractspec/lib.support-bot"})]}),O("div",{className:"space-y-3",children:[L("h2",{className:"font-bold text-2xl",children:"Wire the primitives"}),L(Ve,{language:"typescript",code:`import { TicketClassifier, TicketResolver, AutoResponder } from '@contractspec/lib.support-bot';
659
+ });`}),J("p",{className:"text-muted-foreground text-sm",children:["When burn rate exceeds the configured thresholds the monitor calls your",W("code",{children:"IncidentManager"}),", providing the snapshot that triggered the alert."]})]}),J("div",{className:"space-y-4",children:[W("h2",{className:"font-bold text-2xl",children:"History & Reporting"}),W("p",{className:"text-muted-foreground text-sm",children:"`SLOTracker.getHistory()` returns the latest snapshots so dashboards can show trends without hitting a warehouse. Prisma models persist everything for long-term audits."})]}),J("div",{className:"flex items-center gap-4 pt-4",children:[W(lt,{href:"/docs/libraries",className:"btn-ghost",children:"Back to Libraries"}),J(lt,{href:"/docs/libraries/cost-tracking",className:"btn-primary",children:["Next: Cost Tracking ",W(Ga,{size:16})]})]})]})}import{CodeBlock as dt,InstallCommand as Va}from"@contractspec/lib.design-system";import pt from"@contractspec/lib.ui-link";import{ChevronRight as _a}from"lucide-react";import{jsx as A,jsxs as z}from"react/jsx-runtime";function Ha(){return z("div",{className:"space-y-8",children:[z("div",{className:"space-y-4",children:[A("h1",{className:"font-bold text-4xl",children:"@contractspec/lib.support-bot"}),A("p",{className:"text-lg text-muted-foreground",children:"Build AI-first support flows using drop-in classifiers, knowledge-grounded resolvers, and tone-aware responders\u2014all wired into the agent runner."})]}),z("div",{className:"space-y-4",children:[A("h2",{className:"font-bold text-2xl",children:"Installation"}),A(Va,{package:"@contractspec/lib.support-bot"})]}),z("div",{className:"space-y-3",children:[A("h2",{className:"font-bold text-2xl",children:"Wire the primitives"}),A(dt,{language:"typescript",code:`import { TicketClassifier, TicketResolver, AutoResponder } from '@contractspec/lib.support-bot';
540
660
 
541
661
  const classifier = new TicketClassifier();
542
662
  const resolver = new TicketResolver({ knowledge });
@@ -544,10 +664,10 @@ const responder = new AutoResponder();
544
664
 
545
665
  const classification = await classifier.classify(ticket);
546
666
  const resolution = await resolver.resolve(ticket);
547
- const draft = await responder.draft(ticket, resolution, classification);`})]}),O("div",{className:"space-y-3",children:[L("h2",{className:"font-bold text-2xl",children:"Expose as agent tools"}),L(Ve,{language:"typescript",code:`import { createSupportTools } from '@contractspec/lib.support-bot/bot';
667
+ const draft = await responder.draft(ticket, resolution, classification);`})]}),z("div",{className:"space-y-3",children:[A("h2",{className:"font-bold text-2xl",children:"Expose as agent tools"}),A(dt,{language:"typescript",code:`import { createSupportTools } from '@contractspec/lib.support-bot/bot';
548
668
 
549
669
  const tools = createSupportTools({ resolver, classifier, responder });
550
- // Pass these tools into your host runtime or agent adapter.`})]}),O("div",{className:"space-y-3",children:[L("h2",{className:"font-bold text-2xl",children:"Included modules"}),O("ul",{className:"list-inside list-disc space-y-2 text-muted-foreground",children:[O("li",{children:[L("strong",{children:"TicketClassifier"}),": heuristics + optional LLM validation for category/priority."]}),O("li",{children:[L("strong",{children:"TicketResolver"}),": RAG resolver that can plug into any knowledge retriever."]}),O("li",{children:[L("strong",{children:"AutoResponder"}),": generates drafts, citations, and tone-aware copy."]}),O("li",{children:[L("strong",{children:"SupportFeedbackLoop"}),": track auto-resolution rates and sentiment trends."]})]})]}),O("div",{className:"flex items-center gap-4 pt-4",children:[L(He,{href:"/docs/libraries",className:"btn-ghost",children:"Back to Libraries"}),O(He,{href:"/docs/libraries/growth",className:"btn-primary",children:["Next: Growth ",L(ga,{size:16})]})]})]})}import{CodeBlock as me,InstallCommand as ha}from"@contractspec/lib.design-system";import qe from"@contractspec/lib.ui-link";import{ChevronRight as ba}from"lucide-react";import{jsx as R,jsxs as Z}from"react/jsx-runtime";function va(){return Z("div",{className:"space-y-8",children:[Z("div",{className:"space-y-4",children:[R("h1",{className:"font-bold text-4xl",children:"@contractspec/lib.testing"}),R("p",{className:"text-lg text-muted-foreground",children:"Golden tests ensure new rollouts behave exactly like the traffic that inspired them. Record requests in production, replay them locally, and ship with confidence."})]}),Z("div",{className:"space-y-4",children:[R("h2",{className:"font-bold text-2xl",children:"Installation"}),R(ha,{package:"@contractspec/lib.testing"})]}),Z("div",{className:"space-y-3",children:[R("h2",{className:"font-bold text-2xl",children:"Record traffic"}),R(me,{language:"typescript",code:`import {
670
+ // Pass these tools into your host runtime or agent adapter.`})]}),z("div",{className:"space-y-3",children:[A("h2",{className:"font-bold text-2xl",children:"Included modules"}),z("ul",{className:"list-inside list-disc space-y-2 text-muted-foreground",children:[z("li",{children:[A("strong",{children:"TicketClassifier"}),": heuristics + optional LLM validation for category/priority."]}),z("li",{children:[A("strong",{children:"TicketResolver"}),": RAG resolver that can plug into any knowledge retriever."]}),z("li",{children:[A("strong",{children:"AutoResponder"}),": generates drafts, citations, and tone-aware copy."]}),z("li",{children:[A("strong",{children:"SupportFeedbackLoop"}),": track auto-resolution rates and sentiment trends."]})]})]}),z("div",{className:"flex items-center gap-4 pt-4",children:[A(pt,{href:"/docs/libraries",className:"btn-ghost",children:"Back to Libraries"}),z(pt,{href:"/docs/libraries/growth",className:"btn-primary",children:["Next: Growth ",A(_a,{size:16})]})]})]})}import{CodeBlock as we,InstallCommand as qa}from"@contractspec/lib.design-system";import mt from"@contractspec/lib.ui-link";import{ChevronRight as Qa}from"lucide-react";import{jsx as P,jsxs as x}from"react/jsx-runtime";function Ka(){return x("div",{className:"space-y-8",children:[x("div",{className:"space-y-4",children:[P("h1",{className:"font-bold text-4xl",children:"@contractspec/lib.testing"}),P("p",{className:"text-lg text-muted-foreground",children:"Golden tests ensure new rollouts behave exactly like the traffic that inspired them. Record requests in production, replay them locally, and ship with confidence."})]}),x("div",{className:"space-y-4",children:[P("h2",{className:"font-bold text-2xl",children:"Installation"}),P(qa,{package:"@contractspec/lib.testing"})]}),x("div",{className:"space-y-3",children:[P("h2",{className:"font-bold text-2xl",children:"Record traffic"}),P(we,{language:"typescript",code:`import {
551
671
  TrafficRecorder,
552
672
  InMemoryTrafficStore,
553
673
  } from '@contractspec/lib.testing/recorder';
@@ -567,7 +687,7 @@ await recorder.record({
567
687
  output,
568
688
  success: true,
569
689
  tenantId: ctx.organizationId ?? undefined,
570
- });`})]}),Z("div",{className:"space-y-3",children:[R("h2",{className:"font-bold text-2xl",children:"Generate suites"}),R(me,{language:"typescript",code:`import { GoldenTestGenerator } from '@contractspec/lib.testing';
690
+ });`})]}),x("div",{className:"space-y-3",children:[P("h2",{className:"font-bold text-2xl",children:"Generate suites"}),P(we,{language:"typescript",code:`import { GoldenTestGenerator } from '@contractspec/lib.testing';
571
691
 
572
692
  const generator = new GoldenTestGenerator();
573
693
  const code = generator.generate(snapshots, {
@@ -575,7 +695,7 @@ const code = generator.generate(snapshots, {
575
695
  runnerImport: './tests/run-operation',
576
696
  runnerFunction: 'runOrdersCommand',
577
697
  framework: 'vitest',
578
- });`})]}),Z("div",{className:"space-y-3",children:[R("h2",{className:"font-bold text-2xl",children:"CLI workflow"}),R(me,{language:"bash",code:"contractspec test generate \\\n --operation orders.create \\\n --output tests/orders.create.golden.test.ts \\\n --runner-import ./tests/run-operation \\\n --runner-fn runOrdersCommand \\\n --from-production \\\n --days 7 \\\n --sample-rate 0.05"})]}),R("div",{className:"grid gap-4 md:grid-cols-2",children:[{title:"Framework agnostic",description:"Vitest by default, Jest via `generateJestSuite`, or call `runGoldenTests` manually inside CI."},{title:"Sanitize & sample",description:"Scrub payloads before persistence and control sample rates per operation to stay within compliance limits."}].map((E)=>Z("div",{className:"card-subtle space-y-2 p-4",children:[R("h3",{className:"font-semibold text-lg",children:E.title}),R("p",{className:"text-muted-foreground text-sm",children:E.description})]},E.title))}),Z("div",{className:"flex items-center gap-4 pt-4",children:[R(qe,{href:"/docs/libraries",className:"btn-ghost",children:"Back to Libraries"}),Z(qe,{href:"/docs/libraries/resilience",className:"btn-primary",children:["Next: Resilience ",R(ba,{size:16})]})]})]})}import{CodeBlock as ya,InstallCommand as Na}from"@contractspec/lib.design-system";import ue from"@contractspec/lib.ui-link";import{ChevronRight as wa}from"lucide-react";import{jsx as i,jsxs as p}from"react/jsx-runtime";var ka=`import { DataTable } from '@contractspec/lib.ui-kit/ui/data-table';
698
+ });`})]}),x("div",{className:"space-y-3",children:[P("h2",{className:"font-bold text-2xl",children:"CLI workflow"}),P(we,{language:"bash",code:"contractspec test generate \\\n --operation orders.create \\\n --output tests/orders.create.golden.test.ts \\\n --runner-import ./tests/run-operation \\\n --runner-fn runOrdersCommand \\\n --from-production \\\n --days 7 \\\n --sample-rate 0.05"})]}),P("div",{className:"grid gap-4 md:grid-cols-2",children:[{title:"Framework agnostic",description:"Vitest by default, Jest via `generateJestSuite`, or call `runGoldenTests` manually inside CI."},{title:"Sanitize & sample",description:"Scrub payloads before persistence and control sample rates per operation to stay within compliance limits."}].map((t)=>x("div",{className:"card-subtle space-y-2 p-4",children:[P("h3",{className:"font-semibold text-lg",children:t.title}),P("p",{className:"text-muted-foreground text-sm",children:t.description})]},t.title))}),x("div",{className:"flex items-center gap-4 pt-4",children:[P(mt,{href:"/docs/libraries",className:"btn-ghost",children:"Back to Libraries"}),x(mt,{href:"/docs/libraries/resilience",className:"btn-primary",children:["Next: Resilience ",P(Qa,{size:16})]})]})]})}import{CodeBlock as Ja,InstallCommand as Za}from"@contractspec/lib.design-system";import de from"@contractspec/lib.ui-link";import{ChevronRight as Xa}from"lucide-react";import{jsx as i,jsxs as p}from"react/jsx-runtime";var $a=`import { DataTable } from '@contractspec/lib.ui-kit/ui/data-table';
579
699
  import { useContractTable } from '@contractspec/lib.presentation-runtime-react';
580
700
 
581
701
  import { SHOWCASE_ROWS } from '@contractspec/example.data-grid-showcase/ui/data-grid-showcase.data';
@@ -619,7 +739,7 @@ export function NativeAccountGrid() {
619
739
  footer={\`Rows \${controller.rows.length}\`}
620
740
  />
621
741
  );
622
- }`;function Sa(){return p("div",{className:"space-y-8",children:[p("div",{className:"space-y-4",children:[i("h1",{className:"font-bold text-4xl",children:"@contractspec/lib.ui-kit"}),p("p",{className:"text-muted-foreground",children:["Universal UI components for React Native and Web, built on top of",i("code",{children:"nativewind"})," and ",i("code",{children:"@rn-primitives"}),"."]})]}),p("div",{className:"space-y-4",children:[i("h2",{className:"font-bold text-2xl",children:"Installation"}),i(Na,{package:"@contractspec/lib.ui-kit"})]}),p("div",{className:"space-y-4",children:[i("h2",{className:"font-bold text-2xl",children:"Key Features"}),p("ul",{className:"list-inside list-disc space-y-2 text-muted-foreground",children:[p("li",{children:[i("strong",{children:"Universal"}),": Components render natively on iOS/Android and as standard HTML on web"]}),p("li",{children:[i("strong",{children:"Styled with NativeWind"}),": Uses Tailwind CSS classes for styling"]}),p("li",{children:[i("strong",{children:"Accessible"}),": Leverages ",i("code",{children:"@rn-primitives"})," ","(Radix UI for Native)"]}),p("li",{children:[i("strong",{children:"Atomic Design"}),": Exports atoms, molecules, and organisms"]})]})]}),p("div",{className:"space-y-4",children:[i("h2",{className:"font-bold text-2xl",children:"Data table example"}),p("p",{className:"text-muted-foreground",children:["The canonical"," ",i(ue,{href:"/docs/examples/data-grid-showcase",className:"text-[color:var(--rust)] underline underline-offset-4",children:"Data Grid Showcase"})," ","uses ",i("code",{children:"@contractspec/lib.ui-kit/ui/data-table"})," as the native-first primitive lane. It shares the same controller model as the web renderer while keeping the React Native / Expo surface explicit."]}),i(ya,{language:"tsx",code:ka})]}),p("div",{className:"space-y-4",children:[i("h2",{className:"font-bold text-2xl",children:"Core Components"}),p("div",{className:"grid gap-4 md:grid-cols-3",children:[p("div",{className:"card-subtle p-4",children:[i("h3",{className:"mb-2 font-semibold",children:"Form Controls"}),p("ul",{className:"space-y-1 text-muted-foreground text-sm",children:[i("li",{children:"Button"}),i("li",{children:"Input"}),i("li",{children:"Checkbox"}),i("li",{children:"Switch"}),i("li",{children:"Select"})]})]}),p("div",{className:"card-subtle p-4",children:[i("h3",{className:"mb-2 font-semibold",children:"Layout"}),p("ul",{className:"space-y-1 text-muted-foreground text-sm",children:[i("li",{children:"Card"}),i("li",{children:"Stack"}),i("li",{children:"Separator"}),i("li",{children:"Sheet"})]})]}),p("div",{className:"card-subtle p-4",children:[i("h3",{className:"mb-2 font-semibold",children:"Feedback"}),p("ul",{className:"space-y-1 text-muted-foreground text-sm",children:[i("li",{children:"Alert"}),i("li",{children:"Skeleton"}),i("li",{children:"Progress"}),i("li",{children:"Tooltip"})]})]})]})]}),p("div",{className:"flex items-center gap-4 pt-4",children:[i(ue,{href:"/docs/libraries/schema",className:"btn-ghost",children:"Previous: Schema"}),p(ue,{href:"/docs/libraries/ui-kit-web",className:"btn-primary",children:["Next: UI Kit Web ",i(wa,{size:16})]})]})]})}import{CodeBlock as Ca,InstallCommand as La}from"@contractspec/lib.design-system";import ge from"@contractspec/lib.ui-link";import{ChevronRight as Ra}from"lucide-react";import{jsx as D,jsxs as X}from"react/jsx-runtime";var Ia=`import { DataTable } from '@contractspec/lib.ui-kit-web/ui/data-table';
742
+ }`;function Ya(){return p("div",{className:"space-y-8",children:[p("div",{className:"space-y-4",children:[i("h1",{className:"font-bold text-4xl",children:"@contractspec/lib.ui-kit"}),p("p",{className:"text-muted-foreground",children:["Universal UI components for React Native and Web, built on top of",i("code",{children:"nativewind"})," and ",i("code",{children:"@rn-primitives"}),"."]})]}),p("div",{className:"space-y-4",children:[i("h2",{className:"font-bold text-2xl",children:"Installation"}),i(Za,{package:"@contractspec/lib.ui-kit"})]}),p("div",{className:"space-y-4",children:[i("h2",{className:"font-bold text-2xl",children:"Key Features"}),p("ul",{className:"list-inside list-disc space-y-2 text-muted-foreground",children:[p("li",{children:[i("strong",{children:"Universal"}),": Components render natively on iOS/Android and as standard HTML on web"]}),p("li",{children:[i("strong",{children:"Styled with NativeWind"}),": Uses Tailwind CSS classes for styling"]}),p("li",{children:[i("strong",{children:"Accessible"}),": Leverages ",i("code",{children:"@rn-primitives"})," ","(Radix UI for Native)"]}),p("li",{children:[i("strong",{children:"Atomic Design"}),": Exports atoms, molecules, and organisms"]})]})]}),p("div",{className:"space-y-4",children:[i("h2",{className:"font-bold text-2xl",children:"Data table example"}),p("p",{className:"text-muted-foreground",children:["The canonical"," ",i(de,{href:"/docs/examples/data-grid-showcase",className:"text-[color:var(--rust)] underline underline-offset-4",children:"Data Grid Showcase"})," ","uses ",i("code",{children:"@contractspec/lib.ui-kit/ui/data-table"})," as the native-first primitive lane. It shares the same controller model as the web renderer while keeping the React Native / Expo surface explicit."]}),i(Ja,{language:"tsx",code:$a})]}),p("div",{className:"space-y-4",children:[i("h2",{className:"font-bold text-2xl",children:"Core Components"}),p("div",{className:"grid gap-4 md:grid-cols-3",children:[p("div",{className:"card-subtle p-4",children:[i("h3",{className:"mb-2 font-semibold",children:"Form Controls"}),p("ul",{className:"space-y-1 text-muted-foreground text-sm",children:[i("li",{children:"Button"}),i("li",{children:"Input"}),i("li",{children:"Checkbox"}),i("li",{children:"Switch"}),i("li",{children:"Select"})]})]}),p("div",{className:"card-subtle p-4",children:[i("h3",{className:"mb-2 font-semibold",children:"Layout"}),p("ul",{className:"space-y-1 text-muted-foreground text-sm",children:[i("li",{children:"Card"}),i("li",{children:"Stack"}),i("li",{children:"Separator"}),i("li",{children:"Sheet"})]})]}),p("div",{className:"card-subtle p-4",children:[i("h3",{className:"mb-2 font-semibold",children:"Feedback"}),p("ul",{className:"space-y-1 text-muted-foreground text-sm",children:[i("li",{children:"Alert"}),i("li",{children:"Skeleton"}),i("li",{children:"Progress"}),i("li",{children:"Tooltip"})]})]})]})]}),p("div",{className:"card-subtle space-y-3 p-6",children:[i("h2",{className:"font-bold text-2xl",children:"Where this layer fits"}),p("p",{className:"text-muted-foreground",children:["Read"," ",i(de,{href:"/docs/libraries/cross-platform-ui",className:"text-[color:var(--rust)] underline underline-offset-4",children:"Cross-platform UI"})," ","for the full React and React Native compatibility model around this native-first primitive lane."]})]}),p("div",{className:"flex items-center gap-4 pt-4",children:[i(de,{href:"/docs/libraries/schema",className:"btn-ghost",children:"Previous: Schema"}),p(de,{href:"/docs/libraries/ui-kit-web",className:"btn-primary",children:["Next: UI Kit Web ",i(Xa,{size:16})]})]})]})}import{CodeBlock as xa,InstallCommand as ja}from"@contractspec/lib.design-system";import pe from"@contractspec/lib.ui-link";import{ChevronRight as eo}from"lucide-react";import{jsx as D,jsxs as _}from"react/jsx-runtime";var to=`import { DataTable } from '@contractspec/lib.ui-kit-web/ui/data-table';
623
743
  import { useContractTable } from '@contractspec/lib.presentation-runtime-react';
624
744
 
625
745
  import { SHOWCASE_ROWS } from '@contractspec/example.data-grid-showcase/ui/data-grid-showcase.data';
@@ -664,7 +784,7 @@ export function WebAccountGrid() {
664
784
  footer={\`Rows \${controller.totalItems}\`}
665
785
  />
666
786
  );
667
- }`;function Ta(){return X("div",{className:"space-y-8",children:[X("div",{className:"space-y-4",children:[D("h1",{className:"font-bold text-4xl",children:"@contractspec/lib.ui-kit-web"}),D("p",{className:"text-muted-foreground",children:"Web-first React and Next primitives for ContractSpec. The canonical data-table example uses this package to render the raw browser table layer directly, without the design-system shell on top."})]}),X("div",{className:"space-y-4",children:[D("h2",{className:"font-bold text-2xl",children:"Installation"}),D(La,{package:"@contractspec/lib.ui-kit-web"})]}),X("div",{className:"space-y-4",children:[D("h2",{className:"font-bold text-2xl",children:"Data table example"}),X("p",{className:"text-muted-foreground",children:["This is the raw browser lane from the canonical"," ",D(ge,{href:"/docs/examples/data-grid-showcase",className:"text-[color:var(--rust)] underline underline-offset-4",children:"Data Grid Showcase"}),". It demonstrates the primitive renderer with sorting, pagination, single selection, column visibility, column resizing, left/right pinning, row expansion, loading, and empty-state slots."]}),D(Ca,{language:"tsx",filename:"web-account-grid.tsx",code:Ia})]}),X("div",{className:"space-y-4",children:[D("h2",{className:"font-bold text-2xl",children:"What this layer owns"}),X("ul",{className:"list-inside list-disc space-y-2 text-muted-foreground",children:[D("li",{children:"The raw table renderer and browser interaction model."}),D("li",{children:"Pagination, column visibility menus, pin menus, resize handles, and empty/loading states."}),D("li",{children:"Accessibility helpers and other web-specific primitives that stay outside the native-first package."})]})]}),X("div",{className:"flex items-center gap-4 pt-4",children:[D(ge,{href:"/docs/libraries/ui-kit",className:"btn-ghost",children:"Previous: UI Kit"}),X(ge,{href:"/docs/libraries/design-system",className:"btn-primary",children:["Next: Design System ",D(Ra,{size:16})]})]})]})}import{CodeBlock as Qe,InstallCommand as Aa}from"@contractspec/lib.design-system";import Ke from"@contractspec/lib.ui-link";import{ChevronRight as Pa}from"lucide-react";import{jsx as q,jsxs as te}from"react/jsx-runtime";function Ba(){return te("div",{className:"space-y-8",children:[te("div",{className:"space-y-4",children:[q("h1",{className:"font-bold text-4xl",children:"Workflow Composer"}),q("p",{className:"text-lg text-muted-foreground",children:"`@contractspec/lib.workflow-composer` injects tenant-/role-/device-specific steps into base WorkflowSpecs and keeps transitions valid."})]}),te("div",{className:"space-y-4",children:[q("h2",{className:"font-bold text-2xl",children:"Installation"}),q(Aa,{package:"@contractspec/lib.workflow-composer"})]}),te("div",{className:"space-y-4",children:[q("h2",{className:"font-bold text-2xl",children:"Register extensions"}),q(Qe,{language:"typescript",code:`const composer = new WorkflowComposer();
787
+ }`;function ao(){return _("div",{className:"space-y-8",children:[_("div",{className:"space-y-4",children:[D("h1",{className:"font-bold text-4xl",children:"@contractspec/lib.ui-kit-web"}),D("p",{className:"text-muted-foreground",children:"Web-first React and Next primitives for ContractSpec. The canonical data-table example uses this package to render the raw browser table layer directly, without the design-system shell on top."})]}),_("div",{className:"space-y-4",children:[D("h2",{className:"font-bold text-2xl",children:"Installation"}),D(ja,{package:"@contractspec/lib.ui-kit-web"})]}),_("div",{className:"space-y-4",children:[D("h2",{className:"font-bold text-2xl",children:"Data table example"}),_("p",{className:"text-muted-foreground",children:["This is the raw browser lane from the canonical"," ",D(pe,{href:"/docs/examples/data-grid-showcase",className:"text-[color:var(--rust)] underline underline-offset-4",children:"Data Grid Showcase"}),". It demonstrates the primitive renderer with sorting, pagination, single selection, column visibility, column resizing, left/right pinning, row expansion, loading, and empty-state slots."]}),D(xa,{language:"tsx",filename:"web-account-grid.tsx",code:to})]}),_("div",{className:"space-y-4",children:[D("h2",{className:"font-bold text-2xl",children:"What this layer owns"}),_("ul",{className:"list-inside list-disc space-y-2 text-muted-foreground",children:[D("li",{children:"The raw table renderer and browser interaction model."}),D("li",{children:"Pagination, column visibility menus, pin menus, resize handles, and empty/loading states."}),D("li",{children:"Accessibility helpers and other web-specific primitives that stay outside the native-first package."})]})]}),_("div",{className:"card-subtle space-y-3 p-6",children:[D("h2",{className:"font-bold text-2xl",children:"Where this layer fits"}),_("p",{className:"text-muted-foreground",children:["Read"," ",D(pe,{href:"/docs/libraries/cross-platform-ui",className:"text-[color:var(--rust)] underline underline-offset-4",children:"Cross-platform UI"})," ","for the shared runtime story behind the web and native render lanes."]})]}),_("div",{className:"flex items-center gap-4 pt-4",children:[D(pe,{href:"/docs/libraries/ui-kit",className:"btn-ghost",children:"Previous: UI Kit"}),_(pe,{href:"/docs/libraries/design-system",className:"btn-primary",children:["Next: Design System ",D(eo,{size:16})]})]})]})}import{CodeBlock as ut,InstallCommand as oo}from"@contractspec/lib.design-system";import gt from"@contractspec/lib.ui-link";import{ChevronRight as io}from"lucide-react";import{jsx as Z,jsxs as re}from"react/jsx-runtime";function ro(){return re("div",{className:"space-y-8",children:[re("div",{className:"space-y-4",children:[Z("h1",{className:"font-bold text-4xl",children:"Workflow Composer"}),Z("p",{className:"text-lg text-muted-foreground",children:"`@contractspec/lib.workflow-composer` injects tenant-/role-/device-specific steps into base WorkflowSpecs and keeps transitions valid."})]}),re("div",{className:"space-y-4",children:[Z("h2",{className:"font-bold text-2xl",children:"Installation"}),Z(oo,{package:"@contractspec/lib.workflow-composer"})]}),re("div",{className:"space-y-4",children:[Z("h2",{className:"font-bold text-2xl",children:"Register extensions"}),Z(ut,{language:"typescript",code:`const composer = new WorkflowComposer();
668
788
 
669
789
  composer.register({
670
790
  workflow: 'billing.invoiceApproval',
@@ -681,12 +801,12 @@ composer.register({
681
801
  },
682
802
  ],
683
803
  hiddenSteps: ['internal-audit'],
684
- });`})]}),te("div",{className:"space-y-4",children:[q("h2",{className:"font-bold text-2xl",children:"Compose at runtime"}),q(Qe,{language:"typescript",code:`const tenantWorkflow = composer.compose({
804
+ });`})]}),re("div",{className:"space-y-4",children:[Z("h2",{className:"font-bold text-2xl",children:"Compose at runtime"}),Z(ut,{language:"typescript",code:`const tenantWorkflow = composer.compose({
685
805
  base: BaseInvoiceWorkflow,
686
806
  tenantId: 'acme',
687
807
  });
688
808
 
689
- workflowRunner.execute(tenantWorkflow, ctx);`})]}),te("div",{className:"flex items-center gap-4 pt-4",children:[q(Ke,{href:"/docs/libraries",className:"btn-ghost",children:"Back to Libraries"}),te(Ke,{href:"/docs/libraries/workflows",className:"btn-primary",children:["Next: Workflow Runtime ",q(Pa,{size:16})]})]})]})}import{CodeBlock as Oa,InstallCommand as Da}from"@contractspec/lib.design-system";import Je from"@contractspec/lib.ui-link";import{ChevronRight as Ea}from"lucide-react";import{jsx as r,jsxs as T}from"react/jsx-runtime";function Ma(){return T("div",{className:"space-y-8",children:[T("div",{className:"space-y-4",children:[r("h1",{className:"font-bold text-4xl",children:"Workflow Runtime Library"}),T("p",{className:"text-lg text-muted-foreground",children:["The ",r("code",{children:"@contractspec/lib.contracts-spec/workflow"})," library provides the core ",r("code",{children:"WorkflowRunner"})," for executing stateful, durable workflows."]})]}),T("div",{className:"space-y-4",children:[r("h2",{className:"font-bold text-2xl",children:"Installation"}),r(Da,{package:"@contractspec/lib.contracts-spec"})]}),T("div",{className:"space-y-4",children:[r("h2",{className:"font-bold text-2xl",children:"WorkflowRunner"}),r("p",{className:"text-muted-foreground",children:"The runner manages execution state, step transitions, retries, and compensation."}),r(Oa,{language:"typescript",code:`import { WorkflowRunner } from '@contractspec/lib.contracts-spec/workflow/runner';
809
+ workflowRunner.execute(tenantWorkflow, ctx);`})]}),re("div",{className:"flex items-center gap-4 pt-4",children:[Z(gt,{href:"/docs/libraries",className:"btn-ghost",children:"Back to Libraries"}),re(gt,{href:"/docs/libraries/workflows",className:"btn-primary",children:["Next: Workflow Runtime ",Z(io,{size:16})]})]})]})}import{CodeBlock as no,InstallCommand as co}from"@contractspec/lib.design-system";import ht from"@contractspec/lib.ui-link";import{ChevronRight as so}from"lucide-react";import{jsx as s,jsxs as B}from"react/jsx-runtime";function lo(){return B("div",{className:"space-y-8",children:[B("div",{className:"space-y-4",children:[s("h1",{className:"font-bold text-4xl",children:"Workflow Runtime Library"}),B("p",{className:"text-lg text-muted-foreground",children:["The ",s("code",{children:"@contractspec/lib.contracts-spec/workflow"})," library provides the core ",s("code",{children:"WorkflowRunner"})," for executing stateful, durable workflows."]})]}),B("div",{className:"space-y-4",children:[s("h2",{className:"font-bold text-2xl",children:"Installation"}),s(co,{package:"@contractspec/lib.contracts-spec"})]}),B("div",{className:"space-y-4",children:[s("h2",{className:"font-bold text-2xl",children:"WorkflowRunner"}),s("p",{className:"text-muted-foreground",children:"The runner manages execution state, step transitions, retries, and compensation."}),s(no,{language:"typescript",code:`import { WorkflowRunner } from '@contractspec/lib.contracts-spec/workflow/runner';
690
810
  import { InMemoryStateStore } from '@contractspec/lib.contracts-spec/workflow/adapters/memory-store';
691
811
  import { WorkflowRegistry } from '@contractspec/lib.contracts-spec/workflow/spec';
692
812
 
@@ -706,4 +826,4 @@ const runner = new WorkflowRunner({
706
826
  const workflowId = await runner.start('my.workflow', 1, { userId: '123' });
707
827
 
708
828
  // Execute next step (usually called by a worker or queue consumer)
709
- await runner.executeStep(workflowId);`})]}),T("div",{className:"space-y-4",children:[r("h2",{className:"font-bold text-2xl",children:"State Persistence"}),T("p",{className:"text-muted-foreground",children:["The runner relies on a ",r("code",{children:"StateStore"})," to persist workflow execution history. ContractSpec ships with:"]}),T("ul",{className:"list-disc space-y-2 pl-6 text-muted-foreground",children:[T("li",{children:[r("code",{children:"InMemoryStateStore"})," - for testing and development."]}),T("li",{children:[r("code",{children:"PrismaStateStore"})," - for production using Prisma ORM."]})]})]}),T("div",{className:"space-y-4",children:[r("h2",{className:"font-bold text-2xl",children:"Events"}),r("p",{className:"text-muted-foreground",children:"The runner emits events that you can subscribe to for monitoring:"}),T("ul",{className:"list-disc space-y-2 pl-6 text-muted-foreground",children:[r("li",{children:r("code",{children:"workflow.started"})}),r("li",{children:r("code",{children:"workflow.step_completed"})}),r("li",{children:r("code",{children:"workflow.step_failed"})}),r("li",{children:r("code",{children:"workflow.step_retrying"})}),r("li",{children:r("code",{children:"workflow.completed"})}),r("li",{children:r("code",{children:"workflow.cancelled"})}),r("li",{children:r("code",{children:"workflow.compensation_step_completed"})})]})]}),T("div",{className:"flex items-center gap-4 pt-4",children:[r(Je,{href:"/docs/libraries",className:"btn-ghost",children:"Back to Libraries"}),T(Je,{href:"/docs/libraries/data-views",className:"btn-primary",children:["Next: Data Views ",r(Ea,{size:16})]})]})]})}export{Ma as LibrariesWorkflowsPage,Ba as LibrariesWorkflowComposerPage,Ta as LibrariesUIKitWebPage,Sa as LibrariesUIKitPage,va as LibrariesTestingPage,fa as LibrariesSupportBotPage,sa as LibrariesSchemaPage,ma as LibrariesSLOPage,na as LibrariesRuntimePage,aa as LibrariesResiliencePage,jt as LibrariesProgressiveDeliveryPage,$t as LibrariesPersonalizationPage,Jt as LibrariesOverviewPage,Ht as LibrariesOverlayEnginePage,_t as LibrariesObservabilityPage,Wt as LibrariesMultiTenancyPage,Et as LibrariesGrowthPage,Bt as LibrariesGraphQLPage,It as LibrariesEvolutionPage,Ct as LibrariesDesignSystemPage,yt as LibrariesDataViewsPage,ht as LibrariesDataBackendPage,ut as LibrariesCostTrackingPage,dt as LibrariesContractsPage,rt as LibrariesContentGenPage,tt as LibrariesAnalyticsPage,je as LibrariesAiAgentPage,$e as LibrariesAccessibilityPage};
829
+ await runner.executeStep(workflowId);`})]}),B("div",{className:"space-y-4",children:[s("h2",{className:"font-bold text-2xl",children:"State Persistence"}),B("p",{className:"text-muted-foreground",children:["The runner relies on a ",s("code",{children:"StateStore"})," to persist workflow execution history. ContractSpec ships with:"]}),B("ul",{className:"list-disc space-y-2 pl-6 text-muted-foreground",children:[B("li",{children:[s("code",{children:"InMemoryStateStore"})," - for testing and development."]}),B("li",{children:[s("code",{children:"PrismaStateStore"})," - for production using Prisma ORM."]})]})]}),B("div",{className:"space-y-4",children:[s("h2",{className:"font-bold text-2xl",children:"Events"}),s("p",{className:"text-muted-foreground",children:"The runner emits events that you can subscribe to for monitoring:"}),B("ul",{className:"list-disc space-y-2 pl-6 text-muted-foreground",children:[s("li",{children:s("code",{children:"workflow.started"})}),s("li",{children:s("code",{children:"workflow.step_completed"})}),s("li",{children:s("code",{children:"workflow.step_failed"})}),s("li",{children:s("code",{children:"workflow.step_retrying"})}),s("li",{children:s("code",{children:"workflow.completed"})}),s("li",{children:s("code",{children:"workflow.cancelled"})}),s("li",{children:s("code",{children:"workflow.compensation_step_completed"})})]})]}),B("div",{className:"flex items-center gap-4 pt-4",children:[s(ht,{href:"/docs/libraries",className:"btn-ghost",children:"Back to Libraries"}),B(ht,{href:"/docs/libraries/data-views",className:"btn-primary",children:["Next: Data Views ",s(so,{size:16})]})]})]})}export{lo as LibrariesWorkflowsPage,ro as LibrariesWorkflowComposerPage,ao as LibrariesUIKitWebPage,Ya as LibrariesUIKitPage,Ka as LibrariesTestingPage,Ha as LibrariesSupportBotPage,za as LibrariesSchemaPage,Fa as LibrariesSLOPage,Oa as LibrariesRuntimePage,Pa as LibrariesResiliencePage,Ra as LibrariesProgressiveDeliveryPage,Ca as LibrariesPersonalizationPage,wa as LibrariesOverviewPage,ba as LibrariesOverlayEnginePage,ga as LibrariesObservabilityPage,pa as LibrariesMultiTenancyPage,sa as LibrariesGrowthPage,ra as LibrariesGraphQLPage,ta as LibrariesEvolutionPage,xt as LibrariesDesignSystemPage,Kt as LibrariesDataViewsPage,Ht as LibrariesDataBackendPage,Ft as LibrariesCrossPlatformUIPage,Ut as LibrariesCostTrackingPage,Mt as LibrariesContractsPage,Pt as LibrariesContentGenPage,Lt as LibrariesAnalyticsPage,Ct as LibrariesAiAgentPage,wt as LibrariesAccessibilityPage};