@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.
- package/.turbo/turbo-build.log +612 -608
- package/CHANGELOG.md +89 -0
- package/README.md +2 -1
- package/dist/__tests__/mocks/prisma.d.ts +5 -5
- package/dist/application/context-storage/index.js +1 -1
- package/dist/application/index.js +6 -6
- package/dist/application/mcp/cliMcp.js +2 -2
- package/dist/application/mcp/cliMcp.onboarding.js +1 -1
- package/dist/application/mcp/common.js +1 -1
- package/dist/application/mcp/contractsMcp.js +2 -2
- package/dist/application/mcp/contractsMcpAdoptionTools.js +1 -1
- package/dist/application/mcp/contractsMcpResources.js +2 -2
- package/dist/application/mcp/contractsMcpTools.js +1 -1
- package/dist/application/mcp/docsMcp.catalog.js +2 -2
- package/dist/application/mcp/docsMcp.data.js +1 -1
- package/dist/application/mcp/docsMcp.js +3 -3
- package/dist/application/mcp/docsMcp.prompts.js +3 -3
- package/dist/application/mcp/docsMcp.reference.js +2 -2
- package/dist/application/mcp/docsMcp.resources.js +2 -2
- package/dist/application/mcp/docsMcp.tools.js +2 -2
- package/dist/application/mcp/index.js +6 -6
- package/dist/application/mcp/internalMcp.js +2 -2
- package/dist/application/mcp/normalizeMcpRequest.js +1 -1
- package/dist/application/mcp/providerRankingMcp.js +1 -1
- package/dist/bundles/LibraryBundle.d.ts +19 -111
- package/dist/bundles/LibraryBundle.js +1 -1
- package/dist/bundles/index.js +1 -1
- package/dist/components/docs/DocsIndexPage.js +2 -2
- package/dist/components/docs/advanced/AdvancedMCPPage.js +3 -3
- package/dist/components/docs/advanced/AdvancedOverlayEditorPage.js +1 -1
- package/dist/components/docs/advanced/AdvancedRenderersPage.js +2 -2
- package/dist/components/docs/advanced/AdvancedSpecExperimentsPage.js +4 -4
- package/dist/components/docs/advanced/AdvancedTelemetryPage.js +2 -2
- package/dist/components/docs/advanced/AdvancedWorkflowMonitoringPage.js +2 -2
- package/dist/components/docs/advanced/index.js +9 -9
- package/dist/components/docs/architecture/ArchitectureAppConfigPage.js +6 -6
- package/dist/components/docs/architecture/ArchitectureControlPlanePage.js +3 -3
- package/dist/components/docs/architecture/ArchitectureIntegrationBindingPage.js +7 -7
- package/dist/components/docs/architecture/ArchitectureKnowledgeBindingPage.js +6 -6
- package/dist/components/docs/architecture/ArchitectureMultiTenancyPage.js +2 -2
- package/dist/components/docs/architecture/ArchitectureOverviewPage.js +1 -1
- package/dist/components/docs/architecture/index.js +20 -20
- package/dist/components/docs/comparison/ComparisonAutomationPlatformsPage.js +1 -1
- package/dist/components/docs/comparison/ComparisonEnterprisePlatformsPage.js +1 -1
- package/dist/components/docs/comparison/ComparisonInternalToolBuildersPage.js +1 -1
- package/dist/components/docs/comparison/ComparisonOverviewPage.js +1 -1
- package/dist/components/docs/comparison/ComparisonWindmillPage.js +1 -1
- package/dist/components/docs/comparison/ComparisonWorkflowEnginesPage.js +1 -1
- package/dist/components/docs/comparison/index.js +1 -1
- package/dist/components/docs/docsManifest.js +1 -1
- package/dist/components/docs/ecosystem/IntegrationsPage.js +2 -2
- package/dist/components/docs/ecosystem/PluginsPage.js +4 -4
- package/dist/components/docs/ecosystem/RegistryPage.js +4 -4
- package/dist/components/docs/ecosystem/TemplatesPage.js +3 -3
- package/dist/components/docs/ecosystem/index.js +11 -11
- package/dist/components/docs/examples/DocsExamplesPage.js +1 -1
- package/dist/components/docs/examples/ExampleShowcasePage.js +2 -2
- package/dist/components/docs/examples/exampleShowcaseData.js +2 -2
- package/dist/components/docs/examples/index.js +2 -2
- package/dist/components/docs/generated/docs-index.generated.js +1 -1
- package/dist/components/docs/generated/index.d.ts +7 -1
- package/dist/components/docs/generated/index.js +1 -1
- package/dist/components/docs/generated/loader.js +1 -1
- package/dist/components/docs/getting-started/CLIPage.js +4 -4
- package/dist/components/docs/getting-started/CompatibilityPage.js +1 -1
- package/dist/components/docs/getting-started/DataViewTutorialPage.js +4 -4
- package/dist/components/docs/getting-started/DeveloperToolsPage.js +1 -1
- package/dist/components/docs/getting-started/HelloWorldPage.js +5 -5
- package/dist/components/docs/getting-started/InstallationPage.js +3 -3
- package/dist/components/docs/getting-started/StartHerePage.js +3 -3
- package/dist/components/docs/getting-started/TroubleshootingPage.js +2 -2
- package/dist/components/docs/getting-started/VSCodeExtensionPage.js +1 -1
- package/dist/components/docs/getting-started/getting-started.docblocks.js +2 -2
- package/dist/components/docs/getting-started/index.js +17 -17
- package/dist/components/docs/guides/GuideCIDiffGatingPage.js +2 -2
- package/dist/components/docs/guides/GuideConnectInRepoPage.js +6 -6
- package/dist/components/docs/guides/GuideContractTypesPage.js +6 -6
- package/dist/components/docs/guides/GuideDocsPipelinePage.js +3 -3
- package/dist/components/docs/guides/GuideFirstModuleBundlePage.js +4 -4
- package/dist/components/docs/guides/GuideGenerateDocsClientsSchemasPage.js +2 -2
- package/dist/components/docs/guides/GuideHostBuilderWorkbenchPage.js +7 -7
- package/dist/components/docs/guides/GuideImportExistingCodebasesPage.js +8 -8
- package/dist/components/docs/guides/GuideNextjsOneEndpointPage.js +6 -6
- package/dist/components/docs/guides/GuideReleaseCapsulesPage.js +3 -3
- package/dist/components/docs/guides/GuideSpecValidationTypingPage.js +4 -4
- package/dist/components/docs/guides/GuidesIndexPage.js +2 -2
- package/dist/components/docs/guides/index.js +43 -43
- package/dist/components/docs/index.js +375 -255
- package/dist/components/docs/integrations/IntegrationsCircuitBreakersPage.js +2 -2
- package/dist/components/docs/integrations/IntegrationsElevenLabsPage.js +3 -3
- package/dist/components/docs/integrations/IntegrationsGithubPage.js +2 -2
- package/dist/components/docs/integrations/IntegrationsGmailPage.js +3 -3
- package/dist/components/docs/integrations/IntegrationsGoogleCalendarPage.js +3 -3
- package/dist/components/docs/integrations/IntegrationsHealthRoutingPage.js +2 -2
- package/dist/components/docs/integrations/IntegrationsMistralPage.js +2 -2
- package/dist/components/docs/integrations/IntegrationsOpenAIPage.js +2 -2
- package/dist/components/docs/integrations/IntegrationsOverviewPage.js +1 -1
- package/dist/components/docs/integrations/IntegrationsPostmarkPage.js +2 -2
- package/dist/components/docs/integrations/IntegrationsPowensPage.js +2 -2
- package/dist/components/docs/integrations/IntegrationsQdrantPage.js +5 -5
- package/dist/components/docs/integrations/IntegrationsResendPage.js +3 -3
- package/dist/components/docs/integrations/IntegrationsS3Page.js +4 -4
- package/dist/components/docs/integrations/IntegrationsSlackPage.js +2 -2
- package/dist/components/docs/integrations/IntegrationsSpecModelPage.js +2 -2
- package/dist/components/docs/integrations/IntegrationsStripePage.js +2 -2
- package/dist/components/docs/integrations/IntegrationsTwilioPage.js +3 -3
- package/dist/components/docs/integrations/IntegrationsWhatsappMetaPage.js +2 -2
- package/dist/components/docs/integrations/IntegrationsWhatsappTwilioPage.js +2 -2
- package/dist/components/docs/integrations/index.js +39 -39
- package/dist/components/docs/intent/ContractFirstApiPage.js +2 -2
- package/dist/components/docs/intent/DeterministicCodegenPage.js +2 -2
- package/dist/components/docs/intent/GenerateClientFromSchemaPage.js +7 -7
- package/dist/components/docs/intent/OpenapiAlternativePage.js +3 -3
- package/dist/components/docs/intent/SchemaValidationTypescriptPage.js +4 -4
- package/dist/components/docs/intent/SpecDrivenDevelopmentPage.js +2 -2
- package/dist/components/docs/intent/index.js +15 -15
- package/dist/components/docs/intent/intent-pages.docblocks.js +1 -1
- package/dist/components/docs/knowledge/KnowledgeCategoriesPage.js +2 -2
- package/dist/components/docs/knowledge/KnowledgeExamplesPage.js +2 -2
- package/dist/components/docs/knowledge/KnowledgeOverviewPage.js +1 -1
- package/dist/components/docs/knowledge/KnowledgeSourcesPage.js +2 -2
- package/dist/components/docs/knowledge/KnowledgeSpacesPage.js +2 -2
- package/dist/components/docs/knowledge/index.js +5 -5
- package/dist/components/docs/libraries/LibrariesAccessibilityPage.js +3 -3
- package/dist/components/docs/libraries/LibrariesAiAgentPage.js +3 -3
- package/dist/components/docs/libraries/LibrariesAnalyticsPage.js +4 -4
- package/dist/components/docs/libraries/LibrariesContentGenPage.js +2 -2
- package/dist/components/docs/libraries/LibrariesContractsPage.js +2 -2
- package/dist/components/docs/libraries/LibrariesCostTrackingPage.js +3 -3
- package/dist/components/docs/libraries/LibrariesCrossPlatformUIPage.content.d.ts +67 -0
- package/dist/components/docs/libraries/LibrariesCrossPlatformUIPage.content.js +86 -0
- package/dist/components/docs/libraries/LibrariesCrossPlatformUIPage.d.ts +1 -0
- package/dist/components/docs/libraries/LibrariesCrossPlatformUIPage.js +86 -0
- package/dist/components/docs/libraries/LibrariesDataBackendPage.js +2 -2
- package/dist/components/docs/libraries/LibrariesDataViewsPage.js +3 -3
- package/dist/components/docs/libraries/LibrariesDesignSystemPage.js +38 -2
- package/dist/components/docs/libraries/LibrariesEvolutionPage.js +4 -4
- package/dist/components/docs/libraries/LibrariesGraphQLPage.js +2 -2
- package/dist/components/docs/libraries/LibrariesGrowthPage.js +3 -3
- package/dist/components/docs/libraries/LibrariesMultiTenancyPage.js +3 -3
- package/dist/components/docs/libraries/LibrariesObservabilityPage.js +5 -5
- package/dist/components/docs/libraries/LibrariesOverlayEnginePage.js +4 -4
- package/dist/components/docs/libraries/LibrariesOverviewPage.js +1 -1
- package/dist/components/docs/libraries/LibrariesPersonalizationPage.js +4 -4
- package/dist/components/docs/libraries/LibrariesProgressiveDeliveryPage.js +3 -3
- package/dist/components/docs/libraries/LibrariesResiliencePage.js +4 -4
- package/dist/components/docs/libraries/LibrariesRuntimePage.js +2 -2
- package/dist/components/docs/libraries/LibrariesSLOPage.js +3 -3
- package/dist/components/docs/libraries/LibrariesSchemaPage.js +3 -3
- package/dist/components/docs/libraries/LibrariesSupportBotPage.js +3 -3
- package/dist/components/docs/libraries/LibrariesTestingPage.js +3 -3
- package/dist/components/docs/libraries/LibrariesUIKitPage.js +2 -2
- package/dist/components/docs/libraries/LibrariesUIKitWebPage.js +2 -2
- package/dist/components/docs/libraries/LibrariesWorkflowComposerPage.js +3 -3
- package/dist/components/docs/libraries/LibrariesWorkflowsPage.js +2 -2
- package/dist/components/docs/libraries/index.d.ts +1 -0
- package/dist/components/docs/libraries/index.js +173 -53
- package/dist/components/docs/manifesto/ManifestoPage.js +1 -1
- package/dist/components/docs/ops/AutoEvolutionOpsPage.js +2 -2
- package/dist/components/docs/ops/DistributedTracingOpsPage.js +2 -2
- package/dist/components/docs/ops/index.js +3 -3
- package/dist/components/docs/ops/ops-lifecycle.docblocks.js +2 -2
- package/dist/components/docs/ops/ops-runbooks-a.docblocks.js +2 -2
- package/dist/components/docs/ops/ops-runbooks-b.docblocks.js +2 -2
- package/dist/components/docs/ops/ops-slo-tenant.docblocks.js +2 -2
- package/dist/components/docs/ops/ops-top.docs.js +2 -2
- package/dist/components/docs/ops/ops.docs.js +6 -6
- package/dist/components/docs/product/product.docblocks.js +2 -2
- package/dist/components/docs/reference/DocsMarkdownContent.js +2 -2
- package/dist/components/docs/reference/DocsReferenceContent.js +3 -3
- package/dist/components/docs/reference/DocsReferenceIndexClient.js +2 -2
- package/dist/components/docs/reference/DocsReferenceIndexPage.js +2 -2
- package/dist/components/docs/reference/DocsReferencePage.js +3 -3
- package/dist/components/docs/reference/docsMarkdownParser.js +2 -2
- package/dist/components/docs/reference/index.js +4 -4
- package/dist/components/docs/safety/SafetyAuditingPage.js +2 -2
- package/dist/components/docs/safety/SafetyMigrationsPage.js +2 -2
- package/dist/components/docs/safety/SafetyOverviewPage.js +1 -1
- package/dist/components/docs/safety/SafetyPDPPage.js +2 -2
- package/dist/components/docs/safety/SafetySecurityTrustPage.js +1 -1
- package/dist/components/docs/safety/SafetySigningPage.js +3 -3
- package/dist/components/docs/safety/SafetyTenantIsolationPage.js +2 -2
- package/dist/components/docs/safety/index.js +7 -7
- package/dist/components/docs/shared/StudioPrompt.js +1 -1
- package/dist/components/docs/specs/SpecsBuilderControlPlanePage.js +4 -4
- package/dist/components/docs/specs/SpecsCapabilitiesPage.js +2 -2
- package/dist/components/docs/specs/SpecsConnectPage.js +2 -2
- package/dist/components/docs/specs/SpecsDataViewsPage.js +2 -2
- package/dist/components/docs/specs/SpecsModuleBundlesPage.js +3 -3
- package/dist/components/docs/specs/SpecsOverlaysPage.js +2 -2
- package/dist/components/docs/specs/SpecsOverviewPage.js +1 -1
- package/dist/components/docs/specs/SpecsPolicyPage.js +3 -3
- package/dist/components/docs/specs/SpecsWorkflowsPage.js +2 -2
- package/dist/components/docs/specs/index.js +13 -13
- package/dist/components/docs/studio/StudioBYOKPage.js +1 -1
- package/dist/components/docs/studio/StudioDeploymentsPage.js +1 -1
- package/dist/components/docs/studio/StudioGettingStartedPage.js +1 -1
- package/dist/components/docs/studio/StudioIntegrationsPage.js +1 -1
- package/dist/components/docs/studio/StudioOverviewPage.js +1 -1
- package/dist/components/docs/studio/StudioVisualBuilderPage.js +1 -1
- package/dist/components/docs/studio/index.js +1 -1
- package/dist/components/docs/tech/contracts/tech-docs.docblocks.js +2 -2
- package/dist/components/integrations/index.js +2 -2
- package/dist/components/integrations/molecules/IntegrationCard.js +1 -1
- package/dist/components/integrations/organisms/IntegrationMarketplace.js +1 -1
- package/dist/components/integrations/organisms/IntegrationSettings.js +2 -2
- package/dist/components/integrations/organisms/KnowledgeSourceList.js +1 -1
- package/dist/components/legal/PrivacyTemplate.js +1 -1
- package/dist/components/legal/TermsTemplate.js +1 -1
- package/dist/components/legal/index.js +1 -1
- package/dist/components/shared/FeatureGateNotice.js +1 -1
- package/dist/components/shared/index.js +1 -1
- package/dist/components/shell/WorkspaceHeader.js +1 -1
- package/dist/components/shell/WorkspaceProjectShellLayout.js +1 -1
- package/dist/components/shell/WorkspaceShellRenderer.js +1 -1
- package/dist/components/shell/WorkspaceSidebar.js +1 -1
- package/dist/components/shell/index.js +1 -1
- package/dist/components/templates/engine/index.js +1 -1
- package/dist/components/templates/index.js +11 -11
- package/dist/components/templates/messaging/ConversationList.js +2 -2
- package/dist/components/templates/messaging/MessageComposer.js +4 -4
- package/dist/components/templates/messaging/MessageThread.js +3 -3
- package/dist/components/templates/messaging/MessagingWorkspace.js +5 -5
- package/dist/components/templates/messaging/index.js +5 -5
- package/dist/components/templates/recipes/LanguageSwitcher.js +1 -1
- package/dist/components/templates/recipes/RecipeCard.js +1 -1
- package/dist/components/templates/recipes/RecipeDetail.js +1 -1
- package/dist/components/templates/recipes/RecipeList.js +3 -3
- package/dist/components/templates/recipes/index.js +3 -3
- package/dist/components/templates/todos/FilterBar.js +1 -1
- package/dist/components/templates/todos/TaskForm.js +2 -2
- package/dist/components/templates/todos/TaskItem.js +1 -1
- package/dist/components/templates/todos/TaskList.js +5 -5
- package/dist/components/templates/todos/index.js +5 -5
- package/dist/config/contractspec-blueprint.js +1 -1
- package/dist/config/contractspec-branding.js +1 -1
- package/dist/config/contractspec-routes.js +1 -1
- package/dist/config/index.js +1 -1
- package/dist/features/contracts-registry.js +1 -1
- package/dist/features/docs/docs.contracts.js +1 -1
- package/dist/features/docs/index.js +1 -1
- package/dist/features/docs.feature.js +1 -1
- package/dist/features/index.js +1 -1
- package/dist/features/mcp.feature.js +1 -1
- package/dist/features/presentations.feature.js +1 -1
- package/dist/features/registry.js +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.js +382 -262
- package/dist/infrastructure/elysia/index.js +1 -1
- package/dist/infrastructure/elysia/logger.js +1 -1
- package/dist/infrastructure/index.js +1 -1
- package/dist/libs/email/client.js +1 -1
- package/dist/libs/email/contact.js +3 -3
- package/dist/libs/email/newsletter.js +3 -3
- package/dist/libs/email/utils.js +2 -2
- package/dist/libs/email/waitlist-application.js +3 -3
- package/dist/libs/email/waitlist.js +3 -3
- package/dist/libs/email.js +6 -6
- package/dist/libs/posthog/client.js +1 -1
- package/dist/libs/posthog/native.js +1 -1
- package/dist/libs/posthog/server.js +1 -1
- package/dist/libs/pricing-examples.js +1 -1
- package/dist/node/application/context-storage/index.js +1 -1
- package/dist/node/application/index.js +6 -6
- package/dist/node/application/mcp/cliMcp.js +2 -2
- package/dist/node/application/mcp/cliMcp.onboarding.js +1 -1
- package/dist/node/application/mcp/common.js +1 -1
- package/dist/node/application/mcp/contractsMcp.js +2 -2
- package/dist/node/application/mcp/contractsMcpAdoptionTools.js +1 -1
- package/dist/node/application/mcp/contractsMcpResources.js +2 -2
- package/dist/node/application/mcp/contractsMcpTools.js +1 -1
- package/dist/node/application/mcp/docsMcp.catalog.js +2 -2
- package/dist/node/application/mcp/docsMcp.data.js +1 -1
- package/dist/node/application/mcp/docsMcp.js +3 -3
- package/dist/node/application/mcp/docsMcp.prompts.js +3 -3
- package/dist/node/application/mcp/docsMcp.reference.js +2 -2
- package/dist/node/application/mcp/docsMcp.resources.js +2 -2
- package/dist/node/application/mcp/docsMcp.tools.js +2 -2
- package/dist/node/application/mcp/index.js +6 -6
- package/dist/node/application/mcp/internalMcp.js +2 -2
- package/dist/node/application/mcp/normalizeMcpRequest.js +1 -1
- package/dist/node/application/mcp/providerRankingMcp.js +1 -1
- package/dist/node/bundles/LibraryBundle.js +1 -1
- package/dist/node/bundles/index.js +1 -1
- package/dist/node/components/docs/DocsIndexPage.js +2 -2
- package/dist/node/components/docs/advanced/AdvancedMCPPage.js +3 -3
- package/dist/node/components/docs/advanced/AdvancedOverlayEditorPage.js +1 -1
- package/dist/node/components/docs/advanced/AdvancedRenderersPage.js +2 -2
- package/dist/node/components/docs/advanced/AdvancedSpecExperimentsPage.js +4 -4
- package/dist/node/components/docs/advanced/AdvancedTelemetryPage.js +2 -2
- package/dist/node/components/docs/advanced/AdvancedWorkflowMonitoringPage.js +2 -2
- package/dist/node/components/docs/advanced/index.js +9 -9
- package/dist/node/components/docs/architecture/ArchitectureAppConfigPage.js +6 -6
- package/dist/node/components/docs/architecture/ArchitectureControlPlanePage.js +3 -3
- package/dist/node/components/docs/architecture/ArchitectureIntegrationBindingPage.js +7 -7
- package/dist/node/components/docs/architecture/ArchitectureKnowledgeBindingPage.js +6 -6
- package/dist/node/components/docs/architecture/ArchitectureMultiTenancyPage.js +2 -2
- package/dist/node/components/docs/architecture/ArchitectureOverviewPage.js +1 -1
- package/dist/node/components/docs/architecture/index.js +20 -20
- package/dist/node/components/docs/comparison/ComparisonAutomationPlatformsPage.js +1 -1
- package/dist/node/components/docs/comparison/ComparisonEnterprisePlatformsPage.js +1 -1
- package/dist/node/components/docs/comparison/ComparisonInternalToolBuildersPage.js +1 -1
- package/dist/node/components/docs/comparison/ComparisonOverviewPage.js +1 -1
- package/dist/node/components/docs/comparison/ComparisonWindmillPage.js +1 -1
- package/dist/node/components/docs/comparison/ComparisonWorkflowEnginesPage.js +1 -1
- package/dist/node/components/docs/comparison/index.js +1 -1
- package/dist/node/components/docs/docsManifest.js +1 -1
- package/dist/node/components/docs/ecosystem/IntegrationsPage.js +2 -2
- package/dist/node/components/docs/ecosystem/PluginsPage.js +4 -4
- package/dist/node/components/docs/ecosystem/RegistryPage.js +4 -4
- package/dist/node/components/docs/ecosystem/TemplatesPage.js +3 -3
- package/dist/node/components/docs/ecosystem/index.js +11 -11
- package/dist/node/components/docs/examples/DocsExamplesPage.js +1 -1
- package/dist/node/components/docs/examples/ExampleShowcasePage.js +2 -2
- package/dist/node/components/docs/examples/exampleShowcaseData.js +2 -2
- package/dist/node/components/docs/examples/index.js +2 -2
- package/dist/node/components/docs/generated/docs-index.generated.js +1 -1
- package/dist/node/components/docs/generated/index.js +1 -1
- package/dist/node/components/docs/generated/loader.js +1 -1
- package/dist/node/components/docs/getting-started/CLIPage.js +4 -4
- package/dist/node/components/docs/getting-started/CompatibilityPage.js +1 -1
- package/dist/node/components/docs/getting-started/DataViewTutorialPage.js +4 -4
- package/dist/node/components/docs/getting-started/DeveloperToolsPage.js +1 -1
- package/dist/node/components/docs/getting-started/HelloWorldPage.js +5 -5
- package/dist/node/components/docs/getting-started/InstallationPage.js +3 -3
- package/dist/node/components/docs/getting-started/StartHerePage.js +3 -3
- package/dist/node/components/docs/getting-started/TroubleshootingPage.js +2 -2
- package/dist/node/components/docs/getting-started/VSCodeExtensionPage.js +1 -1
- package/dist/node/components/docs/getting-started/getting-started.docblocks.js +2 -2
- package/dist/node/components/docs/getting-started/index.js +17 -17
- package/dist/node/components/docs/guides/GuideCIDiffGatingPage.js +2 -2
- package/dist/node/components/docs/guides/GuideConnectInRepoPage.js +6 -6
- package/dist/node/components/docs/guides/GuideContractTypesPage.js +6 -6
- package/dist/node/components/docs/guides/GuideDocsPipelinePage.js +3 -3
- package/dist/node/components/docs/guides/GuideFirstModuleBundlePage.js +4 -4
- package/dist/node/components/docs/guides/GuideGenerateDocsClientsSchemasPage.js +2 -2
- package/dist/node/components/docs/guides/GuideHostBuilderWorkbenchPage.js +7 -7
- package/dist/node/components/docs/guides/GuideImportExistingCodebasesPage.js +8 -8
- package/dist/node/components/docs/guides/GuideNextjsOneEndpointPage.js +6 -6
- package/dist/node/components/docs/guides/GuideReleaseCapsulesPage.js +3 -3
- package/dist/node/components/docs/guides/GuideSpecValidationTypingPage.js +4 -4
- package/dist/node/components/docs/guides/GuidesIndexPage.js +2 -2
- package/dist/node/components/docs/guides/index.js +43 -43
- package/dist/node/components/docs/index.js +375 -255
- package/dist/node/components/docs/integrations/IntegrationsCircuitBreakersPage.js +2 -2
- package/dist/node/components/docs/integrations/IntegrationsElevenLabsPage.js +3 -3
- package/dist/node/components/docs/integrations/IntegrationsGithubPage.js +2 -2
- package/dist/node/components/docs/integrations/IntegrationsGmailPage.js +3 -3
- package/dist/node/components/docs/integrations/IntegrationsGoogleCalendarPage.js +3 -3
- package/dist/node/components/docs/integrations/IntegrationsHealthRoutingPage.js +2 -2
- package/dist/node/components/docs/integrations/IntegrationsMistralPage.js +2 -2
- package/dist/node/components/docs/integrations/IntegrationsOpenAIPage.js +2 -2
- package/dist/node/components/docs/integrations/IntegrationsOverviewPage.js +1 -1
- package/dist/node/components/docs/integrations/IntegrationsPostmarkPage.js +2 -2
- package/dist/node/components/docs/integrations/IntegrationsPowensPage.js +2 -2
- package/dist/node/components/docs/integrations/IntegrationsQdrantPage.js +5 -5
- package/dist/node/components/docs/integrations/IntegrationsResendPage.js +3 -3
- package/dist/node/components/docs/integrations/IntegrationsS3Page.js +4 -4
- package/dist/node/components/docs/integrations/IntegrationsSlackPage.js +2 -2
- package/dist/node/components/docs/integrations/IntegrationsSpecModelPage.js +2 -2
- package/dist/node/components/docs/integrations/IntegrationsStripePage.js +2 -2
- package/dist/node/components/docs/integrations/IntegrationsTwilioPage.js +3 -3
- package/dist/node/components/docs/integrations/IntegrationsWhatsappMetaPage.js +2 -2
- package/dist/node/components/docs/integrations/IntegrationsWhatsappTwilioPage.js +2 -2
- package/dist/node/components/docs/integrations/index.js +39 -39
- package/dist/node/components/docs/intent/ContractFirstApiPage.js +2 -2
- package/dist/node/components/docs/intent/DeterministicCodegenPage.js +2 -2
- package/dist/node/components/docs/intent/GenerateClientFromSchemaPage.js +7 -7
- package/dist/node/components/docs/intent/OpenapiAlternativePage.js +3 -3
- package/dist/node/components/docs/intent/SchemaValidationTypescriptPage.js +4 -4
- package/dist/node/components/docs/intent/SpecDrivenDevelopmentPage.js +2 -2
- package/dist/node/components/docs/intent/index.js +15 -15
- package/dist/node/components/docs/intent/intent-pages.docblocks.js +1 -1
- package/dist/node/components/docs/knowledge/KnowledgeCategoriesPage.js +2 -2
- package/dist/node/components/docs/knowledge/KnowledgeExamplesPage.js +2 -2
- package/dist/node/components/docs/knowledge/KnowledgeOverviewPage.js +1 -1
- package/dist/node/components/docs/knowledge/KnowledgeSourcesPage.js +2 -2
- package/dist/node/components/docs/knowledge/KnowledgeSpacesPage.js +2 -2
- package/dist/node/components/docs/knowledge/index.js +5 -5
- package/dist/node/components/docs/libraries/LibrariesAccessibilityPage.js +3 -3
- package/dist/node/components/docs/libraries/LibrariesAiAgentPage.js +3 -3
- package/dist/node/components/docs/libraries/LibrariesAnalyticsPage.js +4 -4
- package/dist/node/components/docs/libraries/LibrariesContentGenPage.js +2 -2
- package/dist/node/components/docs/libraries/LibrariesContractsPage.js +2 -2
- package/dist/node/components/docs/libraries/LibrariesCostTrackingPage.js +3 -3
- package/dist/node/components/docs/libraries/LibrariesCrossPlatformUIPage.content.js +85 -0
- package/dist/node/components/docs/libraries/LibrariesCrossPlatformUIPage.js +85 -0
- package/dist/node/components/docs/libraries/LibrariesDataBackendPage.js +2 -2
- package/dist/node/components/docs/libraries/LibrariesDataViewsPage.js +3 -3
- package/dist/node/components/docs/libraries/LibrariesDesignSystemPage.js +38 -2
- package/dist/node/components/docs/libraries/LibrariesEvolutionPage.js +4 -4
- package/dist/node/components/docs/libraries/LibrariesGraphQLPage.js +2 -2
- package/dist/node/components/docs/libraries/LibrariesGrowthPage.js +3 -3
- package/dist/node/components/docs/libraries/LibrariesMultiTenancyPage.js +3 -3
- package/dist/node/components/docs/libraries/LibrariesObservabilityPage.js +5 -5
- package/dist/node/components/docs/libraries/LibrariesOverlayEnginePage.js +4 -4
- package/dist/node/components/docs/libraries/LibrariesOverviewPage.js +1 -1
- package/dist/node/components/docs/libraries/LibrariesPersonalizationPage.js +4 -4
- package/dist/node/components/docs/libraries/LibrariesProgressiveDeliveryPage.js +3 -3
- package/dist/node/components/docs/libraries/LibrariesResiliencePage.js +4 -4
- package/dist/node/components/docs/libraries/LibrariesRuntimePage.js +2 -2
- package/dist/node/components/docs/libraries/LibrariesSLOPage.js +3 -3
- package/dist/node/components/docs/libraries/LibrariesSchemaPage.js +3 -3
- package/dist/node/components/docs/libraries/LibrariesSupportBotPage.js +3 -3
- package/dist/node/components/docs/libraries/LibrariesTestingPage.js +3 -3
- package/dist/node/components/docs/libraries/LibrariesUIKitPage.js +2 -2
- package/dist/node/components/docs/libraries/LibrariesUIKitWebPage.js +2 -2
- package/dist/node/components/docs/libraries/LibrariesWorkflowComposerPage.js +3 -3
- package/dist/node/components/docs/libraries/LibrariesWorkflowsPage.js +2 -2
- package/dist/node/components/docs/libraries/index.js +173 -53
- package/dist/node/components/docs/manifesto/ManifestoPage.js +1 -1
- package/dist/node/components/docs/ops/AutoEvolutionOpsPage.js +2 -2
- package/dist/node/components/docs/ops/DistributedTracingOpsPage.js +2 -2
- package/dist/node/components/docs/ops/index.js +3 -3
- package/dist/node/components/docs/ops/ops-lifecycle.docblocks.js +2 -2
- package/dist/node/components/docs/ops/ops-runbooks-a.docblocks.js +2 -2
- package/dist/node/components/docs/ops/ops-runbooks-b.docblocks.js +2 -2
- package/dist/node/components/docs/ops/ops-slo-tenant.docblocks.js +2 -2
- package/dist/node/components/docs/ops/ops-top.docs.js +2 -2
- package/dist/node/components/docs/ops/ops.docs.js +6 -6
- package/dist/node/components/docs/product/product.docblocks.js +2 -2
- package/dist/node/components/docs/reference/DocsMarkdownContent.js +2 -2
- package/dist/node/components/docs/reference/DocsReferenceContent.js +3 -3
- package/dist/node/components/docs/reference/DocsReferenceIndexClient.js +2 -2
- package/dist/node/components/docs/reference/DocsReferenceIndexPage.js +2 -2
- package/dist/node/components/docs/reference/DocsReferencePage.js +3 -3
- package/dist/node/components/docs/reference/docsMarkdownParser.js +2 -2
- package/dist/node/components/docs/reference/index.js +4 -4
- package/dist/node/components/docs/safety/SafetyAuditingPage.js +2 -2
- package/dist/node/components/docs/safety/SafetyMigrationsPage.js +2 -2
- package/dist/node/components/docs/safety/SafetyOverviewPage.js +1 -1
- package/dist/node/components/docs/safety/SafetyPDPPage.js +2 -2
- package/dist/node/components/docs/safety/SafetySecurityTrustPage.js +1 -1
- package/dist/node/components/docs/safety/SafetySigningPage.js +3 -3
- package/dist/node/components/docs/safety/SafetyTenantIsolationPage.js +2 -2
- package/dist/node/components/docs/safety/index.js +7 -7
- package/dist/node/components/docs/shared/StudioPrompt.js +1 -1
- package/dist/node/components/docs/specs/SpecsBuilderControlPlanePage.js +4 -4
- package/dist/node/components/docs/specs/SpecsCapabilitiesPage.js +2 -2
- package/dist/node/components/docs/specs/SpecsConnectPage.js +2 -2
- package/dist/node/components/docs/specs/SpecsDataViewsPage.js +2 -2
- package/dist/node/components/docs/specs/SpecsModuleBundlesPage.js +3 -3
- package/dist/node/components/docs/specs/SpecsOverlaysPage.js +2 -2
- package/dist/node/components/docs/specs/SpecsOverviewPage.js +1 -1
- package/dist/node/components/docs/specs/SpecsPolicyPage.js +3 -3
- package/dist/node/components/docs/specs/SpecsWorkflowsPage.js +2 -2
- package/dist/node/components/docs/specs/index.js +13 -13
- package/dist/node/components/docs/studio/StudioBYOKPage.js +1 -1
- package/dist/node/components/docs/studio/StudioDeploymentsPage.js +1 -1
- package/dist/node/components/docs/studio/StudioGettingStartedPage.js +1 -1
- package/dist/node/components/docs/studio/StudioIntegrationsPage.js +1 -1
- package/dist/node/components/docs/studio/StudioOverviewPage.js +1 -1
- package/dist/node/components/docs/studio/StudioVisualBuilderPage.js +1 -1
- package/dist/node/components/docs/studio/index.js +1 -1
- package/dist/node/components/docs/tech/contracts/tech-docs.docblocks.js +2 -2
- package/dist/node/components/integrations/index.js +2 -2
- package/dist/node/components/integrations/molecules/IntegrationCard.js +1 -1
- package/dist/node/components/integrations/organisms/IntegrationMarketplace.js +1 -1
- package/dist/node/components/integrations/organisms/IntegrationSettings.js +2 -2
- package/dist/node/components/integrations/organisms/KnowledgeSourceList.js +1 -1
- package/dist/node/components/legal/PrivacyTemplate.js +1 -1
- package/dist/node/components/legal/TermsTemplate.js +1 -1
- package/dist/node/components/legal/index.js +1 -1
- package/dist/node/components/shared/FeatureGateNotice.js +1 -1
- package/dist/node/components/shared/index.js +1 -1
- package/dist/node/components/shell/WorkspaceHeader.js +1 -1
- package/dist/node/components/shell/WorkspaceProjectShellLayout.js +1 -1
- package/dist/node/components/shell/WorkspaceShellRenderer.js +1 -1
- package/dist/node/components/shell/WorkspaceSidebar.js +1 -1
- package/dist/node/components/shell/index.js +1 -1
- package/dist/node/components/templates/engine/index.js +1 -1
- package/dist/node/components/templates/index.js +11 -11
- package/dist/node/components/templates/messaging/ConversationList.js +2 -2
- package/dist/node/components/templates/messaging/MessageComposer.js +4 -4
- package/dist/node/components/templates/messaging/MessageThread.js +3 -3
- package/dist/node/components/templates/messaging/MessagingWorkspace.js +5 -5
- package/dist/node/components/templates/messaging/index.js +5 -5
- package/dist/node/components/templates/recipes/LanguageSwitcher.js +1 -1
- package/dist/node/components/templates/recipes/RecipeCard.js +1 -1
- package/dist/node/components/templates/recipes/RecipeDetail.js +1 -1
- package/dist/node/components/templates/recipes/RecipeList.js +3 -3
- package/dist/node/components/templates/recipes/index.js +3 -3
- package/dist/node/components/templates/todos/FilterBar.js +1 -1
- package/dist/node/components/templates/todos/TaskForm.js +2 -2
- package/dist/node/components/templates/todos/TaskItem.js +1 -1
- package/dist/node/components/templates/todos/TaskList.js +5 -5
- package/dist/node/components/templates/todos/index.js +5 -5
- package/dist/node/config/contractspec-blueprint.js +1 -1
- package/dist/node/config/contractspec-branding.js +1 -1
- package/dist/node/config/contractspec-routes.js +1 -1
- package/dist/node/config/index.js +1 -1
- package/dist/node/features/contracts-registry.js +1 -1
- package/dist/node/features/docs/docs.contracts.js +1 -1
- package/dist/node/features/docs/index.js +1 -1
- package/dist/node/features/docs.feature.js +1 -1
- package/dist/node/features/index.js +1 -1
- package/dist/node/features/mcp.feature.js +1 -1
- package/dist/node/features/presentations.feature.js +1 -1
- package/dist/node/features/registry.js +1 -1
- package/dist/node/index.js +382 -262
- package/dist/node/infrastructure/elysia/index.js +1 -1
- package/dist/node/infrastructure/elysia/logger.js +1 -1
- package/dist/node/infrastructure/index.js +1 -1
- package/dist/node/libs/email/client.js +1 -1
- package/dist/node/libs/email/contact.js +3 -3
- package/dist/node/libs/email/newsletter.js +3 -3
- package/dist/node/libs/email/utils.js +2 -2
- package/dist/node/libs/email/waitlist-application.js +3 -3
- package/dist/node/libs/email/waitlist.js +3 -3
- package/dist/node/libs/email.js +6 -6
- package/dist/node/libs/posthog/client.js +1 -1
- package/dist/node/libs/posthog/native.js +1 -1
- package/dist/node/libs/posthog/server.js +1 -1
- package/dist/node/libs/pricing-examples.js +1 -1
- package/dist/node/presentation/features/atoms/FeatureIcon/FeatureIcon.js +1 -1
- package/dist/node/presentation/features/atoms/FeatureIcon/index.js +1 -1
- package/dist/node/presentation/features/atoms/index.js +1 -1
- package/dist/node/presentation/features/hooks/index.js +1 -1
- package/dist/node/presentation/features/hooks/useContractsRegistry.js +1 -1
- package/dist/node/presentation/features/hooks/useFeatureFilters.js +1 -1
- package/dist/node/presentation/features/hooks/useFeatureRegistry.js +1 -1
- package/dist/node/presentation/features/hooks/useRelatedDocs.js +1 -1
- package/dist/node/presentation/features/index.js +1 -1
- package/dist/node/presentation/features/molecules/FeatureCard/FeatureCard.js +1 -1
- package/dist/node/presentation/features/molecules/FeatureCard/index.js +1 -1
- package/dist/node/presentation/features/molecules/FeatureCategoryHeader/FeatureCategoryHeader.js +1 -1
- package/dist/node/presentation/features/molecules/FeatureCategoryHeader/index.js +1 -1
- package/dist/node/presentation/features/molecules/FeatureFilters/FeatureFilters.js +1 -1
- package/dist/node/presentation/features/molecules/FeatureFilters/index.js +1 -1
- package/dist/node/presentation/features/molecules/FeatureHoverPreview/FeatureHoverPreview.js +1 -1
- package/dist/node/presentation/features/molecules/FeatureHoverPreview/index.js +1 -1
- package/dist/node/presentation/features/molecules/index.js +1 -1
- package/dist/node/presentation/features/organisms/FeatureDataViewsList.js +1 -1
- package/dist/node/presentation/features/organisms/FeatureDetail/FeatureDetail.js +1 -1
- package/dist/node/presentation/features/organisms/FeatureDetail/index.js +1 -1
- package/dist/node/presentation/features/organisms/FeatureDiscovery/FeatureDiscovery.js +1 -1
- package/dist/node/presentation/features/organisms/FeatureDiscovery/index.js +1 -1
- package/dist/node/presentation/features/organisms/FeatureEventsList.js +1 -1
- package/dist/node/presentation/features/organisms/FeatureFormsList.js +1 -1
- package/dist/node/presentation/features/organisms/FeatureOperationsList.js +1 -1
- package/dist/node/presentation/features/organisms/FeaturePresentationsList.js +1 -1
- package/dist/node/presentation/features/organisms/index.js +1 -1
- package/dist/node/presentation/features/templates/FeatureDataViewDetailTemplate/FeatureDataViewDetailTemplate.js +1 -1
- package/dist/node/presentation/features/templates/FeatureDataViewDetailTemplate/index.js +1 -1
- package/dist/node/presentation/features/templates/FeatureDataViewsTemplate/FeatureDataViewsTemplate.js +1 -1
- package/dist/node/presentation/features/templates/FeatureDataViewsTemplate/index.js +1 -1
- package/dist/node/presentation/features/templates/FeatureEventDetailTemplate/FeatureEventDetailTemplate.js +1 -1
- package/dist/node/presentation/features/templates/FeatureEventDetailTemplate/index.js +1 -1
- package/dist/node/presentation/features/templates/FeatureEventsTemplate/FeatureEventsTemplate.js +1 -1
- package/dist/node/presentation/features/templates/FeatureEventsTemplate/index.js +1 -1
- package/dist/node/presentation/features/templates/FeatureFormDetailTemplate/FeatureFormDetailTemplate.js +1 -1
- package/dist/node/presentation/features/templates/FeatureFormDetailTemplate/index.js +1 -1
- package/dist/node/presentation/features/templates/FeatureFormsTemplate/FeatureFormsTemplate.js +1 -1
- package/dist/node/presentation/features/templates/FeatureFormsTemplate/index.js +1 -1
- package/dist/node/presentation/features/templates/FeatureOperationDetailTemplate/FeatureOperationDetailTemplate.js +1 -1
- package/dist/node/presentation/features/templates/FeatureOperationDetailTemplate/index.js +1 -1
- package/dist/node/presentation/features/templates/FeatureOperationsTemplate/FeatureOperationsTemplate.js +1 -1
- package/dist/node/presentation/features/templates/FeatureOperationsTemplate/index.js +1 -1
- package/dist/node/presentation/features/templates/FeatureOverviewTemplate/FeatureOverviewTemplate.js +1 -1
- package/dist/node/presentation/features/templates/FeatureOverviewTemplate/index.js +1 -1
- package/dist/node/presentation/features/templates/FeaturePresentationDetailTemplate/FeaturePresentationDetailTemplate.js +1 -1
- package/dist/node/presentation/features/templates/FeaturePresentationDetailTemplate/index.js +1 -1
- package/dist/node/presentation/features/templates/FeaturePresentationsTemplate/FeaturePresentationsTemplate.js +1 -1
- package/dist/node/presentation/features/templates/FeaturePresentationsTemplate/index.js +1 -1
- package/dist/presentation/features/atoms/FeatureIcon/FeatureIcon.js +1 -1
- package/dist/presentation/features/atoms/FeatureIcon/index.js +1 -1
- package/dist/presentation/features/atoms/index.js +1 -1
- package/dist/presentation/features/hooks/index.js +1 -1
- package/dist/presentation/features/hooks/useContractsRegistry.js +1 -1
- package/dist/presentation/features/hooks/useFeatureFilters.js +1 -1
- package/dist/presentation/features/hooks/useFeatureRegistry.js +1 -1
- package/dist/presentation/features/hooks/useRelatedDocs.js +1 -1
- package/dist/presentation/features/index.js +1 -1
- package/dist/presentation/features/molecules/FeatureCard/FeatureCard.js +1 -1
- package/dist/presentation/features/molecules/FeatureCard/index.js +1 -1
- package/dist/presentation/features/molecules/FeatureCategoryHeader/FeatureCategoryHeader.js +1 -1
- package/dist/presentation/features/molecules/FeatureCategoryHeader/index.js +1 -1
- package/dist/presentation/features/molecules/FeatureFilters/FeatureFilters.js +1 -1
- package/dist/presentation/features/molecules/FeatureFilters/index.js +1 -1
- package/dist/presentation/features/molecules/FeatureHoverPreview/FeatureHoverPreview.js +1 -1
- package/dist/presentation/features/molecules/FeatureHoverPreview/index.js +1 -1
- package/dist/presentation/features/molecules/index.js +1 -1
- package/dist/presentation/features/organisms/FeatureDataViewsList.js +1 -1
- package/dist/presentation/features/organisms/FeatureDetail/FeatureDetail.js +1 -1
- package/dist/presentation/features/organisms/FeatureDetail/index.js +1 -1
- package/dist/presentation/features/organisms/FeatureDiscovery/FeatureDiscovery.js +1 -1
- package/dist/presentation/features/organisms/FeatureDiscovery/index.js +1 -1
- package/dist/presentation/features/organisms/FeatureEventsList.js +1 -1
- package/dist/presentation/features/organisms/FeatureFormsList.js +1 -1
- package/dist/presentation/features/organisms/FeatureOperationsList.js +1 -1
- package/dist/presentation/features/organisms/FeaturePresentationsList.js +1 -1
- package/dist/presentation/features/organisms/index.js +1 -1
- package/dist/presentation/features/templates/FeatureDataViewDetailTemplate/FeatureDataViewDetailTemplate.js +1 -1
- package/dist/presentation/features/templates/FeatureDataViewDetailTemplate/index.js +1 -1
- package/dist/presentation/features/templates/FeatureDataViewsTemplate/FeatureDataViewsTemplate.js +1 -1
- package/dist/presentation/features/templates/FeatureDataViewsTemplate/index.js +1 -1
- package/dist/presentation/features/templates/FeatureEventDetailTemplate/FeatureEventDetailTemplate.js +1 -1
- package/dist/presentation/features/templates/FeatureEventDetailTemplate/index.js +1 -1
- package/dist/presentation/features/templates/FeatureEventsTemplate/FeatureEventsTemplate.js +1 -1
- package/dist/presentation/features/templates/FeatureEventsTemplate/index.js +1 -1
- package/dist/presentation/features/templates/FeatureFormDetailTemplate/FeatureFormDetailTemplate.js +1 -1
- package/dist/presentation/features/templates/FeatureFormDetailTemplate/index.js +1 -1
- package/dist/presentation/features/templates/FeatureFormsTemplate/FeatureFormsTemplate.js +1 -1
- package/dist/presentation/features/templates/FeatureFormsTemplate/index.js +1 -1
- package/dist/presentation/features/templates/FeatureOperationDetailTemplate/FeatureOperationDetailTemplate.js +1 -1
- package/dist/presentation/features/templates/FeatureOperationDetailTemplate/index.js +1 -1
- package/dist/presentation/features/templates/FeatureOperationsTemplate/FeatureOperationsTemplate.js +1 -1
- package/dist/presentation/features/templates/FeatureOperationsTemplate/index.js +1 -1
- package/dist/presentation/features/templates/FeatureOverviewTemplate/FeatureOverviewTemplate.js +1 -1
- package/dist/presentation/features/templates/FeatureOverviewTemplate/index.js +1 -1
- package/dist/presentation/features/templates/FeaturePresentationDetailTemplate/FeaturePresentationDetailTemplate.js +1 -1
- package/dist/presentation/features/templates/FeaturePresentationDetailTemplate/index.js +1 -1
- package/dist/presentation/features/templates/FeaturePresentationsTemplate/FeaturePresentationsTemplate.js +1 -1
- package/dist/presentation/features/templates/FeaturePresentationsTemplate/index.js +1 -1
- package/package.json +49 -24
- package/src/application/mcp/internalMcp.ts +1 -1
- package/src/bundles/LibraryBundle.ts +19 -130
- package/src/components/docs/docsManifest.test.ts +14 -0
- package/src/components/docs/docsManifest.ts +10 -0
- package/src/components/docs/examples/DocsExamplesPage.tsx +3 -3
- package/src/components/docs/examples/ExampleShowcasePage.tsx +1 -1
- package/src/components/docs/examples/exampleShowcaseData.test.ts +5 -3
- package/src/components/docs/examples/exampleShowcaseData.ts +3 -3
- package/src/components/docs/generated/docs-index._common.json +1699 -2008
- package/src/components/docs/generated/docs-index.agent-console.json +377 -377
- package/src/components/docs/generated/docs-index.ai-chat-assistant.json +17 -17
- package/src/components/docs/generated/docs-index.ai-chat.json +105 -105
- package/src/components/docs/generated/docs-index.ai-support-bot.json +9 -9
- package/src/components/docs/generated/docs-index.analytics-dashboard.json +169 -169
- package/src/components/docs/generated/docs-index.app-config.json +137 -137
- package/src/components/docs/generated/docs-index.artisan-knowledge-product.json +17 -17
- package/src/components/docs/generated/docs-index.artisan-payments-stripe.json +33 -33
- package/src/components/docs/generated/docs-index.audit-trail.json +49 -49
- package/src/components/docs/generated/docs-index.calendar-google.json +9 -9
- package/src/components/docs/generated/docs-index.content-generation.json +9 -9
- package/src/components/docs/generated/docs-index.control-plane.json +17 -17
- package/src/components/docs/generated/docs-index.crm-pipeline.json +161 -161
- package/src/components/docs/generated/docs-index.data-grid-showcase.json +25 -25
- package/src/components/docs/generated/docs-index.defineExample.json +9 -9
- package/src/components/docs/generated/docs-index.email-gmail.json +9 -9
- package/src/components/docs/generated/docs-index.feature-flags.json +217 -217
- package/src/components/docs/generated/docs-index.files.json +177 -177
- package/src/components/docs/generated/docs-index.generated.ts +20 -20
- package/src/components/docs/generated/docs-index.harness-lab.json +9 -9
- package/src/components/docs/generated/docs-index.health.json +97 -97
- package/src/components/docs/generated/docs-index.identity-rbac.json +313 -313
- package/src/components/docs/generated/docs-index.in-app-docs.json +9 -9
- package/src/components/docs/generated/docs-index.integration-hub.json +265 -265
- package/src/components/docs/generated/docs-index.integration-posthog.json +9 -9
- package/src/components/docs/generated/docs-index.integration-stripe.json +9 -9
- package/src/components/docs/generated/docs-index.integration-supabase.json +9 -9
- package/src/components/docs/generated/docs-index.jobs.json +137 -137
- package/src/components/docs/generated/docs-index.kb-update-pipeline.json +129 -129
- package/src/components/docs/generated/docs-index.knowledge-canon.json +9 -9
- package/src/components/docs/generated/docs-index.learning-journey-ambient-coach.json +9 -9
- package/src/components/docs/generated/docs-index.learning-journey-crm-onboarding.json +49 -49
- package/src/components/docs/generated/docs-index.learning-journey-duo-drills.json +9 -9
- package/src/components/docs/generated/docs-index.learning-journey-platform-tour.json +49 -49
- package/src/components/docs/generated/docs-index.learning-journey-quest-challenges.json +9 -9
- package/src/components/docs/generated/docs-index.learning-journey-registry.json +33 -33
- package/src/components/docs/generated/docs-index.learning-journey-studio-onboarding.json +49 -49
- package/src/components/docs/generated/docs-index.learning-journey-ui-coaching.json +9 -9
- package/src/components/docs/generated/docs-index.learning-journey-ui-gamified.json +9 -9
- package/src/components/docs/generated/docs-index.learning-journey-ui-onboarding.json +9 -9
- package/src/components/docs/generated/docs-index.learning-journey-ui-shared.json +9 -9
- package/src/components/docs/generated/docs-index.learning-journey.json +241 -241
- package/src/components/docs/generated/docs-index.learning-patterns.json +9 -9
- package/src/components/docs/generated/docs-index.lifecycle-cli.json +9 -9
- package/src/components/docs/generated/docs-index.lifecycle-dashboard.json +9 -9
- package/src/components/docs/generated/docs-index.locale-jurisdiction-gate.json +65 -65
- package/src/components/docs/generated/docs-index.manifest.json +432 -432
- package/src/components/docs/generated/docs-index.marketplace.json +337 -337
- package/src/components/docs/generated/docs-index.meeting-recorder-providers.json +9 -9
- package/src/components/docs/generated/docs-index.meeting-recorder.json +49 -49
- package/src/components/docs/generated/docs-index.messaging-agent-actions.json +17 -17
- package/src/components/docs/generated/docs-index.metrics.json +201 -201
- package/src/components/docs/generated/docs-index.minimal.json +17 -17
- package/src/components/docs/generated/docs-index.mobile-demo-landing.json +42 -0
- package/src/components/docs/generated/docs-index.notifications.json +65 -65
- package/src/components/docs/generated/docs-index.openbanking-powens.json +9 -9
- package/src/components/docs/generated/docs-index.openbanking.json +65 -65
- package/src/components/docs/generated/docs-index.opencode-cli.json +17 -17
- package/src/components/docs/generated/docs-index.personalization.json +9 -9
- package/src/components/docs/generated/docs-index.platform-acp.json +137 -137
- package/src/components/docs/generated/docs-index.platform-agent.json +201 -201
- package/src/components/docs/generated/docs-index.platform-context.json +121 -121
- package/src/components/docs/generated/docs-index.platform-control-plane.json +321 -321
- package/src/components/docs/generated/docs-index.platform-database.json +89 -89
- package/src/components/docs/generated/docs-index.platform-docs.json +161 -161
- package/src/components/docs/generated/docs-index.platform-harness.json +177 -177
- package/src/components/docs/generated/docs-index.platform-integrations.json +329 -329
- package/src/components/docs/generated/docs-index.platform-knowledge.json +57 -57
- package/src/components/docs/generated/docs-index.platform-provider-ranking.json +217 -217
- package/src/components/docs/generated/docs-index.pocket-family-office.json +129 -129
- package/src/components/docs/generated/docs-index.policy-safe-knowledge-assistant.json +9 -9
- package/src/components/docs/generated/docs-index.product-intent.json +9 -9
- package/src/components/docs/generated/docs-index.project-management-sync.json +9 -9
- package/src/components/docs/generated/docs-index.saas-boilerplate.json +209 -209
- package/src/components/docs/generated/docs-index.service-business-os.json +193 -193
- package/src/components/docs/generated/docs-index.team-hub.json +185 -185
- package/src/components/docs/generated/docs-index.unknown.json +521 -521
- package/src/components/docs/generated/docs-index.versioned-knowledge-base.json +81 -81
- package/src/components/docs/generated/docs-index.video-api-showcase.json +33 -33
- package/src/components/docs/generated/docs-index.video-docs-terminal.json +9 -9
- package/src/components/docs/generated/docs-index.video-marketing-clip.json +9 -9
- package/src/components/docs/generated/docs-index.visualization-showcase.json +17 -17
- package/src/components/docs/generated/docs-index.voice-providers.json +9 -9
- package/src/components/docs/generated/docs-index.wealth-snapshot.json +153 -153
- package/src/components/docs/generated/docs-index.workflow-system.json +433 -433
- package/src/components/docs/generated/docs-index.workspace-cli.json +9 -9
- package/src/components/docs/generated/index.ts +20 -5
- package/src/components/docs/generated/loader.ts +15 -8
- package/src/components/docs/getting-started/CompatibilityPage.tsx +14 -0
- package/src/components/docs/libraries/LibrariesCrossPlatformUIPage.content.ts +252 -0
- package/src/components/docs/libraries/LibrariesCrossPlatformUIPage.tsx +232 -0
- package/src/components/docs/libraries/LibrariesDesignSystemPage.tsx +79 -0
- package/src/components/docs/libraries/LibrariesOverviewPage.tsx +6 -0
- package/src/components/docs/libraries/LibrariesRuntimePage.tsx +15 -0
- package/src/components/docs/libraries/LibrariesUIKitPage.tsx +15 -0
- package/src/components/docs/libraries/LibrariesUIKitWebPage.tsx +14 -0
- package/src/components/docs/libraries/index.ts +1 -0
- package/src/components/docs/reference/DocsReferenceIndexPage.tsx +1 -1
- package/src/index.ts +1 -1
- package/src/components/docs/generated/docs-index.mobile-demo-tasks.json +0 -34
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{deterministicCodegenBrief as
|
|
1
|
+
var I=Object.defineProperty;var J=(w)=>w;function K(w,A){this[w]=J.bind(null,A)}var P=(w,A)=>{for(var F in A)I(w,F,{get:A[F],enumerable:!0,configurable:!0,set:K.bind(A,F)})};var Q=(w,A)=>()=>(w&&(A=w(w=0)),A);import{deterministicCodegenBrief as E}from"@contractspec/bundle.library/components/docs/intent/intent-pages.docblocks";import{SeoOptimizer as M}from"@contractspec/lib.content-gen/seo";import{CodeBlock as G}from"@contractspec/lib.design-system";import H from"@contractspec/lib.ui-link";import{ChevronRight as N}from"lucide-react";import{jsx as q,jsxs as D}from"react/jsx-runtime";var W=new M().optimize(E);function _(){return D("div",{className:"space-y-8",children:[D("div",{className:"space-y-3",children:[q("h1",{className:"font-bold text-4xl",children:E.title}),q("p",{className:"text-lg text-muted-foreground",children:E.summary})]}),D("div",{className:"card-subtle space-y-4 p-6",children:[q("h2",{className:"font-bold text-2xl",children:"Regeneration Challenges"}),q("ul",{className:"space-y-2 text-muted-foreground text-sm",children:E.problems.map((w,A)=>q("li",{children:w},A))})]}),D("div",{className:"card-subtle space-y-4 p-6",children:[q("h2",{className:"font-bold text-2xl",children:"Deterministic Solutions"}),q("ul",{className:"space-y-2 text-muted-foreground text-sm",children:E.solutions.map((w,A)=>q("li",{children:w},A))})]}),D("div",{className:"space-y-6",children:[D("div",{className:"space-y-3",children:[q("h2",{className:"font-bold text-2xl",children:"Protected Zones"}),q("p",{className:"text-muted-foreground text-sm",children:"Separate generated code from hand-written business logic with clear boundaries."}),q(G,{language:"typescript",filename:"src/handlers/user-handlers.ts",code:`// Hand-written business logic (protected from regeneration)
|
|
2
2
|
export class UserService {
|
|
3
3
|
async createUser(input: CreateUserInput): Promise<CreateUserOutput> {
|
|
4
4
|
// Custom validation and business rules
|
|
@@ -35,4 +35,4 @@ export const createUserHandler = wrapOperationHandler(
|
|
|
35
35
|
operationName: 'createUser',
|
|
36
36
|
errorMapper: mapToStandardErrors,
|
|
37
37
|
}
|
|
38
|
-
);`})]}),
|
|
38
|
+
);`})]}),D("div",{className:"space-y-3",children:[q("h2",{className:"font-bold text-2xl",children:"Incremental Regeneration"}),q("p",{className:"text-muted-foreground text-sm",children:"Regenerate only what changed while preserving custom logic."}),q(G,{language:"bash",filename:"incremental-regen",code:"contractspec generate \\\n --incremental \\\n --preserve-zones ./src/handlers/*.ts \\\n --input ./src/contracts/ \\\n --output ./generated/"})]}),D("div",{className:"space-y-3",children:[q("h2",{className:"font-bold text-2xl",children:"Conflict Detection"}),q("p",{className:"text-muted-foreground text-sm",children:"Automatically detect and report conflicts during regeneration."}),q(G,{language:"bash",filename:"check-conflicts",code:"contractspec generate \\\n --check-conflicts \\\n --report-conflicts ./conflicts.json"})]})]}),D("div",{className:"flex items-center gap-4 pt-4",children:[D(H,{href:"/docs/guides/generate-docs-clients-schemas",className:"btn-primary",children:["Client Generation ",q(N,{size:16})]}),q(H,{href:"/docs/intent/schema-validation-typescript",className:"btn-ghost",children:"Type Safety"})]})]})}export{W as metadata,_ as DeterministicCodegenPage};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{generateClientFromSchemaBrief as
|
|
1
|
+
var J=Object.defineProperty;var K=(A)=>A;function M(A,D){this[A]=K.bind(null,D)}var Q=(A,D)=>{for(var H in D)J(A,H,{get:D[H],enumerable:!0,configurable:!0,set:M.bind(D,H)})};var T=(A,D)=>()=>(A&&(D=A(A=0)),D);import{generateClientFromSchemaBrief as G}from"@contractspec/bundle.library/components/docs/intent/intent-pages.docblocks";import{SeoOptimizer as N}from"@contractspec/lib.content-gen/seo";import{CodeBlock as E}from"@contractspec/lib.design-system";import I from"@contractspec/lib.ui-link";import{ChevronRight as P}from"lucide-react";import{jsx as q,jsxs as w}from"react/jsx-runtime";var _=new N().optimize(G);function $(){return w("div",{className:"space-y-8",children:[w("div",{className:"space-y-3",children:[q("h1",{className:"font-bold text-4xl",children:G.title}),q("p",{className:"text-lg text-muted-foreground",children:G.summary})]}),w("div",{className:"card-subtle space-y-4 p-6",children:[q("h2",{className:"font-bold text-2xl",children:"Client Development Problems"}),q("ul",{className:"space-y-2 text-muted-foreground text-sm",children:G.problems.map((A,D)=>q("li",{children:A},D))})]}),w("div",{className:"card-subtle space-y-4 p-6",children:[q("h2",{className:"font-bold text-2xl",children:"Automated Solutions"}),q("ul",{className:"space-y-2 text-muted-foreground text-sm",children:G.solutions.map((A,D)=>q("li",{children:A},D))})]}),w("div",{className:"space-y-6",children:[w("div",{className:"space-y-3",children:[q("h2",{className:"font-bold text-2xl",children:"Contract Definition"}),q("p",{className:"text-muted-foreground text-sm",children:"Define your API contract once, generate clients for any language."}),q(E,{language:"typescript",filename:"src/contracts/api.contract.ts",code:`import { defineContract } from '@contractspec/lib.contracts-spec';
|
|
2
2
|
import { SchemaModel, ScalarTypeEnum } from '@contractspec/lib.schema';
|
|
3
3
|
|
|
4
4
|
export const ApiContract = defineContract({
|
|
@@ -68,7 +68,7 @@ export const ApiContract = defineContract({
|
|
|
68
68
|
description: 'User management API with authentication',
|
|
69
69
|
tags: ['users', 'authentication'],
|
|
70
70
|
},
|
|
71
|
-
});`})]}),w("div",{className:"space-y-3",children:[q("h2",{className:"font-bold text-2xl",children:"Generate Multiple Clients"}),q("p",{className:"text-muted-foreground text-sm",children:"Generate type-safe clients for any language from the same contract."}),q(
|
|
71
|
+
});`})]}),w("div",{className:"space-y-3",children:[q("h2",{className:"font-bold text-2xl",children:"Generate Multiple Clients"}),q("p",{className:"text-muted-foreground text-sm",children:"Generate type-safe clients for any language from the same contract."}),q(E,{language:"bash",filename:"generate-clients",code:`# Generate all supported language clients
|
|
72
72
|
contractspec generate clients \\
|
|
73
73
|
--contract ./src/contracts/api.contract.ts \\
|
|
74
74
|
--output ./generated/clients \\
|
|
@@ -85,7 +85,7 @@ contractspec generate clients \\
|
|
|
85
85
|
# --with-types: Include TypeScript definitions
|
|
86
86
|
# --with-tests: Generate client test suites
|
|
87
87
|
# --with-docs: Include client documentation
|
|
88
|
-
# --framework: Use specific HTTP client framework`})]}),w("div",{className:"space-y-3",children:[q("h2",{className:"font-bold text-2xl",children:"Generated Client Examples"}),q("p",{className:"text-muted-foreground text-sm",children:"Each generated client is fully type-safe and idiomatic."}),w("div",{className:"space-y-4",children:[w("div",{className:"card-subtle p-4",children:[q("h4",{className:"font-semibold text-lg",children:"TypeScript Client"}),q(
|
|
88
|
+
# --framework: Use specific HTTP client framework`})]}),w("div",{className:"space-y-3",children:[q("h2",{className:"font-bold text-2xl",children:"Generated Client Examples"}),q("p",{className:"text-muted-foreground text-sm",children:"Each generated client is fully type-safe and idiomatic."}),w("div",{className:"space-y-4",children:[w("div",{className:"card-subtle p-4",children:[q("h4",{className:"font-semibold text-lg",children:"TypeScript Client"}),q(E,{language:"typescript",filename:"generated/clients/typescript/index.ts",code:`import { MyAPIClient } from './client';
|
|
89
89
|
|
|
90
90
|
const client = new MyAPIClient({
|
|
91
91
|
baseUrl: 'https://api.example.com',
|
|
@@ -105,7 +105,7 @@ const newUser = await client.createUser({
|
|
|
105
105
|
|
|
106
106
|
// Full type inference
|
|
107
107
|
// users: GetUsersResponse
|
|
108
|
-
// newUser: CreateUserResponse`})]}),w("div",{className:"card-subtle p-4",children:[q("h4",{className:"font-semibold text-lg",children:"Python Client"}),q(
|
|
108
|
+
// newUser: CreateUserResponse`})]}),w("div",{className:"card-subtle p-4",children:[q("h4",{className:"font-semibold text-lg",children:"Python Client"}),q(E,{language:"python",filename:"generated/clients/python/index.py",code:`from myapi_client import MyAPIClient
|
|
109
109
|
|
|
110
110
|
client = MyAPIClient(
|
|
111
111
|
base_url='https://api.example.com',
|
|
@@ -125,7 +125,7 @@ new_user = await client.create_user(
|
|
|
125
125
|
|
|
126
126
|
# Full type hints
|
|
127
127
|
# users: GetUsersResponse
|
|
128
|
-
# new_user: CreateUserResponse`})]}),w("div",{className:"card-subtle p-4",children:[q("h4",{className:"font-semibold text-lg",children:"Go Client"}),q(
|
|
128
|
+
# new_user: CreateUserResponse`})]}),w("div",{className:"card-subtle p-4",children:[q("h4",{className:"font-semibold text-lg",children:"Go Client"}),q(E,{language:"go",filename:"generated/clients/go/client.go",code:`package main
|
|
129
129
|
|
|
130
130
|
import (
|
|
131
131
|
"context"
|
|
@@ -152,7 +152,7 @@ func main() {
|
|
|
152
152
|
// Full type checking at compile time
|
|
153
153
|
// users: *GetUsersResponse
|
|
154
154
|
// newUser: *CreateUserResponse
|
|
155
|
-
}`})]})]})]}),w("div",{className:"space-y-3",children:[q("h2",{className:"font-bold text-2xl",children:"Advanced Features"}),q("p",{className:"text-muted-foreground text-sm",children:"Generated clients include enterprise-grade features out of the box."}),q(
|
|
155
|
+
}`})]})]})]}),w("div",{className:"space-y-3",children:[q("h2",{className:"font-bold text-2xl",children:"Advanced Features"}),q("p",{className:"text-muted-foreground text-sm",children:"Generated clients include enterprise-grade features out of the box."}),q(E,{language:"typescript",filename:"client-features.ts",code:`// Advanced client features
|
|
156
156
|
const client = new MyAPIClient({
|
|
157
157
|
baseUrl: 'https://api.example.com',
|
|
158
158
|
apiKey: 'your-api-key',
|
|
@@ -195,4 +195,4 @@ const user2 = client.getUser({ id: '123' }); // Uses cached result
|
|
|
195
195
|
// Request cancellation
|
|
196
196
|
const controller = new AbortController();
|
|
197
197
|
const promise = client.getUsers({ page: 1, signal: controller.signal });
|
|
198
|
-
controller.abort(); // Cancels the request`})]})]}),w("div",{className:"flex items-center gap-4 pt-4",children:[w(
|
|
198
|
+
controller.abort(); // Cancels the request`})]})]}),w("div",{className:"flex items-center gap-4 pt-4",children:[w(I,{href:"/docs/guides/generate-docs-clients-schemas",className:"btn-primary",children:["Client Generation Guide ",q(P,{size:16})]}),q(I,{href:"/docs/intent/contract-first-api",className:"btn-ghost",children:"Contract-first API"})]})]})}export{_ as metadata,$ as GenerateClientFromSchemaPage};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{openapiAlternativeBrief as
|
|
1
|
+
var J=Object.defineProperty;var K=(D)=>D;function M(D,E){this[D]=K.bind(null,E)}var Q=(D,E)=>{for(var G in E)J(D,G,{get:E[G],enumerable:!0,configurable:!0,set:M.bind(E,G)})};var T=(D,E)=>()=>(D&&(E=D(D=0)),E);import{openapiAlternativeBrief as F}from"@contractspec/bundle.library/components/docs/intent/intent-pages.docblocks";import{SeoOptimizer as N}from"@contractspec/lib.content-gen/seo";import{CodeBlock as H}from"@contractspec/lib.design-system";import I from"@contractspec/lib.ui-link";import{ChevronRight as P}from"lucide-react";import{jsx as q,jsxs as w}from"react/jsx-runtime";var _=new N().optimize(F);function $(){return w("div",{className:"space-y-8",children:[w("div",{className:"space-y-3",children:[q("h1",{className:"font-bold text-4xl",children:F.title}),q("p",{className:"text-lg text-muted-foreground",children:F.summary})]}),w("div",{className:"card-subtle space-y-4 p-6",children:[q("h2",{className:"font-bold text-2xl",children:"OpenAPI Limitations"}),q("ul",{className:"space-y-2 text-muted-foreground text-sm",children:F.problems.map((D,E)=>q("li",{children:D},E))})]}),w("div",{className:"card-subtle space-y-4 p-6",children:[q("h2",{className:"font-bold text-2xl",children:"ContractSpec Advantages"}),q("ul",{className:"space-y-2 text-muted-foreground text-sm",children:F.solutions.map((D,E)=>q("li",{children:D},E))})]}),w("div",{className:"space-y-6",children:[w("div",{className:"space-y-3",children:[q("h2",{className:"font-bold text-2xl",children:"Comparison: OpenAPI vs ContractSpec"}),q("p",{className:"text-muted-foreground text-sm",children:"Key differences between OpenAPI documentation and ContractSpec executable contracts."}),w("div",{className:"grid gap-6 md:grid-cols-2",children:[w("div",{className:"card-subtle space-y-3 p-4",children:[q("h3",{className:"font-semibold text-lg",children:"OpenAPI"}),w("ul",{className:"space-y-1 text-muted-foreground text-sm",children:[q("li",{children:"• Documentation specification only"}),q("li",{children:"• No runtime validation"}),q("li",{children:"• Manual code generation"}),q("li",{children:"• Type safety requires tools"}),q("li",{children:"• Separate schemas from documentation"})]})]}),w("div",{className:"card-subtle space-y-3 p-4",children:[q("h3",{className:"font-semibold text-lg",children:"ContractSpec"}),w("ul",{className:"space-y-1 text-muted-foreground text-sm",children:[q("li",{children:"• Executable contracts"}),q("li",{children:"• Built-in runtime validation"}),q("li",{children:"• Automatic code generation"}),q("li",{children:"• Type-safe by default"}),q("li",{children:"• Unified spec and implementation"})]})]})]})]}),w("div",{className:"space-y-3",children:[q("h2",{className:"font-bold text-2xl",children:"Export from Contracts"}),q("p",{className:"text-muted-foreground text-sm",children:"Generate OpenAPI documentation from ContractSpec for existing tooling."}),q(H,{language:"bash",filename:"export-openapi",code:`# From ContractSpec contracts
|
|
2
2
|
contractspec openapi export \\
|
|
3
3
|
--registry ./src/contracts/registry.ts \\
|
|
4
4
|
--format yaml \\
|
|
@@ -6,7 +6,7 @@ contractspec openapi export \\
|
|
|
6
6
|
|
|
7
7
|
# Compare: Manual OpenAPI vs Generated
|
|
8
8
|
# Manual: Write OpenAPI by hand, maintain separately
|
|
9
|
-
# Generated: Single source of truth, always in sync`})]}),w("div",{className:"space-y-3",children:[q("h2",{className:"font-bold text-2xl",children:"Beyond Documentation"}),q("p",{className:"text-muted-foreground text-sm",children:"ContractSpec provides more than just API documentation."}),q(
|
|
9
|
+
# Generated: Single source of truth, always in sync`})]}),w("div",{className:"space-y-3",children:[q("h2",{className:"font-bold text-2xl",children:"Beyond Documentation"}),q("p",{className:"text-muted-foreground text-sm",children:"ContractSpec provides more than just API documentation."}),q(H,{language:"typescript",filename:"multi-output-example.ts",code:`// One contract, multiple outputs
|
|
10
10
|
import { UserApiContract } from './contracts/user-api.contract';
|
|
11
11
|
|
|
12
12
|
// Generated outputs
|
|
@@ -36,4 +36,4 @@ export const outputs = {
|
|
|
36
36
|
|
|
37
37
|
// Type definitions
|
|
38
38
|
types: UserApiContract.toTypescript(),
|
|
39
|
-
};`})]})]}),w("div",{className:"flex items-center gap-4 pt-4",children:[w(
|
|
39
|
+
};`})]})]}),w("div",{className:"flex items-center gap-4 pt-4",children:[w(I,{href:"/docs/guides/generate-docs-clients-schemas",className:"btn-primary",children:["Generate from Contracts ",q(P,{size:16})]}),q(I,{href:"/docs/intent/generate-client-from-schema",className:"btn-ghost",children:"Client Generation"})]})]})}export{_ as metadata,$ as OpenapiAlternativePage};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{schemaValidationTypescriptBrief as
|
|
1
|
+
var I=Object.defineProperty;var J=(w)=>w;function K(w,A){this[w]=J.bind(null,A)}var P=(w,A)=>{for(var F in A)I(w,F,{get:A[F],enumerable:!0,configurable:!0,set:K.bind(A,F)})};var Q=(w,A)=>()=>(w&&(A=w(w=0)),A);import{schemaValidationTypescriptBrief as E}from"@contractspec/bundle.library/components/docs/intent/intent-pages.docblocks";import{SeoOptimizer as M}from"@contractspec/lib.content-gen/seo";import{CodeBlock as G}from"@contractspec/lib.design-system";import H from"@contractspec/lib.ui-link";import{ChevronRight as N}from"lucide-react";import{jsx as q,jsxs as D}from"react/jsx-runtime";var $=new M().optimize(E);function v(){return D("div",{className:"space-y-8",children:[D("div",{className:"space-y-3",children:[q("h1",{className:"font-bold text-4xl",children:E.title}),q("p",{className:"text-lg text-muted-foreground",children:E.summary})]}),D("div",{className:"card-subtle space-y-4 p-6",children:[q("h2",{className:"font-bold text-2xl",children:"Validation Pain Points"}),q("ul",{className:"space-y-2 text-muted-foreground text-sm",children:E.problems.map((w,A)=>q("li",{children:w},A))})]}),D("div",{className:"card-subtle space-y-4 p-6",children:[q("h2",{className:"font-bold text-2xl",children:"Type-safe Solutions"}),q("ul",{className:"space-y-2 text-muted-foreground text-sm",children:E.solutions.map((w,A)=>q("li",{children:w},A))})]}),D("div",{className:"space-y-6",children:[D("div",{className:"space-y-3",children:[q("h2",{className:"font-bold text-2xl",children:"Contract Schema"}),q("p",{className:"text-muted-foreground text-sm",children:"Define data models with automatic TypeScript generation."}),q(G,{language:"typescript",filename:"src/contracts/user.schema.ts",code:`import { SchemaModel, ScalarTypeEnum } from '@contractspec/lib.schema';
|
|
2
2
|
|
|
3
3
|
export const UserSchema = new SchemaModel({
|
|
4
4
|
type: 'object',
|
|
@@ -40,7 +40,7 @@ export const UserSchema = new SchemaModel({
|
|
|
40
40
|
name: 'User',
|
|
41
41
|
description: 'User account information',
|
|
42
42
|
},
|
|
43
|
-
});`})]}),
|
|
43
|
+
});`})]}),D("div",{className:"space-y-3",children:[q("h2",{className:"font-bold text-2xl",children:"Generated Types"}),q("p",{className:"text-muted-foreground text-sm",children:"TypeScript types are automatically generated with proper validation."}),q(G,{language:"typescript",filename:"generated/types/user.ts",code:`// Auto-generated from UserSchema
|
|
44
44
|
export interface User {
|
|
45
45
|
id: string;
|
|
46
46
|
email: string;
|
|
@@ -65,7 +65,7 @@ export function validateUser(data: unknown): User {
|
|
|
65
65
|
|
|
66
66
|
export function isUser(data: unknown): data is User {
|
|
67
67
|
return UserSchemaZod.safeParse(data).success;
|
|
68
|
-
}`})]}),
|
|
68
|
+
}`})]}),D("div",{className:"space-y-3",children:[q("h2",{className:"font-bold text-2xl",children:"Runtime Validation"}),q("p",{className:"text-muted-foreground text-sm",children:"Use generated validation in your API handlers with zero boilerplate."}),q(G,{language:"typescript",filename:"src/handlers/user-handler.ts",code:`import { validateUser } from '../generated/types/user';
|
|
69
69
|
|
|
70
70
|
export async function createUserHandler(request: Request) {
|
|
71
71
|
try {
|
|
@@ -93,4 +93,4 @@ export async function createUserHandler(request: Request) {
|
|
|
93
93
|
|
|
94
94
|
throw error;
|
|
95
95
|
}
|
|
96
|
-
}`})]})]}),
|
|
96
|
+
}`})]})]}),D("div",{className:"flex items-center gap-4 pt-4",children:[D(H,{href:"/docs/guides/spec-validation-and-typing",className:"btn-primary",children:["Type Safety Guide ",q(N,{size:16})]}),q(H,{href:"/docs/intent/generate-client-from-schema",className:"btn-ghost",children:"Client Generation"})]})]})}export{$ as metadata,v as SchemaValidationTypescriptPage};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{specDrivenDevelopmentBrief as
|
|
1
|
+
var J=Object.defineProperty;var K=(w)=>w;function M(w,A){this[w]=K.bind(null,A)}var Q=(w,A)=>{for(var G in A)J(w,G,{get:A[G],enumerable:!0,configurable:!0,set:M.bind(A,G)})};var T=(w,A)=>()=>(w&&(A=w(w=0)),A);import{specDrivenDevelopmentBrief as F}from"@contractspec/bundle.library/components/docs/intent/intent-pages.docblocks";import{SeoOptimizer as N}from"@contractspec/lib.content-gen/seo";import{CodeBlock as H}from"@contractspec/lib.design-system";import I from"@contractspec/lib.ui-link";import{ChevronRight as P}from"lucide-react";import{jsx as q,jsxs as E}from"react/jsx-runtime";var _=new N().optimize(F);function $(){return E("div",{className:"space-y-8",children:[E("div",{className:"space-y-3",children:[q("h1",{className:"font-bold text-4xl",children:F.title}),q("p",{className:"text-lg text-muted-foreground",children:F.summary})]}),E("div",{className:"card-subtle space-y-4 p-6",children:[q("h2",{className:"font-bold text-2xl",children:"Why Spec-driven?"}),q("ul",{className:"space-y-2 text-muted-foreground text-sm",children:F.problems.map((w,A)=>q("li",{children:w},A))})]}),E("div",{className:"card-subtle space-y-4 p-6",children:[q("h2",{className:"font-bold text-2xl",children:"Benefits"}),q("ul",{className:"space-y-2 text-muted-foreground text-sm",children:F.solutions.map((w,A)=>q("li",{children:w},A))})]}),E("div",{className:"space-y-6",children:[E("div",{className:"space-y-3",children:[q("h2",{className:"font-bold text-2xl",children:"Feature Specification Example"}),q("p",{className:"text-muted-foreground text-sm",children:"Define a complete feature with operations, events, and data models."}),q(H,{language:"typescript",filename:"src/contracts/user-management.feature.ts",code:`import { defineFeature } from '@contractspec/lib.contracts-spec/features';
|
|
2
2
|
import { defineOperation } from '@contractspec/lib.contracts-spec/operations';
|
|
3
3
|
import { defineEvent } from '@contractspec/lib.contracts-spec/events';
|
|
4
4
|
import { SchemaModel, ScalarTypeEnum } from '@contractspec/lib.schema';
|
|
@@ -70,4 +70,4 @@ export const UserManagementFeature = defineFeature({
|
|
|
70
70
|
version: '1.0.0',
|
|
71
71
|
description: 'Complete user management with operations and events',
|
|
72
72
|
},
|
|
73
|
-
});`})]}),
|
|
73
|
+
});`})]}),E("div",{className:"space-y-3",children:[q("h2",{className:"font-bold text-2xl",children:"Generate Type-safe Implementations"}),q("p",{className:"text-muted-foreground text-sm",children:"Generate validation, types, and API handlers from your feature."}),q(H,{language:"bash",filename:"generate-from-feature",code:"contractspec generate \\\n --input ./src/contracts/user-management.feature.ts \\\n --output ./generated/user-management"})]})]}),E("div",{className:"flex items-center gap-4 pt-4",children:[E(I,{href:"/docs/guides/spec-validation-and-typing",className:"btn-primary",children:["Type Safety Guide ",q(P,{size:16})]}),q(I,{href:"/docs/intent/deterministic-codegen",className:"btn-ghost",children:"Deterministic Codegen"})]})]})}export{_ as metadata,$ as SpecDrivenDevelopmentPage};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
var
|
|
1
|
+
var Z=Object.defineProperty;var H=(e)=>e;function J(e,t){this[e]=H.bind(null,t)}var ee=(e,t)=>{for(var G in t)Z(e,G,{get:t[G],enumerable:!0,configurable:!0,set:J.bind(t,G)})};var te=(e,t)=>()=>(e&&(t=e(e=0)),t);var ne={title:"Contract-first API",summary:"Design APIs by writing contracts first, then generate consistent implementations across frameworks.",problems:["API drift between frontend and backend","Inconsistent error handling across endpoints","Documentation becomes outdated quickly","Manual OpenAPI maintenance is error-prone"],solutions:["Single source of truth for API contracts","Generate OpenAPI and SDKs from contracts","Type-safe request/response validation","Always-in-sync documentation"],audience:{role:"API developers",industry:"Software development",maturity:"scaleup"},callToAction:"Start with a simple operation contract",references:[{label:"Next.js One Endpoint Guide",url:"/docs/guides/nextjs-one-endpoint"},{label:"API Reference",url:"/docs/api"}]},re={title:"Spec-driven development",summary:"Build features by writing specifications first, then generate type-safe implementations.",problems:["Feature requirements are ambiguous","Frontend and backend implementations diverge","Testing lacks clear contract definitions","Code reviews focus on style instead of behavior"],solutions:["Executable specifications as single source of truth","Generate type-safe clients from specs","Automated contract testing","Clear behavior contracts for teams"],audience:{role:"Development teams",industry:"Software engineering",maturity:"enterprise"},callToAction:"Define your first feature spec",references:[{label:"Spec Validation + Typing Guide",url:"/docs/guides/spec-validation-and-typing"},{label:"Core Contracts",url:"/docs/core-contracts"}]},oe={title:"Deterministic codegen",summary:"Regenerate code from contracts without breaking existing functionality or losing customizations.",problems:["Generated code conflicts with manual changes","Regeneration loses custom business logic","Teams avoid regeneration after customization","Code migration between versions is risky"],solutions:["Clear separation of generated vs hand-written code","Incremental regeneration with conflict detection","Protected zones for custom logic","Automatic migration paths"],audience:{role:"Platform engineers",industry:"Developer tools",maturity:"scaleup"},callToAction:"Try deterministic regeneration",references:[{label:"Generate Docs + Clients Guide",url:"/docs/guides/generate-docs-clients-schemas"},{label:"CLI Reference",url:"/docs/getting-started/cli"}]},ue={title:"Schema validation TypeScript",summary:"Generate TypeScript types from contracts and validate data at runtime with zero overhead.",problems:["Runtime type validation is boilerplate-heavy","Type definitions drift from schemas","Validation logic scattered across codebase","Poor error messages for invalid data"],solutions:["Auto-generated TypeScript from contracts","Zod schemas for runtime validation","Type-safe validation with clear errors","Single source of schema truth"],audience:{role:"TypeScript developers",industry:"Web development",maturity:"early"},callToAction:"Generate typed contracts now",references:[{label:"Type Safety Guide",url:"/docs/guides/spec-validation-and-typing"},{label:"Schema Reference",url:"/docs/schemas"}]},le={title:"OpenAPI alternative",summary:"A spec-first approach that goes beyond OpenAPI with executable contracts and code generation.",problems:["OpenAPI is documentation-only","No type safety from OpenAPI specs","Manual SDK generation is complex","Cannot validate implementations against OpenAPI"],solutions:["Executable contracts with validation","Generate multiple outputs from one spec","Type-safe by default","Built-in testing and validation"],audience:{role:"API architects",industry:"Enterprise software",maturity:"enterprise"},callToAction:"Compare with OpenAPI approach",references:[{label:"Generate OpenAPI from Contracts",url:"/docs/guides/generate-docs-clients-schemas"},{label:"Contract vs OpenAPI",url:"/docs/comparison/openapi"}]},ie={title:"Generate client from schema",summary:"Automatically generate type-safe API clients in any language from your contracts.",problems:["Writing API clients is repetitive","Manual clients have type mismatches","Keeping clients in sync with APIs","Language-specific client maintenance"],solutions:["Generate clients for multiple languages","Type-safe request/response handling","Automatic client updates from contracts","Consistent error handling across languages"],audience:{role:"Full-stack developers",industry:"Software development",maturity:"scaleup"},callToAction:"Generate your first API client",references:[{label:"Client Generation Guide",url:"/docs/guides/generate-docs-clients-schemas"},{label:"Supported Languages",url:"/docs/integrations"}]};import{contractFirstApiBrief as p}from"@contractspec/bundle.library/components/docs/intent/intent-pages.docblocks";import{SeoOptimizer as Q}from"@contractspec/lib.content-gen/seo";import{CodeBlock as b}from"@contractspec/lib.design-system";import S from"@contractspec/lib.ui-link";import{ChevronRight as R}from"lucide-react";import{jsx as u,jsxs as d}from"react/jsx-runtime";var pe=new Q().optimize(p);function U(){return d("div",{className:"space-y-8",children:[d("div",{className:"space-y-3",children:[u("h1",{className:"font-bold text-4xl",children:p.title}),u("p",{className:"text-lg text-muted-foreground",children:p.summary})]}),d("div",{className:"card-subtle space-y-4 p-6",children:[u("h2",{className:"font-bold text-2xl",children:"Problems Solved"}),u("ul",{className:"space-y-2 text-muted-foreground text-sm",children:p.problems.map((e,t)=>u("li",{children:e},t))})]}),d("div",{className:"card-subtle space-y-4 p-6",children:[u("h2",{className:"font-bold text-2xl",children:"Solutions"}),u("ul",{className:"space-y-2 text-muted-foreground text-sm",children:p.solutions.map((e,t)=>u("li",{children:e},t))})]}),d("div",{className:"space-y-6",children:[d("div",{className:"space-y-3",children:[u("h2",{className:"font-bold text-2xl",children:"Quick Start"}),u("p",{className:"text-muted-foreground text-sm",children:"Define your first API contract and generate consistent implementations."}),u(b,{language:"typescript",filename:"src/contracts/user-create.operation.ts",code:`import { defineOperation } from '@contractspec/lib.contracts-spec/operations';
|
|
2
2
|
import { SchemaModel, ScalarTypeEnum } from '@contractspec/lib.schema';
|
|
3
3
|
|
|
4
4
|
export const CreateUserOperation = defineOperation({
|
|
@@ -32,7 +32,7 @@ export const CreateUserOperation = defineOperation({
|
|
|
32
32
|
tags: ['users', 'auth'],
|
|
33
33
|
description: 'Create a new user account with email and password',
|
|
34
34
|
},
|
|
35
|
-
});`})]}),d("div",{className:"space-y-3",children:[u("h2",{className:"font-bold text-2xl",children:"Generate OpenAPI"}),u("p",{className:"text-muted-foreground text-sm",children:"Export OpenAPI documentation directly from your contracts."}),u(
|
|
35
|
+
});`})]}),d("div",{className:"space-y-3",children:[u("h2",{className:"font-bold text-2xl",children:"Generate OpenAPI"}),u("p",{className:"text-muted-foreground text-sm",children:"Export OpenAPI documentation directly from your contracts."}),u(b,{language:"bash",filename:"export-openapi",code:"contractspec openapi export \\\n --registry ./src/contracts/registry.ts \\\n --out ./openapi.json"})]})]}),d("div",{className:"flex items-center gap-4 pt-4",children:[d(S,{href:"/docs/guides/nextjs-one-endpoint",className:"btn-primary",children:["Next.js Guide ",u(R,{size:16})]}),u(S,{href:"/docs/intent/spec-driven-development",className:"btn-ghost",children:"Spec-driven Development"})]})]})}import{deterministicCodegenBrief as A}from"@contractspec/bundle.library/components/docs/intent/intent-pages.docblocks";import{SeoOptimizer as X}from"@contractspec/lib.content-gen/seo";import{CodeBlock as v}from"@contractspec/lib.design-system";import O from"@contractspec/lib.ui-link";import{ChevronRight as Y}from"lucide-react";import{jsx as r,jsxs as f}from"react/jsx-runtime";var he=new X().optimize(A);function _(){return f("div",{className:"space-y-8",children:[f("div",{className:"space-y-3",children:[r("h1",{className:"font-bold text-4xl",children:A.title}),r("p",{className:"text-lg text-muted-foreground",children:A.summary})]}),f("div",{className:"card-subtle space-y-4 p-6",children:[r("h2",{className:"font-bold text-2xl",children:"Regeneration Challenges"}),r("ul",{className:"space-y-2 text-muted-foreground text-sm",children:A.problems.map((e,t)=>r("li",{children:e},t))})]}),f("div",{className:"card-subtle space-y-4 p-6",children:[r("h2",{className:"font-bold text-2xl",children:"Deterministic Solutions"}),r("ul",{className:"space-y-2 text-muted-foreground text-sm",children:A.solutions.map((e,t)=>r("li",{children:e},t))})]}),f("div",{className:"space-y-6",children:[f("div",{className:"space-y-3",children:[r("h2",{className:"font-bold text-2xl",children:"Protected Zones"}),r("p",{className:"text-muted-foreground text-sm",children:"Separate generated code from hand-written business logic with clear boundaries."}),r(v,{language:"typescript",filename:"src/handlers/user-handlers.ts",code:`// Hand-written business logic (protected from regeneration)
|
|
36
36
|
export class UserService {
|
|
37
37
|
async createUser(input: CreateUserInput): Promise<CreateUserOutput> {
|
|
38
38
|
// Custom validation and business rules
|
|
@@ -69,7 +69,7 @@ export const createUserHandler = wrapOperationHandler(
|
|
|
69
69
|
operationName: 'createUser',
|
|
70
70
|
errorMapper: mapToStandardErrors,
|
|
71
71
|
}
|
|
72
|
-
);`})]}),f("div",{className:"space-y-3",children:[r("h2",{className:"font-bold text-2xl",children:"Incremental Regeneration"}),r("p",{className:"text-muted-foreground text-sm",children:"Regenerate only what changed while preserving custom logic."}),r(
|
|
72
|
+
);`})]}),f("div",{className:"space-y-3",children:[r("h2",{className:"font-bold text-2xl",children:"Incremental Regeneration"}),r("p",{className:"text-muted-foreground text-sm",children:"Regenerate only what changed while preserving custom logic."}),r(v,{language:"bash",filename:"incremental-regen",code:"contractspec generate \\\n --incremental \\\n --preserve-zones ./src/handlers/*.ts \\\n --input ./src/contracts/ \\\n --output ./generated/"})]}),f("div",{className:"space-y-3",children:[r("h2",{className:"font-bold text-2xl",children:"Conflict Detection"}),r("p",{className:"text-muted-foreground text-sm",children:"Automatically detect and report conflicts during regeneration."}),r(v,{language:"bash",filename:"check-conflicts",code:"contractspec generate \\\n --check-conflicts \\\n --report-conflicts ./conflicts.json"})]})]}),f("div",{className:"flex items-center gap-4 pt-4",children:[f(O,{href:"/docs/guides/generate-docs-clients-schemas",className:"btn-primary",children:["Client Generation ",r(Y,{size:16})]}),r(O,{href:"/docs/intent/schema-validation-typescript",className:"btn-ghost",children:"Type Safety"})]})]})}import{generateClientFromSchemaBrief as I}from"@contractspec/bundle.library/components/docs/intent/intent-pages.docblocks";import{SeoOptimizer as $}from"@contractspec/lib.content-gen/seo";import{CodeBlock as g}from"@contractspec/lib.design-system";import q from"@contractspec/lib.ui-link";import{ChevronRight as D}from"lucide-react";import{jsx as n,jsxs as i}from"react/jsx-runtime";var Ne=new $().optimize(I);function z(){return i("div",{className:"space-y-8",children:[i("div",{className:"space-y-3",children:[n("h1",{className:"font-bold text-4xl",children:I.title}),n("p",{className:"text-lg text-muted-foreground",children:I.summary})]}),i("div",{className:"card-subtle space-y-4 p-6",children:[n("h2",{className:"font-bold text-2xl",children:"Client Development Problems"}),n("ul",{className:"space-y-2 text-muted-foreground text-sm",children:I.problems.map((e,t)=>n("li",{children:e},t))})]}),i("div",{className:"card-subtle space-y-4 p-6",children:[n("h2",{className:"font-bold text-2xl",children:"Automated Solutions"}),n("ul",{className:"space-y-2 text-muted-foreground text-sm",children:I.solutions.map((e,t)=>n("li",{children:e},t))})]}),i("div",{className:"space-y-6",children:[i("div",{className:"space-y-3",children:[n("h2",{className:"font-bold text-2xl",children:"Contract Definition"}),n("p",{className:"text-muted-foreground text-sm",children:"Define your API contract once, generate clients for any language."}),n(g,{language:"typescript",filename:"src/contracts/api.contract.ts",code:`import { defineContract } from '@contractspec/lib.contracts-spec';
|
|
73
73
|
import { SchemaModel, ScalarTypeEnum } from '@contractspec/lib.schema';
|
|
74
74
|
|
|
75
75
|
export const ApiContract = defineContract({
|
|
@@ -139,7 +139,7 @@ export const ApiContract = defineContract({
|
|
|
139
139
|
description: 'User management API with authentication',
|
|
140
140
|
tags: ['users', 'authentication'],
|
|
141
141
|
},
|
|
142
|
-
});`})]}),i("div",{className:"space-y-3",children:[
|
|
142
|
+
});`})]}),i("div",{className:"space-y-3",children:[n("h2",{className:"font-bold text-2xl",children:"Generate Multiple Clients"}),n("p",{className:"text-muted-foreground text-sm",children:"Generate type-safe clients for any language from the same contract."}),n(g,{language:"bash",filename:"generate-clients",code:`# Generate all supported language clients
|
|
143
143
|
contractspec generate clients \\
|
|
144
144
|
--contract ./src/contracts/api.contract.ts \\
|
|
145
145
|
--output ./generated/clients \\
|
|
@@ -156,7 +156,7 @@ contractspec generate clients \\
|
|
|
156
156
|
# --with-types: Include TypeScript definitions
|
|
157
157
|
# --with-tests: Generate client test suites
|
|
158
158
|
# --with-docs: Include client documentation
|
|
159
|
-
# --framework: Use specific HTTP client framework`})]}),i("div",{className:"space-y-3",children:[
|
|
159
|
+
# --framework: Use specific HTTP client framework`})]}),i("div",{className:"space-y-3",children:[n("h2",{className:"font-bold text-2xl",children:"Generated Client Examples"}),n("p",{className:"text-muted-foreground text-sm",children:"Each generated client is fully type-safe and idiomatic."}),i("div",{className:"space-y-4",children:[i("div",{className:"card-subtle p-4",children:[n("h4",{className:"font-semibold text-lg",children:"TypeScript Client"}),n(g,{language:"typescript",filename:"generated/clients/typescript/index.ts",code:`import { MyAPIClient } from './client';
|
|
160
160
|
|
|
161
161
|
const client = new MyAPIClient({
|
|
162
162
|
baseUrl: 'https://api.example.com',
|
|
@@ -176,7 +176,7 @@ const newUser = await client.createUser({
|
|
|
176
176
|
|
|
177
177
|
// Full type inference
|
|
178
178
|
// users: GetUsersResponse
|
|
179
|
-
// newUser: CreateUserResponse`})]}),i("div",{className:"card-subtle p-4",children:[
|
|
179
|
+
// newUser: CreateUserResponse`})]}),i("div",{className:"card-subtle p-4",children:[n("h4",{className:"font-semibold text-lg",children:"Python Client"}),n(g,{language:"python",filename:"generated/clients/python/index.py",code:`from myapi_client import MyAPIClient
|
|
180
180
|
|
|
181
181
|
client = MyAPIClient(
|
|
182
182
|
base_url='https://api.example.com',
|
|
@@ -196,7 +196,7 @@ new_user = await client.create_user(
|
|
|
196
196
|
|
|
197
197
|
# Full type hints
|
|
198
198
|
# users: GetUsersResponse
|
|
199
|
-
# new_user: CreateUserResponse`})]}),i("div",{className:"card-subtle p-4",children:[
|
|
199
|
+
# new_user: CreateUserResponse`})]}),i("div",{className:"card-subtle p-4",children:[n("h4",{className:"font-semibold text-lg",children:"Go Client"}),n(g,{language:"go",filename:"generated/clients/go/client.go",code:`package main
|
|
200
200
|
|
|
201
201
|
import (
|
|
202
202
|
"context"
|
|
@@ -223,7 +223,7 @@ func main() {
|
|
|
223
223
|
// Full type checking at compile time
|
|
224
224
|
// users: *GetUsersResponse
|
|
225
225
|
// newUser: *CreateUserResponse
|
|
226
|
-
}`})]})]})]}),i("div",{className:"space-y-3",children:[
|
|
226
|
+
}`})]})]})]}),i("div",{className:"space-y-3",children:[n("h2",{className:"font-bold text-2xl",children:"Advanced Features"}),n("p",{className:"text-muted-foreground text-sm",children:"Generated clients include enterprise-grade features out of the box."}),n(g,{language:"typescript",filename:"client-features.ts",code:`// Advanced client features
|
|
227
227
|
const client = new MyAPIClient({
|
|
228
228
|
baseUrl: 'https://api.example.com',
|
|
229
229
|
apiKey: 'your-api-key',
|
|
@@ -266,7 +266,7 @@ const user2 = client.getUser({ id: '123' }); // Uses cached result
|
|
|
266
266
|
// Request cancellation
|
|
267
267
|
const controller = new AbortController();
|
|
268
268
|
const promise = client.getUsers({ page: 1, signal: controller.signal });
|
|
269
|
-
controller.abort(); // Cancels the request`})]})]}),i("div",{className:"flex items-center gap-4 pt-4",children:[i(
|
|
269
|
+
controller.abort(); // Cancels the request`})]})]}),i("div",{className:"flex items-center gap-4 pt-4",children:[i(q,{href:"/docs/guides/generate-docs-clients-schemas",className:"btn-primary",children:["Client Generation Guide ",n(D,{size:16})]}),n(q,{href:"/docs/intent/contract-first-api",className:"btn-ghost",children:"Contract-first API"})]})]})}import{openapiAlternativeBrief as w}from"@contractspec/bundle.library/components/docs/intent/intent-pages.docblocks";import{SeoOptimizer as V}from"@contractspec/lib.content-gen/seo";import{CodeBlock as E}from"@contractspec/lib.design-system";import K from"@contractspec/lib.ui-link";import{ChevronRight as F}from"lucide-react";import{jsx as a,jsxs as c}from"react/jsx-runtime";var Xe=new V().optimize(w);function L(){return c("div",{className:"space-y-8",children:[c("div",{className:"space-y-3",children:[a("h1",{className:"font-bold text-4xl",children:w.title}),a("p",{className:"text-lg text-muted-foreground",children:w.summary})]}),c("div",{className:"card-subtle space-y-4 p-6",children:[a("h2",{className:"font-bold text-2xl",children:"OpenAPI Limitations"}),a("ul",{className:"space-y-2 text-muted-foreground text-sm",children:w.problems.map((e,t)=>a("li",{children:e},t))})]}),c("div",{className:"card-subtle space-y-4 p-6",children:[a("h2",{className:"font-bold text-2xl",children:"ContractSpec Advantages"}),a("ul",{className:"space-y-2 text-muted-foreground text-sm",children:w.solutions.map((e,t)=>a("li",{children:e},t))})]}),c("div",{className:"space-y-6",children:[c("div",{className:"space-y-3",children:[a("h2",{className:"font-bold text-2xl",children:"Comparison: OpenAPI vs ContractSpec"}),a("p",{className:"text-muted-foreground text-sm",children:"Key differences between OpenAPI documentation and ContractSpec executable contracts."}),c("div",{className:"grid gap-6 md:grid-cols-2",children:[c("div",{className:"card-subtle space-y-3 p-4",children:[a("h3",{className:"font-semibold text-lg",children:"OpenAPI"}),c("ul",{className:"space-y-1 text-muted-foreground text-sm",children:[a("li",{children:"• Documentation specification only"}),a("li",{children:"• No runtime validation"}),a("li",{children:"• Manual code generation"}),a("li",{children:"• Type safety requires tools"}),a("li",{children:"• Separate schemas from documentation"})]})]}),c("div",{className:"card-subtle space-y-3 p-4",children:[a("h3",{className:"font-semibold text-lg",children:"ContractSpec"}),c("ul",{className:"space-y-1 text-muted-foreground text-sm",children:[a("li",{children:"• Executable contracts"}),a("li",{children:"• Built-in runtime validation"}),a("li",{children:"• Automatic code generation"}),a("li",{children:"• Type-safe by default"}),a("li",{children:"• Unified spec and implementation"})]})]})]})]}),c("div",{className:"space-y-3",children:[a("h2",{className:"font-bold text-2xl",children:"Export from Contracts"}),a("p",{className:"text-muted-foreground text-sm",children:"Generate OpenAPI documentation from ContractSpec for existing tooling."}),a(E,{language:"bash",filename:"export-openapi",code:`# From ContractSpec contracts
|
|
270
270
|
contractspec openapi export \\
|
|
271
271
|
--registry ./src/contracts/registry.ts \\
|
|
272
272
|
--format yaml \\
|
|
@@ -274,7 +274,7 @@ contractspec openapi export \\
|
|
|
274
274
|
|
|
275
275
|
# Compare: Manual OpenAPI vs Generated
|
|
276
276
|
# Manual: Write OpenAPI by hand, maintain separately
|
|
277
|
-
# Generated: Single source of truth, always in sync`})]}),c("div",{className:"space-y-3",children:[
|
|
277
|
+
# Generated: Single source of truth, always in sync`})]}),c("div",{className:"space-y-3",children:[a("h2",{className:"font-bold text-2xl",children:"Beyond Documentation"}),a("p",{className:"text-muted-foreground text-sm",children:"ContractSpec provides more than just API documentation."}),a(E,{language:"typescript",filename:"multi-output-example.ts",code:`// One contract, multiple outputs
|
|
278
278
|
import { UserApiContract } from './contracts/user-api.contract';
|
|
279
279
|
|
|
280
280
|
// Generated outputs
|
|
@@ -304,7 +304,7 @@ export const outputs = {
|
|
|
304
304
|
|
|
305
305
|
// Type definitions
|
|
306
306
|
types: UserApiContract.toTypescript(),
|
|
307
|
-
};`})]})]}),c("div",{className:"flex items-center gap-4 pt-4",children:[c(
|
|
307
|
+
};`})]})]}),c("div",{className:"flex items-center gap-4 pt-4",children:[c(K,{href:"/docs/guides/generate-docs-clients-schemas",className:"btn-primary",children:["Generate from Contracts ",a(F,{size:16})]}),a(K,{href:"/docs/intent/generate-client-from-schema",className:"btn-ghost",children:"Client Generation"})]})]})}import{schemaValidationTypescriptBrief as P}from"@contractspec/bundle.library/components/docs/intent/intent-pages.docblocks";import{SeoOptimizer as C}from"@contractspec/lib.content-gen/seo";import{CodeBlock as T}from"@contractspec/lib.design-system";import M from"@contractspec/lib.ui-link";import{ChevronRight as k}from"lucide-react";import{jsx as o,jsxs as y}from"react/jsx-runtime";var Le=new C().optimize(P);function B(){return y("div",{className:"space-y-8",children:[y("div",{className:"space-y-3",children:[o("h1",{className:"font-bold text-4xl",children:P.title}),o("p",{className:"text-lg text-muted-foreground",children:P.summary})]}),y("div",{className:"card-subtle space-y-4 p-6",children:[o("h2",{className:"font-bold text-2xl",children:"Validation Pain Points"}),o("ul",{className:"space-y-2 text-muted-foreground text-sm",children:P.problems.map((e,t)=>o("li",{children:e},t))})]}),y("div",{className:"card-subtle space-y-4 p-6",children:[o("h2",{className:"font-bold text-2xl",children:"Type-safe Solutions"}),o("ul",{className:"space-y-2 text-muted-foreground text-sm",children:P.solutions.map((e,t)=>o("li",{children:e},t))})]}),y("div",{className:"space-y-6",children:[y("div",{className:"space-y-3",children:[o("h2",{className:"font-bold text-2xl",children:"Contract Schema"}),o("p",{className:"text-muted-foreground text-sm",children:"Define data models with automatic TypeScript generation."}),o(T,{language:"typescript",filename:"src/contracts/user.schema.ts",code:`import { SchemaModel, ScalarTypeEnum } from '@contractspec/lib.schema';
|
|
308
308
|
|
|
309
309
|
export const UserSchema = new SchemaModel({
|
|
310
310
|
type: 'object',
|
|
@@ -346,7 +346,7 @@ export const UserSchema = new SchemaModel({
|
|
|
346
346
|
name: 'User',
|
|
347
347
|
description: 'User account information',
|
|
348
348
|
},
|
|
349
|
-
});`})]}),y("div",{className:"space-y-3",children:[o("h2",{className:"font-bold text-2xl",children:"Generated Types"}),o("p",{className:"text-muted-foreground text-sm",children:"TypeScript types are automatically generated with proper validation."}),o(
|
|
349
|
+
});`})]}),y("div",{className:"space-y-3",children:[o("h2",{className:"font-bold text-2xl",children:"Generated Types"}),o("p",{className:"text-muted-foreground text-sm",children:"TypeScript types are automatically generated with proper validation."}),o(T,{language:"typescript",filename:"generated/types/user.ts",code:`// Auto-generated from UserSchema
|
|
350
350
|
export interface User {
|
|
351
351
|
id: string;
|
|
352
352
|
email: string;
|
|
@@ -371,7 +371,7 @@ export function validateUser(data: unknown): User {
|
|
|
371
371
|
|
|
372
372
|
export function isUser(data: unknown): data is User {
|
|
373
373
|
return UserSchemaZod.safeParse(data).success;
|
|
374
|
-
}`})]}),y("div",{className:"space-y-3",children:[o("h2",{className:"font-bold text-2xl",children:"Runtime Validation"}),o("p",{className:"text-muted-foreground text-sm",children:"Use generated validation in your API handlers with zero boilerplate."}),o(
|
|
374
|
+
}`})]}),y("div",{className:"space-y-3",children:[o("h2",{className:"font-bold text-2xl",children:"Runtime Validation"}),o("p",{className:"text-muted-foreground text-sm",children:"Use generated validation in your API handlers with zero boilerplate."}),o(T,{language:"typescript",filename:"src/handlers/user-handler.ts",code:`import { validateUser } from '../generated/types/user';
|
|
375
375
|
|
|
376
376
|
export async function createUserHandler(request: Request) {
|
|
377
377
|
try {
|
|
@@ -399,7 +399,7 @@ export async function createUserHandler(request: Request) {
|
|
|
399
399
|
|
|
400
400
|
throw error;
|
|
401
401
|
}
|
|
402
|
-
}`})]})]}),y("div",{className:"flex items-center gap-4 pt-4",children:[y(
|
|
402
|
+
}`})]})]}),y("div",{className:"flex items-center gap-4 pt-4",children:[y(M,{href:"/docs/guides/spec-validation-and-typing",className:"btn-primary",children:["Type Safety Guide ",o(k,{size:16})]}),o(M,{href:"/docs/intent/generate-client-from-schema",className:"btn-ghost",children:"Client Generation"})]})]})}import{specDrivenDevelopmentBrief as h}from"@contractspec/bundle.library/components/docs/intent/intent-pages.docblocks";import{SeoOptimizer as s}from"@contractspec/lib.content-gen/seo";import{CodeBlock as N}from"@contractspec/lib.design-system";import W from"@contractspec/lib.ui-link";import{ChevronRight as j}from"lucide-react";import{jsx as l,jsxs as m}from"react/jsx-runtime";var tt=new s().optimize(h);function x(){return m("div",{className:"space-y-8",children:[m("div",{className:"space-y-3",children:[l("h1",{className:"font-bold text-4xl",children:h.title}),l("p",{className:"text-lg text-muted-foreground",children:h.summary})]}),m("div",{className:"card-subtle space-y-4 p-6",children:[l("h2",{className:"font-bold text-2xl",children:"Why Spec-driven?"}),l("ul",{className:"space-y-2 text-muted-foreground text-sm",children:h.problems.map((e,t)=>l("li",{children:e},t))})]}),m("div",{className:"card-subtle space-y-4 p-6",children:[l("h2",{className:"font-bold text-2xl",children:"Benefits"}),l("ul",{className:"space-y-2 text-muted-foreground text-sm",children:h.solutions.map((e,t)=>l("li",{children:e},t))})]}),m("div",{className:"space-y-6",children:[m("div",{className:"space-y-3",children:[l("h2",{className:"font-bold text-2xl",children:"Feature Specification Example"}),l("p",{className:"text-muted-foreground text-sm",children:"Define a complete feature with operations, events, and data models."}),l(N,{language:"typescript",filename:"src/contracts/user-management.feature.ts",code:`import { defineFeature } from '@contractspec/lib.contracts-spec/features';
|
|
403
403
|
import { defineOperation } from '@contractspec/lib.contracts-spec/operations';
|
|
404
404
|
import { defineEvent } from '@contractspec/lib.contracts-spec/events';
|
|
405
405
|
import { SchemaModel, ScalarTypeEnum } from '@contractspec/lib.schema';
|
|
@@ -471,4 +471,4 @@ export const UserManagementFeature = defineFeature({
|
|
|
471
471
|
version: '1.0.0',
|
|
472
472
|
description: 'Complete user management with operations and events',
|
|
473
473
|
},
|
|
474
|
-
});`})]}),m("div",{className:"space-y-3",children:[l("h2",{className:"font-bold text-2xl",children:"Generate Type-safe Implementations"}),l("p",{className:"text-muted-foreground text-sm",children:"Generate validation, types, and API handlers from your feature."}),l(
|
|
474
|
+
});`})]}),m("div",{className:"space-y-3",children:[l("h2",{className:"font-bold text-2xl",children:"Generate Type-safe Implementations"}),l("p",{className:"text-muted-foreground text-sm",children:"Generate validation, types, and API handlers from your feature."}),l(N,{language:"bash",filename:"generate-from-feature",code:"contractspec generate \\\n --input ./src/contracts/user-management.feature.ts \\\n --output ./generated/user-management"})]})]}),m("div",{className:"flex items-center gap-4 pt-4",children:[m(W,{href:"/docs/guides/spec-validation-and-typing",className:"btn-primary",children:["Type Safety Guide ",l(j,{size:16})]}),l(W,{href:"/docs/intent/deterministic-codegen",className:"btn-ghost",children:"Deterministic Codegen"})]})]})}export{x as SpecDrivenDevelopmentPage,B as SchemaValidationTypescriptPage,L as OpenapiAlternativePage,z as GenerateClientFromSchemaPage,_ as DeterministicCodegenPage,U as ContractFirstApiPage};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
var e={title:"Contract-first API",summary:"Design APIs by writing contracts first, then generate consistent implementations across frameworks.",problems:["API drift between frontend and backend","Inconsistent error handling across endpoints","Documentation becomes outdated quickly","Manual OpenAPI maintenance is error-prone"],solutions:["Single source of truth for API contracts","Generate OpenAPI and SDKs from contracts","Type-safe request/response validation","Always-in-sync documentation"],audience:{role:"API developers",industry:"Software development",maturity:"scaleup"},callToAction:"Start with a simple operation contract",references:[{label:"Next.js One Endpoint Guide",url:"/docs/guides/nextjs-one-endpoint"},{label:"API Reference",url:"/docs/api"}]},
|
|
1
|
+
var i=Object.defineProperty;var r=(e)=>e;function a(e,t){this[e]=r.bind(null,t)}var o=(e,t)=>{for(var n in t)i(e,n,{get:t[n],enumerable:!0,configurable:!0,set:a.bind(t,n)})};var s=(e,t)=>()=>(e&&(t=e(e=0)),t);var l={title:"Contract-first API",summary:"Design APIs by writing contracts first, then generate consistent implementations across frameworks.",problems:["API drift between frontend and backend","Inconsistent error handling across endpoints","Documentation becomes outdated quickly","Manual OpenAPI maintenance is error-prone"],solutions:["Single source of truth for API contracts","Generate OpenAPI and SDKs from contracts","Type-safe request/response validation","Always-in-sync documentation"],audience:{role:"API developers",industry:"Software development",maturity:"scaleup"},callToAction:"Start with a simple operation contract",references:[{label:"Next.js One Endpoint Guide",url:"/docs/guides/nextjs-one-endpoint"},{label:"API Reference",url:"/docs/api"}]},d={title:"Spec-driven development",summary:"Build features by writing specifications first, then generate type-safe implementations.",problems:["Feature requirements are ambiguous","Frontend and backend implementations diverge","Testing lacks clear contract definitions","Code reviews focus on style instead of behavior"],solutions:["Executable specifications as single source of truth","Generate type-safe clients from specs","Automated contract testing","Clear behavior contracts for teams"],audience:{role:"Development teams",industry:"Software engineering",maturity:"enterprise"},callToAction:"Define your first feature spec",references:[{label:"Spec Validation + Typing Guide",url:"/docs/guides/spec-validation-and-typing"},{label:"Core Contracts",url:"/docs/core-contracts"}]},p={title:"Deterministic codegen",summary:"Regenerate code from contracts without breaking existing functionality or losing customizations.",problems:["Generated code conflicts with manual changes","Regeneration loses custom business logic","Teams avoid regeneration after customization","Code migration between versions is risky"],solutions:["Clear separation of generated vs hand-written code","Incremental regeneration with conflict detection","Protected zones for custom logic","Automatic migration paths"],audience:{role:"Platform engineers",industry:"Developer tools",maturity:"scaleup"},callToAction:"Try deterministic regeneration",references:[{label:"Generate Docs + Clients Guide",url:"/docs/guides/generate-docs-clients-schemas"},{label:"CLI Reference",url:"/docs/getting-started/cli"}]},u={title:"Schema validation TypeScript",summary:"Generate TypeScript types from contracts and validate data at runtime with zero overhead.",problems:["Runtime type validation is boilerplate-heavy","Type definitions drift from schemas","Validation logic scattered across codebase","Poor error messages for invalid data"],solutions:["Auto-generated TypeScript from contracts","Zod schemas for runtime validation","Type-safe validation with clear errors","Single source of schema truth"],audience:{role:"TypeScript developers",industry:"Web development",maturity:"early"},callToAction:"Generate typed contracts now",references:[{label:"Type Safety Guide",url:"/docs/guides/spec-validation-and-typing"},{label:"Schema Reference",url:"/docs/schemas"}]},m={title:"OpenAPI alternative",summary:"A spec-first approach that goes beyond OpenAPI with executable contracts and code generation.",problems:["OpenAPI is documentation-only","No type safety from OpenAPI specs","Manual SDK generation is complex","Cannot validate implementations against OpenAPI"],solutions:["Executable contracts with validation","Generate multiple outputs from one spec","Type-safe by default","Built-in testing and validation"],audience:{role:"API architects",industry:"Enterprise software",maturity:"enterprise"},callToAction:"Compare with OpenAPI approach",references:[{label:"Generate OpenAPI from Contracts",url:"/docs/guides/generate-docs-clients-schemas"},{label:"Contract vs OpenAPI",url:"/docs/comparison/openapi"}]},f={title:"Generate client from schema",summary:"Automatically generate type-safe API clients in any language from your contracts.",problems:["Writing API clients is repetitive","Manual clients have type mismatches","Keeping clients in sync with APIs","Language-specific client maintenance"],solutions:["Generate clients for multiple languages","Type-safe request/response handling","Automatic client updates from contracts","Consistent error handling across languages"],audience:{role:"Full-stack developers",industry:"Software development",maturity:"scaleup"},callToAction:"Generate your first API client",references:[{label:"Client Generation Guide",url:"/docs/guides/generate-docs-clients-schemas"},{label:"Supported Languages",url:"/docs/integrations"}]};export{d as specDrivenDevelopmentBrief,u as schemaValidationTypescriptBrief,m as openapiAlternativeBrief,f as generateClientFromSchemaBrief,p as deterministicCodegenBrief,l as contractFirstApiBrief};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
var F=Object.defineProperty;var G=(A)=>A;function H(A,B){this[A]=G.bind(null,B)}var J=(A,B)=>{for(var D in B)F(A,D,{get:B[D],enumerable:!0,configurable:!0,set:H.bind(B,D)})};var K=(A,B)=>()=>(A&&(B=A(A=0)),B);import E from"@contractspec/lib.ui-link";import{ChevronRight as I}from"lucide-react";import{jsx as q,jsxs as z}from"react/jsx-runtime";function P(){return z("div",{className:"space-y-8",children:[z("div",{className:"space-y-4",children:[q("h1",{className:"font-bold text-4xl",children:"Knowledge Categories"}),q("p",{className:"text-muted-foreground",children:"ContractSpec classifies knowledge into four categories based on trust level, source authority, and intended use. This classification determines how knowledge can be used in workflows, policy decisions, and agent responses."})]}),z("div",{className:"space-y-4",children:[q("h2",{className:"font-bold text-2xl",children:"The four categories"}),q("div",{className:"overflow-x-auto rounded-lg border border-border bg-background/50 p-4 font-mono text-muted-foreground text-sm",children:q("pre",{children:`type KnowledgeCategory =
|
|
2
2
|
| "canonical" // Internal ground truth
|
|
3
3
|
| "operational" // Internal operational docs
|
|
4
4
|
| "external" // Third-party reference
|
|
@@ -82,4 +82,4 @@ import A from"@contractspec/lib.ui-link";import{ChevronRight as B}from"lucide-re
|
|
|
82
82
|
"session:user-uploads",
|
|
83
83
|
"session:form-drafts"
|
|
84
84
|
]
|
|
85
|
-
}`})})]}),q("div",{className:"card-subtle border-red-500/30 bg-red-500/10 p-3",children:z("p",{className:"text-red-300 text-sm",children:[q("strong",{children:"⚠️ Critical:"})," Ephemeral knowledge is never used for policy decisions, compliance checks, or any authoritative purpose."]})})]})]})]}),z("div",{className:"space-y-4",children:[q("h2",{className:"font-bold text-2xl",children:"Category comparison"}),q("div",{className:"overflow-x-auto rounded-lg border border-border/50",children:z("table",{className:"w-full text-left text-sm",children:[q("thead",{className:"bg-card/50",children:z("tr",{className:"border-border/50 border-b",children:[q("th",{className:"px-4 py-3 font-semibold",children:"Feature"}),q("th",{className:"px-4 py-3 font-semibold",children:"Canonical"}),q("th",{className:"px-4 py-3 font-semibold",children:"Operational"}),q("th",{className:"px-4 py-3 font-semibold",children:"External"}),q("th",{className:"px-4 py-3 font-semibold",children:"Ephemeral"})]})}),z("tbody",{className:"divide-y divide-border/50",children:[z("tr",{children:[q("td",{className:"px-4 py-3 font-semibold",children:"Trust Level"}),q("td",{className:"px-4 py-3",children:"Highest"}),q("td",{className:"px-4 py-3",children:"High"}),q("td",{className:"px-4 py-3",children:"Medium"}),q("td",{className:"px-4 py-3",children:"Low"})]}),z("tr",{children:[q("td",{className:"px-4 py-3 font-semibold",children:"Policy Impact"}),q("td",{className:"px-4 py-3",children:"✅ Can drive decisions"}),q("td",{className:"px-4 py-3",children:"⚠️ Can inform"}),q("td",{className:"px-4 py-3",children:"❌ Reference only"}),q("td",{className:"px-4 py-3",children:"❌ Never used"})]}),z("tr",{children:[q("td",{className:"px-4 py-3 font-semibold",children:"Mutability"}),q("td",{className:"px-4 py-3",children:"Immutable"}),q("td",{className:"px-4 py-3",children:"Mutable"}),q("td",{className:"px-4 py-3",children:"Mutable"}),q("td",{className:"px-4 py-3",children:"Temporary"})]}),z("tr",{children:[q("td",{className:"px-4 py-3 font-semibold",children:"Retention"}),q("td",{className:"px-4 py-3",children:"Permanent"}),q("td",{className:"px-4 py-3",children:"Long-term"}),q("td",{className:"px-4 py-3",children:"Long-term"}),q("td",{className:"px-4 py-3",children:"Short-term"})]}),z("tr",{children:[q("td",{className:"px-4 py-3 font-semibold",children:"Audit Level"}),q("td",{className:"px-4 py-3",children:"Full audit"}),q("td",{className:"px-4 py-3",children:"Full audit"}),q("td",{className:"px-4 py-3",children:"Basic audit"}),q("td",{className:"px-4 py-3",children:"Minimal audit"})]})]})]})})]}),z("div",{className:"space-y-4",children:[q("h2",{className:"font-bold text-2xl",children:"Best practices"}),z("ul",{className:"list-inside list-disc space-y-2 text-muted-foreground",children:[q("li",{children:"Use canonical for anything that affects policy, pricing, or compliance"}),q("li",{children:"Use operational for context that helps but doesn't dictate decisions"}),q("li",{children:"Use external for reference material that's helpful but not authoritative"}),q("li",{children:"Use ephemeral for temporary working memory that shouldn't persist"}),q("li",{children:"Never mix categories in a single knowledge space - keep them separate"}),q("li",{children:"Document the category and purpose of each knowledge space clearly"})]})]}),z("div",{className:"flex items-center gap-4 pt-4",children:[q(
|
|
85
|
+
}`})})]}),q("div",{className:"card-subtle border-red-500/30 bg-red-500/10 p-3",children:z("p",{className:"text-red-300 text-sm",children:[q("strong",{children:"⚠️ Critical:"})," Ephemeral knowledge is never used for policy decisions, compliance checks, or any authoritative purpose."]})})]})]})]}),z("div",{className:"space-y-4",children:[q("h2",{className:"font-bold text-2xl",children:"Category comparison"}),q("div",{className:"overflow-x-auto rounded-lg border border-border/50",children:z("table",{className:"w-full text-left text-sm",children:[q("thead",{className:"bg-card/50",children:z("tr",{className:"border-border/50 border-b",children:[q("th",{className:"px-4 py-3 font-semibold",children:"Feature"}),q("th",{className:"px-4 py-3 font-semibold",children:"Canonical"}),q("th",{className:"px-4 py-3 font-semibold",children:"Operational"}),q("th",{className:"px-4 py-3 font-semibold",children:"External"}),q("th",{className:"px-4 py-3 font-semibold",children:"Ephemeral"})]})}),z("tbody",{className:"divide-y divide-border/50",children:[z("tr",{children:[q("td",{className:"px-4 py-3 font-semibold",children:"Trust Level"}),q("td",{className:"px-4 py-3",children:"Highest"}),q("td",{className:"px-4 py-3",children:"High"}),q("td",{className:"px-4 py-3",children:"Medium"}),q("td",{className:"px-4 py-3",children:"Low"})]}),z("tr",{children:[q("td",{className:"px-4 py-3 font-semibold",children:"Policy Impact"}),q("td",{className:"px-4 py-3",children:"✅ Can drive decisions"}),q("td",{className:"px-4 py-3",children:"⚠️ Can inform"}),q("td",{className:"px-4 py-3",children:"❌ Reference only"}),q("td",{className:"px-4 py-3",children:"❌ Never used"})]}),z("tr",{children:[q("td",{className:"px-4 py-3 font-semibold",children:"Mutability"}),q("td",{className:"px-4 py-3",children:"Immutable"}),q("td",{className:"px-4 py-3",children:"Mutable"}),q("td",{className:"px-4 py-3",children:"Mutable"}),q("td",{className:"px-4 py-3",children:"Temporary"})]}),z("tr",{children:[q("td",{className:"px-4 py-3 font-semibold",children:"Retention"}),q("td",{className:"px-4 py-3",children:"Permanent"}),q("td",{className:"px-4 py-3",children:"Long-term"}),q("td",{className:"px-4 py-3",children:"Long-term"}),q("td",{className:"px-4 py-3",children:"Short-term"})]}),z("tr",{children:[q("td",{className:"px-4 py-3 font-semibold",children:"Audit Level"}),q("td",{className:"px-4 py-3",children:"Full audit"}),q("td",{className:"px-4 py-3",children:"Full audit"}),q("td",{className:"px-4 py-3",children:"Basic audit"}),q("td",{className:"px-4 py-3",children:"Minimal audit"})]})]})]})})]}),z("div",{className:"space-y-4",children:[q("h2",{className:"font-bold text-2xl",children:"Best practices"}),z("ul",{className:"list-inside list-disc space-y-2 text-muted-foreground",children:[q("li",{children:"Use canonical for anything that affects policy, pricing, or compliance"}),q("li",{children:"Use operational for context that helps but doesn't dictate decisions"}),q("li",{children:"Use external for reference material that's helpful but not authoritative"}),q("li",{children:"Use ephemeral for temporary working memory that shouldn't persist"}),q("li",{children:"Never mix categories in a single knowledge space - keep them separate"}),q("li",{children:"Document the category and purpose of each knowledge space clearly"})]})]}),z("div",{className:"flex items-center gap-4 pt-4",children:[q(E,{href:"/docs/knowledge",className:"btn-ghost",children:"Back to Knowledge"}),z(E,{href:"/docs/knowledge/spaces",className:"btn-primary",children:["Knowledge Spaces ",q(I,{size:16})]})]})]})}export{P as KnowledgeCategoriesPage};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
var B=Object.defineProperty;var D=(v)=>v;function E(v,y){this[v]=D.bind(null,y)}var F=(v,y)=>{for(var z in y)B(v,z,{get:y[z],enumerable:!0,configurable:!0,set:E.bind(y,z)})};var G=(v,y)=>()=>(v&&(y=v(v=0)),y);import A from"@contractspec/lib.ui-link";import{jsx as h,jsxs as q}from"react/jsx-runtime";function J(){return q("div",{className:"space-y-8",children:[q("div",{className:"space-y-4",children:[h("h1",{className:"font-bold text-4xl",children:"Knowledge Examples"}),h("p",{className:"text-muted-foreground",children:"Real-world examples of how different applications use knowledge spaces to power intelligent workflows and agents."})]}),q("div",{className:"space-y-6",children:[q("div",{className:"space-y-4",children:[h("h2",{className:"font-bold text-2xl",children:"Example 1: ArtisanOS Support Agent"}),q("p",{className:"text-muted-foreground",children:[h("strong",{children:"Context:"})," ArtisanOS needs a support agent that can answer product questions using official documentation and learn from past support tickets."]}),h("div",{className:"overflow-x-auto rounded-lg border border-border bg-background/50 p-4 font-mono text-muted-foreground text-sm",children:h("pre",{children:`// Knowledge spaces
|
|
2
2
|
knowledgeSpaces: [
|
|
3
3
|
{
|
|
4
4
|
id: "product-canon",
|
|
@@ -166,4 +166,4 @@ steps:
|
|
|
166
166
|
Question: \${input.question}
|
|
167
167
|
Internal: \${steps.search-internal-guides.output.results}
|
|
168
168
|
Stripe: \${steps.search-stripe-docs.output.results}
|
|
169
|
-
Past: \${steps.search-past-questions.output.results}`})})]})]}),q("div",{className:"space-y-4",children:[h("h2",{className:"font-bold text-2xl",children:"Key patterns"}),q("ul",{className:"list-inside list-disc space-y-2 text-muted-foreground",children:[q("li",{children:[h("strong",{children:"Canonical first"})," - Always search canonical spaces before operational or external"]}),q("li",{children:[h("strong",{children:"Category-aware prompts"})," - Tell the LLM which sources are authoritative vs reference"]}),q("li",{children:[h("strong",{children:"Multi-space queries"})," - Combine results from multiple spaces for richer context"]}),q("li",{children:[h("strong",{children:"Limit results"})," - Use appropriate limits (3-5) to avoid token overflow"]}),q("li",{children:[h("strong",{children:"Audit everything"})," - Log all knowledge queries for debugging and compliance"]})]})]}),q("div",{className:"flex items-center gap-4 pt-4",children:[h(
|
|
169
|
+
Past: \${steps.search-past-questions.output.results}`})})]})]}),q("div",{className:"space-y-4",children:[h("h2",{className:"font-bold text-2xl",children:"Key patterns"}),q("ul",{className:"list-inside list-disc space-y-2 text-muted-foreground",children:[q("li",{children:[h("strong",{children:"Canonical first"})," - Always search canonical spaces before operational or external"]}),q("li",{children:[h("strong",{children:"Category-aware prompts"})," - Tell the LLM which sources are authoritative vs reference"]}),q("li",{children:[h("strong",{children:"Multi-space queries"})," - Combine results from multiple spaces for richer context"]}),q("li",{children:[h("strong",{children:"Limit results"})," - Use appropriate limits (3-5) to avoid token overflow"]}),q("li",{children:[h("strong",{children:"Audit everything"})," - Log all knowledge queries for debugging and compliance"]})]})]}),q("div",{className:"flex items-center gap-4 pt-4",children:[h(A,{href:"/docs/knowledge/sources",className:"btn-ghost",children:"Previous: Sources"}),h(A,{href:"/docs/architecture/knowledge-binding",className:"btn-ghost",children:"Knowledge Binding"})]})]})}export{J as KnowledgeExamplesPage};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import
|
|
1
|
+
var i=Object.defineProperty;var l=(e)=>e;function s(e,a){this[e]=l.bind(null,a)}var c=(e,a)=>{for(var n in a)i(e,n,{get:a[n],enumerable:!0,configurable:!0,set:s.bind(a,n)})};var p=(e,a)=>()=>(e&&(a=e(e=0)),a);import r from"@contractspec/lib.ui-link";import{jsx as t,jsxs as o}from"react/jsx-runtime";var d=[{title:"Categories",body:"Separate canonical truth from operational notes, external material, and ephemeral working context.",href:"/docs/knowledge/categories"},{title:"Spaces",body:"Define the storage and retrieval boundary for each knowledge domain.",href:"/docs/knowledge/spaces"},{title:"Sources",body:"Connect tenant-owned sources explicitly instead of letting context leak in through prompts alone.",href:"/docs/knowledge/sources"},{title:"Examples",body:"See how support, compliance, and product systems consume trusted knowledge at runtime.",href:"/docs/knowledge/examples"}];function g(){return o("div",{className:"space-y-10",children:[o("div",{className:"space-y-3",children:[t("p",{className:"editorial-kicker",children:"Operate"}),t("h1",{className:"font-serif text-4xl tracking-[-0.04em] md:text-5xl",children:"Knowledge is part of the runtime, not a sidecar prompt hack."}),t("p",{className:"max-w-3xl text-lg text-muted-foreground leading-8",children:"When AI-native systems depend on external context, the context needs the same discipline as the rest of the stack. ContractSpec treats knowledge as typed, bounded, and governable so teams can reason about trust, isolation, and retrieval behavior."})]}),t("section",{className:"editorial-panel space-y-5",children:o("div",{className:"space-y-2",children:[t("h2",{className:"font-serif text-3xl tracking-[-0.03em]",children:"How knowledge enters the system"}),o("ul",{className:"editorial-list",children:[o("li",{children:[t("span",{className:"editorial-list-marker"}),t("span",{children:"Define the trust category and retrieval expectations first."})]}),o("li",{children:[t("span",{className:"editorial-list-marker"}),t("span",{children:"Bind tenant-owned sources explicitly to those knowledge spaces."})]}),o("li",{children:[t("span",{className:"editorial-list-marker"}),t("span",{children:"Consume knowledge through capabilities and workflows, not through invisible prompt assumptions."})]})]})]})}),t("div",{className:"grid gap-4 md:grid-cols-2",children:d.map((e)=>o(r,{href:e.href,className:"editorial-panel",children:[t("h2",{className:"font-semibold text-xl",children:e.title}),t("p",{className:"mt-2 text-muted-foreground text-sm leading-7",children:e.body})]},e.href))})]})}export{g as KnowledgeOverviewPage};
|