@contractspec/bundle.library 3.8.9 → 3.8.11
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 +606 -594
- package/CHANGELOG.md +68 -0
- package/dist/application/context-storage/index.js +1 -28
- package/dist/application/index.js +13 -2133
- package/dist/application/mcp/cliMcp.js +4 -452
- package/dist/application/mcp/common.js +1 -193
- package/dist/application/mcp/contractsMcp.js +2 -549
- package/dist/application/mcp/contractsMcpResources.js +2 -123
- package/dist/application/mcp/contractsMcpTools.js +1 -199
- package/dist/application/mcp/docsMcp.catalog.js +3 -381
- package/dist/application/mcp/docsMcp.data.js +1 -147
- package/dist/application/mcp/docsMcp.js +6 -1039
- package/dist/application/mcp/docsMcp.prompts.js +6 -521
- package/dist/application/mcp/docsMcp.reference.js +3 -235
- package/dist/application/mcp/docsMcp.resources.js +3 -519
- package/dist/application/mcp/docsMcp.tools.js +3 -518
- package/dist/application/mcp/index.js +13 -2106
- package/dist/application/mcp/internalMcp.js +2 -410
- package/dist/application/mcp/normalizeMcpRequest.js +1 -21
- package/dist/application/mcp/providerRankingMcp.js +1 -530
- package/dist/bundles/LibraryBundle.js +1 -138
- package/dist/bundles/index.js +1 -138
- package/dist/components/docs/DocsIndexPage.js +2 -912
- package/dist/components/docs/advanced/AdvancedMCPPage.js +4 -271
- package/dist/components/docs/advanced/AdvancedOverlayEditorPage.js +1 -107
- package/dist/components/docs/advanced/AdvancedRenderersPage.js +2 -118
- package/dist/components/docs/advanced/AdvancedSpecExperimentsPage.js +4 -92
- package/dist/components/docs/advanced/AdvancedTelemetryPage.js +2 -373
- package/dist/components/docs/advanced/AdvancedWorkflowMonitoringPage.js +2 -99
- package/dist/components/docs/advanced/index.js +10 -1055
- package/dist/components/docs/architecture/ArchitectureAppConfigPage.js +6 -243
- package/dist/components/docs/architecture/ArchitectureControlPlanePage.js +3 -160
- package/dist/components/docs/architecture/ArchitectureIntegrationBindingPage.js +7 -259
- package/dist/components/docs/architecture/ArchitectureKnowledgeBindingPage.js +6 -374
- package/dist/components/docs/architecture/ArchitectureMultiTenancyPage.js +2 -166
- package/dist/components/docs/architecture/ArchitectureOverviewPage.js +1 -143
- package/dist/components/docs/architecture/index.js +20 -1340
- package/dist/components/docs/comparison/ComparisonAutomationPlatformsPage.js +1 -245
- package/dist/components/docs/comparison/ComparisonEnterprisePlatformsPage.js +1 -230
- package/dist/components/docs/comparison/ComparisonInternalToolBuildersPage.js +1 -245
- package/dist/components/docs/comparison/ComparisonOverviewPage.js +1 -202
- package/dist/components/docs/comparison/ComparisonWindmillPage.js +1 -254
- package/dist/components/docs/comparison/ComparisonWorkflowEnginesPage.js +1 -339
- package/dist/components/docs/comparison/index.js +1 -1510
- package/dist/components/docs/docsManifest.js +1 -611
- package/dist/components/docs/docsManifest.test.d.ts +1 -0
- package/dist/components/docs/ecosystem/IntegrationsPage.js +2 -103
- package/dist/components/docs/ecosystem/PluginsPage.js +13 -179
- package/dist/components/docs/ecosystem/RegistryPage.js +7 -100
- package/dist/components/docs/ecosystem/TemplatesPage.js +3 -141
- package/dist/components/docs/ecosystem/ecosystem.docblocks.js +2 -48
- package/dist/components/docs/ecosystem/index.js +23 -569
- package/dist/components/docs/examples/DocsExamplesPage.js +4 -124
- package/dist/components/docs/examples/ExampleShowcasePage.js +4 -244
- package/dist/components/docs/examples/exampleShowcaseData.js +4 -39
- package/dist/components/docs/examples/index.js +4 -330
- package/dist/components/docs/generated/docs-index.generated.js +1 -5
- package/dist/components/docs/generated/index.js +1 -74
- package/dist/components/docs/generated/loader.js +1 -74
- package/dist/components/docs/getting-started/CLIPage.js +4 -271
- package/dist/components/docs/getting-started/CompatibilityPage.js +1 -173
- package/dist/components/docs/getting-started/DataViewTutorialPage.js +4 -134
- package/dist/components/docs/getting-started/DeveloperToolsPage.js +1 -194
- package/dist/components/docs/getting-started/HelloWorldPage.js +5 -183
- package/dist/components/docs/getting-started/InstallationPage.js +3 -154
- package/dist/components/docs/getting-started/StartHerePage.js +2 -129
- package/dist/components/docs/getting-started/TroubleshootingPage.js +2 -168
- package/dist/components/docs/getting-started/VSCodeExtensionPage.js +1 -432
- package/dist/components/docs/getting-started/getting-started.docblocks.js +4 -41
- package/dist/components/docs/getting-started/index.js +18 -1869
- package/dist/components/docs/guides/GuideCIDiffGatingPage.js +2 -196
- package/dist/components/docs/guides/GuideConnectInRepoPage.d.ts +1 -0
- package/dist/components/docs/guides/GuideConnectInRepoPage.js +44 -0
- package/dist/components/docs/guides/GuideContractTypesPage.js +6 -541
- package/dist/components/docs/guides/GuideDocsPipelinePage.js +3 -207
- package/dist/components/docs/guides/GuideFirstModuleBundlePage.d.ts +1 -0
- package/dist/components/docs/guides/GuideFirstModuleBundlePage.js +76 -0
- package/dist/components/docs/guides/GuideGenerateDocsClientsSchemasPage.js +2 -209
- package/dist/components/docs/guides/GuideHostBuilderWorkbenchPage.d.ts +1 -0
- package/dist/components/docs/guides/GuideHostBuilderWorkbenchPage.js +70 -0
- package/dist/components/docs/guides/GuideImportExistingCodebasesPage.js +8 -754
- package/dist/components/docs/guides/GuideNextjsOneEndpointPage.js +6 -268
- package/dist/components/docs/guides/GuideSpecValidationTypingPage.js +4 -196
- package/dist/components/docs/guides/GuidesIndexPage.js +2 -169
- package/dist/components/docs/guides/guides.docblocks.js +11 -75
- package/dist/components/docs/guides/index.d.ts +3 -0
- package/dist/components/docs/guides/index.js +213 -2428
- package/dist/components/docs/index.js +542 -24297
- package/dist/components/docs/integrations/IntegrationsCircuitBreakersPage.js +2 -42
- package/dist/components/docs/integrations/IntegrationsElevenLabsPage.js +3 -105
- package/dist/components/docs/integrations/IntegrationsGithubPage.js +3 -142
- package/dist/components/docs/integrations/IntegrationsGmailPage.js +3 -109
- package/dist/components/docs/integrations/IntegrationsGoogleCalendarPage.js +3 -79
- package/dist/components/docs/integrations/IntegrationsHealthRoutingPage.js +3 -146
- package/dist/components/docs/integrations/IntegrationsMistralPage.js +5 -150
- package/dist/components/docs/integrations/IntegrationsOpenAIPage.js +5 -140
- package/dist/components/docs/integrations/IntegrationsOverviewPage.js +1 -160
- package/dist/components/docs/integrations/IntegrationsPostmarkPage.js +4 -218
- package/dist/components/docs/integrations/IntegrationsPowensPage.js +4 -300
- package/dist/components/docs/integrations/IntegrationsQdrantPage.js +5 -111
- package/dist/components/docs/integrations/IntegrationsResendPage.js +3 -102
- package/dist/components/docs/integrations/IntegrationsS3Page.js +4 -124
- package/dist/components/docs/integrations/IntegrationsSlackPage.js +3 -144
- package/dist/components/docs/integrations/IntegrationsSpecModelPage.js +7 -290
- package/dist/components/docs/integrations/IntegrationsStripePage.js +6 -327
- package/dist/components/docs/integrations/IntegrationsTwilioPage.js +3 -128
- package/dist/components/docs/integrations/IntegrationsWhatsappMetaPage.js +2 -146
- package/dist/components/docs/integrations/IntegrationsWhatsappTwilioPage.js +2 -156
- package/dist/components/docs/integrations/index.js +52 -3100
- package/dist/components/docs/intent/ContractFirstApiPage.js +2 -126
- package/dist/components/docs/intent/DeterministicCodegenPage.js +2 -148
- package/dist/components/docs/intent/GenerateClientFromSchemaPage.js +7 -207
- package/dist/components/docs/intent/OpenapiAlternativePage.js +3 -201
- package/dist/components/docs/intent/SchemaValidationTypescriptPage.js +4 -144
- package/dist/components/docs/intent/SpecDrivenDevelopmentPage.js +2 -126
- package/dist/components/docs/intent/index.js +15 -1135
- package/dist/components/docs/intent/intent-pages.docblocks.js +1 -201
- package/dist/components/docs/knowledge/KnowledgeCategoriesPage.js +6 -750
- package/dist/components/docs/knowledge/KnowledgeExamplesPage.js +4 -175
- package/dist/components/docs/knowledge/KnowledgeOverviewPage.js +1 -116
- package/dist/components/docs/knowledge/KnowledgeSourcesPage.js +8 -391
- package/dist/components/docs/knowledge/KnowledgeSpacesPage.js +6 -302
- package/dist/components/docs/knowledge/index.js +21 -1730
- package/dist/components/docs/libraries/LibrariesAccessibilityPage.js +3 -198
- package/dist/components/docs/libraries/LibrariesAiAgentPage.js +3 -141
- package/dist/components/docs/libraries/LibrariesAnalyticsPage.js +4 -80
- package/dist/components/docs/libraries/LibrariesContentGenPage.js +2 -100
- package/dist/components/docs/libraries/LibrariesContractsPage.js +2 -284
- package/dist/components/docs/libraries/LibrariesCostTrackingPage.js +3 -112
- package/dist/components/docs/libraries/LibrariesDataBackendPage.js +2 -166
- package/dist/components/docs/libraries/LibrariesDataViewsPage.js +3 -186
- package/dist/components/docs/libraries/LibrariesDesignSystemPage.js +4 -279
- package/dist/components/docs/libraries/LibrariesEvolutionPage.js +4 -127
- package/dist/components/docs/libraries/LibrariesGraphQLPage.js +2 -173
- package/dist/components/docs/libraries/LibrariesGrowthPage.js +3 -88
- package/dist/components/docs/libraries/LibrariesMultiTenancyPage.js +3 -108
- package/dist/components/docs/libraries/LibrariesObservabilityPage.js +5 -130
- package/dist/components/docs/libraries/LibrariesOverlayEnginePage.js +4 -110
- package/dist/components/docs/libraries/LibrariesOverviewPage.js +1 -170
- package/dist/components/docs/libraries/LibrariesPersonalizationPage.js +4 -114
- package/dist/components/docs/libraries/LibrariesProgressiveDeliveryPage.js +3 -132
- package/dist/components/docs/libraries/LibrariesResiliencePage.js +4 -120
- package/dist/components/docs/libraries/LibrariesRuntimePage.js +2 -200
- package/dist/components/docs/libraries/LibrariesSLOPage.js +3 -116
- package/dist/components/docs/libraries/LibrariesSchemaPage.js +3 -273
- package/dist/components/docs/libraries/LibrariesSupportBotPage.js +3 -134
- package/dist/components/docs/libraries/LibrariesTestingPage.js +3 -133
- package/dist/components/docs/libraries/LibrariesUIKitPage.js +2 -230
- package/dist/components/docs/libraries/LibrariesWorkflowComposerPage.js +3 -88
- package/dist/components/docs/libraries/LibrariesWorkflowsPage.js +2 -181
- package/dist/components/docs/libraries/index.js +54 -4147
- package/dist/components/docs/manifesto/ManifestoPage.js +1 -86
- package/dist/components/docs/ops/AutoEvolutionOpsPage.js +2 -132
- package/dist/components/docs/ops/DistributedTracingOpsPage.js +2 -71
- package/dist/components/docs/ops/index.js +3 -202
- package/dist/components/docs/ops/ops-lifecycle.docblocks.js +3 -38
- package/dist/components/docs/ops/ops-runbooks-a.docblocks.js +3 -94
- package/dist/components/docs/ops/ops-runbooks-b.docblocks.js +3 -76
- package/dist/components/docs/ops/ops-slo-tenant.docblocks.js +3 -76
- package/dist/components/docs/ops/ops-top.docs.js +2 -17
- package/dist/components/docs/ops/ops.docs.js +10 -302
- package/dist/components/docs/product/product.docblocks.js +5 -72
- package/dist/components/docs/reference/DocsMarkdownContent.js +2 -196
- package/dist/components/docs/reference/DocsReferenceContent.js +3 -256
- package/dist/components/docs/reference/DocsReferenceIndexClient.js +2 -127
- package/dist/components/docs/reference/DocsReferenceIndexPage.js +2 -206
- package/dist/components/docs/reference/DocsReferencePage.js +3 -265
- package/dist/components/docs/reference/docsMarkdownParser.js +2 -92
- package/dist/components/docs/reference/index.js +4 -470
- package/dist/components/docs/safety/SafetyAuditingPage.js +2 -350
- package/dist/components/docs/safety/SafetyMigrationsPage.js +2 -359
- package/dist/components/docs/safety/SafetyOverviewPage.js +1 -101
- package/dist/components/docs/safety/SafetyPDPPage.js +2 -301
- package/dist/components/docs/safety/SafetySecurityTrustPage.js +1 -206
- package/dist/components/docs/safety/SafetySigningPage.js +3 -90
- package/dist/components/docs/safety/SafetyTenantIsolationPage.js +2 -79
- package/dist/components/docs/safety/index.js +7 -1480
- package/dist/components/docs/shared/StudioPrompt.js +1 -31
- package/dist/components/docs/specs/SpecsBuilderControlPlanePage.d.ts +1 -0
- package/dist/components/docs/specs/SpecsBuilderControlPlanePage.js +34 -0
- package/dist/components/docs/specs/SpecsCapabilitiesPage.js +2 -158
- package/dist/components/docs/specs/SpecsConnectPage.d.ts +1 -0
- package/dist/components/docs/specs/SpecsConnectPage.js +8 -0
- package/dist/components/docs/specs/SpecsDataViewsPage.js +2 -260
- package/dist/components/docs/specs/SpecsModuleBundlesPage.d.ts +1 -0
- package/dist/components/docs/specs/SpecsModuleBundlesPage.js +67 -0
- package/dist/components/docs/specs/SpecsOverlaysPage.js +2 -372
- package/dist/components/docs/specs/SpecsOverviewPage.js +1 -186
- package/dist/components/docs/specs/SpecsPolicyPage.js +3 -420
- package/dist/components/docs/specs/SpecsWorkflowsPage.js +2 -312
- package/dist/components/docs/specs/index.d.ts +3 -0
- package/dist/components/docs/specs/index.js +109 -1702
- package/dist/components/docs/studio/StudioBYOKPage.js +1 -26
- package/dist/components/docs/studio/StudioDeploymentsPage.js +1 -26
- package/dist/components/docs/studio/StudioGettingStartedPage.js +1 -26
- package/dist/components/docs/studio/StudioIntegrationsPage.js +1 -26
- package/dist/components/docs/studio/StudioOverviewPage.js +1 -157
- package/dist/components/docs/studio/StudioVisualBuilderPage.js +1 -26
- package/dist/components/docs/studio/index.js +1 -282
- package/dist/components/docs/tech/contracts/tech-docs.docblocks.js +2 -19
- package/dist/components/integrations/index.js +2 -600
- package/dist/components/integrations/molecules/IntegrationCard.js +1 -100
- package/dist/components/integrations/organisms/IntegrationMarketplace.js +1 -214
- package/dist/components/integrations/organisms/IntegrationSettings.js +2 -284
- package/dist/components/integrations/organisms/KnowledgeSourceList.js +1 -103
- package/dist/components/legal/PrivacyTemplate.js +1 -1025
- package/dist/components/legal/TermsTemplate.js +1 -941
- package/dist/components/legal/index.js +1 -1963
- package/dist/components/shared/FeatureGateNotice.js +1 -38
- package/dist/components/shared/index.js +1 -38
- package/dist/components/shell/WorkspaceHeader.js +1 -100
- package/dist/components/shell/WorkspaceProjectShellLayout.js +1 -222
- package/dist/components/shell/WorkspaceShellRenderer.js +1 -228
- package/dist/components/shell/WorkspaceSidebar.js +1 -68
- package/dist/components/shell/index.js +1 -287
- package/dist/components/templates/engine/index.js +1 -39
- package/dist/components/templates/index.js +11 -965
- package/dist/components/templates/messaging/ConversationList.js +2 -83
- package/dist/components/templates/messaging/MessageComposer.js +4 -150
- package/dist/components/templates/messaging/MessageThread.js +3 -83
- package/dist/components/templates/messaging/MessagingWorkspace.js +5 -265
- package/dist/components/templates/messaging/index.js +5 -269
- package/dist/components/templates/recipes/LanguageSwitcher.js +1 -16
- package/dist/components/templates/recipes/RecipeCard.js +1 -80
- package/dist/components/templates/recipes/RecipeDetail.js +1 -74
- package/dist/components/templates/recipes/RecipeList.js +3 -245
- package/dist/components/templates/recipes/index.js +3 -248
- package/dist/components/templates/todos/FilterBar.js +1 -107
- package/dist/components/templates/todos/TaskForm.js +2 -158
- package/dist/components/templates/todos/TaskItem.js +1 -77
- package/dist/components/templates/todos/TaskList.js +5 -449
- package/dist/components/templates/todos/index.js +5 -452
- package/dist/config/contractspec-blueprint.js +1 -123
- package/dist/config/contractspec-branding.js +1 -44
- package/dist/config/contractspec-routes.js +1 -24
- package/dist/config/index.js +1 -126
- package/dist/features/contracts-registry.js +1 -178
- package/dist/features/docs/docs.contracts.js +1 -17
- package/dist/features/docs/index.js +1 -17
- package/dist/features/docs.feature.js +1 -33
- package/dist/features/index.js +1 -315
- package/dist/features/mcp.feature.js +1 -30
- package/dist/features/presentations.feature.js +1 -33
- package/dist/features/registry.js +1 -116
- package/dist/index.js +556 -28580
- package/dist/infrastructure/elysia/index.js +1 -35
- package/dist/infrastructure/elysia/logger.js +1 -35
- package/dist/infrastructure/index.js +1 -35
- package/dist/libs/email/client.js +1 -114
- package/dist/libs/email/contact.js +12 -165
- package/dist/libs/email/newsletter.js +6 -167
- package/dist/libs/email/types.js +0 -2
- package/dist/libs/email/utils.js +2 -8
- package/dist/libs/email/waitlist-application.js +28 -209
- package/dist/libs/email/waitlist.js +6 -167
- package/dist/libs/email.js +46 -363
- package/dist/libs/posthog/client.js +1 -63
- package/dist/libs/posthog/native.js +1 -23
- package/dist/libs/posthog/server.js +1 -13
- package/dist/libs/pricing-examples.js +1 -18
- package/dist/node/application/context-storage/index.js +1 -28
- package/dist/node/application/index.js +13 -2133
- package/dist/node/application/mcp/cliMcp.js +4 -452
- package/dist/node/application/mcp/common.js +1 -193
- package/dist/node/application/mcp/contractsMcp.js +2 -549
- package/dist/node/application/mcp/contractsMcpResources.js +2 -123
- package/dist/node/application/mcp/contractsMcpTools.js +1 -199
- package/dist/node/application/mcp/docsMcp.catalog.js +3 -381
- package/dist/node/application/mcp/docsMcp.data.js +1 -147
- package/dist/node/application/mcp/docsMcp.js +6 -1039
- package/dist/node/application/mcp/docsMcp.prompts.js +6 -521
- package/dist/node/application/mcp/docsMcp.reference.js +3 -235
- package/dist/node/application/mcp/docsMcp.resources.js +3 -519
- package/dist/node/application/mcp/docsMcp.tools.js +3 -518
- package/dist/node/application/mcp/index.js +13 -2106
- package/dist/node/application/mcp/internalMcp.js +2 -410
- package/dist/node/application/mcp/normalizeMcpRequest.js +1 -21
- package/dist/node/application/mcp/providerRankingMcp.js +1 -530
- package/dist/node/bundles/LibraryBundle.js +1 -138
- package/dist/node/bundles/index.js +1 -138
- package/dist/node/components/docs/DocsIndexPage.js +2 -912
- package/dist/node/components/docs/advanced/AdvancedMCPPage.js +4 -271
- package/dist/node/components/docs/advanced/AdvancedOverlayEditorPage.js +1 -107
- package/dist/node/components/docs/advanced/AdvancedRenderersPage.js +2 -118
- package/dist/node/components/docs/advanced/AdvancedSpecExperimentsPage.js +4 -92
- package/dist/node/components/docs/advanced/AdvancedTelemetryPage.js +2 -373
- package/dist/node/components/docs/advanced/AdvancedWorkflowMonitoringPage.js +2 -99
- package/dist/node/components/docs/advanced/index.js +10 -1055
- package/dist/node/components/docs/architecture/ArchitectureAppConfigPage.js +6 -243
- package/dist/node/components/docs/architecture/ArchitectureControlPlanePage.js +3 -160
- package/dist/node/components/docs/architecture/ArchitectureIntegrationBindingPage.js +7 -259
- package/dist/node/components/docs/architecture/ArchitectureKnowledgeBindingPage.js +6 -374
- package/dist/node/components/docs/architecture/ArchitectureMultiTenancyPage.js +2 -166
- package/dist/node/components/docs/architecture/ArchitectureOverviewPage.js +1 -143
- package/dist/node/components/docs/architecture/index.js +20 -1340
- package/dist/node/components/docs/comparison/ComparisonAutomationPlatformsPage.js +1 -245
- package/dist/node/components/docs/comparison/ComparisonEnterprisePlatformsPage.js +1 -230
- package/dist/node/components/docs/comparison/ComparisonInternalToolBuildersPage.js +1 -245
- package/dist/node/components/docs/comparison/ComparisonOverviewPage.js +1 -202
- package/dist/node/components/docs/comparison/ComparisonWindmillPage.js +1 -254
- package/dist/node/components/docs/comparison/ComparisonWorkflowEnginesPage.js +1 -339
- package/dist/node/components/docs/comparison/index.js +1 -1510
- package/dist/node/components/docs/docsManifest.js +1 -611
- package/dist/node/components/docs/ecosystem/IntegrationsPage.js +2 -103
- package/dist/node/components/docs/ecosystem/PluginsPage.js +13 -179
- package/dist/node/components/docs/ecosystem/RegistryPage.js +7 -100
- package/dist/node/components/docs/ecosystem/TemplatesPage.js +3 -141
- package/dist/node/components/docs/ecosystem/ecosystem.docblocks.js +2 -48
- package/dist/node/components/docs/ecosystem/index.js +23 -569
- package/dist/node/components/docs/examples/DocsExamplesPage.js +4 -124
- package/dist/node/components/docs/examples/ExampleShowcasePage.js +4 -244
- package/dist/node/components/docs/examples/exampleShowcaseData.js +4 -39
- package/dist/node/components/docs/examples/index.js +4 -330
- package/dist/node/components/docs/generated/docs-index.generated.js +1 -5
- package/dist/node/components/docs/generated/index.js +1 -74
- package/dist/node/components/docs/generated/loader.js +1 -74
- package/dist/node/components/docs/getting-started/CLIPage.js +4 -271
- package/dist/node/components/docs/getting-started/CompatibilityPage.js +1 -173
- package/dist/node/components/docs/getting-started/DataViewTutorialPage.js +4 -134
- package/dist/node/components/docs/getting-started/DeveloperToolsPage.js +1 -194
- package/dist/node/components/docs/getting-started/HelloWorldPage.js +5 -183
- package/dist/node/components/docs/getting-started/InstallationPage.js +3 -154
- package/dist/node/components/docs/getting-started/StartHerePage.js +2 -129
- package/dist/node/components/docs/getting-started/TroubleshootingPage.js +2 -168
- package/dist/node/components/docs/getting-started/VSCodeExtensionPage.js +1 -432
- package/dist/node/components/docs/getting-started/getting-started.docblocks.js +4 -41
- package/dist/node/components/docs/getting-started/index.js +18 -1869
- package/dist/node/components/docs/guides/GuideCIDiffGatingPage.js +2 -196
- package/dist/node/components/docs/guides/GuideConnectInRepoPage.js +43 -0
- package/dist/node/components/docs/guides/GuideContractTypesPage.js +6 -541
- package/dist/node/components/docs/guides/GuideDocsPipelinePage.js +3 -207
- package/dist/node/components/docs/guides/GuideFirstModuleBundlePage.js +75 -0
- package/dist/node/components/docs/guides/GuideGenerateDocsClientsSchemasPage.js +2 -209
- package/dist/node/components/docs/guides/GuideHostBuilderWorkbenchPage.js +69 -0
- package/dist/node/components/docs/guides/GuideImportExistingCodebasesPage.js +8 -754
- package/dist/node/components/docs/guides/GuideNextjsOneEndpointPage.js +6 -268
- package/dist/node/components/docs/guides/GuideSpecValidationTypingPage.js +4 -196
- package/dist/node/components/docs/guides/GuidesIndexPage.js +2 -169
- package/dist/node/components/docs/guides/guides.docblocks.js +11 -75
- package/dist/node/components/docs/guides/index.js +213 -2428
- package/dist/node/components/docs/index.js +542 -24297
- package/dist/node/components/docs/integrations/IntegrationsCircuitBreakersPage.js +2 -42
- package/dist/node/components/docs/integrations/IntegrationsElevenLabsPage.js +3 -105
- package/dist/node/components/docs/integrations/IntegrationsGithubPage.js +3 -142
- package/dist/node/components/docs/integrations/IntegrationsGmailPage.js +3 -109
- package/dist/node/components/docs/integrations/IntegrationsGoogleCalendarPage.js +3 -79
- package/dist/node/components/docs/integrations/IntegrationsHealthRoutingPage.js +3 -146
- package/dist/node/components/docs/integrations/IntegrationsMistralPage.js +5 -150
- package/dist/node/components/docs/integrations/IntegrationsOpenAIPage.js +5 -140
- package/dist/node/components/docs/integrations/IntegrationsOverviewPage.js +1 -160
- package/dist/node/components/docs/integrations/IntegrationsPostmarkPage.js +4 -218
- package/dist/node/components/docs/integrations/IntegrationsPowensPage.js +4 -300
- package/dist/node/components/docs/integrations/IntegrationsQdrantPage.js +5 -111
- package/dist/node/components/docs/integrations/IntegrationsResendPage.js +3 -102
- package/dist/node/components/docs/integrations/IntegrationsS3Page.js +4 -124
- package/dist/node/components/docs/integrations/IntegrationsSlackPage.js +3 -144
- package/dist/node/components/docs/integrations/IntegrationsSpecModelPage.js +7 -290
- package/dist/node/components/docs/integrations/IntegrationsStripePage.js +6 -327
- package/dist/node/components/docs/integrations/IntegrationsTwilioPage.js +3 -128
- package/dist/node/components/docs/integrations/IntegrationsWhatsappMetaPage.js +2 -146
- package/dist/node/components/docs/integrations/IntegrationsWhatsappTwilioPage.js +2 -156
- package/dist/node/components/docs/integrations/index.js +52 -3100
- package/dist/node/components/docs/intent/ContractFirstApiPage.js +2 -126
- package/dist/node/components/docs/intent/DeterministicCodegenPage.js +2 -148
- package/dist/node/components/docs/intent/GenerateClientFromSchemaPage.js +7 -207
- package/dist/node/components/docs/intent/OpenapiAlternativePage.js +3 -201
- package/dist/node/components/docs/intent/SchemaValidationTypescriptPage.js +4 -144
- package/dist/node/components/docs/intent/SpecDrivenDevelopmentPage.js +2 -126
- package/dist/node/components/docs/intent/index.js +15 -1135
- package/dist/node/components/docs/intent/intent-pages.docblocks.js +1 -201
- package/dist/node/components/docs/knowledge/KnowledgeCategoriesPage.js +6 -750
- package/dist/node/components/docs/knowledge/KnowledgeExamplesPage.js +4 -175
- package/dist/node/components/docs/knowledge/KnowledgeOverviewPage.js +1 -116
- package/dist/node/components/docs/knowledge/KnowledgeSourcesPage.js +8 -391
- package/dist/node/components/docs/knowledge/KnowledgeSpacesPage.js +6 -302
- package/dist/node/components/docs/knowledge/index.js +21 -1730
- package/dist/node/components/docs/libraries/LibrariesAccessibilityPage.js +3 -198
- package/dist/node/components/docs/libraries/LibrariesAiAgentPage.js +3 -141
- package/dist/node/components/docs/libraries/LibrariesAnalyticsPage.js +4 -80
- package/dist/node/components/docs/libraries/LibrariesContentGenPage.js +2 -100
- package/dist/node/components/docs/libraries/LibrariesContractsPage.js +2 -284
- package/dist/node/components/docs/libraries/LibrariesCostTrackingPage.js +3 -112
- package/dist/node/components/docs/libraries/LibrariesDataBackendPage.js +2 -166
- package/dist/node/components/docs/libraries/LibrariesDataViewsPage.js +3 -186
- package/dist/node/components/docs/libraries/LibrariesDesignSystemPage.js +4 -279
- package/dist/node/components/docs/libraries/LibrariesEvolutionPage.js +4 -127
- package/dist/node/components/docs/libraries/LibrariesGraphQLPage.js +2 -173
- package/dist/node/components/docs/libraries/LibrariesGrowthPage.js +3 -88
- package/dist/node/components/docs/libraries/LibrariesMultiTenancyPage.js +3 -108
- package/dist/node/components/docs/libraries/LibrariesObservabilityPage.js +5 -130
- package/dist/node/components/docs/libraries/LibrariesOverlayEnginePage.js +4 -110
- package/dist/node/components/docs/libraries/LibrariesOverviewPage.js +1 -170
- package/dist/node/components/docs/libraries/LibrariesPersonalizationPage.js +4 -114
- package/dist/node/components/docs/libraries/LibrariesProgressiveDeliveryPage.js +3 -132
- package/dist/node/components/docs/libraries/LibrariesResiliencePage.js +4 -120
- package/dist/node/components/docs/libraries/LibrariesRuntimePage.js +2 -200
- package/dist/node/components/docs/libraries/LibrariesSLOPage.js +3 -116
- package/dist/node/components/docs/libraries/LibrariesSchemaPage.js +3 -273
- package/dist/node/components/docs/libraries/LibrariesSupportBotPage.js +3 -134
- package/dist/node/components/docs/libraries/LibrariesTestingPage.js +3 -133
- package/dist/node/components/docs/libraries/LibrariesUIKitPage.js +2 -230
- package/dist/node/components/docs/libraries/LibrariesWorkflowComposerPage.js +3 -88
- package/dist/node/components/docs/libraries/LibrariesWorkflowsPage.js +2 -181
- package/dist/node/components/docs/libraries/index.js +54 -4147
- package/dist/node/components/docs/manifesto/ManifestoPage.js +1 -86
- package/dist/node/components/docs/ops/AutoEvolutionOpsPage.js +2 -132
- package/dist/node/components/docs/ops/DistributedTracingOpsPage.js +2 -71
- package/dist/node/components/docs/ops/index.js +3 -202
- package/dist/node/components/docs/ops/ops-lifecycle.docblocks.js +3 -38
- package/dist/node/components/docs/ops/ops-runbooks-a.docblocks.js +3 -94
- package/dist/node/components/docs/ops/ops-runbooks-b.docblocks.js +3 -76
- package/dist/node/components/docs/ops/ops-slo-tenant.docblocks.js +3 -76
- package/dist/node/components/docs/ops/ops-top.docs.js +2 -17
- package/dist/node/components/docs/ops/ops.docs.js +10 -302
- package/dist/node/components/docs/product/product.docblocks.js +5 -72
- package/dist/node/components/docs/reference/DocsMarkdownContent.js +2 -196
- package/dist/node/components/docs/reference/DocsReferenceContent.js +3 -256
- package/dist/node/components/docs/reference/DocsReferenceIndexClient.js +2 -127
- package/dist/node/components/docs/reference/DocsReferenceIndexPage.js +2 -206
- package/dist/node/components/docs/reference/DocsReferencePage.js +3 -265
- package/dist/node/components/docs/reference/docsMarkdownParser.js +2 -92
- package/dist/node/components/docs/reference/index.js +4 -470
- package/dist/node/components/docs/safety/SafetyAuditingPage.js +2 -350
- package/dist/node/components/docs/safety/SafetyMigrationsPage.js +2 -359
- package/dist/node/components/docs/safety/SafetyOverviewPage.js +1 -101
- package/dist/node/components/docs/safety/SafetyPDPPage.js +2 -301
- package/dist/node/components/docs/safety/SafetySecurityTrustPage.js +1 -206
- package/dist/node/components/docs/safety/SafetySigningPage.js +3 -90
- package/dist/node/components/docs/safety/SafetyTenantIsolationPage.js +2 -79
- package/dist/node/components/docs/safety/index.js +7 -1480
- package/dist/node/components/docs/shared/StudioPrompt.js +1 -31
- package/dist/node/components/docs/specs/SpecsBuilderControlPlanePage.js +33 -0
- package/dist/node/components/docs/specs/SpecsCapabilitiesPage.js +2 -158
- package/dist/node/components/docs/specs/SpecsConnectPage.js +7 -0
- package/dist/node/components/docs/specs/SpecsDataViewsPage.js +2 -260
- package/dist/node/components/docs/specs/SpecsModuleBundlesPage.js +66 -0
- package/dist/node/components/docs/specs/SpecsOverlaysPage.js +2 -372
- package/dist/node/components/docs/specs/SpecsOverviewPage.js +1 -186
- package/dist/node/components/docs/specs/SpecsPolicyPage.js +3 -420
- package/dist/node/components/docs/specs/SpecsWorkflowsPage.js +2 -312
- package/dist/node/components/docs/specs/index.js +109 -1702
- package/dist/node/components/docs/studio/StudioBYOKPage.js +1 -26
- package/dist/node/components/docs/studio/StudioDeploymentsPage.js +1 -26
- package/dist/node/components/docs/studio/StudioGettingStartedPage.js +1 -26
- package/dist/node/components/docs/studio/StudioIntegrationsPage.js +1 -26
- package/dist/node/components/docs/studio/StudioOverviewPage.js +1 -157
- package/dist/node/components/docs/studio/StudioVisualBuilderPage.js +1 -26
- package/dist/node/components/docs/studio/index.js +1 -282
- package/dist/node/components/docs/tech/contracts/tech-docs.docblocks.js +2 -19
- package/dist/node/components/integrations/index.js +2 -600
- package/dist/node/components/integrations/molecules/IntegrationCard.js +1 -100
- package/dist/node/components/integrations/organisms/IntegrationMarketplace.js +1 -214
- package/dist/node/components/integrations/organisms/IntegrationSettings.js +2 -284
- package/dist/node/components/integrations/organisms/KnowledgeSourceList.js +1 -103
- package/dist/node/components/legal/PrivacyTemplate.js +1 -1025
- package/dist/node/components/legal/TermsTemplate.js +1 -941
- package/dist/node/components/legal/index.js +1 -1963
- package/dist/node/components/shared/FeatureGateNotice.js +1 -38
- package/dist/node/components/shared/index.js +1 -38
- package/dist/node/components/shell/WorkspaceHeader.js +1 -100
- package/dist/node/components/shell/WorkspaceProjectShellLayout.js +1 -222
- package/dist/node/components/shell/WorkspaceShellRenderer.js +1 -228
- package/dist/node/components/shell/WorkspaceSidebar.js +1 -68
- package/dist/node/components/shell/index.js +1 -287
- package/dist/node/components/templates/engine/index.js +1 -39
- package/dist/node/components/templates/index.js +11 -965
- package/dist/node/components/templates/messaging/ConversationList.js +2 -83
- package/dist/node/components/templates/messaging/MessageComposer.js +4 -150
- package/dist/node/components/templates/messaging/MessageThread.js +3 -83
- package/dist/node/components/templates/messaging/MessagingWorkspace.js +5 -265
- package/dist/node/components/templates/messaging/index.js +5 -269
- package/dist/node/components/templates/recipes/LanguageSwitcher.js +1 -16
- package/dist/node/components/templates/recipes/RecipeCard.js +1 -80
- package/dist/node/components/templates/recipes/RecipeDetail.js +1 -74
- package/dist/node/components/templates/recipes/RecipeList.js +3 -245
- package/dist/node/components/templates/recipes/index.js +3 -248
- package/dist/node/components/templates/todos/FilterBar.js +1 -107
- package/dist/node/components/templates/todos/TaskForm.js +2 -158
- package/dist/node/components/templates/todos/TaskItem.js +1 -77
- package/dist/node/components/templates/todos/TaskList.js +5 -449
- package/dist/node/components/templates/todos/index.js +5 -452
- package/dist/node/config/contractspec-blueprint.js +1 -123
- package/dist/node/config/contractspec-branding.js +1 -44
- package/dist/node/config/contractspec-routes.js +1 -24
- package/dist/node/config/index.js +1 -126
- package/dist/node/features/contracts-registry.js +1 -178
- package/dist/node/features/docs/docs.contracts.js +1 -17
- package/dist/node/features/docs/index.js +1 -17
- package/dist/node/features/docs.feature.js +1 -33
- package/dist/node/features/index.js +1 -315
- package/dist/node/features/mcp.feature.js +1 -30
- package/dist/node/features/presentations.feature.js +1 -33
- package/dist/node/features/registry.js +1 -116
- package/dist/node/index.js +556 -28580
- package/dist/node/infrastructure/elysia/index.js +1 -35
- package/dist/node/infrastructure/elysia/logger.js +1 -35
- package/dist/node/infrastructure/index.js +1 -35
- package/dist/node/libs/email/client.js +1 -114
- package/dist/node/libs/email/contact.js +12 -165
- package/dist/node/libs/email/newsletter.js +6 -167
- package/dist/node/libs/email/types.js +0 -2
- package/dist/node/libs/email/utils.js +2 -8
- package/dist/node/libs/email/waitlist-application.js +28 -209
- package/dist/node/libs/email/waitlist.js +6 -167
- package/dist/node/libs/email.js +46 -363
- package/dist/node/libs/posthog/client.js +1 -63
- package/dist/node/libs/posthog/native.js +1 -23
- package/dist/node/libs/posthog/server.js +1 -13
- package/dist/node/libs/pricing-examples.js +1 -18
- package/dist/node/presentation/features/atoms/FeatureIcon/FeatureIcon.js +1 -97
- package/dist/node/presentation/features/atoms/FeatureIcon/index.js +1 -97
- package/dist/node/presentation/features/atoms/index.js +1 -97
- package/dist/node/presentation/features/hooks/index.js +1 -397
- package/dist/node/presentation/features/hooks/useContractsRegistry.js +1 -289
- package/dist/node/presentation/features/hooks/useFeatureFilters.js +1 -75
- package/dist/node/presentation/features/hooks/useFeatureRegistry.js +1 -147
- package/dist/node/presentation/features/hooks/useRelatedDocs.js +1 -28
- package/dist/node/presentation/features/index.js +1 -3063
- package/dist/node/presentation/features/molecules/FeatureCard/FeatureCard.js +1 -366
- package/dist/node/presentation/features/molecules/FeatureCard/index.js +1 -366
- package/dist/node/presentation/features/molecules/FeatureCategoryHeader/FeatureCategoryHeader.js +1 -50
- package/dist/node/presentation/features/molecules/FeatureCategoryHeader/index.js +1 -50
- package/dist/node/presentation/features/molecules/FeatureFilters/FeatureFilters.js +1 -92
- package/dist/node/presentation/features/molecules/FeatureFilters/index.js +1 -92
- package/dist/node/presentation/features/molecules/FeatureHoverPreview/FeatureHoverPreview.js +1 -176
- package/dist/node/presentation/features/molecules/FeatureHoverPreview/index.js +1 -176
- package/dist/node/presentation/features/molecules/index.js +1 -505
- package/dist/node/presentation/features/organisms/FeatureDataViewsList.js +1 -304
- package/dist/node/presentation/features/organisms/FeatureDetail/FeatureDetail.js +1 -154
- package/dist/node/presentation/features/organisms/FeatureDetail/index.js +1 -154
- package/dist/node/presentation/features/organisms/FeatureDiscovery/FeatureDiscovery.js +1 -909
- package/dist/node/presentation/features/organisms/FeatureDiscovery/index.js +1 -909
- package/dist/node/presentation/features/organisms/FeatureEventsList.js +1 -302
- package/dist/node/presentation/features/organisms/FeatureFormsList.js +1 -302
- package/dist/node/presentation/features/organisms/FeatureOperationsList.js +1 -180
- package/dist/node/presentation/features/organisms/FeaturePresentationsList.js +1 -304
- package/dist/node/presentation/features/organisms/index.js +1 -1359
- package/dist/node/presentation/features/templates/FeatureDataViewDetailTemplate/FeatureDataViewDetailTemplate.js +1 -332
- package/dist/node/presentation/features/templates/FeatureDataViewDetailTemplate/index.js +1 -332
- package/dist/node/presentation/features/templates/FeatureDataViewsTemplate/FeatureDataViewsTemplate.js +1 -342
- package/dist/node/presentation/features/templates/FeatureDataViewsTemplate/index.js +1 -342
- package/dist/node/presentation/features/templates/FeatureEventDetailTemplate/FeatureEventDetailTemplate.js +1 -303
- package/dist/node/presentation/features/templates/FeatureEventDetailTemplate/index.js +1 -303
- package/dist/node/presentation/features/templates/FeatureEventsTemplate/FeatureEventsTemplate.js +1 -340
- package/dist/node/presentation/features/templates/FeatureEventsTemplate/index.js +1 -340
- package/dist/node/presentation/features/templates/FeatureFormDetailTemplate/FeatureFormDetailTemplate.js +1 -329
- package/dist/node/presentation/features/templates/FeatureFormDetailTemplate/index.js +1 -329
- package/dist/node/presentation/features/templates/FeatureFormsTemplate/FeatureFormsTemplate.js +1 -340
- package/dist/node/presentation/features/templates/FeatureFormsTemplate/index.js +1 -340
- package/dist/node/presentation/features/templates/FeatureOperationDetailTemplate/FeatureOperationDetailTemplate.js +1 -302
- package/dist/node/presentation/features/templates/FeatureOperationDetailTemplate/index.js +1 -302
- package/dist/node/presentation/features/templates/FeatureOperationsTemplate/FeatureOperationsTemplate.js +1 -218
- package/dist/node/presentation/features/templates/FeatureOperationsTemplate/index.js +1 -218
- package/dist/node/presentation/features/templates/FeatureOverviewTemplate/FeatureOverviewTemplate.js +1 -187
- package/dist/node/presentation/features/templates/FeatureOverviewTemplate/index.js +1 -187
- package/dist/node/presentation/features/templates/FeaturePresentationDetailTemplate/FeaturePresentationDetailTemplate.js +1 -306
- package/dist/node/presentation/features/templates/FeaturePresentationDetailTemplate/index.js +1 -306
- package/dist/node/presentation/features/templates/FeaturePresentationsTemplate/FeaturePresentationsTemplate.js +1 -342
- package/dist/node/presentation/features/templates/FeaturePresentationsTemplate/index.js +1 -342
- package/dist/presentation/features/atoms/FeatureIcon/FeatureIcon.js +1 -97
- package/dist/presentation/features/atoms/FeatureIcon/index.js +1 -97
- package/dist/presentation/features/atoms/index.js +1 -97
- package/dist/presentation/features/hooks/index.js +1 -397
- package/dist/presentation/features/hooks/useContractsRegistry.js +1 -289
- package/dist/presentation/features/hooks/useFeatureFilters.js +1 -75
- package/dist/presentation/features/hooks/useFeatureRegistry.js +1 -147
- package/dist/presentation/features/hooks/useRelatedDocs.js +1 -28
- package/dist/presentation/features/index.js +1 -3063
- package/dist/presentation/features/molecules/FeatureCard/FeatureCard.js +1 -366
- package/dist/presentation/features/molecules/FeatureCard/index.js +1 -366
- package/dist/presentation/features/molecules/FeatureCategoryHeader/FeatureCategoryHeader.js +1 -50
- package/dist/presentation/features/molecules/FeatureCategoryHeader/index.js +1 -50
- package/dist/presentation/features/molecules/FeatureFilters/FeatureFilters.js +1 -92
- package/dist/presentation/features/molecules/FeatureFilters/index.js +1 -92
- package/dist/presentation/features/molecules/FeatureHoverPreview/FeatureHoverPreview.js +1 -176
- package/dist/presentation/features/molecules/FeatureHoverPreview/index.js +1 -176
- package/dist/presentation/features/molecules/index.js +1 -505
- package/dist/presentation/features/organisms/FeatureDataViewsList.js +1 -304
- package/dist/presentation/features/organisms/FeatureDetail/FeatureDetail.js +1 -154
- package/dist/presentation/features/organisms/FeatureDetail/index.js +1 -154
- package/dist/presentation/features/organisms/FeatureDiscovery/FeatureDiscovery.js +1 -909
- package/dist/presentation/features/organisms/FeatureDiscovery/index.js +1 -909
- package/dist/presentation/features/organisms/FeatureEventsList.js +1 -302
- package/dist/presentation/features/organisms/FeatureFormsList.js +1 -302
- package/dist/presentation/features/organisms/FeatureOperationsList.js +1 -180
- package/dist/presentation/features/organisms/FeaturePresentationsList.js +1 -304
- package/dist/presentation/features/organisms/index.js +1 -1359
- package/dist/presentation/features/templates/FeatureDataViewDetailTemplate/FeatureDataViewDetailTemplate.js +1 -332
- package/dist/presentation/features/templates/FeatureDataViewDetailTemplate/index.js +1 -332
- package/dist/presentation/features/templates/FeatureDataViewsTemplate/FeatureDataViewsTemplate.js +1 -342
- package/dist/presentation/features/templates/FeatureDataViewsTemplate/index.js +1 -342
- package/dist/presentation/features/templates/FeatureEventDetailTemplate/FeatureEventDetailTemplate.js +1 -303
- package/dist/presentation/features/templates/FeatureEventDetailTemplate/index.js +1 -303
- package/dist/presentation/features/templates/FeatureEventsTemplate/FeatureEventsTemplate.js +1 -340
- package/dist/presentation/features/templates/FeatureEventsTemplate/index.js +1 -340
- package/dist/presentation/features/templates/FeatureFormDetailTemplate/FeatureFormDetailTemplate.js +1 -329
- package/dist/presentation/features/templates/FeatureFormDetailTemplate/index.js +1 -329
- package/dist/presentation/features/templates/FeatureFormsTemplate/FeatureFormsTemplate.js +1 -340
- package/dist/presentation/features/templates/FeatureFormsTemplate/index.js +1 -340
- package/dist/presentation/features/templates/FeatureOperationDetailTemplate/FeatureOperationDetailTemplate.js +1 -302
- package/dist/presentation/features/templates/FeatureOperationDetailTemplate/index.js +1 -302
- package/dist/presentation/features/templates/FeatureOperationsTemplate/FeatureOperationsTemplate.js +1 -218
- package/dist/presentation/features/templates/FeatureOperationsTemplate/index.js +1 -218
- package/dist/presentation/features/templates/FeatureOverviewTemplate/FeatureOverviewTemplate.js +1 -187
- package/dist/presentation/features/templates/FeatureOverviewTemplate/index.js +1 -187
- package/dist/presentation/features/templates/FeaturePresentationDetailTemplate/FeaturePresentationDetailTemplate.js +1 -306
- package/dist/presentation/features/templates/FeaturePresentationDetailTemplate/index.js +1 -306
- package/dist/presentation/features/templates/FeaturePresentationsTemplate/FeaturePresentationsTemplate.js +1 -342
- package/dist/presentation/features/templates/FeaturePresentationsTemplate/index.js +1 -342
- package/package.json +109 -37
- package/src/components/docs/DocsIndexPage.tsx +55 -0
- package/src/components/docs/architecture/ArchitectureControlPlanePage.tsx +19 -0
- package/src/components/docs/architecture/ArchitectureOverviewPage.tsx +34 -0
- package/src/components/docs/docsManifest.test.ts +70 -0
- package/src/components/docs/docsManifest.ts +71 -1
- package/src/components/docs/ecosystem/PluginsPage.tsx +24 -10
- package/src/components/docs/ecosystem/RegistryPage.tsx +11 -6
- package/src/components/docs/generated/docs-index._common.json +206 -273
- package/src/components/docs/generated/docs-index.control-plane.json +18 -0
- package/src/components/docs/generated/docs-index.defineExample.json +10 -0
- package/src/components/docs/generated/docs-index.manifest.json +22 -12
- package/src/components/docs/generated/docs-index.platform-acp.json +64 -0
- package/src/components/docs/generated/docs-index.platform-agent.json +89 -1
- package/src/components/docs/generated/docs-index.platform-context.json +48 -0
- package/src/components/docs/generated/docs-index.platform-control-plane.json +72 -0
- package/src/components/docs/generated/docs-index.platform-database.json +40 -0
- package/src/components/docs/generated/docs-index.platform-docs.json +64 -0
- package/src/components/docs/generated/docs-index.platform-provider-ranking.json +89 -1
- package/src/components/docs/generated/docs-index.pocket-family-office.json +8 -0
- package/src/components/docs/generated/docs-index.unknown.json +8 -0
- package/src/components/docs/guides/GuideConnectInRepoPage.tsx +184 -0
- package/src/components/docs/guides/GuideFirstModuleBundlePage.tsx +182 -0
- package/src/components/docs/guides/GuideHostBuilderWorkbenchPage.tsx +230 -0
- package/src/components/docs/guides/GuidesIndexPage.tsx +21 -0
- package/src/components/docs/guides/index.ts +3 -0
- package/src/components/docs/specs/SpecsBuilderControlPlanePage.tsx +210 -0
- package/src/components/docs/specs/SpecsConnectPage.tsx +162 -0
- package/src/components/docs/specs/SpecsModuleBundlesPage.tsx +223 -0
- package/src/components/docs/specs/SpecsOverlaysPage.tsx +20 -0
- package/src/components/docs/specs/SpecsOverviewPage.tsx +44 -0
- package/src/components/docs/specs/SpecsWorkflowsPage.tsx +9 -1
- package/src/components/docs/specs/index.ts +3 -0
- package/src/components/docs/studio/StudioOverviewPage.tsx +26 -0
- package/src/infrastructure/elysia/logger.ts +11 -3
|
@@ -1,98 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
import { CodeBlock, InstallCommand } from "@contractspec/lib.design-system";
|
|
3
|
-
import Link from "@contractspec/lib.ui-link";
|
|
4
|
-
import { ChevronRight } from "lucide-react";
|
|
5
|
-
import { jsx, jsxs } from "react/jsx-runtime";
|
|
6
|
-
function CLIPage() {
|
|
7
|
-
const commands = [
|
|
8
|
-
{
|
|
9
|
-
name: "create",
|
|
10
|
-
description: "Interactive wizard to create contract specifications",
|
|
11
|
-
usage: "contractspec create [--type operation] [--ai]"
|
|
12
|
-
},
|
|
13
|
-
{
|
|
14
|
-
name: "build",
|
|
15
|
-
description: "Generate implementation code from contract specs using AI agents",
|
|
16
|
-
usage: "contractspec build <spec-file> [--agent-mode claude-code]"
|
|
17
|
-
},
|
|
18
|
-
{
|
|
19
|
-
name: "validate",
|
|
20
|
-
description: "Validate contract specifications and implementations",
|
|
21
|
-
usage: "contractspec validate <spec-file> [--check-implementation]"
|
|
22
|
-
},
|
|
23
|
-
{
|
|
24
|
-
name: "list",
|
|
25
|
-
description: "List all contract specifications in the project",
|
|
26
|
-
usage: "contractspec list [--type operation] [--json]"
|
|
27
|
-
},
|
|
28
|
-
{
|
|
29
|
-
name: "watch",
|
|
30
|
-
description: "Watch specs and auto-regenerate on changes",
|
|
31
|
-
usage: "contractspec watch [--build] [--validate]"
|
|
32
|
-
},
|
|
33
|
-
{
|
|
34
|
-
name: "sync",
|
|
35
|
-
description: "Sync contracts by building all discovered specs",
|
|
36
|
-
usage: "contractspec sync [--dry-run]"
|
|
37
|
-
},
|
|
38
|
-
{
|
|
39
|
-
name: "ci",
|
|
40
|
-
description: "Run all validation checks for CI/CD pipelines",
|
|
41
|
-
usage: "contractspec ci [--format sarif] [--output results.sarif]"
|
|
42
|
-
},
|
|
43
|
-
{
|
|
44
|
-
name: "deps",
|
|
45
|
-
description: "Analyze contract dependencies and relationships",
|
|
46
|
-
usage: "contractspec deps [--circular] [--format dot]"
|
|
47
|
-
},
|
|
48
|
-
{
|
|
49
|
-
name: "diff",
|
|
50
|
-
description: "Compare contract specifications and show differences",
|
|
51
|
-
usage: "contractspec diff <spec1> <spec2> [--breaking]"
|
|
52
|
-
}
|
|
53
|
-
];
|
|
54
|
-
return /* @__PURE__ */ jsxs("div", {
|
|
55
|
-
className: "space-y-8",
|
|
56
|
-
children: [
|
|
57
|
-
/* @__PURE__ */ jsxs("div", {
|
|
58
|
-
className: "space-y-2",
|
|
59
|
-
children: [
|
|
60
|
-
/* @__PURE__ */ jsx("h1", {
|
|
61
|
-
className: "font-bold text-4xl",
|
|
62
|
-
children: "ContractSpec CLI"
|
|
63
|
-
}),
|
|
64
|
-
/* @__PURE__ */ jsx("p", {
|
|
65
|
-
className: "text-lg text-muted-foreground",
|
|
66
|
-
children: "Command-line interface for creating, building, and validating contract specifications with AI-powered code generation."
|
|
67
|
-
})
|
|
68
|
-
]
|
|
69
|
-
}),
|
|
70
|
-
/* @__PURE__ */ jsxs("div", {
|
|
71
|
-
className: "space-y-6",
|
|
72
|
-
children: [
|
|
73
|
-
/* @__PURE__ */ jsxs("div", {
|
|
74
|
-
className: "space-y-3",
|
|
75
|
-
children: [
|
|
76
|
-
/* @__PURE__ */ jsx("h2", {
|
|
77
|
-
className: "font-bold text-2xl",
|
|
78
|
-
children: "Installation"
|
|
79
|
-
}),
|
|
80
|
-
/* @__PURE__ */ jsx(InstallCommand, {
|
|
81
|
-
package: "contractspec",
|
|
82
|
-
dev: true
|
|
83
|
-
})
|
|
84
|
-
]
|
|
85
|
-
}),
|
|
86
|
-
/* @__PURE__ */ jsxs("div", {
|
|
87
|
-
className: "space-y-3",
|
|
88
|
-
children: [
|
|
89
|
-
/* @__PURE__ */ jsx("h2", {
|
|
90
|
-
className: "font-bold text-2xl",
|
|
91
|
-
children: "Quick Start"
|
|
92
|
-
}),
|
|
93
|
-
/* @__PURE__ */ jsx(CodeBlock, {
|
|
94
|
-
language: "bash",
|
|
95
|
-
code: `# Initialize project
|
|
1
|
+
import{CodeBlock as C,InstallCommand as q}from"@contractspec/lib.design-system";import E from"@contractspec/lib.ui-link";import{ChevronRight as H}from"lucide-react";import{jsx as a,jsxs as l}from"react/jsx-runtime";function M(){return l("div",{className:"space-y-8",children:[l("div",{className:"space-y-2",children:[a("h1",{className:"font-bold text-4xl",children:"ContractSpec CLI"}),a("p",{className:"text-lg text-muted-foreground",children:"Command-line interface for creating, building, and validating contract specifications with AI-powered code generation."})]}),l("div",{className:"space-y-6",children:[l("div",{className:"space-y-3",children:[a("h2",{className:"font-bold text-2xl",children:"Installation"}),a(q,{package:"contractspec",dev:!0})]}),l("div",{className:"space-y-3",children:[a("h2",{className:"font-bold text-2xl",children:"Quick Start"}),a(C,{language:"bash",code:`# Initialize project
|
|
96
2
|
bunx contractspec init
|
|
97
3
|
|
|
98
4
|
# Create a spec
|
|
@@ -102,155 +8,13 @@ contractspec create --type operation
|
|
|
102
8
|
contractspec build src/contracts/mySpec.ts
|
|
103
9
|
|
|
104
10
|
# Validate
|
|
105
|
-
contractspec validate src/contracts/mySpec.ts`
|
|
106
|
-
})
|
|
107
|
-
]
|
|
108
|
-
}),
|
|
109
|
-
/* @__PURE__ */ jsxs("div", {
|
|
110
|
-
className: "space-y-4",
|
|
111
|
-
children: [
|
|
112
|
-
/* @__PURE__ */ jsx("h2", {
|
|
113
|
-
className: "font-bold text-2xl",
|
|
114
|
-
children: "Commands"
|
|
115
|
-
}),
|
|
116
|
-
/* @__PURE__ */ jsx("div", {
|
|
117
|
-
className: "grid gap-4",
|
|
118
|
-
children: commands.map((cmd) => /* @__PURE__ */ jsxs("div", {
|
|
119
|
-
className: "card-subtle space-y-2 p-4",
|
|
120
|
-
children: [
|
|
121
|
-
/* @__PURE__ */ jsx("h3", {
|
|
122
|
-
className: "font-bold font-mono text-violet-400",
|
|
123
|
-
children: cmd.name
|
|
124
|
-
}),
|
|
125
|
-
/* @__PURE__ */ jsx("p", {
|
|
126
|
-
className: "text-muted-foreground text-sm",
|
|
127
|
-
children: cmd.description
|
|
128
|
-
}),
|
|
129
|
-
/* @__PURE__ */ jsx(CodeBlock, {
|
|
130
|
-
language: "bash",
|
|
131
|
-
code: cmd.usage,
|
|
132
|
-
showCopyButton: false
|
|
133
|
-
})
|
|
134
|
-
]
|
|
135
|
-
}, cmd.name))
|
|
136
|
-
})
|
|
137
|
-
]
|
|
138
|
-
}),
|
|
139
|
-
/* @__PURE__ */ jsxs("div", {
|
|
140
|
-
className: "space-y-3",
|
|
141
|
-
children: [
|
|
142
|
-
/* @__PURE__ */ jsx("h2", {
|
|
143
|
-
className: "font-bold text-2xl",
|
|
144
|
-
children: "AI Agent Modes"
|
|
145
|
-
}),
|
|
146
|
-
/* @__PURE__ */ jsx("p", {
|
|
147
|
-
className: "text-muted-foreground",
|
|
148
|
-
children: "The CLI supports multiple AI agent modes for different use cases:"
|
|
149
|
-
}),
|
|
150
|
-
/* @__PURE__ */ jsxs("div", {
|
|
151
|
-
className: "grid gap-3 md:grid-cols-2",
|
|
152
|
-
children: [
|
|
153
|
-
/* @__PURE__ */ jsxs("div", {
|
|
154
|
-
className: "card-subtle p-4",
|
|
155
|
-
children: [
|
|
156
|
-
/* @__PURE__ */ jsx("h4", {
|
|
157
|
-
className: "font-bold",
|
|
158
|
-
children: "simple"
|
|
159
|
-
}),
|
|
160
|
-
/* @__PURE__ */ jsx("p", {
|
|
161
|
-
className: "text-muted-foreground text-sm",
|
|
162
|
-
children: "Direct LLM API calls, fast and straightforward. Best for rapid prototyping."
|
|
163
|
-
})
|
|
164
|
-
]
|
|
165
|
-
}),
|
|
166
|
-
/* @__PURE__ */ jsxs("div", {
|
|
167
|
-
className: "card-subtle p-4",
|
|
168
|
-
children: [
|
|
169
|
-
/* @__PURE__ */ jsx("h4", {
|
|
170
|
-
className: "font-bold",
|
|
171
|
-
children: "claude-code"
|
|
172
|
-
}),
|
|
173
|
-
/* @__PURE__ */ jsx("p", {
|
|
174
|
-
className: "text-muted-foreground text-sm",
|
|
175
|
-
children: "Extended thinking with Claude. Best for production-quality code."
|
|
176
|
-
})
|
|
177
|
-
]
|
|
178
|
-
}),
|
|
179
|
-
/* @__PURE__ */ jsxs("div", {
|
|
180
|
-
className: "card-subtle p-4",
|
|
181
|
-
children: [
|
|
182
|
-
/* @__PURE__ */ jsx("h4", {
|
|
183
|
-
className: "font-bold",
|
|
184
|
-
children: "openai-codex"
|
|
185
|
-
}),
|
|
186
|
-
/* @__PURE__ */ jsx("p", {
|
|
187
|
-
className: "text-muted-foreground text-sm",
|
|
188
|
-
children: "GPT-4o/o1 models. Excellent for algorithms and optimization."
|
|
189
|
-
})
|
|
190
|
-
]
|
|
191
|
-
}),
|
|
192
|
-
/* @__PURE__ */ jsxs("div", {
|
|
193
|
-
className: "card-subtle p-4",
|
|
194
|
-
children: [
|
|
195
|
-
/* @__PURE__ */ jsx("h4", {
|
|
196
|
-
className: "font-bold",
|
|
197
|
-
children: "cursor"
|
|
198
|
-
}),
|
|
199
|
-
/* @__PURE__ */ jsx("p", {
|
|
200
|
-
className: "text-muted-foreground text-sm",
|
|
201
|
-
children: "Leverages Cursor agentic capabilities. Requires Cursor environment."
|
|
202
|
-
})
|
|
203
|
-
]
|
|
204
|
-
})
|
|
205
|
-
]
|
|
206
|
-
})
|
|
207
|
-
]
|
|
208
|
-
}),
|
|
209
|
-
/* @__PURE__ */ jsxs("div", {
|
|
210
|
-
className: "space-y-3",
|
|
211
|
-
children: [
|
|
212
|
-
/* @__PURE__ */ jsx("h2", {
|
|
213
|
-
className: "font-bold text-2xl",
|
|
214
|
-
children: "CI/CD Integration"
|
|
215
|
-
}),
|
|
216
|
-
/* @__PURE__ */ jsx("p", {
|
|
217
|
-
className: "text-muted-foreground",
|
|
218
|
-
children: "Run all validation checks in CI/CD with machine-readable output:"
|
|
219
|
-
}),
|
|
220
|
-
/* @__PURE__ */ jsx(CodeBlock, {
|
|
221
|
-
language: "yaml",
|
|
222
|
-
filename: ".github/workflows/validate.yml",
|
|
223
|
-
code: `- name: Validate Contracts
|
|
11
|
+
contractspec validate src/contracts/mySpec.ts`})]}),l("div",{className:"space-y-4",children:[a("h2",{className:"font-bold text-2xl",children:"Commands"}),a("div",{className:"grid gap-4",children:[{name:"create",description:"Interactive wizard to create contract specifications",usage:"contractspec create [--type operation] [--ai]"},{name:"build",description:"Generate implementation code from contract specs using AI agents",usage:"contractspec build <spec-file> [--agent-mode claude-code]"},{name:"validate",description:"Validate contract specifications and implementations",usage:"contractspec validate <spec-file> [--check-implementation]"},{name:"list",description:"List all contract specifications in the project",usage:"contractspec list [--type operation] [--json]"},{name:"watch",description:"Watch specs and auto-regenerate on changes",usage:"contractspec watch [--build] [--validate]"},{name:"sync",description:"Sync contracts by building all discovered specs",usage:"contractspec sync [--dry-run]"},{name:"ci",description:"Run all validation checks for CI/CD pipelines",usage:"contractspec ci [--format sarif] [--output results.sarif]"},{name:"deps",description:"Analyze contract dependencies and relationships",usage:"contractspec deps [--circular] [--format dot]"},{name:"diff",description:"Compare contract specifications and show differences",usage:"contractspec diff <spec1> <spec2> [--breaking]"}].map((u)=>l("div",{className:"card-subtle space-y-2 p-4",children:[a("h3",{className:"font-bold font-mono text-violet-400",children:u.name}),a("p",{className:"text-muted-foreground text-sm",children:u.description}),a(C,{language:"bash",code:u.usage,showCopyButton:!1})]},u.name))})]}),l("div",{className:"space-y-3",children:[a("h2",{className:"font-bold text-2xl",children:"AI Agent Modes"}),a("p",{className:"text-muted-foreground",children:"The CLI supports multiple AI agent modes for different use cases:"}),l("div",{className:"grid gap-3 md:grid-cols-2",children:[l("div",{className:"card-subtle p-4",children:[a("h4",{className:"font-bold",children:"simple"}),a("p",{className:"text-muted-foreground text-sm",children:"Direct LLM API calls, fast and straightforward. Best for rapid prototyping."})]}),l("div",{className:"card-subtle p-4",children:[a("h4",{className:"font-bold",children:"claude-code"}),a("p",{className:"text-muted-foreground text-sm",children:"Extended thinking with Claude. Best for production-quality code."})]}),l("div",{className:"card-subtle p-4",children:[a("h4",{className:"font-bold",children:"openai-codex"}),a("p",{className:"text-muted-foreground text-sm",children:"GPT-4o/o1 models. Excellent for algorithms and optimization."})]}),l("div",{className:"card-subtle p-4",children:[a("h4",{className:"font-bold",children:"cursor"}),a("p",{className:"text-muted-foreground text-sm",children:"Leverages Cursor agentic capabilities. Requires Cursor environment."})]})]})]}),l("div",{className:"space-y-3",children:[a("h2",{className:"font-bold text-2xl",children:"CI/CD Integration"}),a("p",{className:"text-muted-foreground",children:"Run all validation checks in CI/CD with machine-readable output:"}),a(C,{language:"yaml",filename:".github/workflows/validate.yml",code:`- name: Validate Contracts
|
|
224
12
|
run: contractspec ci --format sarif --output results.sarif
|
|
225
13
|
|
|
226
14
|
- name: Upload SARIF
|
|
227
15
|
uses: github/codeql-action/upload-sarif@v3
|
|
228
16
|
with:
|
|
229
|
-
sarif_file: results.sarif`
|
|
230
|
-
})
|
|
231
|
-
]
|
|
232
|
-
}),
|
|
233
|
-
/* @__PURE__ */ jsxs("div", {
|
|
234
|
-
className: "card-subtle space-y-4 p-6",
|
|
235
|
-
children: [
|
|
236
|
-
/* @__PURE__ */ jsx("h3", {
|
|
237
|
-
className: "font-bold",
|
|
238
|
-
children: "Configuration"
|
|
239
|
-
}),
|
|
240
|
-
/* @__PURE__ */ jsxs("p", {
|
|
241
|
-
className: "text-muted-foreground text-sm",
|
|
242
|
-
children: [
|
|
243
|
-
"Create a ",
|
|
244
|
-
/* @__PURE__ */ jsx("code", {
|
|
245
|
-
children: ".contractsrc.json"
|
|
246
|
-
}),
|
|
247
|
-
" file in your project root:"
|
|
248
|
-
]
|
|
249
|
-
}),
|
|
250
|
-
/* @__PURE__ */ jsx(CodeBlock, {
|
|
251
|
-
language: "json",
|
|
252
|
-
filename: ".contractsrc.json",
|
|
253
|
-
code: `{
|
|
17
|
+
sarif_file: results.sarif`})]}),l("div",{className:"card-subtle space-y-4 p-6",children:[a("h3",{className:"font-bold",children:"Configuration"}),l("p",{className:"text-muted-foreground text-sm",children:["Create a ",a("code",{children:".contractsrc.json"})," file in your project root:"]}),a(C,{language:"json",filename:".contractsrc.json",code:`{
|
|
254
18
|
"aiProvider": "claude",
|
|
255
19
|
"agentMode": "claude-code",
|
|
256
20
|
"outputDir": "./src",
|
|
@@ -258,244 +22,7 @@ contractspec validate src/contracts/mySpec.ts`
|
|
|
258
22
|
"operations": "interactions/commands|queries",
|
|
259
23
|
"events": "events"
|
|
260
24
|
}
|
|
261
|
-
}`
|
|
262
|
-
})
|
|
263
|
-
]
|
|
264
|
-
})
|
|
265
|
-
]
|
|
266
|
-
}),
|
|
267
|
-
/* @__PURE__ */ jsxs("div", {
|
|
268
|
-
className: "flex items-center gap-4 pt-4",
|
|
269
|
-
children: [
|
|
270
|
-
/* @__PURE__ */ jsxs(Link, {
|
|
271
|
-
href: "/docs/getting-started/tools/vscode",
|
|
272
|
-
className: "btn-primary",
|
|
273
|
-
children: [
|
|
274
|
-
"Next: VS Code Extension ",
|
|
275
|
-
/* @__PURE__ */ jsx(ChevronRight, {
|
|
276
|
-
size: 16
|
|
277
|
-
})
|
|
278
|
-
]
|
|
279
|
-
}),
|
|
280
|
-
/* @__PURE__ */ jsx(Link, {
|
|
281
|
-
href: "/docs/getting-started/tools",
|
|
282
|
-
className: "btn-ghost",
|
|
283
|
-
children: "Back to Tools"
|
|
284
|
-
})
|
|
285
|
-
]
|
|
286
|
-
})
|
|
287
|
-
]
|
|
288
|
-
});
|
|
289
|
-
}
|
|
290
|
-
|
|
291
|
-
// src/components/docs/getting-started/CompatibilityPage.tsx
|
|
292
|
-
import Link2 from "@contractspec/lib.ui-link";
|
|
293
|
-
import { ChevronRight as ChevronRight2 } from "lucide-react";
|
|
294
|
-
import { jsx as jsx2, jsxs as jsxs2 } from "react/jsx-runtime";
|
|
295
|
-
function CompatibilityPage() {
|
|
296
|
-
return /* @__PURE__ */ jsxs2("div", {
|
|
297
|
-
className: "space-y-8",
|
|
298
|
-
children: [
|
|
299
|
-
/* @__PURE__ */ jsxs2("div", {
|
|
300
|
-
className: "space-y-2",
|
|
301
|
-
children: [
|
|
302
|
-
/* @__PURE__ */ jsx2("h1", {
|
|
303
|
-
className: "font-bold text-4xl",
|
|
304
|
-
children: "Compatibility"
|
|
305
|
-
}),
|
|
306
|
-
/* @__PURE__ */ jsx2("p", {
|
|
307
|
-
className: "text-lg text-muted-foreground",
|
|
308
|
-
children: "Supported runtimes, frameworks, and agent modes for ContractSpec."
|
|
309
|
-
})
|
|
310
|
-
]
|
|
311
|
-
}),
|
|
312
|
-
/* @__PURE__ */ jsxs2("div", {
|
|
313
|
-
className: "space-y-6",
|
|
314
|
-
children: [
|
|
315
|
-
/* @__PURE__ */ jsxs2("div", {
|
|
316
|
-
className: "card-subtle space-y-3 p-6",
|
|
317
|
-
children: [
|
|
318
|
-
/* @__PURE__ */ jsx2("h2", {
|
|
319
|
-
className: "font-bold text-2xl",
|
|
320
|
-
children: "Runtimes"
|
|
321
|
-
}),
|
|
322
|
-
/* @__PURE__ */ jsxs2("ul", {
|
|
323
|
-
className: "space-y-2 text-muted-foreground",
|
|
324
|
-
children: [
|
|
325
|
-
/* @__PURE__ */ jsx2("li", {
|
|
326
|
-
children: "Node.js 20+"
|
|
327
|
-
}),
|
|
328
|
-
/* @__PURE__ */ jsx2("li", {
|
|
329
|
-
children: "Bun 1.0+"
|
|
330
|
-
})
|
|
331
|
-
]
|
|
332
|
-
})
|
|
333
|
-
]
|
|
334
|
-
}),
|
|
335
|
-
/* @__PURE__ */ jsxs2("div", {
|
|
336
|
-
className: "card-subtle space-y-3 p-6",
|
|
337
|
-
children: [
|
|
338
|
-
/* @__PURE__ */ jsx2("h2", {
|
|
339
|
-
className: "font-bold text-2xl",
|
|
340
|
-
children: "Frameworks"
|
|
341
|
-
}),
|
|
342
|
-
/* @__PURE__ */ jsxs2("ul", {
|
|
343
|
-
className: "space-y-2 text-muted-foreground",
|
|
344
|
-
children: [
|
|
345
|
-
/* @__PURE__ */ jsx2("li", {
|
|
346
|
-
children: "Next.js 14+ (App Router preferred)"
|
|
347
|
-
}),
|
|
348
|
-
/* @__PURE__ */ jsx2("li", {
|
|
349
|
-
children: "Bun + Elysia or compatible HTTP servers"
|
|
350
|
-
})
|
|
351
|
-
]
|
|
352
|
-
})
|
|
353
|
-
]
|
|
354
|
-
}),
|
|
355
|
-
/* @__PURE__ */ jsxs2("div", {
|
|
356
|
-
className: "card-subtle space-y-3 p-6",
|
|
357
|
-
children: [
|
|
358
|
-
/* @__PURE__ */ jsx2("h2", {
|
|
359
|
-
className: "font-bold text-2xl",
|
|
360
|
-
children: "Package managers"
|
|
361
|
-
}),
|
|
362
|
-
/* @__PURE__ */ jsxs2("ul", {
|
|
363
|
-
className: "space-y-2 text-muted-foreground",
|
|
364
|
-
children: [
|
|
365
|
-
/* @__PURE__ */ jsx2("li", {
|
|
366
|
-
children: "bun (recommended)"
|
|
367
|
-
}),
|
|
368
|
-
/* @__PURE__ */ jsx2("li", {
|
|
369
|
-
children: "npm"
|
|
370
|
-
}),
|
|
371
|
-
/* @__PURE__ */ jsx2("li", {
|
|
372
|
-
children: "pnpm"
|
|
373
|
-
})
|
|
374
|
-
]
|
|
375
|
-
})
|
|
376
|
-
]
|
|
377
|
-
}),
|
|
378
|
-
/* @__PURE__ */ jsxs2("div", {
|
|
379
|
-
className: "card-subtle space-y-3 p-6",
|
|
380
|
-
children: [
|
|
381
|
-
/* @__PURE__ */ jsx2("h2", {
|
|
382
|
-
className: "font-bold text-2xl",
|
|
383
|
-
children: "AI agent modes"
|
|
384
|
-
}),
|
|
385
|
-
/* @__PURE__ */ jsxs2("ul", {
|
|
386
|
-
className: "space-y-2 text-muted-foreground",
|
|
387
|
-
children: [
|
|
388
|
-
/* @__PURE__ */ jsx2("li", {
|
|
389
|
-
children: "claude-code"
|
|
390
|
-
}),
|
|
391
|
-
/* @__PURE__ */ jsx2("li", {
|
|
392
|
-
children: "openai-codex"
|
|
393
|
-
}),
|
|
394
|
-
/* @__PURE__ */ jsx2("li", {
|
|
395
|
-
children: "cursor"
|
|
396
|
-
}),
|
|
397
|
-
/* @__PURE__ */ jsx2("li", {
|
|
398
|
-
children: "opencode"
|
|
399
|
-
}),
|
|
400
|
-
/* @__PURE__ */ jsx2("li", {
|
|
401
|
-
children: "simple (direct LLM)"
|
|
402
|
-
})
|
|
403
|
-
]
|
|
404
|
-
})
|
|
405
|
-
]
|
|
406
|
-
}),
|
|
407
|
-
/* @__PURE__ */ jsxs2("div", {
|
|
408
|
-
className: "card-subtle space-y-3 p-6",
|
|
409
|
-
children: [
|
|
410
|
-
/* @__PURE__ */ jsx2("h2", {
|
|
411
|
-
className: "font-bold text-2xl",
|
|
412
|
-
children: "Datastores"
|
|
413
|
-
}),
|
|
414
|
-
/* @__PURE__ */ jsx2("p", {
|
|
415
|
-
className: "text-muted-foreground",
|
|
416
|
-
children: "ContractSpec ships with Prisma-friendly defaults and can integrate with custom adapters for other databases."
|
|
417
|
-
}),
|
|
418
|
-
/* @__PURE__ */ jsxs2("ul", {
|
|
419
|
-
className: "space-y-2 text-muted-foreground",
|
|
420
|
-
children: [
|
|
421
|
-
/* @__PURE__ */ jsx2("li", {
|
|
422
|
-
children: "PostgreSQL via Prisma"
|
|
423
|
-
}),
|
|
424
|
-
/* @__PURE__ */ jsx2("li", {
|
|
425
|
-
children: "Custom adapters for other SQL/NoSQL stores"
|
|
426
|
-
})
|
|
427
|
-
]
|
|
428
|
-
})
|
|
429
|
-
]
|
|
430
|
-
})
|
|
431
|
-
]
|
|
432
|
-
}),
|
|
433
|
-
/* @__PURE__ */ jsxs2("div", {
|
|
434
|
-
className: "flex flex-wrap items-center gap-3 pt-2",
|
|
435
|
-
children: [
|
|
436
|
-
/* @__PURE__ */ jsx2(Link2, {
|
|
437
|
-
href: "/docs/getting-started/start-here",
|
|
438
|
-
className: "btn-ghost",
|
|
439
|
-
children: "Start here"
|
|
440
|
-
}),
|
|
441
|
-
/* @__PURE__ */ jsx2(Link2, {
|
|
442
|
-
href: "/docs/getting-started/troubleshooting",
|
|
443
|
-
className: "btn-ghost",
|
|
444
|
-
children: "Troubleshooting"
|
|
445
|
-
}),
|
|
446
|
-
/* @__PURE__ */ jsxs2(Link2, {
|
|
447
|
-
href: "/docs/getting-started/installation",
|
|
448
|
-
className: "btn-primary",
|
|
449
|
-
children: [
|
|
450
|
-
"Next: Installation ",
|
|
451
|
-
/* @__PURE__ */ jsx2(ChevronRight2, {
|
|
452
|
-
size: 16
|
|
453
|
-
})
|
|
454
|
-
]
|
|
455
|
-
})
|
|
456
|
-
]
|
|
457
|
-
})
|
|
458
|
-
]
|
|
459
|
-
});
|
|
460
|
-
}
|
|
461
|
-
|
|
462
|
-
// src/components/docs/getting-started/DataViewTutorialPage.tsx
|
|
463
|
-
import { CodeBlock as CodeBlock2 } from "@contractspec/lib.design-system";
|
|
464
|
-
import Link3 from "@contractspec/lib.ui-link";
|
|
465
|
-
import { ChevronRight as ChevronRight3 } from "lucide-react";
|
|
466
|
-
import { jsx as jsx3, jsxs as jsxs3 } from "react/jsx-runtime";
|
|
467
|
-
function DataViewTutorialPage() {
|
|
468
|
-
return /* @__PURE__ */ jsxs3("div", {
|
|
469
|
-
className: "space-y-8",
|
|
470
|
-
children: [
|
|
471
|
-
/* @__PURE__ */ jsxs3("div", {
|
|
472
|
-
className: "space-y-4",
|
|
473
|
-
children: [
|
|
474
|
-
/* @__PURE__ */ jsx3("h1", {
|
|
475
|
-
className: "font-bold text-4xl",
|
|
476
|
-
children: "Display Data with DataViews"
|
|
477
|
-
}),
|
|
478
|
-
/* @__PURE__ */ jsx3("p", {
|
|
479
|
-
className: "text-lg text-muted-foreground",
|
|
480
|
-
children: "Define a filterable, sortable transaction history view that works across web and mobile without duplicating UI code."
|
|
481
|
-
})
|
|
482
|
-
]
|
|
483
|
-
}),
|
|
484
|
-
/* @__PURE__ */ jsxs3("div", {
|
|
485
|
-
className: "space-y-4",
|
|
486
|
-
children: [
|
|
487
|
-
/* @__PURE__ */ jsx3("h2", {
|
|
488
|
-
className: "font-bold text-2xl",
|
|
489
|
-
children: "1. Define the underlying query"
|
|
490
|
-
}),
|
|
491
|
-
/* @__PURE__ */ jsx3("p", {
|
|
492
|
-
className: "text-muted-foreground",
|
|
493
|
-
children: "First, create a query operation to fetch the data:"
|
|
494
|
-
}),
|
|
495
|
-
/* @__PURE__ */ jsx3(CodeBlock2, {
|
|
496
|
-
language: "typescript",
|
|
497
|
-
filename: "lib/specs/billing/list-transactions.ts",
|
|
498
|
-
code: `import { defineQuery } from '@contractspec/lib.contracts-spec';
|
|
25
|
+
}`})]})]}),l("div",{className:"flex items-center gap-4 pt-4",children:[l(E,{href:"/docs/getting-started/tools/vscode",className:"btn-primary",children:["Next: VS Code Extension ",a(H,{size:16})]}),a(E,{href:"/docs/getting-started/tools",className:"btn-ghost",children:"Back to Tools"})]})]})}import k from"@contractspec/lib.ui-link";import{ChevronRight as W}from"lucide-react";import{jsx as i,jsxs as p}from"react/jsx-runtime";function G(){return p("div",{className:"space-y-8",children:[p("div",{className:"space-y-2",children:[i("h1",{className:"font-bold text-4xl",children:"Compatibility"}),i("p",{className:"text-lg text-muted-foreground",children:"Supported runtimes, frameworks, and agent modes for ContractSpec."})]}),p("div",{className:"space-y-6",children:[p("div",{className:"card-subtle space-y-3 p-6",children:[i("h2",{className:"font-bold text-2xl",children:"Runtimes"}),p("ul",{className:"space-y-2 text-muted-foreground",children:[i("li",{children:"Node.js 20+"}),i("li",{children:"Bun 1.0+"})]})]}),p("div",{className:"card-subtle space-y-3 p-6",children:[i("h2",{className:"font-bold text-2xl",children:"Frameworks"}),p("ul",{className:"space-y-2 text-muted-foreground",children:[i("li",{children:"Next.js 14+ (App Router preferred)"}),i("li",{children:"Bun + Elysia or compatible HTTP servers"})]})]}),p("div",{className:"card-subtle space-y-3 p-6",children:[i("h2",{className:"font-bold text-2xl",children:"Package managers"}),p("ul",{className:"space-y-2 text-muted-foreground",children:[i("li",{children:"bun (recommended)"}),i("li",{children:"npm"}),i("li",{children:"pnpm"})]})]}),p("div",{className:"card-subtle space-y-3 p-6",children:[i("h2",{className:"font-bold text-2xl",children:"AI agent modes"}),p("ul",{className:"space-y-2 text-muted-foreground",children:[i("li",{children:"claude-code"}),i("li",{children:"openai-codex"}),i("li",{children:"cursor"}),i("li",{children:"opencode"}),i("li",{children:"simple (direct LLM)"})]})]}),p("div",{className:"card-subtle space-y-3 p-6",children:[i("h2",{className:"font-bold text-2xl",children:"Datastores"}),i("p",{className:"text-muted-foreground",children:"ContractSpec ships with Prisma-friendly defaults and can integrate with custom adapters for other databases."}),p("ul",{className:"space-y-2 text-muted-foreground",children:[i("li",{children:"PostgreSQL via Prisma"}),i("li",{children:"Custom adapters for other SQL/NoSQL stores"})]})]})]}),p("div",{className:"flex flex-wrap items-center gap-3 pt-2",children:[i(k,{href:"/docs/getting-started/start-here",className:"btn-ghost",children:"Start here"}),i(k,{href:"/docs/getting-started/troubleshooting",className:"btn-ghost",children:"Troubleshooting"}),p(k,{href:"/docs/getting-started/installation",className:"btn-primary",children:["Next: Installation ",i(W,{size:16})]})]})]})}import{CodeBlock as I}from"@contractspec/lib.design-system";import V from"@contractspec/lib.ui-link";import{ChevronRight as Q}from"lucide-react";import{jsx as c,jsxs as b}from"react/jsx-runtime";function U(){return b("div",{className:"space-y-8",children:[b("div",{className:"space-y-4",children:[c("h1",{className:"font-bold text-4xl",children:"Display Data with DataViews"}),c("p",{className:"text-lg text-muted-foreground",children:"Define a filterable, sortable transaction history view that works across web and mobile without duplicating UI code."})]}),b("div",{className:"space-y-4",children:[c("h2",{className:"font-bold text-2xl",children:"1. Define the underlying query"}),c("p",{className:"text-muted-foreground",children:"First, create a query operation to fetch the data:"}),c(I,{language:"typescript",filename:"lib/specs/billing/list-transactions.ts",code:`import { defineQuery } from '@contractspec/lib.contracts-spec';
|
|
499
26
|
|
|
500
27
|
export const ListTransactions = defineQuery({
|
|
501
28
|
meta: {
|
|
@@ -508,25 +35,7 @@ export const ListTransactions = defineQuery({
|
|
|
508
35
|
output: /* array of transactions */,
|
|
509
36
|
},
|
|
510
37
|
policy: { auth: 'user' },
|
|
511
|
-
});`
|
|
512
|
-
})
|
|
513
|
-
]
|
|
514
|
-
}),
|
|
515
|
-
/* @__PURE__ */ jsxs3("div", {
|
|
516
|
-
className: "space-y-4",
|
|
517
|
-
children: [
|
|
518
|
-
/* @__PURE__ */ jsx3("h2", {
|
|
519
|
-
className: "font-bold text-2xl",
|
|
520
|
-
children: "2. Define the DataView spec"
|
|
521
|
-
}),
|
|
522
|
-
/* @__PURE__ */ jsx3("p", {
|
|
523
|
-
className: "text-muted-foreground",
|
|
524
|
-
children: "Wrap your query with presentation metadata:"
|
|
525
|
-
}),
|
|
526
|
-
/* @__PURE__ */ jsx3(CodeBlock2, {
|
|
527
|
-
language: "typescript",
|
|
528
|
-
filename: "lib/specs/billing/transaction-history.data-view.ts",
|
|
529
|
-
code: `import { defineDataView } from '@contractspec/lib.contracts-spec';
|
|
38
|
+
});`})]}),b("div",{className:"space-y-4",children:[c("h2",{className:"font-bold text-2xl",children:"2. Define the DataView spec"}),c("p",{className:"text-muted-foreground",children:"Wrap your query with presentation metadata:"}),c(I,{language:"typescript",filename:"lib/specs/billing/transaction-history.data-view.ts",code:`import { defineDataView } from '@contractspec/lib.contracts-spec';
|
|
530
39
|
import { ListTransactions } from './list-transactions';
|
|
531
40
|
|
|
532
41
|
export const TransactionHistory = defineDataView({
|
|
@@ -595,25 +104,7 @@ export const TransactionHistory = defineDataView({
|
|
|
595
104
|
defaultSort: { field: 'date', direction: 'desc' },
|
|
596
105
|
pagination: { pageSize: 25 },
|
|
597
106
|
},
|
|
598
|
-
});`
|
|
599
|
-
})
|
|
600
|
-
]
|
|
601
|
-
}),
|
|
602
|
-
/* @__PURE__ */ jsxs3("div", {
|
|
603
|
-
className: "space-y-4",
|
|
604
|
-
children: [
|
|
605
|
-
/* @__PURE__ */ jsx3("h2", {
|
|
606
|
-
className: "font-bold text-2xl",
|
|
607
|
-
children: "3. Render on the frontend"
|
|
608
|
-
}),
|
|
609
|
-
/* @__PURE__ */ jsx3("p", {
|
|
610
|
-
className: "text-muted-foreground",
|
|
611
|
-
children: "Use the runtime renderer in your React or React Native app:"
|
|
612
|
-
}),
|
|
613
|
-
/* @__PURE__ */ jsx3(CodeBlock2, {
|
|
614
|
-
language: "tsx",
|
|
615
|
-
filename: "app/dashboard/transactions/page.tsx",
|
|
616
|
-
code: `'use client';
|
|
107
|
+
});`})]}),b("div",{className:"space-y-4",children:[c("h2",{className:"font-bold text-2xl",children:"3. Render on the frontend"}),c("p",{className:"text-muted-foreground",children:"Use the runtime renderer in your React or React Native app:"}),c(I,{language:"tsx",filename:"app/dashboard/transactions/page.tsx",code:`'use client';
|
|
617
108
|
|
|
618
109
|
import { DataViewRenderer } from '@contractspec/lib.design-system';
|
|
619
110
|
import { TransactionHistory } from '@/lib/specs/billing/transaction-history.data-view';
|
|
@@ -638,314 +129,7 @@ export function TransactionsPage() {
|
|
|
638
129
|
/>
|
|
639
130
|
</div>
|
|
640
131
|
);
|
|
641
|
-
}`
|
|
642
|
-
})
|
|
643
|
-
]
|
|
644
|
-
}),
|
|
645
|
-
/* @__PURE__ */ jsxs3("div", {
|
|
646
|
-
className: "card-subtle space-y-4 p-6",
|
|
647
|
-
children: [
|
|
648
|
-
/* @__PURE__ */ jsx3("h3", {
|
|
649
|
-
className: "font-bold",
|
|
650
|
-
children: "Why DataViews?"
|
|
651
|
-
}),
|
|
652
|
-
/* @__PURE__ */ jsxs3("ul", {
|
|
653
|
-
className: "space-y-2 text-muted-foreground text-sm",
|
|
654
|
-
children: [
|
|
655
|
-
/* @__PURE__ */ jsx3("li", {
|
|
656
|
-
children: "Same spec renders on web (React) and mobile (React Native)"
|
|
657
|
-
}),
|
|
658
|
-
/* @__PURE__ */ jsx3("li", {
|
|
659
|
-
children: "Filters, sorting, and pagination handled automatically"
|
|
660
|
-
}),
|
|
661
|
-
/* @__PURE__ */ jsx3("li", {
|
|
662
|
-
children: "Format rules (currency, dates, badges) applied consistently"
|
|
663
|
-
}),
|
|
664
|
-
/* @__PURE__ */ jsx3("li", {
|
|
665
|
-
children: "Export to CSV/PDF using the same spec"
|
|
666
|
-
}),
|
|
667
|
-
/* @__PURE__ */ jsx3("li", {
|
|
668
|
-
children: "A/B test different layouts without touching the backend"
|
|
669
|
-
})
|
|
670
|
-
]
|
|
671
|
-
})
|
|
672
|
-
]
|
|
673
|
-
}),
|
|
674
|
-
/* @__PURE__ */ jsxs3("div", {
|
|
675
|
-
className: "flex items-center gap-4 pt-4",
|
|
676
|
-
children: [
|
|
677
|
-
/* @__PURE__ */ jsxs3(Link3, {
|
|
678
|
-
href: "/docs/libraries/data-views",
|
|
679
|
-
className: "btn-primary",
|
|
680
|
-
children: [
|
|
681
|
-
"DataView API Reference ",
|
|
682
|
-
/* @__PURE__ */ jsx3(ChevronRight3, {
|
|
683
|
-
size: 16
|
|
684
|
-
})
|
|
685
|
-
]
|
|
686
|
-
}),
|
|
687
|
-
/* @__PURE__ */ jsx3(Link3, {
|
|
688
|
-
href: "/docs/specs/workflows",
|
|
689
|
-
className: "btn-ghost",
|
|
690
|
-
children: "Next: Workflows"
|
|
691
|
-
})
|
|
692
|
-
]
|
|
693
|
-
})
|
|
694
|
-
]
|
|
695
|
-
});
|
|
696
|
-
}
|
|
697
|
-
|
|
698
|
-
// src/components/docs/getting-started/DeveloperToolsPage.tsx
|
|
699
|
-
import { CodeBlock as CodeBlock3, InstallCommand as InstallCommand2 } from "@contractspec/lib.design-system";
|
|
700
|
-
import Link4 from "@contractspec/lib.ui-link";
|
|
701
|
-
import { ChevronRight as ChevronRight4, Code2, Cpu, Layers, Terminal } from "lucide-react";
|
|
702
|
-
import { jsx as jsx4, jsxs as jsxs4 } from "react/jsx-runtime";
|
|
703
|
-
function DeveloperToolsPage() {
|
|
704
|
-
const tools = [
|
|
705
|
-
{
|
|
706
|
-
name: "CLI",
|
|
707
|
-
href: "/docs/getting-started/tools/cli",
|
|
708
|
-
description: "Command-line interface for spec creation, building, validation, and CI/CD integration.",
|
|
709
|
-
icon: Terminal,
|
|
710
|
-
status: "available",
|
|
711
|
-
highlights: [
|
|
712
|
-
"AI-powered code generation",
|
|
713
|
-
"Multiple agent modes",
|
|
714
|
-
"SARIF/JSON output"
|
|
715
|
-
]
|
|
716
|
-
},
|
|
717
|
-
{
|
|
718
|
-
name: "VS Code Extension",
|
|
719
|
-
href: "/docs/getting-started/tools/vscode",
|
|
720
|
-
description: "Real-time validation, scaffolding, and navigation directly in your editor.",
|
|
721
|
-
icon: Code2,
|
|
722
|
-
status: "available",
|
|
723
|
-
highlights: [
|
|
724
|
-
"Specs Explorer sidebar",
|
|
725
|
-
"Watch mode",
|
|
726
|
-
"Interactive walkthroughs"
|
|
727
|
-
]
|
|
728
|
-
},
|
|
729
|
-
{
|
|
730
|
-
name: "ContractSpec Studio",
|
|
731
|
-
href: "https://www.contractspec.studio",
|
|
732
|
-
description: "The operating layer on top of OSS ContractSpec for teams that want evidence-backed decisions, workflow automation, and managed delivery loops.",
|
|
733
|
-
icon: Layers,
|
|
734
|
-
status: "available",
|
|
735
|
-
highlights: [
|
|
736
|
-
"Evidence-to-decision loop",
|
|
737
|
-
"Compiled spec diffs and task packs",
|
|
738
|
-
"Exports to Linear, Jira, Notion, and GitHub"
|
|
739
|
-
]
|
|
740
|
-
},
|
|
741
|
-
{
|
|
742
|
-
name: "JetBrains Plugin",
|
|
743
|
-
href: "#",
|
|
744
|
-
description: "Full ContractSpec support for IntelliJ, WebStorm, and other JetBrains IDEs.",
|
|
745
|
-
icon: Cpu,
|
|
746
|
-
status: "coming-soon",
|
|
747
|
-
highlights: [
|
|
748
|
-
"Code navigation",
|
|
749
|
-
"Inline validation",
|
|
750
|
-
"Refactoring support"
|
|
751
|
-
]
|
|
752
|
-
}
|
|
753
|
-
];
|
|
754
|
-
return /* @__PURE__ */ jsxs4("div", {
|
|
755
|
-
className: "space-y-8",
|
|
756
|
-
children: [
|
|
757
|
-
/* @__PURE__ */ jsxs4("div", {
|
|
758
|
-
className: "space-y-2",
|
|
759
|
-
children: [
|
|
760
|
-
/* @__PURE__ */ jsx4("h1", {
|
|
761
|
-
className: "font-bold text-4xl",
|
|
762
|
-
children: "Developer Tools"
|
|
763
|
-
}),
|
|
764
|
-
/* @__PURE__ */ jsx4("p", {
|
|
765
|
-
className: "text-lg text-muted-foreground",
|
|
766
|
-
children: "Use the OSS toolchain to define contracts, validate changes, inspect generated surfaces, and adopt the system incrementally across different environments."
|
|
767
|
-
})
|
|
768
|
-
]
|
|
769
|
-
}),
|
|
770
|
-
/* @__PURE__ */ jsx4("div", {
|
|
771
|
-
className: "grid gap-6 md:grid-cols-2",
|
|
772
|
-
children: tools.map((tool) => {
|
|
773
|
-
const IconComponent = tool.icon;
|
|
774
|
-
const isComingSoon = tool.status === "coming-soon";
|
|
775
|
-
return /* @__PURE__ */ jsxs4("div", {
|
|
776
|
-
className: `card-subtle relative space-y-4 p-6 ${isComingSoon ? "opacity-75" : ""}`,
|
|
777
|
-
children: [
|
|
778
|
-
isComingSoon && /* @__PURE__ */ jsx4("span", {
|
|
779
|
-
className: "absolute -top-2 right-4 rounded-full bg-violet-500/20 px-2 py-0.5 font-medium text-violet-400 text-xs",
|
|
780
|
-
children: "Coming Soon"
|
|
781
|
-
}),
|
|
782
|
-
/* @__PURE__ */ jsxs4("div", {
|
|
783
|
-
className: "flex items-center gap-3",
|
|
784
|
-
children: [
|
|
785
|
-
/* @__PURE__ */ jsx4("div", {
|
|
786
|
-
className: "flex h-10 w-10 items-center justify-center rounded-lg bg-violet-500/10",
|
|
787
|
-
children: /* @__PURE__ */ jsx4(IconComponent, {
|
|
788
|
-
className: "h-5 w-5 text-violet-400"
|
|
789
|
-
})
|
|
790
|
-
}),
|
|
791
|
-
/* @__PURE__ */ jsx4("h3", {
|
|
792
|
-
className: "font-bold text-lg",
|
|
793
|
-
children: tool.name
|
|
794
|
-
})
|
|
795
|
-
]
|
|
796
|
-
}),
|
|
797
|
-
/* @__PURE__ */ jsx4("p", {
|
|
798
|
-
className: "text-muted-foreground text-sm",
|
|
799
|
-
children: tool.description
|
|
800
|
-
}),
|
|
801
|
-
/* @__PURE__ */ jsx4("ul", {
|
|
802
|
-
className: "space-y-1",
|
|
803
|
-
children: tool.highlights.map((highlight) => /* @__PURE__ */ jsxs4("li", {
|
|
804
|
-
className: "flex items-center gap-2 text-muted-foreground text-sm",
|
|
805
|
-
children: [
|
|
806
|
-
/* @__PURE__ */ jsx4("span", {
|
|
807
|
-
className: "text-violet-400",
|
|
808
|
-
children: "-"
|
|
809
|
-
}),
|
|
810
|
-
highlight
|
|
811
|
-
]
|
|
812
|
-
}, highlight))
|
|
813
|
-
}),
|
|
814
|
-
!isComingSoon && /* @__PURE__ */ jsxs4(Link4, {
|
|
815
|
-
href: tool.href,
|
|
816
|
-
className: "btn-ghost inline-flex items-center gap-1 text-sm",
|
|
817
|
-
children: [
|
|
818
|
-
"Learn more ",
|
|
819
|
-
/* @__PURE__ */ jsx4(ChevronRight4, {
|
|
820
|
-
size: 14
|
|
821
|
-
})
|
|
822
|
-
]
|
|
823
|
-
})
|
|
824
|
-
]
|
|
825
|
-
}, tool.name);
|
|
826
|
-
})
|
|
827
|
-
}),
|
|
828
|
-
/* @__PURE__ */ jsxs4("div", {
|
|
829
|
-
className: "card-subtle space-y-4 p-6",
|
|
830
|
-
children: [
|
|
831
|
-
/* @__PURE__ */ jsx4("h3", {
|
|
832
|
-
className: "font-bold",
|
|
833
|
-
children: "Quick Install"
|
|
834
|
-
}),
|
|
835
|
-
/* @__PURE__ */ jsxs4("div", {
|
|
836
|
-
className: "space-y-3",
|
|
837
|
-
children: [
|
|
838
|
-
/* @__PURE__ */ jsxs4("div", {
|
|
839
|
-
children: [
|
|
840
|
-
/* @__PURE__ */ jsx4("p", {
|
|
841
|
-
className: "mb-2 font-medium text-muted-foreground text-xs",
|
|
842
|
-
children: "CLI"
|
|
843
|
-
}),
|
|
844
|
-
/* @__PURE__ */ jsx4(InstallCommand2, {
|
|
845
|
-
package: "contractspec",
|
|
846
|
-
dev: true
|
|
847
|
-
})
|
|
848
|
-
]
|
|
849
|
-
}),
|
|
850
|
-
/* @__PURE__ */ jsxs4("div", {
|
|
851
|
-
children: [
|
|
852
|
-
/* @__PURE__ */ jsx4("p", {
|
|
853
|
-
className: "mb-2 font-medium text-muted-foreground text-xs",
|
|
854
|
-
children: "VS Code Extension"
|
|
855
|
-
}),
|
|
856
|
-
/* @__PURE__ */ jsx4(CodeBlock3, {
|
|
857
|
-
language: "bash",
|
|
858
|
-
code: "code --install-extension lssm.vscode-contractspec"
|
|
859
|
-
})
|
|
860
|
-
]
|
|
861
|
-
})
|
|
862
|
-
]
|
|
863
|
-
})
|
|
864
|
-
]
|
|
865
|
-
}),
|
|
866
|
-
/* @__PURE__ */ jsxs4("div", {
|
|
867
|
-
className: "flex items-center gap-4 pt-4",
|
|
868
|
-
children: [
|
|
869
|
-
/* @__PURE__ */ jsxs4(Link4, {
|
|
870
|
-
href: "/docs/getting-started/tools/cli",
|
|
871
|
-
className: "btn-primary",
|
|
872
|
-
children: [
|
|
873
|
-
"Get Started with CLI ",
|
|
874
|
-
/* @__PURE__ */ jsx4(ChevronRight4, {
|
|
875
|
-
size: 16
|
|
876
|
-
})
|
|
877
|
-
]
|
|
878
|
-
}),
|
|
879
|
-
/* @__PURE__ */ jsx4(Link4, {
|
|
880
|
-
href: "/docs/getting-started/tools/vscode",
|
|
881
|
-
className: "btn-ghost",
|
|
882
|
-
children: "VS Code Extension"
|
|
883
|
-
})
|
|
884
|
-
]
|
|
885
|
-
})
|
|
886
|
-
]
|
|
887
|
-
});
|
|
888
|
-
}
|
|
889
|
-
|
|
890
|
-
// src/components/docs/getting-started/HelloWorldPage.tsx
|
|
891
|
-
import { CodeBlock as CodeBlock4 } from "@contractspec/lib.design-system";
|
|
892
|
-
import Link5 from "@contractspec/lib.ui-link";
|
|
893
|
-
import { ChevronRight as ChevronRight5 } from "lucide-react";
|
|
894
|
-
import { jsx as jsx5, jsxs as jsxs5 } from "react/jsx-runtime";
|
|
895
|
-
function HelloWorldPage() {
|
|
896
|
-
return /* @__PURE__ */ jsxs5("div", {
|
|
897
|
-
className: "space-y-8",
|
|
898
|
-
children: [
|
|
899
|
-
/* @__PURE__ */ jsxs5("div", {
|
|
900
|
-
className: "space-y-2",
|
|
901
|
-
children: [
|
|
902
|
-
/* @__PURE__ */ jsx5("h1", {
|
|
903
|
-
className: "font-bold text-4xl",
|
|
904
|
-
children: "Your First Operation"
|
|
905
|
-
}),
|
|
906
|
-
/* @__PURE__ */ jsx5("p", {
|
|
907
|
-
className: "text-lg text-muted-foreground",
|
|
908
|
-
children: "Build a payment capture operation with policy enforcement in under 10 minutes."
|
|
909
|
-
})
|
|
910
|
-
]
|
|
911
|
-
}),
|
|
912
|
-
/* @__PURE__ */ jsxs5("div", {
|
|
913
|
-
className: "space-y-6",
|
|
914
|
-
children: [
|
|
915
|
-
/* @__PURE__ */ jsxs5("div", {
|
|
916
|
-
className: "space-y-3",
|
|
917
|
-
children: [
|
|
918
|
-
/* @__PURE__ */ jsx5("h2", {
|
|
919
|
-
className: "font-bold text-2xl",
|
|
920
|
-
children: "What you'll build"
|
|
921
|
-
}),
|
|
922
|
-
/* @__PURE__ */ jsx5("p", {
|
|
923
|
-
className: "text-muted-foreground",
|
|
924
|
-
children: "A real-world payment processing operation that validates input, enforces business rules, integrates with Stripe, and audits every transaction. This is production-ready code, not a toy example."
|
|
925
|
-
})
|
|
926
|
-
]
|
|
927
|
-
}),
|
|
928
|
-
/* @__PURE__ */ jsxs5("div", {
|
|
929
|
-
className: "space-y-3",
|
|
930
|
-
children: [
|
|
931
|
-
/* @__PURE__ */ jsx5("h2", {
|
|
932
|
-
className: "font-bold text-2xl",
|
|
933
|
-
children: "1. Define the operation spec"
|
|
934
|
-
}),
|
|
935
|
-
/* @__PURE__ */ jsxs5("p", {
|
|
936
|
-
className: "text-muted-foreground",
|
|
937
|
-
children: [
|
|
938
|
-
"Create ",
|
|
939
|
-
/* @__PURE__ */ jsx5("code", {
|
|
940
|
-
children: "lib/specs/billing/capture-payment.ts"
|
|
941
|
-
}),
|
|
942
|
-
":"
|
|
943
|
-
]
|
|
944
|
-
}),
|
|
945
|
-
/* @__PURE__ */ jsx5(CodeBlock4, {
|
|
946
|
-
language: "typescript",
|
|
947
|
-
filename: "lib/specs/billing/capture-payment.ts",
|
|
948
|
-
code: `import { defineCommand } from '@contractspec/lib.contracts-spec';
|
|
132
|
+
}`})]}),b("div",{className:"card-subtle space-y-4 p-6",children:[c("h3",{className:"font-bold",children:"Why DataViews?"}),b("ul",{className:"space-y-2 text-muted-foreground text-sm",children:[c("li",{children:"Same spec renders on web (React) and mobile (React Native)"}),c("li",{children:"Filters, sorting, and pagination handled automatically"}),c("li",{children:"Format rules (currency, dates, badges) applied consistently"}),c("li",{children:"Export to CSV/PDF using the same spec"}),c("li",{children:"A/B test different layouts without touching the backend"})]})]}),b("div",{className:"flex items-center gap-4 pt-4",children:[b(V,{href:"/docs/libraries/data-views",className:"btn-primary",children:["DataView API Reference ",c(Q,{size:16})]}),c(V,{href:"/docs/specs/workflows",className:"btn-ghost",children:"Next: Workflows"})]})]})}import{CodeBlock as J,InstallCommand as _}from"@contractspec/lib.design-system";import P from"@contractspec/lib.ui-link";import{ChevronRight as B,Code2 as K,Cpu as X,Layers as Y,Terminal as $}from"lucide-react";import{jsx as s,jsxs as h}from"react/jsx-runtime";function De(){return h("div",{className:"space-y-8",children:[h("div",{className:"space-y-2",children:[s("h1",{className:"font-bold text-4xl",children:"Developer Tools"}),s("p",{className:"text-lg text-muted-foreground",children:"Use the OSS toolchain to define contracts, validate changes, inspect generated surfaces, and adopt the system incrementally across different environments."})]}),s("div",{className:"grid gap-6 md:grid-cols-2",children:[{name:"CLI",href:"/docs/getting-started/tools/cli",description:"Command-line interface for spec creation, building, validation, and CI/CD integration.",icon:$,status:"available",highlights:["AI-powered code generation","Multiple agent modes","SARIF/JSON output"]},{name:"VS Code Extension",href:"/docs/getting-started/tools/vscode",description:"Real-time validation, scaffolding, and navigation directly in your editor.",icon:K,status:"available",highlights:["Specs Explorer sidebar","Watch mode","Interactive walkthroughs"]},{name:"ContractSpec Studio",href:"https://www.contractspec.studio",description:"The operating layer on top of OSS ContractSpec for teams that want evidence-backed decisions, workflow automation, and managed delivery loops.",icon:Y,status:"available",highlights:["Evidence-to-decision loop","Compiled spec diffs and task packs","Exports to Linear, Jira, Notion, and GitHub"]},{name:"JetBrains Plugin",href:"#",description:"Full ContractSpec support for IntelliJ, WebStorm, and other JetBrains IDEs.",icon:X,status:"coming-soon",highlights:["Code navigation","Inline validation","Refactoring support"]}].map((u)=>{let y=u.icon,N=u.status==="coming-soon";return h("div",{className:`card-subtle relative space-y-4 p-6 ${N?"opacity-75":""}`,children:[N&&s("span",{className:"absolute -top-2 right-4 rounded-full bg-violet-500/20 px-2 py-0.5 font-medium text-violet-400 text-xs",children:"Coming Soon"}),h("div",{className:"flex items-center gap-3",children:[s("div",{className:"flex h-10 w-10 items-center justify-center rounded-lg bg-violet-500/10",children:s(y,{className:"h-5 w-5 text-violet-400"})}),s("h3",{className:"font-bold text-lg",children:u.name})]}),s("p",{className:"text-muted-foreground text-sm",children:u.description}),s("ul",{className:"space-y-1",children:u.highlights.map((A)=>h("li",{className:"flex items-center gap-2 text-muted-foreground text-sm",children:[s("span",{className:"text-violet-400",children:"-"}),A]},A))}),!N&&h(P,{href:u.href,className:"btn-ghost inline-flex items-center gap-1 text-sm",children:["Learn more ",s(B,{size:14})]})]},u.name)})}),h("div",{className:"card-subtle space-y-4 p-6",children:[s("h3",{className:"font-bold",children:"Quick Install"}),h("div",{className:"space-y-3",children:[h("div",{children:[s("p",{className:"mb-2 font-medium text-muted-foreground text-xs",children:"CLI"}),s(_,{package:"contractspec",dev:!0})]}),h("div",{children:[s("p",{className:"mb-2 font-medium text-muted-foreground text-xs",children:"VS Code Extension"}),s(J,{language:"bash",code:"code --install-extension lssm.vscode-contractspec"})]})]})]}),h("div",{className:"flex items-center gap-4 pt-4",children:[h(P,{href:"/docs/getting-started/tools/cli",className:"btn-primary",children:["Get Started with CLI ",s(B,{size:16})]}),s(P,{href:"/docs/getting-started/tools/vscode",className:"btn-ghost",children:"VS Code Extension"})]})]})}import{CodeBlock as w}from"@contractspec/lib.design-system";import Z from"@contractspec/lib.ui-link";import{ChevronRight as x}from"lucide-react";import{jsx as o,jsxs as f}from"react/jsx-runtime";function j(){return f("div",{className:"space-y-8",children:[f("div",{className:"space-y-2",children:[o("h1",{className:"font-bold text-4xl",children:"Your First Operation"}),o("p",{className:"text-lg text-muted-foreground",children:"Build a payment capture operation with policy enforcement in under 10 minutes."})]}),f("div",{className:"space-y-6",children:[f("div",{className:"space-y-3",children:[o("h2",{className:"font-bold text-2xl",children:"What you'll build"}),o("p",{className:"text-muted-foreground",children:"A real-world payment processing operation that validates input, enforces business rules, integrates with Stripe, and audits every transaction. This is production-ready code, not a toy example."})]}),f("div",{className:"space-y-3",children:[o("h2",{className:"font-bold text-2xl",children:"1. Define the operation spec"}),f("p",{className:"text-muted-foreground",children:["Create ",o("code",{children:"lib/specs/billing/capture-payment.ts"}),":"]}),o(w,{language:"typescript",filename:"lib/specs/billing/capture-payment.ts",code:`import { defineCommand } from '@contractspec/lib.contracts-spec';
|
|
949
133
|
import { SchemaModel, ScalarTypeEnum } from '@contractspec/lib.schema';
|
|
950
134
|
|
|
951
135
|
const CapturePaymentInput = new SchemaModel({
|
|
@@ -988,31 +172,7 @@ export const CapturePayment = defineCommand({
|
|
|
988
172
|
{ resource: 'invoice', action: 'pay', condition: 'owner' },
|
|
989
173
|
],
|
|
990
174
|
},
|
|
991
|
-
});`
|
|
992
|
-
})
|
|
993
|
-
]
|
|
994
|
-
}),
|
|
995
|
-
/* @__PURE__ */ jsxs5("div", {
|
|
996
|
-
className: "space-y-3",
|
|
997
|
-
children: [
|
|
998
|
-
/* @__PURE__ */ jsx5("h2", {
|
|
999
|
-
className: "font-bold text-2xl",
|
|
1000
|
-
children: "2. Implement the handler"
|
|
1001
|
-
}),
|
|
1002
|
-
/* @__PURE__ */ jsxs5("p", {
|
|
1003
|
-
className: "text-muted-foreground",
|
|
1004
|
-
children: [
|
|
1005
|
-
"Create ",
|
|
1006
|
-
/* @__PURE__ */ jsx5("code", {
|
|
1007
|
-
children: "lib/handlers/billing/capture-payment.ts"
|
|
1008
|
-
}),
|
|
1009
|
-
":"
|
|
1010
|
-
]
|
|
1011
|
-
}),
|
|
1012
|
-
/* @__PURE__ */ jsx5(CodeBlock4, {
|
|
1013
|
-
language: "typescript",
|
|
1014
|
-
filename: "lib/handlers/billing/capture-payment.ts",
|
|
1015
|
-
code: `import { CapturePayment } from '@/lib/specs/billing/capture-payment';
|
|
175
|
+
});`})]}),f("div",{className:"space-y-3",children:[o("h2",{className:"font-bold text-2xl",children:"2. Implement the handler"}),f("p",{className:"text-muted-foreground",children:["Create ",o("code",{children:"lib/handlers/billing/capture-payment.ts"}),":"]}),o(w,{language:"typescript",filename:"lib/handlers/billing/capture-payment.ts",code:`import { CapturePayment } from '@/lib/specs/billing/capture-payment';
|
|
1016
176
|
import { stripe } from '@/lib/integrations/stripe';
|
|
1017
177
|
import { db } from '@/lib/db';
|
|
1018
178
|
|
|
@@ -1049,46 +209,12 @@ export async function handleCapturePayment(input, ctx) {
|
|
|
1049
209
|
status: paymentIntent.status,
|
|
1050
210
|
receiptUrl: paymentIntent.charges.data[0]?.receipt_url,
|
|
1051
211
|
};
|
|
1052
|
-
}`
|
|
1053
|
-
})
|
|
1054
|
-
]
|
|
1055
|
-
}),
|
|
1056
|
-
/* @__PURE__ */ jsxs5("div", {
|
|
1057
|
-
className: "space-y-3",
|
|
1058
|
-
children: [
|
|
1059
|
-
/* @__PURE__ */ jsx5("h2", {
|
|
1060
|
-
className: "font-bold text-2xl",
|
|
1061
|
-
children: "3. Register and serve"
|
|
1062
|
-
}),
|
|
1063
|
-
/* @__PURE__ */ jsxs5("p", {
|
|
1064
|
-
className: "text-muted-foreground",
|
|
1065
|
-
children: [
|
|
1066
|
-
"Wire it up in ",
|
|
1067
|
-
/* @__PURE__ */ jsx5("code", {
|
|
1068
|
-
children: "lib/registry.ts"
|
|
1069
|
-
}),
|
|
1070
|
-
" and",
|
|
1071
|
-
" ",
|
|
1072
|
-
/* @__PURE__ */ jsx5("code", {
|
|
1073
|
-
children: "app/api/ops/[...route]/route.ts"
|
|
1074
|
-
}),
|
|
1075
|
-
":"
|
|
1076
|
-
]
|
|
1077
|
-
}),
|
|
1078
|
-
/* @__PURE__ */ jsx5(CodeBlock4, {
|
|
1079
|
-
language: "typescript",
|
|
1080
|
-
filename: "lib/registry.ts",
|
|
1081
|
-
code: `import { OperationSpecRegistry, installOp } from '@contractspec/lib.contracts-spec';
|
|
212
|
+
}`})]}),f("div",{className:"space-y-3",children:[o("h2",{className:"font-bold text-2xl",children:"3. Register and serve"}),f("p",{className:"text-muted-foreground",children:["Wire it up in ",o("code",{children:"lib/registry.ts"})," and"," ",o("code",{children:"app/api/ops/[...route]/route.ts"}),":"]}),o(w,{language:"typescript",filename:"lib/registry.ts",code:`import { OperationSpecRegistry, installOp } from '@contractspec/lib.contracts-spec';
|
|
1082
213
|
import { CapturePayment } from './specs/billing/capture-payment';
|
|
1083
214
|
import { handleCapturePayment } from './handlers/billing/capture-payment';
|
|
1084
215
|
|
|
1085
216
|
export const registry = new OperationSpecRegistry();
|
|
1086
|
-
installOp(registry, CapturePayment, handleCapturePayment);`
|
|
1087
|
-
}),
|
|
1088
|
-
/* @__PURE__ */ jsx5(CodeBlock4, {
|
|
1089
|
-
language: "typescript",
|
|
1090
|
-
filename: "app/api/ops/[...route]/route.ts",
|
|
1091
|
-
code: `import { makeNextAppHandler } from '@contractspec/lib.contracts-runtime-server-rest/rest-next-app';
|
|
217
|
+
installOp(registry, CapturePayment, handleCapturePayment);`}),o(w,{language:"typescript",filename:"app/api/ops/[...route]/route.ts",code:`import { makeNextAppHandler } from '@contractspec/lib.contracts-runtime-server-rest/rest-next-app';
|
|
1092
218
|
import { registry } from '@/lib/registry';
|
|
1093
219
|
import { auth } from '@/lib/auth';
|
|
1094
220
|
|
|
@@ -1097,957 +223,14 @@ const handler = makeNextAppHandler(registry, async (req) => {
|
|
|
1097
223
|
return { actor: 'user', userId: session.userId, tenantId: session.tenantId };
|
|
1098
224
|
});
|
|
1099
225
|
|
|
1100
|
-
export { handler as GET, handler as POST };`
|
|
1101
|
-
|
|
1102
|
-
]
|
|
1103
|
-
}),
|
|
1104
|
-
/* @__PURE__ */ jsxs5("div", {
|
|
1105
|
-
className: "card-subtle space-y-4 p-6",
|
|
1106
|
-
children: [
|
|
1107
|
-
/* @__PURE__ */ jsx5("h3", {
|
|
1108
|
-
className: "font-bold",
|
|
1109
|
-
children: "What you just built:"
|
|
1110
|
-
}),
|
|
1111
|
-
/* @__PURE__ */ jsxs5("ul", {
|
|
1112
|
-
className: "space-y-2 text-muted-foreground text-sm",
|
|
1113
|
-
children: [
|
|
1114
|
-
/* @__PURE__ */ jsxs5("li", {
|
|
1115
|
-
children: [
|
|
1116
|
-
"Type-safe API endpoint at",
|
|
1117
|
-
" ",
|
|
1118
|
-
/* @__PURE__ */ jsx5("code", {
|
|
1119
|
-
children: "/api/ops/billing.capturePayment"
|
|
1120
|
-
})
|
|
1121
|
-
]
|
|
1122
|
-
}),
|
|
1123
|
-
/* @__PURE__ */ jsx5("li", {
|
|
1124
|
-
children: "Automatic input validation (amount must be positive, IDs required)"
|
|
1125
|
-
}),
|
|
1126
|
-
/* @__PURE__ */ jsx5("li", {
|
|
1127
|
-
children: "Policy enforcement—only invoice owner can pay"
|
|
1128
|
-
}),
|
|
1129
|
-
/* @__PURE__ */ jsx5("li", {
|
|
1130
|
-
children: "Stripe integration with error handling"
|
|
1131
|
-
}),
|
|
1132
|
-
/* @__PURE__ */ jsx5("li", {
|
|
1133
|
-
children: "Database transaction with audit trail"
|
|
1134
|
-
}),
|
|
1135
|
-
/* @__PURE__ */ jsx5("li", {
|
|
1136
|
-
children: "Same spec works with GraphQL, MCP, or webhooks"
|
|
1137
|
-
})
|
|
1138
|
-
]
|
|
1139
|
-
})
|
|
1140
|
-
]
|
|
1141
|
-
}),
|
|
1142
|
-
/* @__PURE__ */ jsx5("div", {
|
|
1143
|
-
className: "flex items-center gap-4 pt-4",
|
|
1144
|
-
children: /* @__PURE__ */ jsxs5(Link5, {
|
|
1145
|
-
href: "/docs/getting-started/dataviews",
|
|
1146
|
-
className: "btn-primary",
|
|
1147
|
-
children: [
|
|
1148
|
-
"Next: Display Data with DataViews ",
|
|
1149
|
-
/* @__PURE__ */ jsx5(ChevronRight5, {
|
|
1150
|
-
size: 16
|
|
1151
|
-
})
|
|
1152
|
-
]
|
|
1153
|
-
})
|
|
1154
|
-
})
|
|
1155
|
-
]
|
|
1156
|
-
})
|
|
1157
|
-
]
|
|
1158
|
-
});
|
|
1159
|
-
}
|
|
1160
|
-
|
|
1161
|
-
// src/components/docs/getting-started/InstallationPage.tsx
|
|
1162
|
-
import { CodeBlock as CodeBlock5, InstallCommand as InstallCommand3 } from "@contractspec/lib.design-system";
|
|
1163
|
-
import Link6 from "@contractspec/lib.ui-link";
|
|
1164
|
-
import { ChevronRight as ChevronRight6 } from "lucide-react";
|
|
1165
|
-
import { jsx as jsx6, jsxs as jsxs6 } from "react/jsx-runtime";
|
|
1166
|
-
function InstallationPage() {
|
|
1167
|
-
return /* @__PURE__ */ jsxs6("div", {
|
|
1168
|
-
className: "space-y-8",
|
|
1169
|
-
children: [
|
|
1170
|
-
/* @__PURE__ */ jsxs6("div", {
|
|
1171
|
-
className: "space-y-2",
|
|
1172
|
-
children: [
|
|
1173
|
-
/* @__PURE__ */ jsx6("h1", {
|
|
1174
|
-
className: "font-bold text-4xl",
|
|
1175
|
-
children: "Installation"
|
|
1176
|
-
}),
|
|
1177
|
-
/* @__PURE__ */ jsx6("p", {
|
|
1178
|
-
className: "text-lg text-muted-foreground",
|
|
1179
|
-
children: "Add ContractSpec to your existing Next.js or Bun project, or start fresh."
|
|
1180
|
-
})
|
|
1181
|
-
]
|
|
1182
|
-
}),
|
|
1183
|
-
/* @__PURE__ */ jsxs6("div", {
|
|
1184
|
-
className: "space-y-6",
|
|
1185
|
-
children: [
|
|
1186
|
-
/* @__PURE__ */ jsxs6("div", {
|
|
1187
|
-
className: "space-y-3",
|
|
1188
|
-
children: [
|
|
1189
|
-
/* @__PURE__ */ jsx6("h2", {
|
|
1190
|
-
className: "font-bold text-2xl",
|
|
1191
|
-
children: "Prerequisites"
|
|
1192
|
-
}),
|
|
1193
|
-
/* @__PURE__ */ jsxs6("ul", {
|
|
1194
|
-
className: "space-y-2 text-muted-foreground",
|
|
1195
|
-
children: [
|
|
1196
|
-
/* @__PURE__ */ jsx6("li", {
|
|
1197
|
-
children: "Node.js 20+ (or Bun 1.0+)"
|
|
1198
|
-
}),
|
|
1199
|
-
/* @__PURE__ */ jsx6("li", {
|
|
1200
|
-
children: "Existing Next.js app or Bun HTTP server"
|
|
1201
|
-
}),
|
|
1202
|
-
/* @__PURE__ */ jsx6("li", {
|
|
1203
|
-
children: "PostgreSQL database (for persistence)"
|
|
1204
|
-
})
|
|
1205
|
-
]
|
|
1206
|
-
})
|
|
1207
|
-
]
|
|
1208
|
-
}),
|
|
1209
|
-
/* @__PURE__ */ jsxs6("div", {
|
|
1210
|
-
className: "space-y-3",
|
|
1211
|
-
children: [
|
|
1212
|
-
/* @__PURE__ */ jsx6("h2", {
|
|
1213
|
-
className: "font-bold text-2xl",
|
|
1214
|
-
children: "Install Core Libraries"
|
|
1215
|
-
}),
|
|
1216
|
-
/* @__PURE__ */ jsx6("p", {
|
|
1217
|
-
className: "text-muted-foreground",
|
|
1218
|
-
children: "Add the contracts runtime and your choice of adapter:"
|
|
1219
|
-
}),
|
|
1220
|
-
/* @__PURE__ */ jsx6(InstallCommand3, {
|
|
1221
|
-
package: [
|
|
1222
|
-
"@contractspec/lib.contracts-spec",
|
|
1223
|
-
"@contractspec/lib.schema"
|
|
1224
|
-
]
|
|
1225
|
-
})
|
|
1226
|
-
]
|
|
1227
|
-
}),
|
|
1228
|
-
/* @__PURE__ */ jsxs6("div", {
|
|
1229
|
-
className: "space-y-3",
|
|
1230
|
-
children: [
|
|
1231
|
-
/* @__PURE__ */ jsx6("h2", {
|
|
1232
|
-
className: "font-bold text-2xl",
|
|
1233
|
-
children: "For Next.js projects"
|
|
1234
|
-
}),
|
|
1235
|
-
/* @__PURE__ */ jsx6(InstallCommand3, {
|
|
1236
|
-
package: "@contractspec/lib.contracts-spec"
|
|
1237
|
-
})
|
|
1238
|
-
]
|
|
1239
|
-
}),
|
|
1240
|
-
/* @__PURE__ */ jsxs6("div", {
|
|
1241
|
-
className: "space-y-3",
|
|
1242
|
-
children: [
|
|
1243
|
-
/* @__PURE__ */ jsx6("h2", {
|
|
1244
|
-
className: "font-bold text-2xl",
|
|
1245
|
-
children: "For database models"
|
|
1246
|
-
}),
|
|
1247
|
-
/* @__PURE__ */ jsx6(InstallCommand3, {
|
|
1248
|
-
package: [
|
|
1249
|
-
"@contractspec/app.cli-database",
|
|
1250
|
-
"prisma",
|
|
1251
|
-
"@prisma/client"
|
|
1252
|
-
]
|
|
1253
|
-
})
|
|
1254
|
-
]
|
|
1255
|
-
}),
|
|
1256
|
-
/* @__PURE__ */ jsxs6("div", {
|
|
1257
|
-
className: "space-y-3",
|
|
1258
|
-
children: [
|
|
1259
|
-
/* @__PURE__ */ jsx6("h2", {
|
|
1260
|
-
className: "font-bold text-2xl",
|
|
1261
|
-
children: "Set up your project"
|
|
1262
|
-
}),
|
|
1263
|
-
/* @__PURE__ */ jsx6("p", {
|
|
1264
|
-
className: "text-muted-foreground",
|
|
1265
|
-
children: "Initialize a new ContractSpec project structure:"
|
|
1266
|
-
}),
|
|
1267
|
-
/* @__PURE__ */ jsx6(CodeBlock5, {
|
|
1268
|
-
language: "bash",
|
|
1269
|
-
filename: "installation-init",
|
|
1270
|
-
code: `bunx contractspec init
|
|
1271
|
-
# Follow the interactive prompts to configure your project`
|
|
1272
|
-
})
|
|
1273
|
-
]
|
|
1274
|
-
}),
|
|
1275
|
-
/* @__PURE__ */ jsxs6("div", {
|
|
1276
|
-
className: "space-y-3",
|
|
1277
|
-
children: [
|
|
1278
|
-
/* @__PURE__ */ jsx6("h2", {
|
|
1279
|
-
className: "font-bold text-2xl",
|
|
1280
|
-
children: "Initialize the database"
|
|
1281
|
-
}),
|
|
1282
|
-
/* @__PURE__ */ jsx6("p", {
|
|
1283
|
-
className: "text-muted-foreground",
|
|
1284
|
-
children: "If using Prisma, set up your schema and generate the client:"
|
|
1285
|
-
}),
|
|
1286
|
-
/* @__PURE__ */ jsx6(CodeBlock5, {
|
|
1287
|
-
language: "bash",
|
|
1288
|
-
filename: "installation-prisma",
|
|
1289
|
-
code: `bunx prisma init
|
|
226
|
+
export { handler as GET, handler as POST };`})]}),f("div",{className:"card-subtle space-y-4 p-6",children:[o("h3",{className:"font-bold",children:"What you just built:"}),f("ul",{className:"space-y-2 text-muted-foreground text-sm",children:[f("li",{children:["Type-safe API endpoint at"," ",o("code",{children:"/api/ops/billing.capturePayment"})]}),o("li",{children:"Automatic input validation (amount must be positive, IDs required)"}),o("li",{children:"Policy enforcement—only invoice owner can pay"}),o("li",{children:"Stripe integration with error handling"}),o("li",{children:"Database transaction with audit trail"}),o("li",{children:"Same spec works with GraphQL, MCP, or webhooks"})]})]}),o("div",{className:"flex items-center gap-4 pt-4",children:f(Z,{href:"/docs/getting-started/dataviews",className:"btn-primary",children:["Next: Display Data with DataViews ",o(x,{size:16})]})})]})]})}import{CodeBlock as z,InstallCommand as L}from"@contractspec/lib.design-system";import ee from"@contractspec/lib.ui-link";import{ChevronRight as te}from"lucide-react";import{jsx as n,jsxs as g}from"react/jsx-runtime";function ae(){return g("div",{className:"space-y-8",children:[g("div",{className:"space-y-2",children:[n("h1",{className:"font-bold text-4xl",children:"Installation"}),n("p",{className:"text-lg text-muted-foreground",children:"Add ContractSpec to your existing Next.js or Bun project, or start fresh."})]}),g("div",{className:"space-y-6",children:[g("div",{className:"space-y-3",children:[n("h2",{className:"font-bold text-2xl",children:"Prerequisites"}),g("ul",{className:"space-y-2 text-muted-foreground",children:[n("li",{children:"Node.js 20+ (or Bun 1.0+)"}),n("li",{children:"Existing Next.js app or Bun HTTP server"}),n("li",{children:"PostgreSQL database (for persistence)"})]})]}),g("div",{className:"space-y-3",children:[n("h2",{className:"font-bold text-2xl",children:"Install Core Libraries"}),n("p",{className:"text-muted-foreground",children:"Add the contracts runtime and your choice of adapter:"}),n(L,{package:["@contractspec/lib.contracts-spec","@contractspec/lib.schema"]})]}),g("div",{className:"space-y-3",children:[n("h2",{className:"font-bold text-2xl",children:"For Next.js projects"}),n(L,{package:"@contractspec/lib.contracts-spec"})]}),g("div",{className:"space-y-3",children:[n("h2",{className:"font-bold text-2xl",children:"For database models"}),n(L,{package:["@contractspec/app.cli-database","prisma","@prisma/client"]})]}),g("div",{className:"space-y-3",children:[n("h2",{className:"font-bold text-2xl",children:"Set up your project"}),n("p",{className:"text-muted-foreground",children:"Initialize a new ContractSpec project structure:"}),n(z,{language:"bash",filename:"installation-init",code:`bunx contractspec init
|
|
227
|
+
# Follow the interactive prompts to configure your project`})]}),g("div",{className:"space-y-3",children:[n("h2",{className:"font-bold text-2xl",children:"Initialize the database"}),n("p",{className:"text-muted-foreground",children:"If using Prisma, set up your schema and generate the client:"}),n(z,{language:"bash",filename:"installation-prisma",code:`bunx prisma init
|
|
1290
228
|
# Edit prisma/schema.prisma with your models
|
|
1291
229
|
bunx prisma generate
|
|
1292
|
-
bunx prisma migrate dev --name init`
|
|
1293
|
-
|
|
1294
|
-
]
|
|
1295
|
-
}),
|
|
1296
|
-
/* @__PURE__ */ jsx6("div", {
|
|
1297
|
-
className: "flex items-center gap-4 pt-4",
|
|
1298
|
-
children: /* @__PURE__ */ jsxs6(Link6, {
|
|
1299
|
-
href: "/docs/getting-started/hello-world",
|
|
1300
|
-
className: "btn-primary",
|
|
1301
|
-
children: [
|
|
1302
|
-
"Next: First Operation ",
|
|
1303
|
-
/* @__PURE__ */ jsx6(ChevronRight6, {
|
|
1304
|
-
size: 16
|
|
1305
|
-
})
|
|
1306
|
-
]
|
|
1307
|
-
})
|
|
1308
|
-
})
|
|
1309
|
-
]
|
|
1310
|
-
})
|
|
1311
|
-
]
|
|
1312
|
-
});
|
|
1313
|
-
}
|
|
1314
|
-
|
|
1315
|
-
// src/components/docs/getting-started/StartHerePage.tsx
|
|
1316
|
-
import { CodeBlock as CodeBlock6, InstallCommand as InstallCommand4 } from "@contractspec/lib.design-system";
|
|
1317
|
-
import Link7 from "@contractspec/lib.ui-link";
|
|
1318
|
-
import { ChevronRight as ChevronRight7 } from "lucide-react";
|
|
1319
|
-
import { jsx as jsx7, jsxs as jsxs7 } from "react/jsx-runtime";
|
|
1320
|
-
function StartHerePage() {
|
|
1321
|
-
return /* @__PURE__ */ jsxs7("div", {
|
|
1322
|
-
className: "space-y-8",
|
|
1323
|
-
children: [
|
|
1324
|
-
/* @__PURE__ */ jsxs7("div", {
|
|
1325
|
-
className: "space-y-2",
|
|
1326
|
-
children: [
|
|
1327
|
-
/* @__PURE__ */ jsx7("h1", {
|
|
1328
|
-
className: "font-bold text-4xl",
|
|
1329
|
-
children: "Start here"
|
|
1330
|
-
}),
|
|
1331
|
-
/* @__PURE__ */ jsx7("p", {
|
|
1332
|
-
className: "text-lg text-muted-foreground",
|
|
1333
|
-
children: "A fast onboarding path from install to your first generated contract."
|
|
1334
|
-
})
|
|
1335
|
-
]
|
|
1336
|
-
}),
|
|
1337
|
-
/* @__PURE__ */ jsxs7("div", {
|
|
1338
|
-
className: "space-y-6",
|
|
1339
|
-
children: [
|
|
1340
|
-
/* @__PURE__ */ jsxs7("div", {
|
|
1341
|
-
className: "space-y-3",
|
|
1342
|
-
children: [
|
|
1343
|
-
/* @__PURE__ */ jsx7("h2", {
|
|
1344
|
-
className: "font-bold text-2xl",
|
|
1345
|
-
children: "Install the CLI"
|
|
1346
|
-
}),
|
|
1347
|
-
/* @__PURE__ */ jsx7(InstallCommand4, {
|
|
1348
|
-
package: "contractspec",
|
|
1349
|
-
dev: true
|
|
1350
|
-
})
|
|
1351
|
-
]
|
|
1352
|
-
}),
|
|
1353
|
-
/* @__PURE__ */ jsxs7("div", {
|
|
1354
|
-
className: "space-y-3",
|
|
1355
|
-
children: [
|
|
1356
|
-
/* @__PURE__ */ jsx7("h2", {
|
|
1357
|
-
className: "font-bold text-2xl",
|
|
1358
|
-
children: "Add core libraries"
|
|
1359
|
-
}),
|
|
1360
|
-
/* @__PURE__ */ jsx7(InstallCommand4, {
|
|
1361
|
-
package: [
|
|
1362
|
-
"@contractspec/lib.contracts-spec",
|
|
1363
|
-
"@contractspec/lib.schema"
|
|
1364
|
-
]
|
|
1365
|
-
})
|
|
1366
|
-
]
|
|
1367
|
-
}),
|
|
1368
|
-
/* @__PURE__ */ jsxs7("div", {
|
|
1369
|
-
className: "space-y-3",
|
|
1370
|
-
children: [
|
|
1371
|
-
/* @__PURE__ */ jsx7("h2", {
|
|
1372
|
-
className: "font-bold text-2xl",
|
|
1373
|
-
children: "Initialize your project"
|
|
1374
|
-
}),
|
|
1375
|
-
/* @__PURE__ */ jsx7(CodeBlock6, {
|
|
1376
|
-
language: "bash",
|
|
1377
|
-
filename: "start-here-init",
|
|
1378
|
-
code: `bunx contractspec init`
|
|
1379
|
-
})
|
|
1380
|
-
]
|
|
1381
|
-
}),
|
|
1382
|
-
/* @__PURE__ */ jsxs7("div", {
|
|
1383
|
-
className: "space-y-3",
|
|
1384
|
-
children: [
|
|
1385
|
-
/* @__PURE__ */ jsx7("h2", {
|
|
1386
|
-
className: "font-bold text-2xl",
|
|
1387
|
-
children: "Create your first contract"
|
|
1388
|
-
}),
|
|
1389
|
-
/* @__PURE__ */ jsx7(CodeBlock6, {
|
|
1390
|
-
language: "bash",
|
|
1391
|
-
filename: "start-here-create",
|
|
1392
|
-
code: `contractspec create --type operation`
|
|
1393
|
-
})
|
|
1394
|
-
]
|
|
1395
|
-
}),
|
|
1396
|
-
/* @__PURE__ */ jsxs7("div", {
|
|
1397
|
-
className: "space-y-3",
|
|
1398
|
-
children: [
|
|
1399
|
-
/* @__PURE__ */ jsx7("h2", {
|
|
1400
|
-
className: "font-bold text-2xl",
|
|
1401
|
-
children: "Generate implementation"
|
|
1402
|
-
}),
|
|
1403
|
-
/* @__PURE__ */ jsx7(CodeBlock6, {
|
|
1404
|
-
language: "bash",
|
|
1405
|
-
filename: "start-here-build",
|
|
1406
|
-
code: `contractspec build src/contracts/mySpec.ts
|
|
1407
|
-
contractspec validate src/contracts/mySpec.ts`
|
|
1408
|
-
})
|
|
1409
|
-
]
|
|
1410
|
-
})
|
|
1411
|
-
]
|
|
1412
|
-
}),
|
|
1413
|
-
/* @__PURE__ */ jsxs7("div", {
|
|
1414
|
-
className: "flex flex-wrap items-center gap-3 pt-2",
|
|
1415
|
-
children: [
|
|
1416
|
-
/* @__PURE__ */ jsxs7(Link7, {
|
|
1417
|
-
href: "/docs/getting-started/hello-world",
|
|
1418
|
-
className: "btn-primary",
|
|
1419
|
-
children: [
|
|
1420
|
-
"Next: Hello World ",
|
|
1421
|
-
/* @__PURE__ */ jsx7(ChevronRight7, {
|
|
1422
|
-
size: 16
|
|
1423
|
-
})
|
|
1424
|
-
]
|
|
1425
|
-
}),
|
|
1426
|
-
/* @__PURE__ */ jsx7(Link7, {
|
|
1427
|
-
href: "/docs/getting-started/troubleshooting",
|
|
1428
|
-
className: "btn-ghost",
|
|
1429
|
-
children: "Troubleshooting"
|
|
1430
|
-
}),
|
|
1431
|
-
/* @__PURE__ */ jsx7(Link7, {
|
|
1432
|
-
href: "/docs/getting-started/compatibility",
|
|
1433
|
-
className: "btn-ghost",
|
|
1434
|
-
children: "Compatibility"
|
|
1435
|
-
})
|
|
1436
|
-
]
|
|
1437
|
-
})
|
|
1438
|
-
]
|
|
1439
|
-
});
|
|
1440
|
-
}
|
|
1441
|
-
|
|
1442
|
-
// src/components/docs/getting-started/TroubleshootingPage.tsx
|
|
1443
|
-
import { CodeBlock as CodeBlock7 } from "@contractspec/lib.design-system";
|
|
1444
|
-
import Link8 from "@contractspec/lib.ui-link";
|
|
1445
|
-
import { ChevronRight as ChevronRight8 } from "lucide-react";
|
|
1446
|
-
import { jsx as jsx8, jsxs as jsxs8 } from "react/jsx-runtime";
|
|
1447
|
-
function TroubleshootingPage() {
|
|
1448
|
-
return /* @__PURE__ */ jsxs8("div", {
|
|
1449
|
-
className: "space-y-8",
|
|
1450
|
-
children: [
|
|
1451
|
-
/* @__PURE__ */ jsxs8("div", {
|
|
1452
|
-
className: "space-y-2",
|
|
1453
|
-
children: [
|
|
1454
|
-
/* @__PURE__ */ jsx8("h1", {
|
|
1455
|
-
className: "font-bold text-4xl",
|
|
1456
|
-
children: "Troubleshooting"
|
|
1457
|
-
}),
|
|
1458
|
-
/* @__PURE__ */ jsx8("p", {
|
|
1459
|
-
className: "text-lg text-muted-foreground",
|
|
1460
|
-
children: "Common issues and fixes when installing or generating with ContractSpec."
|
|
1461
|
-
})
|
|
1462
|
-
]
|
|
1463
|
-
}),
|
|
1464
|
-
/* @__PURE__ */ jsxs8("div", {
|
|
1465
|
-
className: "space-y-6",
|
|
1466
|
-
children: [
|
|
1467
|
-
/* @__PURE__ */ jsxs8("div", {
|
|
1468
|
-
className: "card-subtle space-y-3 p-6",
|
|
1469
|
-
children: [
|
|
1470
|
-
/* @__PURE__ */ jsx8("h2", {
|
|
1471
|
-
className: "font-bold text-2xl",
|
|
1472
|
-
children: "Command not found"
|
|
1473
|
-
}),
|
|
1474
|
-
/* @__PURE__ */ jsxs8("ul", {
|
|
1475
|
-
className: "space-y-2 text-muted-foreground",
|
|
1476
|
-
children: [
|
|
1477
|
-
/* @__PURE__ */ jsx8("li", {
|
|
1478
|
-
children: "Reinstall the CLI and ensure it is in your PATH."
|
|
1479
|
-
}),
|
|
1480
|
-
/* @__PURE__ */ jsx8("li", {
|
|
1481
|
-
children: "Confirm Node.js 20+ or Bun 1.0+ is installed."
|
|
1482
|
-
})
|
|
1483
|
-
]
|
|
1484
|
-
})
|
|
1485
|
-
]
|
|
1486
|
-
}),
|
|
1487
|
-
/* @__PURE__ */ jsxs8("div", {
|
|
1488
|
-
className: "card-subtle space-y-3 p-6",
|
|
1489
|
-
children: [
|
|
1490
|
-
/* @__PURE__ */ jsx8("h2", {
|
|
1491
|
-
className: "font-bold text-2xl",
|
|
1492
|
-
children: "Specs not discovered"
|
|
1493
|
-
}),
|
|
1494
|
-
/* @__PURE__ */ jsxs8("ul", {
|
|
1495
|
-
className: "space-y-2 text-muted-foreground",
|
|
1496
|
-
children: [
|
|
1497
|
-
/* @__PURE__ */ jsxs8("li", {
|
|
1498
|
-
children: [
|
|
1499
|
-
"Run ",
|
|
1500
|
-
/* @__PURE__ */ jsx8("code", {
|
|
1501
|
-
children: "contractspec list"
|
|
1502
|
-
}),
|
|
1503
|
-
" to see discovered specs."
|
|
1504
|
-
]
|
|
1505
|
-
}),
|
|
1506
|
-
/* @__PURE__ */ jsx8("li", {
|
|
1507
|
-
children: "Verify your spec path conventions in .contractsrc.json."
|
|
1508
|
-
})
|
|
1509
|
-
]
|
|
1510
|
-
})
|
|
1511
|
-
]
|
|
1512
|
-
}),
|
|
1513
|
-
/* @__PURE__ */ jsxs8("div", {
|
|
1514
|
-
className: "card-subtle space-y-3 p-6",
|
|
1515
|
-
children: [
|
|
1516
|
-
/* @__PURE__ */ jsx8("h2", {
|
|
1517
|
-
className: "font-bold text-2xl",
|
|
1518
|
-
children: "Build or validate fails"
|
|
1519
|
-
}),
|
|
1520
|
-
/* @__PURE__ */ jsxs8("ul", {
|
|
1521
|
-
className: "space-y-2 text-muted-foreground",
|
|
1522
|
-
children: [
|
|
1523
|
-
/* @__PURE__ */ jsxs8("li", {
|
|
1524
|
-
children: [
|
|
1525
|
-
"Run ",
|
|
1526
|
-
/* @__PURE__ */ jsx8("code", {
|
|
1527
|
-
children: "contractspec validate"
|
|
1528
|
-
}),
|
|
1529
|
-
" to surface schema errors."
|
|
1530
|
-
]
|
|
1531
|
-
}),
|
|
1532
|
-
/* @__PURE__ */ jsx8("li", {
|
|
1533
|
-
children: "Check that generated files were not manually edited."
|
|
1534
|
-
})
|
|
1535
|
-
]
|
|
1536
|
-
})
|
|
1537
|
-
]
|
|
1538
|
-
}),
|
|
1539
|
-
/* @__PURE__ */ jsxs8("div", {
|
|
1540
|
-
className: "space-y-3",
|
|
1541
|
-
children: [
|
|
1542
|
-
/* @__PURE__ */ jsx8("h2", {
|
|
1543
|
-
className: "font-bold text-2xl",
|
|
1544
|
-
children: "Diagnostics"
|
|
1545
|
-
}),
|
|
1546
|
-
/* @__PURE__ */ jsx8(CodeBlock7, {
|
|
1547
|
-
language: "bash",
|
|
1548
|
-
filename: "troubleshooting-diagnostics",
|
|
1549
|
-
code: `contractspec --version
|
|
230
|
+
bunx prisma migrate dev --name init`})]}),n("div",{className:"flex items-center gap-4 pt-4",children:g(ee,{href:"/docs/getting-started/hello-world",className:"btn-primary",children:["Next: First Operation ",n(te,{size:16})]})})]})]})}import{CodeBlock as R,InstallCommand as O}from"@contractspec/lib.design-system";import T from"@contractspec/lib.ui-link";import{ChevronRight as ie}from"lucide-react";import{jsx as m,jsxs as v}from"react/jsx-runtime";function oe(){return v("div",{className:"space-y-8",children:[v("div",{className:"space-y-2",children:[m("h1",{className:"font-bold text-4xl",children:"Start here"}),m("p",{className:"text-lg text-muted-foreground",children:"A fast onboarding path from install to your first generated contract."})]}),v("div",{className:"space-y-6",children:[v("div",{className:"space-y-3",children:[m("h2",{className:"font-bold text-2xl",children:"Install the CLI"}),m(O,{package:"contractspec",dev:!0})]}),v("div",{className:"space-y-3",children:[m("h2",{className:"font-bold text-2xl",children:"Add core libraries"}),m(O,{package:["@contractspec/lib.contracts-spec","@contractspec/lib.schema"]})]}),v("div",{className:"space-y-3",children:[m("h2",{className:"font-bold text-2xl",children:"Initialize your project"}),m(R,{language:"bash",filename:"start-here-init",code:"bunx contractspec init"})]}),v("div",{className:"space-y-3",children:[m("h2",{className:"font-bold text-2xl",children:"Create your first contract"}),m(R,{language:"bash",filename:"start-here-create",code:"contractspec create --type operation"})]}),v("div",{className:"space-y-3",children:[m("h2",{className:"font-bold text-2xl",children:"Generate implementation"}),m(R,{language:"bash",filename:"start-here-build",code:`contractspec build src/contracts/mySpec.ts
|
|
231
|
+
contractspec validate src/contracts/mySpec.ts`})]})]}),v("div",{className:"flex flex-wrap items-center gap-3 pt-2",children:[v(T,{href:"/docs/getting-started/hello-world",className:"btn-primary",children:["Next: Hello World ",m(ie,{size:16})]}),m(T,{href:"/docs/getting-started/troubleshooting",className:"btn-ghost",children:"Troubleshooting"}),m(T,{href:"/docs/getting-started/compatibility",className:"btn-ghost",children:"Compatibility"})]})]})}import{CodeBlock as ne}from"@contractspec/lib.design-system";import D from"@contractspec/lib.ui-link";import{ChevronRight as re}from"lucide-react";import{jsx as r,jsxs as d}from"react/jsx-runtime";function ce(){return d("div",{className:"space-y-8",children:[d("div",{className:"space-y-2",children:[r("h1",{className:"font-bold text-4xl",children:"Troubleshooting"}),r("p",{className:"text-lg text-muted-foreground",children:"Common issues and fixes when installing or generating with ContractSpec."})]}),d("div",{className:"space-y-6",children:[d("div",{className:"card-subtle space-y-3 p-6",children:[r("h2",{className:"font-bold text-2xl",children:"Command not found"}),d("ul",{className:"space-y-2 text-muted-foreground",children:[r("li",{children:"Reinstall the CLI and ensure it is in your PATH."}),r("li",{children:"Confirm Node.js 20+ or Bun 1.0+ is installed."})]})]}),d("div",{className:"card-subtle space-y-3 p-6",children:[r("h2",{className:"font-bold text-2xl",children:"Specs not discovered"}),d("ul",{className:"space-y-2 text-muted-foreground",children:[d("li",{children:["Run ",r("code",{children:"contractspec list"})," to see discovered specs."]}),r("li",{children:"Verify your spec path conventions in .contractsrc.json."})]})]}),d("div",{className:"card-subtle space-y-3 p-6",children:[r("h2",{className:"font-bold text-2xl",children:"Build or validate fails"}),d("ul",{className:"space-y-2 text-muted-foreground",children:[d("li",{children:["Run ",r("code",{children:"contractspec validate"})," to surface schema errors."]}),r("li",{children:"Check that generated files were not manually edited."})]})]}),d("div",{className:"space-y-3",children:[r("h2",{className:"font-bold text-2xl",children:"Diagnostics"}),r(ne,{language:"bash",filename:"troubleshooting-diagnostics",code:`contractspec --version
|
|
1550
232
|
contractspec list
|
|
1551
|
-
contractspec validate src/contracts/mySpec.ts`
|
|
1552
|
-
})
|
|
1553
|
-
]
|
|
1554
|
-
}),
|
|
1555
|
-
/* @__PURE__ */ jsxs8("div", {
|
|
1556
|
-
className: "card-subtle space-y-3 p-6",
|
|
1557
|
-
children: [
|
|
1558
|
-
/* @__PURE__ */ jsx8("h2", {
|
|
1559
|
-
className: "font-bold text-2xl",
|
|
1560
|
-
children: "Still blocked?"
|
|
1561
|
-
}),
|
|
1562
|
-
/* @__PURE__ */ jsxs8("ul", {
|
|
1563
|
-
className: "space-y-2 text-muted-foreground",
|
|
1564
|
-
children: [
|
|
1565
|
-
/* @__PURE__ */ jsx8("li", {
|
|
1566
|
-
children: "Confirm compatibility requirements for runtime and framework."
|
|
1567
|
-
}),
|
|
1568
|
-
/* @__PURE__ */ jsx8("li", {
|
|
1569
|
-
children: "Re-run builds on a clean branch to isolate changes."
|
|
1570
|
-
}),
|
|
1571
|
-
/* @__PURE__ */ jsx8("li", {
|
|
1572
|
-
children: "Use a new spec and minimal adapter to validate setup."
|
|
1573
|
-
})
|
|
1574
|
-
]
|
|
1575
|
-
})
|
|
1576
|
-
]
|
|
1577
|
-
})
|
|
1578
|
-
]
|
|
1579
|
-
}),
|
|
1580
|
-
/* @__PURE__ */ jsxs8("div", {
|
|
1581
|
-
className: "flex flex-wrap items-center gap-3 pt-2",
|
|
1582
|
-
children: [
|
|
1583
|
-
/* @__PURE__ */ jsx8(Link8, {
|
|
1584
|
-
href: "/docs/getting-started/start-here",
|
|
1585
|
-
className: "btn-ghost",
|
|
1586
|
-
children: "Start here"
|
|
1587
|
-
}),
|
|
1588
|
-
/* @__PURE__ */ jsx8(Link8, {
|
|
1589
|
-
href: "/docs/getting-started/compatibility",
|
|
1590
|
-
className: "btn-ghost",
|
|
1591
|
-
children: "Compatibility"
|
|
1592
|
-
}),
|
|
1593
|
-
/* @__PURE__ */ jsxs8(Link8, {
|
|
1594
|
-
href: "/docs/getting-started/installation",
|
|
1595
|
-
className: "btn-primary",
|
|
1596
|
-
children: [
|
|
1597
|
-
"Next: Installation ",
|
|
1598
|
-
/* @__PURE__ */ jsx8(ChevronRight8, {
|
|
1599
|
-
size: 16
|
|
1600
|
-
})
|
|
1601
|
-
]
|
|
1602
|
-
})
|
|
1603
|
-
]
|
|
1604
|
-
})
|
|
1605
|
-
]
|
|
1606
|
-
});
|
|
1607
|
-
}
|
|
1608
|
-
|
|
1609
|
-
// src/components/docs/getting-started/VSCodeExtensionPage.tsx
|
|
1610
|
-
import { CodeBlock as CodeBlock8 } from "@contractspec/lib.design-system";
|
|
1611
|
-
import Link9 from "@contractspec/lib.ui-link";
|
|
1612
|
-
import { ChevronRight as ChevronRight9, ExternalLink } from "lucide-react";
|
|
1613
|
-
import { jsx as jsx9, jsxs as jsxs9 } from "react/jsx-runtime";
|
|
1614
|
-
function VSCodeExtensionPage() {
|
|
1615
|
-
const features = [
|
|
1616
|
-
{
|
|
1617
|
-
category: "Core Functionality",
|
|
1618
|
-
items: [
|
|
1619
|
-
"Real-time validation with instant feedback on spec errors",
|
|
1620
|
-
"Build/Scaffold handlers and components from specs",
|
|
1621
|
-
"Interactive spec creation wizard",
|
|
1622
|
-
"Watch mode for auto-rebuild on changes",
|
|
1623
|
-
"Sync all specs in workspace with one command"
|
|
1624
|
-
]
|
|
1625
|
-
},
|
|
1626
|
-
{
|
|
1627
|
-
category: "Visual Navigation",
|
|
1628
|
-
items: [
|
|
1629
|
-
"Specs Explorer sidebar with organized tree view",
|
|
1630
|
-
"Dependencies view to visualize spec relationships",
|
|
1631
|
-
"Build Results tracking with history",
|
|
1632
|
-
"Circular dependency detection"
|
|
1633
|
-
]
|
|
1634
|
-
},
|
|
1635
|
-
{
|
|
1636
|
-
category: "Comparison & Export",
|
|
1637
|
-
items: [
|
|
1638
|
-
"Semantic and text diff between specs",
|
|
1639
|
-
"Git comparison with baseline branches",
|
|
1640
|
-
"OpenAPI 3.1 specification export"
|
|
1641
|
-
]
|
|
1642
|
-
}
|
|
1643
|
-
];
|
|
1644
|
-
const commands = [
|
|
1645
|
-
{
|
|
1646
|
-
name: "Create New Spec",
|
|
1647
|
-
description: "Interactive wizard to create specs"
|
|
1648
|
-
},
|
|
1649
|
-
{
|
|
1650
|
-
name: "Validate Current Spec",
|
|
1651
|
-
description: "Validate the currently open spec"
|
|
1652
|
-
},
|
|
1653
|
-
{
|
|
1654
|
-
name: "Build/Scaffold from Current Spec",
|
|
1655
|
-
description: "Generate handler/component"
|
|
1656
|
-
},
|
|
1657
|
-
{ name: "Toggle Watch Mode", description: "Auto-rebuild on changes" },
|
|
1658
|
-
{ name: "Sync All Specs", description: "Build all specs in workspace" },
|
|
1659
|
-
{
|
|
1660
|
-
name: "Analyze Spec Dependencies",
|
|
1661
|
-
description: "Visualize spec dependencies"
|
|
1662
|
-
},
|
|
1663
|
-
{
|
|
1664
|
-
name: "Compare Specs",
|
|
1665
|
-
description: "Semantic or text diff between specs"
|
|
1666
|
-
},
|
|
1667
|
-
{
|
|
1668
|
-
name: "Export to OpenAPI",
|
|
1669
|
-
description: "Generate OpenAPI specification"
|
|
1670
|
-
}
|
|
1671
|
-
];
|
|
1672
|
-
return /* @__PURE__ */ jsxs9("div", {
|
|
1673
|
-
className: "space-y-8",
|
|
1674
|
-
children: [
|
|
1675
|
-
/* @__PURE__ */ jsxs9("div", {
|
|
1676
|
-
className: "space-y-2",
|
|
1677
|
-
children: [
|
|
1678
|
-
/* @__PURE__ */ jsx9("h1", {
|
|
1679
|
-
className: "font-bold text-4xl",
|
|
1680
|
-
children: "VS Code Extension"
|
|
1681
|
-
}),
|
|
1682
|
-
/* @__PURE__ */ jsx9("p", {
|
|
1683
|
-
className: "text-lg text-muted-foreground",
|
|
1684
|
-
children: "Spec-first development directly in VS Code. Validate, scaffold, and explore your contract specifications with real-time feedback."
|
|
1685
|
-
})
|
|
1686
|
-
]
|
|
1687
|
-
}),
|
|
1688
|
-
/* @__PURE__ */ jsxs9("div", {
|
|
1689
|
-
className: "flex flex-wrap gap-3",
|
|
1690
|
-
children: [
|
|
1691
|
-
/* @__PURE__ */ jsxs9("a", {
|
|
1692
|
-
href: "https://marketplace.visualstudio.com/items?itemName=lssm.vscode-contractspec",
|
|
1693
|
-
target: "_blank",
|
|
1694
|
-
rel: "noopener noreferrer",
|
|
1695
|
-
className: "btn-primary inline-flex items-center gap-2",
|
|
1696
|
-
children: [
|
|
1697
|
-
"Install Extension ",
|
|
1698
|
-
/* @__PURE__ */ jsx9(ExternalLink, {
|
|
1699
|
-
size: 16
|
|
1700
|
-
})
|
|
1701
|
-
]
|
|
1702
|
-
}),
|
|
1703
|
-
/* @__PURE__ */ jsx9("a", {
|
|
1704
|
-
href: "vscode:extension/lssm.vscode-contractspec",
|
|
1705
|
-
className: "btn-ghost inline-flex items-center gap-2",
|
|
1706
|
-
children: "Open in VS Code"
|
|
1707
|
-
})
|
|
1708
|
-
]
|
|
1709
|
-
}),
|
|
1710
|
-
/* @__PURE__ */ jsxs9("div", {
|
|
1711
|
-
className: "space-y-6",
|
|
1712
|
-
children: [
|
|
1713
|
-
/* @__PURE__ */ jsxs9("div", {
|
|
1714
|
-
className: "space-y-3",
|
|
1715
|
-
children: [
|
|
1716
|
-
/* @__PURE__ */ jsx9("h2", {
|
|
1717
|
-
className: "font-bold text-2xl",
|
|
1718
|
-
children: "Installation"
|
|
1719
|
-
}),
|
|
1720
|
-
/* @__PURE__ */ jsxs9("div", {
|
|
1721
|
-
className: "space-y-2",
|
|
1722
|
-
children: [
|
|
1723
|
-
/* @__PURE__ */ jsxs9("p", {
|
|
1724
|
-
className: "text-muted-foreground text-sm",
|
|
1725
|
-
children: [
|
|
1726
|
-
/* @__PURE__ */ jsx9("strong", {
|
|
1727
|
-
children: "Option 1:"
|
|
1728
|
-
}),
|
|
1729
|
-
" Install from VS Code Marketplace"
|
|
1730
|
-
]
|
|
1731
|
-
}),
|
|
1732
|
-
/* @__PURE__ */ jsx9(CodeBlock8, {
|
|
1733
|
-
language: "bash",
|
|
1734
|
-
code: "code --install-extension lssm.vscode-contractspec"
|
|
1735
|
-
}),
|
|
1736
|
-
/* @__PURE__ */ jsxs9("p", {
|
|
1737
|
-
className: "mt-4 text-muted-foreground text-sm",
|
|
1738
|
-
children: [
|
|
1739
|
-
/* @__PURE__ */ jsx9("strong", {
|
|
1740
|
-
children: "Option 2:"
|
|
1741
|
-
}),
|
|
1742
|
-
' Search for "ContractSpec" in VS Code Extensions (Ctrl/Cmd+Shift+X)'
|
|
1743
|
-
]
|
|
1744
|
-
})
|
|
1745
|
-
]
|
|
1746
|
-
})
|
|
1747
|
-
]
|
|
1748
|
-
}),
|
|
1749
|
-
/* @__PURE__ */ jsxs9("div", {
|
|
1750
|
-
className: "space-y-4",
|
|
1751
|
-
children: [
|
|
1752
|
-
/* @__PURE__ */ jsx9("h2", {
|
|
1753
|
-
className: "font-bold text-2xl",
|
|
1754
|
-
children: "Features"
|
|
1755
|
-
}),
|
|
1756
|
-
/* @__PURE__ */ jsx9("div", {
|
|
1757
|
-
className: "grid gap-4 md:grid-cols-3",
|
|
1758
|
-
children: features.map((section) => /* @__PURE__ */ jsxs9("div", {
|
|
1759
|
-
className: "card-subtle space-y-3 p-4",
|
|
1760
|
-
children: [
|
|
1761
|
-
/* @__PURE__ */ jsx9("h3", {
|
|
1762
|
-
className: "font-bold text-violet-400",
|
|
1763
|
-
children: section.category
|
|
1764
|
-
}),
|
|
1765
|
-
/* @__PURE__ */ jsx9("ul", {
|
|
1766
|
-
className: "space-y-2",
|
|
1767
|
-
children: section.items.map((item) => /* @__PURE__ */ jsxs9("li", {
|
|
1768
|
-
className: "flex items-start gap-2 text-muted-foreground text-sm",
|
|
1769
|
-
children: [
|
|
1770
|
-
/* @__PURE__ */ jsx9("span", {
|
|
1771
|
-
className: "mt-1 text-violet-400",
|
|
1772
|
-
children: "-"
|
|
1773
|
-
}),
|
|
1774
|
-
/* @__PURE__ */ jsx9("span", {
|
|
1775
|
-
children: item
|
|
1776
|
-
})
|
|
1777
|
-
]
|
|
1778
|
-
}, item))
|
|
1779
|
-
})
|
|
1780
|
-
]
|
|
1781
|
-
}, section.category))
|
|
1782
|
-
})
|
|
1783
|
-
]
|
|
1784
|
-
}),
|
|
1785
|
-
/* @__PURE__ */ jsxs9("div", {
|
|
1786
|
-
className: "space-y-4",
|
|
1787
|
-
children: [
|
|
1788
|
-
/* @__PURE__ */ jsx9("h2", {
|
|
1789
|
-
className: "font-bold text-2xl",
|
|
1790
|
-
children: "Commands"
|
|
1791
|
-
}),
|
|
1792
|
-
/* @__PURE__ */ jsxs9("p", {
|
|
1793
|
-
className: "text-muted-foreground",
|
|
1794
|
-
children: [
|
|
1795
|
-
"Access commands via Command Palette (Ctrl/Cmd+Shift+P) with prefix",
|
|
1796
|
-
" ",
|
|
1797
|
-
/* @__PURE__ */ jsx9("code", {
|
|
1798
|
-
children: "ContractSpec:"
|
|
1799
|
-
})
|
|
1800
|
-
]
|
|
1801
|
-
}),
|
|
1802
|
-
/* @__PURE__ */ jsx9("div", {
|
|
1803
|
-
className: "grid gap-3 md:grid-cols-2",
|
|
1804
|
-
children: commands.map((cmd) => /* @__PURE__ */ jsx9("div", {
|
|
1805
|
-
className: "card-subtle flex items-center gap-3 p-3",
|
|
1806
|
-
children: /* @__PURE__ */ jsxs9("div", {
|
|
1807
|
-
className: "flex-1",
|
|
1808
|
-
children: [
|
|
1809
|
-
/* @__PURE__ */ jsx9("p", {
|
|
1810
|
-
className: "font-medium font-mono text-sm",
|
|
1811
|
-
children: cmd.name
|
|
1812
|
-
}),
|
|
1813
|
-
/* @__PURE__ */ jsx9("p", {
|
|
1814
|
-
className: "text-muted-foreground text-xs",
|
|
1815
|
-
children: cmd.description
|
|
1816
|
-
})
|
|
1817
|
-
]
|
|
1818
|
-
})
|
|
1819
|
-
}, cmd.name))
|
|
1820
|
-
})
|
|
1821
|
-
]
|
|
1822
|
-
}),
|
|
1823
|
-
/* @__PURE__ */ jsxs9("div", {
|
|
1824
|
-
className: "space-y-3",
|
|
1825
|
-
children: [
|
|
1826
|
-
/* @__PURE__ */ jsx9("h2", {
|
|
1827
|
-
className: "font-bold text-2xl",
|
|
1828
|
-
children: "Sidebar Views"
|
|
1829
|
-
}),
|
|
1830
|
-
/* @__PURE__ */ jsx9("p", {
|
|
1831
|
-
className: "text-muted-foreground",
|
|
1832
|
-
children: "The extension adds a ContractSpec activity bar (icon in sidebar) with three views:"
|
|
1833
|
-
}),
|
|
1834
|
-
/* @__PURE__ */ jsxs9("div", {
|
|
1835
|
-
className: "grid gap-4 md:grid-cols-3",
|
|
1836
|
-
children: [
|
|
1837
|
-
/* @__PURE__ */ jsxs9("div", {
|
|
1838
|
-
className: "card-subtle space-y-2 p-4",
|
|
1839
|
-
children: [
|
|
1840
|
-
/* @__PURE__ */ jsx9("h4", {
|
|
1841
|
-
className: "font-bold",
|
|
1842
|
-
children: "Specs Explorer"
|
|
1843
|
-
}),
|
|
1844
|
-
/* @__PURE__ */ jsx9("p", {
|
|
1845
|
-
className: "text-muted-foreground text-sm",
|
|
1846
|
-
children: "Browse all specs organized by type. Shows name, version, and stability. Click to open, right-click for actions."
|
|
1847
|
-
})
|
|
1848
|
-
]
|
|
1849
|
-
}),
|
|
1850
|
-
/* @__PURE__ */ jsxs9("div", {
|
|
1851
|
-
className: "card-subtle space-y-2 p-4",
|
|
1852
|
-
children: [
|
|
1853
|
-
/* @__PURE__ */ jsx9("h4", {
|
|
1854
|
-
className: "font-bold",
|
|
1855
|
-
children: "Dependencies"
|
|
1856
|
-
}),
|
|
1857
|
-
/* @__PURE__ */ jsx9("p", {
|
|
1858
|
-
className: "text-muted-foreground text-sm",
|
|
1859
|
-
children: "Visualize spec relationships. Detect circular dependencies. Navigate to referenced specs."
|
|
1860
|
-
})
|
|
1861
|
-
]
|
|
1862
|
-
}),
|
|
1863
|
-
/* @__PURE__ */ jsxs9("div", {
|
|
1864
|
-
className: "card-subtle space-y-2 p-4",
|
|
1865
|
-
children: [
|
|
1866
|
-
/* @__PURE__ */ jsx9("h4", {
|
|
1867
|
-
className: "font-bold",
|
|
1868
|
-
children: "Build Results"
|
|
1869
|
-
}),
|
|
1870
|
-
/* @__PURE__ */ jsx9("p", {
|
|
1871
|
-
className: "text-muted-foreground text-sm",
|
|
1872
|
-
children: "Track build history (last 20). Success/failure indicators. Click to open generated files."
|
|
1873
|
-
})
|
|
1874
|
-
]
|
|
1875
|
-
})
|
|
1876
|
-
]
|
|
1877
|
-
})
|
|
1878
|
-
]
|
|
1879
|
-
}),
|
|
1880
|
-
/* @__PURE__ */ jsxs9("div", {
|
|
1881
|
-
className: "space-y-3",
|
|
1882
|
-
children: [
|
|
1883
|
-
/* @__PURE__ */ jsx9("h2", {
|
|
1884
|
-
className: "font-bold text-2xl",
|
|
1885
|
-
children: "Getting Started"
|
|
1886
|
-
}),
|
|
1887
|
-
/* @__PURE__ */ jsxs9("ol", {
|
|
1888
|
-
className: "list-inside list-decimal space-y-2 text-muted-foreground",
|
|
1889
|
-
children: [
|
|
1890
|
-
/* @__PURE__ */ jsx9("li", {
|
|
1891
|
-
children: "Install the extension from VS Code Marketplace"
|
|
1892
|
-
}),
|
|
1893
|
-
/* @__PURE__ */ jsx9("li", {
|
|
1894
|
-
children: "Open a workspace with ContractSpec files (or create one)"
|
|
1895
|
-
}),
|
|
1896
|
-
/* @__PURE__ */ jsx9("li", {
|
|
1897
|
-
children: "Start the walkthrough: Help - Welcome - ContractSpec"
|
|
1898
|
-
}),
|
|
1899
|
-
/* @__PURE__ */ jsxs9("li", {
|
|
1900
|
-
children: [
|
|
1901
|
-
"Create your first spec: Click ",
|
|
1902
|
-
/* @__PURE__ */ jsx9("strong", {
|
|
1903
|
-
children: "+"
|
|
1904
|
-
}),
|
|
1905
|
-
" in Specs Explorer or run ",
|
|
1906
|
-
/* @__PURE__ */ jsx9("code", {
|
|
1907
|
-
children: "ContractSpec: Create New Spec"
|
|
1908
|
-
})
|
|
1909
|
-
]
|
|
1910
|
-
}),
|
|
1911
|
-
/* @__PURE__ */ jsx9("li", {
|
|
1912
|
-
children: "Build from it: Click the build icon in the editor title bar"
|
|
1913
|
-
})
|
|
1914
|
-
]
|
|
1915
|
-
})
|
|
1916
|
-
]
|
|
1917
|
-
}),
|
|
1918
|
-
/* @__PURE__ */ jsxs9("div", {
|
|
1919
|
-
className: "card-subtle space-y-4 p-6",
|
|
1920
|
-
children: [
|
|
1921
|
-
/* @__PURE__ */ jsx9("h3", {
|
|
1922
|
-
className: "font-bold",
|
|
1923
|
-
children: "Configuration"
|
|
1924
|
-
}),
|
|
1925
|
-
/* @__PURE__ */ jsx9("p", {
|
|
1926
|
-
className: "text-muted-foreground text-sm",
|
|
1927
|
-
children: "Configure the extension in VS Code Settings:"
|
|
1928
|
-
}),
|
|
1929
|
-
/* @__PURE__ */ jsx9("div", {
|
|
1930
|
-
className: "overflow-x-auto",
|
|
1931
|
-
children: /* @__PURE__ */ jsxs9("table", {
|
|
1932
|
-
className: "w-full text-muted-foreground text-sm",
|
|
1933
|
-
children: [
|
|
1934
|
-
/* @__PURE__ */ jsx9("thead", {
|
|
1935
|
-
children: /* @__PURE__ */ jsxs9("tr", {
|
|
1936
|
-
className: "border-border border-b",
|
|
1937
|
-
children: [
|
|
1938
|
-
/* @__PURE__ */ jsx9("th", {
|
|
1939
|
-
className: "p-2 text-left font-medium",
|
|
1940
|
-
children: "Setting"
|
|
1941
|
-
}),
|
|
1942
|
-
/* @__PURE__ */ jsx9("th", {
|
|
1943
|
-
className: "p-2 text-left font-medium",
|
|
1944
|
-
children: "Description"
|
|
1945
|
-
}),
|
|
1946
|
-
/* @__PURE__ */ jsx9("th", {
|
|
1947
|
-
className: "p-2 text-left font-medium",
|
|
1948
|
-
children: "Default"
|
|
1949
|
-
})
|
|
1950
|
-
]
|
|
1951
|
-
})
|
|
1952
|
-
}),
|
|
1953
|
-
/* @__PURE__ */ jsxs9("tbody", {
|
|
1954
|
-
children: [
|
|
1955
|
-
/* @__PURE__ */ jsxs9("tr", {
|
|
1956
|
-
className: "border-border border-b",
|
|
1957
|
-
children: [
|
|
1958
|
-
/* @__PURE__ */ jsx9("td", {
|
|
1959
|
-
className: "p-2 font-mono text-xs",
|
|
1960
|
-
children: "validation.onSave"
|
|
1961
|
-
}),
|
|
1962
|
-
/* @__PURE__ */ jsx9("td", {
|
|
1963
|
-
className: "p-2",
|
|
1964
|
-
children: "Run validation on save"
|
|
1965
|
-
}),
|
|
1966
|
-
/* @__PURE__ */ jsx9("td", {
|
|
1967
|
-
className: "p-2",
|
|
1968
|
-
children: "true"
|
|
1969
|
-
})
|
|
1970
|
-
]
|
|
1971
|
-
}),
|
|
1972
|
-
/* @__PURE__ */ jsxs9("tr", {
|
|
1973
|
-
className: "border-border border-b",
|
|
1974
|
-
children: [
|
|
1975
|
-
/* @__PURE__ */ jsx9("td", {
|
|
1976
|
-
className: "p-2 font-mono text-xs",
|
|
1977
|
-
children: "validation.onOpen"
|
|
1978
|
-
}),
|
|
1979
|
-
/* @__PURE__ */ jsx9("td", {
|
|
1980
|
-
className: "p-2",
|
|
1981
|
-
children: "Run validation on open"
|
|
1982
|
-
}),
|
|
1983
|
-
/* @__PURE__ */ jsx9("td", {
|
|
1984
|
-
className: "p-2",
|
|
1985
|
-
children: "true"
|
|
1986
|
-
})
|
|
1987
|
-
]
|
|
1988
|
-
}),
|
|
1989
|
-
/* @__PURE__ */ jsxs9("tr", {
|
|
1990
|
-
className: "border-border border-b",
|
|
1991
|
-
children: [
|
|
1992
|
-
/* @__PURE__ */ jsx9("td", {
|
|
1993
|
-
className: "p-2 font-mono text-xs",
|
|
1994
|
-
children: "api.baseUrl"
|
|
1995
|
-
}),
|
|
1996
|
-
/* @__PURE__ */ jsx9("td", {
|
|
1997
|
-
className: "p-2",
|
|
1998
|
-
children: "Base URL for ContractSpec API"
|
|
1999
|
-
}),
|
|
2000
|
-
/* @__PURE__ */ jsx9("td", {
|
|
2001
|
-
className: "p-2",
|
|
2002
|
-
children: "(empty)"
|
|
2003
|
-
})
|
|
2004
|
-
]
|
|
2005
|
-
})
|
|
2006
|
-
]
|
|
2007
|
-
})
|
|
2008
|
-
]
|
|
2009
|
-
})
|
|
2010
|
-
})
|
|
2011
|
-
]
|
|
2012
|
-
})
|
|
2013
|
-
]
|
|
2014
|
-
}),
|
|
2015
|
-
/* @__PURE__ */ jsxs9("div", {
|
|
2016
|
-
className: "flex items-center gap-4 pt-4",
|
|
2017
|
-
children: [
|
|
2018
|
-
/* @__PURE__ */ jsx9(Link9, {
|
|
2019
|
-
href: "/docs/getting-started/tools/cli",
|
|
2020
|
-
className: "btn-ghost",
|
|
2021
|
-
children: "Back: CLI"
|
|
2022
|
-
}),
|
|
2023
|
-
/* @__PURE__ */ jsxs9(Link9, {
|
|
2024
|
-
href: "/docs/specs",
|
|
2025
|
-
className: "btn-primary",
|
|
2026
|
-
children: [
|
|
2027
|
-
"Next: Core Concepts ",
|
|
2028
|
-
/* @__PURE__ */ jsx9(ChevronRight9, {
|
|
2029
|
-
size: 16
|
|
2030
|
-
})
|
|
2031
|
-
]
|
|
2032
|
-
})
|
|
2033
|
-
]
|
|
2034
|
-
})
|
|
2035
|
-
]
|
|
2036
|
-
});
|
|
2037
|
-
}
|
|
2038
|
-
|
|
2039
|
-
// src/components/docs/getting-started/getting-started.docblocks.ts
|
|
2040
|
-
import { registerDocBlocks } from "@contractspec/lib.contracts-spec/docs";
|
|
2041
|
-
var gettingStartedDocBlocks = [
|
|
2042
|
-
{
|
|
2043
|
-
id: "docs.getting-started.start-here",
|
|
2044
|
-
title: "Start here",
|
|
2045
|
-
summary: "Fast onboarding path from install to first generated contract.",
|
|
2046
|
-
kind: "usage",
|
|
2047
|
-
visibility: "public",
|
|
2048
|
-
route: "/docs/getting-started/start-here",
|
|
2049
|
-
tags: ["getting-started", "onboarding"],
|
|
2050
|
-
body: `# Start Here
|
|
233
|
+
contractspec validate src/contracts/mySpec.ts`})]}),d("div",{className:"card-subtle space-y-3 p-6",children:[r("h2",{className:"font-bold text-2xl",children:"Still blocked?"}),d("ul",{className:"space-y-2 text-muted-foreground",children:[r("li",{children:"Confirm compatibility requirements for runtime and framework."}),r("li",{children:"Re-run builds on a clean branch to isolate changes."}),r("li",{children:"Use a new spec and minimal adapter to validate setup."})]})]})]}),d("div",{className:"flex flex-wrap items-center gap-3 pt-2",children:[r(D,{href:"/docs/getting-started/start-here",className:"btn-ghost",children:"Start here"}),r(D,{href:"/docs/getting-started/compatibility",className:"btn-ghost",children:"Compatibility"}),d(D,{href:"/docs/getting-started/installation",className:"btn-primary",children:["Next: Installation ",r(re,{size:16})]})]})]})}import{CodeBlock as le}from"@contractspec/lib.design-system";import F from"@contractspec/lib.ui-link";import{ChevronRight as se,ExternalLink as de}from"lucide-react";import{jsx as e,jsxs as t}from"react/jsx-runtime";function at(){let S=[{category:"Core Functionality",items:["Real-time validation with instant feedback on spec errors","Build/Scaffold handlers and components from specs","Interactive spec creation wizard","Watch mode for auto-rebuild on changes","Sync all specs in workspace with one command"]},{category:"Visual Navigation",items:["Specs Explorer sidebar with organized tree view","Dependencies view to visualize spec relationships","Build Results tracking with history","Circular dependency detection"]},{category:"Comparison & Export",items:["Semantic and text diff between specs","Git comparison with baseline branches","OpenAPI 3.1 specification export"]}],u=[{name:"Create New Spec",description:"Interactive wizard to create specs"},{name:"Validate Current Spec",description:"Validate the currently open spec"},{name:"Build/Scaffold from Current Spec",description:"Generate handler/component"},{name:"Toggle Watch Mode",description:"Auto-rebuild on changes"},{name:"Sync All Specs",description:"Build all specs in workspace"},{name:"Analyze Spec Dependencies",description:"Visualize spec dependencies"},{name:"Compare Specs",description:"Semantic or text diff between specs"},{name:"Export to OpenAPI",description:"Generate OpenAPI specification"}];return t("div",{className:"space-y-8",children:[t("div",{className:"space-y-2",children:[e("h1",{className:"font-bold text-4xl",children:"VS Code Extension"}),e("p",{className:"text-lg text-muted-foreground",children:"Spec-first development directly in VS Code. Validate, scaffold, and explore your contract specifications with real-time feedback."})]}),t("div",{className:"flex flex-wrap gap-3",children:[t("a",{href:"https://marketplace.visualstudio.com/items?itemName=lssm.vscode-contractspec",target:"_blank",rel:"noopener noreferrer",className:"btn-primary inline-flex items-center gap-2",children:["Install Extension ",e(de,{size:16})]}),e("a",{href:"vscode:extension/lssm.vscode-contractspec",className:"btn-ghost inline-flex items-center gap-2",children:"Open in VS Code"})]}),t("div",{className:"space-y-6",children:[t("div",{className:"space-y-3",children:[e("h2",{className:"font-bold text-2xl",children:"Installation"}),t("div",{className:"space-y-2",children:[t("p",{className:"text-muted-foreground text-sm",children:[e("strong",{children:"Option 1:"})," Install from VS Code Marketplace"]}),e(le,{language:"bash",code:"code --install-extension lssm.vscode-contractspec"}),t("p",{className:"mt-4 text-muted-foreground text-sm",children:[e("strong",{children:"Option 2:"}),' Search for "ContractSpec" in VS Code Extensions (Ctrl/Cmd+Shift+X)']})]})]}),t("div",{className:"space-y-4",children:[e("h2",{className:"font-bold text-2xl",children:"Features"}),e("div",{className:"grid gap-4 md:grid-cols-3",children:S.map((y)=>t("div",{className:"card-subtle space-y-3 p-4",children:[e("h3",{className:"font-bold text-violet-400",children:y.category}),e("ul",{className:"space-y-2",children:y.items.map((N)=>t("li",{className:"flex items-start gap-2 text-muted-foreground text-sm",children:[e("span",{className:"mt-1 text-violet-400",children:"-"}),e("span",{children:N})]},N))})]},y.category))})]}),t("div",{className:"space-y-4",children:[e("h2",{className:"font-bold text-2xl",children:"Commands"}),t("p",{className:"text-muted-foreground",children:["Access commands via Command Palette (Ctrl/Cmd+Shift+P) with prefix"," ",e("code",{children:"ContractSpec:"})]}),e("div",{className:"grid gap-3 md:grid-cols-2",children:u.map((y)=>e("div",{className:"card-subtle flex items-center gap-3 p-3",children:t("div",{className:"flex-1",children:[e("p",{className:"font-medium font-mono text-sm",children:y.name}),e("p",{className:"text-muted-foreground text-xs",children:y.description})]})},y.name))})]}),t("div",{className:"space-y-3",children:[e("h2",{className:"font-bold text-2xl",children:"Sidebar Views"}),e("p",{className:"text-muted-foreground",children:"The extension adds a ContractSpec activity bar (icon in sidebar) with three views:"}),t("div",{className:"grid gap-4 md:grid-cols-3",children:[t("div",{className:"card-subtle space-y-2 p-4",children:[e("h4",{className:"font-bold",children:"Specs Explorer"}),e("p",{className:"text-muted-foreground text-sm",children:"Browse all specs organized by type. Shows name, version, and stability. Click to open, right-click for actions."})]}),t("div",{className:"card-subtle space-y-2 p-4",children:[e("h4",{className:"font-bold",children:"Dependencies"}),e("p",{className:"text-muted-foreground text-sm",children:"Visualize spec relationships. Detect circular dependencies. Navigate to referenced specs."})]}),t("div",{className:"card-subtle space-y-2 p-4",children:[e("h4",{className:"font-bold",children:"Build Results"}),e("p",{className:"text-muted-foreground text-sm",children:"Track build history (last 20). Success/failure indicators. Click to open generated files."})]})]})]}),t("div",{className:"space-y-3",children:[e("h2",{className:"font-bold text-2xl",children:"Getting Started"}),t("ol",{className:"list-inside list-decimal space-y-2 text-muted-foreground",children:[e("li",{children:"Install the extension from VS Code Marketplace"}),e("li",{children:"Open a workspace with ContractSpec files (or create one)"}),e("li",{children:"Start the walkthrough: Help - Welcome - ContractSpec"}),t("li",{children:["Create your first spec: Click ",e("strong",{children:"+"})," in Specs Explorer or run ",e("code",{children:"ContractSpec: Create New Spec"})]}),e("li",{children:"Build from it: Click the build icon in the editor title bar"})]})]}),t("div",{className:"card-subtle space-y-4 p-6",children:[e("h3",{className:"font-bold",children:"Configuration"}),e("p",{className:"text-muted-foreground text-sm",children:"Configure the extension in VS Code Settings:"}),e("div",{className:"overflow-x-auto",children:t("table",{className:"w-full text-muted-foreground text-sm",children:[e("thead",{children:t("tr",{className:"border-border border-b",children:[e("th",{className:"p-2 text-left font-medium",children:"Setting"}),e("th",{className:"p-2 text-left font-medium",children:"Description"}),e("th",{className:"p-2 text-left font-medium",children:"Default"})]})}),t("tbody",{children:[t("tr",{className:"border-border border-b",children:[e("td",{className:"p-2 font-mono text-xs",children:"validation.onSave"}),e("td",{className:"p-2",children:"Run validation on save"}),e("td",{className:"p-2",children:"true"})]}),t("tr",{className:"border-border border-b",children:[e("td",{className:"p-2 font-mono text-xs",children:"validation.onOpen"}),e("td",{className:"p-2",children:"Run validation on open"}),e("td",{className:"p-2",children:"true"})]}),t("tr",{className:"border-border border-b",children:[e("td",{className:"p-2 font-mono text-xs",children:"api.baseUrl"}),e("td",{className:"p-2",children:"Base URL for ContractSpec API"}),e("td",{className:"p-2",children:"(empty)"})]})]})]})})]})]}),t("div",{className:"flex items-center gap-4 pt-4",children:[e(F,{href:"/docs/getting-started/tools/cli",className:"btn-ghost",children:"Back: CLI"}),t(F,{href:"/docs/specs",className:"btn-primary",children:["Next: Core Concepts ",e(se,{size:16})]})]})]})}import{registerDocBlocks as pe}from"@contractspec/lib.contracts-spec/docs";var me=[{id:"docs.getting-started.start-here",title:"Start here",summary:"Fast onboarding path from install to first generated contract.",kind:"usage",visibility:"public",route:"/docs/getting-started/start-here",tags:["getting-started","onboarding"],body:`# Start Here
|
|
2051
234
|
|
|
2052
235
|
Get ContractSpec running quickly and generate your first contract-backed code.
|
|
2053
236
|
|
|
@@ -2082,17 +265,7 @@ contractspec validate src/contracts/mySpec.ts
|
|
|
2082
265
|
- Follow the Hello World tutorial for a full walkthrough.
|
|
2083
266
|
- Install the VS Code extension for inline validation.
|
|
2084
267
|
- Review compatibility notes before deploying to production.
|
|
2085
|
-
`
|
|
2086
|
-
},
|
|
2087
|
-
{
|
|
2088
|
-
id: "docs.getting-started.troubleshooting",
|
|
2089
|
-
title: "Troubleshooting",
|
|
2090
|
-
summary: "Resolve common install, spec discovery, and build issues.",
|
|
2091
|
-
kind: "faq",
|
|
2092
|
-
visibility: "public",
|
|
2093
|
-
route: "/docs/getting-started/troubleshooting",
|
|
2094
|
-
tags: ["getting-started", "troubleshooting"],
|
|
2095
|
-
body: `# Troubleshooting
|
|
268
|
+
`},{id:"docs.getting-started.troubleshooting",title:"Troubleshooting",summary:"Resolve common install, spec discovery, and build issues.",kind:"faq",visibility:"public",route:"/docs/getting-started/troubleshooting",tags:["getting-started","troubleshooting"],body:`# Troubleshooting
|
|
2096
269
|
|
|
2097
270
|
Common issues and quick fixes when getting started with ContractSpec.
|
|
2098
271
|
|
|
@@ -2123,17 +296,7 @@ contractspec validate src/contracts/mySpec.ts
|
|
|
2123
296
|
|
|
2124
297
|
- Confirm compatibility requirements (runtime, framework, package manager).
|
|
2125
298
|
- Re-run \`contractspec build\` with a clean working tree.
|
|
2126
|
-
`
|
|
2127
|
-
},
|
|
2128
|
-
{
|
|
2129
|
-
id: "docs.getting-started.compatibility",
|
|
2130
|
-
title: "Compatibility",
|
|
2131
|
-
summary: "Supported runtimes, frameworks, package managers, and AI modes.",
|
|
2132
|
-
kind: "reference",
|
|
2133
|
-
visibility: "public",
|
|
2134
|
-
route: "/docs/getting-started/compatibility",
|
|
2135
|
-
tags: ["getting-started", "compatibility"],
|
|
2136
|
-
body: `# Compatibility
|
|
299
|
+
`},{id:"docs.getting-started.compatibility",title:"Compatibility",summary:"Supported runtimes, frameworks, package managers, and AI modes.",kind:"reference",visibility:"public",route:"/docs/getting-started/compatibility",tags:["getting-started","compatibility"],body:`# Compatibility
|
|
2137
300
|
|
|
2138
301
|
ContractSpec supports modern TypeScript stacks with spec-first workflows.
|
|
2139
302
|
|
|
@@ -2166,18 +329,4 @@ ContractSpec supports modern TypeScript stacks with spec-first workflows.
|
|
|
2166
329
|
|
|
2167
330
|
- PostgreSQL via Prisma
|
|
2168
331
|
- Bring your own adapter for other databases
|
|
2169
|
-
`
|
|
2170
|
-
}
|
|
2171
|
-
];
|
|
2172
|
-
registerDocBlocks(gettingStartedDocBlocks);
|
|
2173
|
-
export {
|
|
2174
|
-
VSCodeExtensionPage,
|
|
2175
|
-
TroubleshootingPage,
|
|
2176
|
-
StartHerePage,
|
|
2177
|
-
InstallationPage,
|
|
2178
|
-
HelloWorldPage,
|
|
2179
|
-
DeveloperToolsPage,
|
|
2180
|
-
DataViewTutorialPage,
|
|
2181
|
-
CompatibilityPage,
|
|
2182
|
-
CLIPage
|
|
2183
|
-
};
|
|
332
|
+
`}];pe(me);export{at as VSCodeExtensionPage,ce as TroubleshootingPage,oe as StartHerePage,ae as InstallationPage,j as HelloWorldPage,De as DeveloperToolsPage,U as DataViewTutorialPage,G as CompatibilityPage,M as CLIPage};
|