@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,5 +1,5 @@
|
|
|
1
1
|
// @bun
|
|
2
|
-
import{deterministicCodegenBrief as
|
|
2
|
+
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)
|
|
3
3
|
export class UserService {
|
|
4
4
|
async createUser(input: CreateUserInput): Promise<CreateUserOutput> {
|
|
5
5
|
// Custom validation and business rules
|
|
@@ -36,4 +36,4 @@ export const createUserHandler = wrapOperationHandler(
|
|
|
36
36
|
operationName: 'createUser',
|
|
37
37
|
errorMapper: mapToStandardErrors,
|
|
38
38
|
}
|
|
39
|
-
);`})]}),
|
|
39
|
+
);`})]}),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,5 +1,5 @@
|
|
|
1
1
|
// @bun
|
|
2
|
-
import{generateClientFromSchemaBrief as
|
|
2
|
+
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';
|
|
3
3
|
import { SchemaModel, ScalarTypeEnum } from '@contractspec/lib.schema';
|
|
4
4
|
|
|
5
5
|
export const ApiContract = defineContract({
|
|
@@ -69,7 +69,7 @@ export const ApiContract = defineContract({
|
|
|
69
69
|
description: 'User management API with authentication',
|
|
70
70
|
tags: ['users', 'authentication'],
|
|
71
71
|
},
|
|
72
|
-
});`})]}),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(
|
|
72
|
+
});`})]}),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
|
|
73
73
|
contractspec generate clients \\
|
|
74
74
|
--contract ./src/contracts/api.contract.ts \\
|
|
75
75
|
--output ./generated/clients \\
|
|
@@ -86,7 +86,7 @@ contractspec generate clients \\
|
|
|
86
86
|
# --with-types: Include TypeScript definitions
|
|
87
87
|
# --with-tests: Generate client test suites
|
|
88
88
|
# --with-docs: Include client documentation
|
|
89
|
-
# --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(
|
|
89
|
+
# --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';
|
|
90
90
|
|
|
91
91
|
const client = new MyAPIClient({
|
|
92
92
|
baseUrl: 'https://api.example.com',
|
|
@@ -106,7 +106,7 @@ const newUser = await client.createUser({
|
|
|
106
106
|
|
|
107
107
|
// Full type inference
|
|
108
108
|
// users: GetUsersResponse
|
|
109
|
-
// newUser: CreateUserResponse`})]}),w("div",{className:"card-subtle p-4",children:[q("h4",{className:"font-semibold text-lg",children:"Python Client"}),q(
|
|
109
|
+
// 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
|
|
110
110
|
|
|
111
111
|
client = MyAPIClient(
|
|
112
112
|
base_url='https://api.example.com',
|
|
@@ -126,7 +126,7 @@ new_user = await client.create_user(
|
|
|
126
126
|
|
|
127
127
|
# Full type hints
|
|
128
128
|
# users: GetUsersResponse
|
|
129
|
-
# new_user: CreateUserResponse`})]}),w("div",{className:"card-subtle p-4",children:[q("h4",{className:"font-semibold text-lg",children:"Go Client"}),q(
|
|
129
|
+
# 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
|
|
130
130
|
|
|
131
131
|
import (
|
|
132
132
|
"context"
|
|
@@ -153,7 +153,7 @@ func main() {
|
|
|
153
153
|
// Full type checking at compile time
|
|
154
154
|
// users: *GetUsersResponse
|
|
155
155
|
// newUser: *CreateUserResponse
|
|
156
|
-
}`})]})]})]}),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(
|
|
156
|
+
}`})]})]})]}),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
|
|
157
157
|
const client = new MyAPIClient({
|
|
158
158
|
baseUrl: 'https://api.example.com',
|
|
159
159
|
apiKey: 'your-api-key',
|
|
@@ -196,4 +196,4 @@ const user2 = client.getUser({ id: '123' }); // Uses cached result
|
|
|
196
196
|
// Request cancellation
|
|
197
197
|
const controller = new AbortController();
|
|
198
198
|
const promise = client.getUsers({ page: 1, signal: controller.signal });
|
|
199
|
-
controller.abort(); // Cancels the request`})]})]}),w("div",{className:"flex items-center gap-4 pt-4",children:[w(
|
|
199
|
+
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,5 +1,5 @@
|
|
|
1
1
|
// @bun
|
|
2
|
-
import{openapiAlternativeBrief as
|
|
2
|
+
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:"\u2022 Documentation specification only"}),q("li",{children:"\u2022 No runtime validation"}),q("li",{children:"\u2022 Manual code generation"}),q("li",{children:"\u2022 Type safety requires tools"}),q("li",{children:"\u2022 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:"\u2022 Executable contracts"}),q("li",{children:"\u2022 Built-in runtime validation"}),q("li",{children:"\u2022 Automatic code generation"}),q("li",{children:"\u2022 Type-safe by default"}),q("li",{children:"\u2022 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
|
|
3
3
|
contractspec openapi export \\
|
|
4
4
|
--registry ./src/contracts/registry.ts \\
|
|
5
5
|
--format yaml \\
|
|
@@ -7,7 +7,7 @@ contractspec openapi export \\
|
|
|
7
7
|
|
|
8
8
|
# Compare: Manual OpenAPI vs Generated
|
|
9
9
|
# Manual: Write OpenAPI by hand, maintain separately
|
|
10
|
-
# 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(
|
|
10
|
+
# 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
|
|
11
11
|
import { UserApiContract } from './contracts/user-api.contract';
|
|
12
12
|
|
|
13
13
|
// Generated outputs
|
|
@@ -37,4 +37,4 @@ export const outputs = {
|
|
|
37
37
|
|
|
38
38
|
// Type definitions
|
|
39
39
|
types: UserApiContract.toTypescript(),
|
|
40
|
-
};`})]})]}),w("div",{className:"flex items-center gap-4 pt-4",children:[w(
|
|
40
|
+
};`})]})]}),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,5 +1,5 @@
|
|
|
1
1
|
// @bun
|
|
2
|
-
import{schemaValidationTypescriptBrief as
|
|
2
|
+
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';
|
|
3
3
|
|
|
4
4
|
export const UserSchema = new SchemaModel({
|
|
5
5
|
type: 'object',
|
|
@@ -41,7 +41,7 @@ export const UserSchema = new SchemaModel({
|
|
|
41
41
|
name: 'User',
|
|
42
42
|
description: 'User account information',
|
|
43
43
|
},
|
|
44
|
-
});`})]}),
|
|
44
|
+
});`})]}),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
|
|
45
45
|
export interface User {
|
|
46
46
|
id: string;
|
|
47
47
|
email: string;
|
|
@@ -66,7 +66,7 @@ export function validateUser(data: unknown): User {
|
|
|
66
66
|
|
|
67
67
|
export function isUser(data: unknown): data is User {
|
|
68
68
|
return UserSchemaZod.safeParse(data).success;
|
|
69
|
-
}`})]}),
|
|
69
|
+
}`})]}),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';
|
|
70
70
|
|
|
71
71
|
export async function createUserHandler(request: Request) {
|
|
72
72
|
try {
|
|
@@ -94,4 +94,4 @@ export async function createUserHandler(request: Request) {
|
|
|
94
94
|
|
|
95
95
|
throw error;
|
|
96
96
|
}
|
|
97
|
-
}`})]})]}),
|
|
97
|
+
}`})]})]}),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,5 +1,5 @@
|
|
|
1
1
|
// @bun
|
|
2
|
-
import{specDrivenDevelopmentBrief as
|
|
2
|
+
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';
|
|
3
3
|
import { defineOperation } from '@contractspec/lib.contracts-spec/operations';
|
|
4
4
|
import { defineEvent } from '@contractspec/lib.contracts-spec/events';
|
|
5
5
|
import { SchemaModel, ScalarTypeEnum } from '@contractspec/lib.schema';
|
|
@@ -71,4 +71,4 @@ export const UserManagementFeature = defineFeature({
|
|
|
71
71
|
version: '1.0.0',
|
|
72
72
|
description: 'Complete user management with operations and events',
|
|
73
73
|
},
|
|
74
|
-
});`})]}),
|
|
74
|
+
});`})]}),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,5 +1,5 @@
|
|
|
1
1
|
// @bun
|
|
2
|
-
var
|
|
2
|
+
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';
|
|
3
3
|
import { SchemaModel, ScalarTypeEnum } from '@contractspec/lib.schema';
|
|
4
4
|
|
|
5
5
|
export const CreateUserOperation = defineOperation({
|
|
@@ -33,7 +33,7 @@ export const CreateUserOperation = defineOperation({
|
|
|
33
33
|
tags: ['users', 'auth'],
|
|
34
34
|
description: 'Create a new user account with email and password',
|
|
35
35
|
},
|
|
36
|
-
});`})]}),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(
|
|
36
|
+
});`})]}),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)
|
|
37
37
|
export class UserService {
|
|
38
38
|
async createUser(input: CreateUserInput): Promise<CreateUserOutput> {
|
|
39
39
|
// Custom validation and business rules
|
|
@@ -70,7 +70,7 @@ export const createUserHandler = wrapOperationHandler(
|
|
|
70
70
|
operationName: 'createUser',
|
|
71
71
|
errorMapper: mapToStandardErrors,
|
|
72
72
|
}
|
|
73
|
-
);`})]}),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(
|
|
73
|
+
);`})]}),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';
|
|
74
74
|
import { SchemaModel, ScalarTypeEnum } from '@contractspec/lib.schema';
|
|
75
75
|
|
|
76
76
|
export const ApiContract = defineContract({
|
|
@@ -140,7 +140,7 @@ export const ApiContract = defineContract({
|
|
|
140
140
|
description: 'User management API with authentication',
|
|
141
141
|
tags: ['users', 'authentication'],
|
|
142
142
|
},
|
|
143
|
-
});`})]}),i("div",{className:"space-y-3",children:[
|
|
143
|
+
});`})]}),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
|
|
144
144
|
contractspec generate clients \\
|
|
145
145
|
--contract ./src/contracts/api.contract.ts \\
|
|
146
146
|
--output ./generated/clients \\
|
|
@@ -157,7 +157,7 @@ contractspec generate clients \\
|
|
|
157
157
|
# --with-types: Include TypeScript definitions
|
|
158
158
|
# --with-tests: Generate client test suites
|
|
159
159
|
# --with-docs: Include client documentation
|
|
160
|
-
# --framework: Use specific HTTP client framework`})]}),i("div",{className:"space-y-3",children:[
|
|
160
|
+
# --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';
|
|
161
161
|
|
|
162
162
|
const client = new MyAPIClient({
|
|
163
163
|
baseUrl: 'https://api.example.com',
|
|
@@ -177,7 +177,7 @@ const newUser = await client.createUser({
|
|
|
177
177
|
|
|
178
178
|
// Full type inference
|
|
179
179
|
// users: GetUsersResponse
|
|
180
|
-
// newUser: CreateUserResponse`})]}),i("div",{className:"card-subtle p-4",children:[
|
|
180
|
+
// 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
|
|
181
181
|
|
|
182
182
|
client = MyAPIClient(
|
|
183
183
|
base_url='https://api.example.com',
|
|
@@ -197,7 +197,7 @@ new_user = await client.create_user(
|
|
|
197
197
|
|
|
198
198
|
# Full type hints
|
|
199
199
|
# users: GetUsersResponse
|
|
200
|
-
# new_user: CreateUserResponse`})]}),i("div",{className:"card-subtle p-4",children:[
|
|
200
|
+
# 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
|
|
201
201
|
|
|
202
202
|
import (
|
|
203
203
|
"context"
|
|
@@ -224,7 +224,7 @@ func main() {
|
|
|
224
224
|
// Full type checking at compile time
|
|
225
225
|
// users: *GetUsersResponse
|
|
226
226
|
// newUser: *CreateUserResponse
|
|
227
|
-
}`})]})]})]}),i("div",{className:"space-y-3",children:[
|
|
227
|
+
}`})]})]})]}),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
|
|
228
228
|
const client = new MyAPIClient({
|
|
229
229
|
baseUrl: 'https://api.example.com',
|
|
230
230
|
apiKey: 'your-api-key',
|
|
@@ -267,7 +267,7 @@ const user2 = client.getUser({ id: '123' }); // Uses cached result
|
|
|
267
267
|
// Request cancellation
|
|
268
268
|
const controller = new AbortController();
|
|
269
269
|
const promise = client.getUsers({ page: 1, signal: controller.signal });
|
|
270
|
-
controller.abort(); // Cancels the request`})]})]}),i("div",{className:"flex items-center gap-4 pt-4",children:[i(
|
|
270
|
+
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:"\u2022 Documentation specification only"}),a("li",{children:"\u2022 No runtime validation"}),a("li",{children:"\u2022 Manual code generation"}),a("li",{children:"\u2022 Type safety requires tools"}),a("li",{children:"\u2022 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:"\u2022 Executable contracts"}),a("li",{children:"\u2022 Built-in runtime validation"}),a("li",{children:"\u2022 Automatic code generation"}),a("li",{children:"\u2022 Type-safe by default"}),a("li",{children:"\u2022 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
|
|
271
271
|
contractspec openapi export \\
|
|
272
272
|
--registry ./src/contracts/registry.ts \\
|
|
273
273
|
--format yaml \\
|
|
@@ -275,7 +275,7 @@ contractspec openapi export \\
|
|
|
275
275
|
|
|
276
276
|
# Compare: Manual OpenAPI vs Generated
|
|
277
277
|
# Manual: Write OpenAPI by hand, maintain separately
|
|
278
|
-
# Generated: Single source of truth, always in sync`})]}),c("div",{className:"space-y-3",children:[
|
|
278
|
+
# 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
|
|
279
279
|
import { UserApiContract } from './contracts/user-api.contract';
|
|
280
280
|
|
|
281
281
|
// Generated outputs
|
|
@@ -305,7 +305,7 @@ export const outputs = {
|
|
|
305
305
|
|
|
306
306
|
// Type definitions
|
|
307
307
|
types: UserApiContract.toTypescript(),
|
|
308
|
-
};`})]})]}),c("div",{className:"flex items-center gap-4 pt-4",children:[c(
|
|
308
|
+
};`})]})]}),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';
|
|
309
309
|
|
|
310
310
|
export const UserSchema = new SchemaModel({
|
|
311
311
|
type: 'object',
|
|
@@ -347,7 +347,7 @@ export const UserSchema = new SchemaModel({
|
|
|
347
347
|
name: 'User',
|
|
348
348
|
description: 'User account information',
|
|
349
349
|
},
|
|
350
|
-
});`})]}),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(
|
|
350
|
+
});`})]}),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
|
|
351
351
|
export interface User {
|
|
352
352
|
id: string;
|
|
353
353
|
email: string;
|
|
@@ -372,7 +372,7 @@ export function validateUser(data: unknown): User {
|
|
|
372
372
|
|
|
373
373
|
export function isUser(data: unknown): data is User {
|
|
374
374
|
return UserSchemaZod.safeParse(data).success;
|
|
375
|
-
}`})]}),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(
|
|
375
|
+
}`})]}),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';
|
|
376
376
|
|
|
377
377
|
export async function createUserHandler(request: Request) {
|
|
378
378
|
try {
|
|
@@ -400,7 +400,7 @@ export async function createUserHandler(request: Request) {
|
|
|
400
400
|
|
|
401
401
|
throw error;
|
|
402
402
|
}
|
|
403
|
-
}`})]})]}),y("div",{className:"flex items-center gap-4 pt-4",children:[y(
|
|
403
|
+
}`})]})]}),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';
|
|
404
404
|
import { defineOperation } from '@contractspec/lib.contracts-spec/operations';
|
|
405
405
|
import { defineEvent } from '@contractspec/lib.contracts-spec/events';
|
|
406
406
|
import { SchemaModel, ScalarTypeEnum } from '@contractspec/lib.schema';
|
|
@@ -472,4 +472,4 @@ export const UserManagementFeature = defineFeature({
|
|
|
472
472
|
version: '1.0.0',
|
|
473
473
|
description: 'Complete user management with operations and events',
|
|
474
474
|
},
|
|
475
|
-
});`})]}),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(
|
|
475
|
+
});`})]}),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,2 +1,2 @@
|
|
|
1
1
|
// @bun
|
|
2
|
-
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"}]},
|
|
2
|
+
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,5 +1,5 @@
|
|
|
1
1
|
// @bun
|
|
2
|
-
|
|
2
|
+
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 =
|
|
3
3
|
| "canonical" // Internal ground truth
|
|
4
4
|
| "operational" // Internal operational docs
|
|
5
5
|
| "external" // Third-party reference
|
|
@@ -83,4 +83,4 @@ import A from"@contractspec/lib.ui-link";import{ChevronRight as B}from"lucide-re
|
|
|
83
83
|
"session:user-uploads",
|
|
84
84
|
"session:form-drafts"
|
|
85
85
|
]
|
|
86
|
-
}`})})]}),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:"\u26A0\uFE0F 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:"\u2705 Can drive decisions"}),q("td",{className:"px-4 py-3",children:"\u26A0\uFE0F Can inform"}),q("td",{className:"px-4 py-3",children:"\u274C Reference only"}),q("td",{className:"px-4 py-3",children:"\u274C 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(
|
|
86
|
+
}`})})]}),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:"\u26A0\uFE0F 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:"\u2705 Can drive decisions"}),q("td",{className:"px-4 py-3",children:"\u26A0\uFE0F Can inform"}),q("td",{className:"px-4 py-3",children:"\u274C Reference only"}),q("td",{className:"px-4 py-3",children:"\u274C 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,5 +1,5 @@
|
|
|
1
1
|
// @bun
|
|
2
|
-
|
|
2
|
+
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
|
|
3
3
|
knowledgeSpaces: [
|
|
4
4
|
{
|
|
5
5
|
id: "product-canon",
|
|
@@ -167,4 +167,4 @@ steps:
|
|
|
167
167
|
Question: \${input.question}
|
|
168
168
|
Internal: \${steps.search-internal-guides.output.results}
|
|
169
169
|
Stripe: \${steps.search-stripe-docs.output.results}
|
|
170
|
-
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(
|
|
170
|
+
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,2 +1,2 @@
|
|
|
1
1
|
// @bun
|
|
2
|
-
import
|
|
2
|
+
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};
|