@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,256 +1,11 @@
|
|
|
1
|
-
|
|
2
|
-
import Link from "@contractspec/lib.ui-link";
|
|
3
|
-
import { jsx, jsxs } from "react/jsx-runtime";
|
|
4
|
-
function StudioPrompt({
|
|
5
|
-
title = "Need the operating layer on top of OSS ContractSpec?",
|
|
6
|
-
body = "ContractSpec Studio helps teams turn evidence into proposed spec changes, governed delivery loops, and execution-ready task packs while keeping the open contract system as the source of truth.",
|
|
7
|
-
ctaLabel = "See what Studio adds",
|
|
8
|
-
href = "https://www.contractspec.studio/docs"
|
|
9
|
-
}) {
|
|
10
|
-
return /* @__PURE__ */ jsxs("div", {
|
|
11
|
-
className: "card-subtle space-y-3 p-6",
|
|
12
|
-
children: [
|
|
13
|
-
/* @__PURE__ */ jsx("h3", {
|
|
14
|
-
className: "font-semibold text-lg",
|
|
15
|
-
children: title
|
|
16
|
-
}),
|
|
17
|
-
/* @__PURE__ */ jsx("p", {
|
|
18
|
-
className: "text-muted-foreground text-sm",
|
|
19
|
-
children: body
|
|
20
|
-
}),
|
|
21
|
-
/* @__PURE__ */ jsx(Link, {
|
|
22
|
-
href,
|
|
23
|
-
className: "btn-primary",
|
|
24
|
-
children: ctaLabel
|
|
25
|
-
})
|
|
26
|
-
]
|
|
27
|
-
});
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
// src/components/docs/guides/GuideImportExistingCodebasesPage.tsx
|
|
31
|
-
import { CodeBlock } from "@contractspec/lib.design-system";
|
|
32
|
-
import Link2 from "@contractspec/lib.ui-link";
|
|
33
|
-
import {
|
|
34
|
-
AlertCircle,
|
|
35
|
-
ChevronRight,
|
|
36
|
-
FileCode,
|
|
37
|
-
Scan,
|
|
38
|
-
Settings
|
|
39
|
-
} from "lucide-react";
|
|
40
|
-
import { jsx as jsx2, jsxs as jsxs2 } from "react/jsx-runtime";
|
|
41
|
-
var supportedFrameworks = [
|
|
42
|
-
{
|
|
43
|
-
name: "NestJS",
|
|
44
|
-
flag: "nestjs",
|
|
45
|
-
description: "Controllers, decorators, DTOs"
|
|
46
|
-
},
|
|
47
|
-
{
|
|
48
|
-
name: "Express",
|
|
49
|
-
flag: "express",
|
|
50
|
-
description: "Router methods, middleware"
|
|
51
|
-
},
|
|
52
|
-
{
|
|
53
|
-
name: "Fastify",
|
|
54
|
-
flag: "fastify",
|
|
55
|
-
description: "Route definitions, schemas"
|
|
56
|
-
},
|
|
57
|
-
{
|
|
58
|
-
name: "Hono",
|
|
59
|
-
flag: "hono",
|
|
60
|
-
description: "Route handlers, validators"
|
|
61
|
-
},
|
|
62
|
-
{
|
|
63
|
-
name: "Elysia",
|
|
64
|
-
flag: "elysia",
|
|
65
|
-
description: "Type-safe routes, schemas"
|
|
66
|
-
},
|
|
67
|
-
{
|
|
68
|
-
name: "tRPC",
|
|
69
|
-
flag: "trpc",
|
|
70
|
-
description: "Procedure definitions"
|
|
71
|
-
},
|
|
72
|
-
{
|
|
73
|
-
name: "Next.js",
|
|
74
|
-
flag: "next-api",
|
|
75
|
-
description: "API routes (app/api, pages/api)"
|
|
76
|
-
}
|
|
77
|
-
];
|
|
78
|
-
function GuideImportExistingCodebasesPage() {
|
|
79
|
-
return /* @__PURE__ */ jsxs2("div", {
|
|
80
|
-
className: "space-y-8",
|
|
81
|
-
children: [
|
|
82
|
-
/* @__PURE__ */ jsxs2("div", {
|
|
83
|
-
className: "space-y-3",
|
|
84
|
-
children: [
|
|
85
|
-
/* @__PURE__ */ jsx2("h1", {
|
|
86
|
-
className: "font-bold text-4xl",
|
|
87
|
-
children: "Import Existing Codebases"
|
|
88
|
-
}),
|
|
89
|
-
/* @__PURE__ */ jsx2("p", {
|
|
90
|
-
className: "text-lg text-muted-foreground",
|
|
91
|
-
children: "Convert your existing API endpoints into ContractSpec contracts. Auto-detect frameworks, extract schemas, and generate explicit contract definitions from your code."
|
|
92
|
-
})
|
|
93
|
-
]
|
|
94
|
-
}),
|
|
95
|
-
/* @__PURE__ */ jsxs2("div", {
|
|
96
|
-
className: "card-subtle space-y-4 p-6",
|
|
97
|
-
children: [
|
|
98
|
-
/* @__PURE__ */ jsx2("h2", {
|
|
99
|
-
className: "font-bold text-2xl",
|
|
100
|
-
children: "What you'll learn"
|
|
101
|
-
}),
|
|
102
|
-
/* @__PURE__ */ jsxs2("ul", {
|
|
103
|
-
className: "space-y-2 text-muted-foreground text-sm",
|
|
104
|
-
children: [
|
|
105
|
-
/* @__PURE__ */ jsx2("li", {
|
|
106
|
-
children: "How to import existing API endpoints as ContractSpec contracts."
|
|
107
|
-
}),
|
|
108
|
-
/* @__PURE__ */ jsx2("li", {
|
|
109
|
-
children: "Framework-specific patterns and auto-detection."
|
|
110
|
-
}),
|
|
111
|
-
/* @__PURE__ */ jsx2("li", {
|
|
112
|
-
children: "Customizing imports with scopes, dry-run, and output options."
|
|
113
|
-
}),
|
|
114
|
-
/* @__PURE__ */ jsx2("li", {
|
|
115
|
-
children: "Registering imported contracts and adding handlers."
|
|
116
|
-
})
|
|
117
|
-
]
|
|
118
|
-
})
|
|
119
|
-
]
|
|
120
|
-
}),
|
|
121
|
-
/* @__PURE__ */ jsxs2("div", {
|
|
122
|
-
className: "space-y-6",
|
|
123
|
-
children: [
|
|
124
|
-
/* @__PURE__ */ jsxs2("div", {
|
|
125
|
-
className: "space-y-3",
|
|
126
|
-
children: [
|
|
127
|
-
/* @__PURE__ */ jsx2("h2", {
|
|
128
|
-
className: "font-bold text-2xl",
|
|
129
|
-
children: "Why import existing code?"
|
|
130
|
-
}),
|
|
131
|
-
/* @__PURE__ */ jsx2("p", {
|
|
132
|
-
className: "text-muted-foreground text-sm",
|
|
133
|
-
children: "Instead of writing contracts from scratch, the import command extracts endpoint patterns from your existing codebase. This gives you:"
|
|
134
|
-
}),
|
|
135
|
-
/* @__PURE__ */ jsxs2("ul", {
|
|
136
|
-
className: "list-disc space-y-1 pl-5 text-muted-foreground text-sm",
|
|
137
|
-
children: [
|
|
138
|
-
/* @__PURE__ */ jsx2("li", {
|
|
139
|
-
children: "Instant spec coverage for existing APIs"
|
|
140
|
-
}),
|
|
141
|
-
/* @__PURE__ */ jsx2("li", {
|
|
142
|
-
children: "Type-safe schemas derived from your existing types"
|
|
143
|
-
}),
|
|
144
|
-
/* @__PURE__ */ jsx2("li", {
|
|
145
|
-
children: "A foundation to iterate and refine contracts"
|
|
146
|
-
}),
|
|
147
|
-
/* @__PURE__ */ jsx2("li", {
|
|
148
|
-
children: "Gradual adoption without rewriting code"
|
|
149
|
-
})
|
|
150
|
-
]
|
|
151
|
-
})
|
|
152
|
-
]
|
|
153
|
-
}),
|
|
154
|
-
/* @__PURE__ */ jsxs2("div", {
|
|
155
|
-
className: "space-y-3",
|
|
156
|
-
children: [
|
|
157
|
-
/* @__PURE__ */ jsx2("h2", {
|
|
158
|
-
className: "font-bold text-2xl",
|
|
159
|
-
children: "Supported frameworks"
|
|
160
|
-
}),
|
|
161
|
-
/* @__PURE__ */ jsx2("div", {
|
|
162
|
-
className: "grid gap-3 md:grid-cols-2 lg:grid-cols-3",
|
|
163
|
-
children: supportedFrameworks.map((fw) => /* @__PURE__ */ jsxs2("div", {
|
|
164
|
-
className: "flex items-start gap-3 rounded-lg border border-white/10 p-4",
|
|
165
|
-
children: [
|
|
166
|
-
/* @__PURE__ */ jsx2(FileCode, {
|
|
167
|
-
className: "text-violet-400",
|
|
168
|
-
size: 18
|
|
169
|
-
}),
|
|
170
|
-
/* @__PURE__ */ jsxs2("div", {
|
|
171
|
-
className: "space-y-1",
|
|
172
|
-
children: [
|
|
173
|
-
/* @__PURE__ */ jsx2("h3", {
|
|
174
|
-
className: "font-semibold",
|
|
175
|
-
children: fw.name
|
|
176
|
-
}),
|
|
177
|
-
/* @__PURE__ */ jsx2("p", {
|
|
178
|
-
className: "text-muted-foreground text-xs",
|
|
179
|
-
children: fw.description
|
|
180
|
-
}),
|
|
181
|
-
/* @__PURE__ */ jsxs2("code", {
|
|
182
|
-
className: "text-violet-400 text-xs",
|
|
183
|
-
children: [
|
|
184
|
-
"--framework ",
|
|
185
|
-
fw.flag
|
|
186
|
-
]
|
|
187
|
-
})
|
|
188
|
-
]
|
|
189
|
-
})
|
|
190
|
-
]
|
|
191
|
-
}, fw.flag))
|
|
192
|
-
})
|
|
193
|
-
]
|
|
194
|
-
}),
|
|
195
|
-
/* @__PURE__ */ jsxs2("div", {
|
|
196
|
-
className: "space-y-3",
|
|
197
|
-
children: [
|
|
198
|
-
/* @__PURE__ */ jsx2("h2", {
|
|
199
|
-
className: "font-bold text-2xl",
|
|
200
|
-
children: "1) Quick start"
|
|
201
|
-
}),
|
|
202
|
-
/* @__PURE__ */ jsx2("p", {
|
|
203
|
-
className: "text-muted-foreground text-sm",
|
|
204
|
-
children: "Run the import command to auto-detect your framework and extract endpoints:"
|
|
205
|
-
}),
|
|
206
|
-
/* @__PURE__ */ jsx2(CodeBlock, {
|
|
207
|
-
language: "bash",
|
|
208
|
-
filename: "import-quickstart",
|
|
209
|
-
code: `# Auto-detect framework and import all endpoints
|
|
1
|
+
import y from"@contractspec/lib.ui-link";import{jsx as r,jsxs as g}from"react/jsx-runtime";function d({title:a="Need the operating layer on top of OSS ContractSpec?",body:m="ContractSpec Studio helps teams turn evidence into proposed spec changes, governed delivery loops, and execution-ready task packs while keeping the open contract system as the source of truth.",ctaLabel:u="See what Studio adds",href:o="https://www.contractspec.studio/docs"}){return g("div",{className:"card-subtle space-y-3 p-6",children:[r("h3",{className:"font-semibold text-lg",children:a}),r("p",{className:"text-muted-foreground text-sm",children:m}),r(y,{href:o,className:"btn-primary",children:u})]})}import{CodeBlock as p}from"@contractspec/lib.design-system";import n from"@contractspec/lib.ui-link";import{AlertCircle as i,ChevronRight as v,FileCode as N,Scan as h,Settings as P}from"lucide-react";import{jsx as t,jsxs as e}from"react/jsx-runtime";var b=[{name:"NestJS",flag:"nestjs",description:"Controllers, decorators, DTOs"},{name:"Express",flag:"express",description:"Router methods, middleware"},{name:"Fastify",flag:"fastify",description:"Route definitions, schemas"},{name:"Hono",flag:"hono",description:"Route handlers, validators"},{name:"Elysia",flag:"elysia",description:"Type-safe routes, schemas"},{name:"tRPC",flag:"trpc",description:"Procedure definitions"},{name:"Next.js",flag:"next-api",description:"API routes (app/api, pages/api)"}];function G(){return e("div",{className:"space-y-8",children:[e("div",{className:"space-y-3",children:[t("h1",{className:"font-bold text-4xl",children:"Import Existing Codebases"}),t("p",{className:"text-lg text-muted-foreground",children:"Convert your existing API endpoints into ContractSpec contracts. Auto-detect frameworks, extract schemas, and generate explicit contract definitions from your code."})]}),e("div",{className:"card-subtle space-y-4 p-6",children:[t("h2",{className:"font-bold text-2xl",children:"What you'll learn"}),e("ul",{className:"space-y-2 text-muted-foreground text-sm",children:[t("li",{children:"How to import existing API endpoints as ContractSpec contracts."}),t("li",{children:"Framework-specific patterns and auto-detection."}),t("li",{children:"Customizing imports with scopes, dry-run, and output options."}),t("li",{children:"Registering imported contracts and adding handlers."})]})]}),e("div",{className:"space-y-6",children:[e("div",{className:"space-y-3",children:[t("h2",{className:"font-bold text-2xl",children:"Why import existing code?"}),t("p",{className:"text-muted-foreground text-sm",children:"Instead of writing contracts from scratch, the import command extracts endpoint patterns from your existing codebase. This gives you:"}),e("ul",{className:"list-disc space-y-1 pl-5 text-muted-foreground text-sm",children:[t("li",{children:"Instant spec coverage for existing APIs"}),t("li",{children:"Type-safe schemas derived from your existing types"}),t("li",{children:"A foundation to iterate and refine contracts"}),t("li",{children:"Gradual adoption without rewriting code"})]})]}),e("div",{className:"space-y-3",children:[t("h2",{className:"font-bold text-2xl",children:"Supported frameworks"}),t("div",{className:"grid gap-3 md:grid-cols-2 lg:grid-cols-3",children:b.map((a)=>e("div",{className:"flex items-start gap-3 rounded-lg border border-white/10 p-4",children:[t(N,{className:"text-violet-400",size:18}),e("div",{className:"space-y-1",children:[t("h3",{className:"font-semibold",children:a.name}),t("p",{className:"text-muted-foreground text-xs",children:a.description}),e("code",{className:"text-violet-400 text-xs",children:["--framework ",a.flag]})]})]},a.flag))})]}),e("div",{className:"space-y-3",children:[t("h2",{className:"font-bold text-2xl",children:"1) Quick start"}),t("p",{className:"text-muted-foreground text-sm",children:"Run the import command to auto-detect your framework and extract endpoints:"}),t(p,{language:"bash",filename:"import-quickstart",code:`# Auto-detect framework and import all endpoints
|
|
210
2
|
contractspec import ./src
|
|
211
3
|
|
|
212
4
|
# Preview what would be imported (dry-run)
|
|
213
5
|
contractspec import ./src --dry-run
|
|
214
6
|
|
|
215
7
|
# Force a specific framework
|
|
216
|
-
contractspec import ./src --framework nestjs`
|
|
217
|
-
}),
|
|
218
|
-
/* @__PURE__ */ jsx2("p", {
|
|
219
|
-
className: "text-muted-foreground text-sm",
|
|
220
|
-
children: "Expected output: A summary of endpoints found, schemas extracted, and files generated."
|
|
221
|
-
})
|
|
222
|
-
]
|
|
223
|
-
}),
|
|
224
|
-
/* @__PURE__ */ jsxs2("div", {
|
|
225
|
-
className: "space-y-3",
|
|
226
|
-
children: [
|
|
227
|
-
/* @__PURE__ */ jsx2("h2", {
|
|
228
|
-
className: "font-bold text-2xl",
|
|
229
|
-
children: "2) Framework-specific patterns"
|
|
230
|
-
}),
|
|
231
|
-
/* @__PURE__ */ jsx2("p", {
|
|
232
|
-
className: "text-muted-foreground text-sm",
|
|
233
|
-
children: "The import command recognizes these patterns in each framework:"
|
|
234
|
-
})
|
|
235
|
-
]
|
|
236
|
-
}),
|
|
237
|
-
/* @__PURE__ */ jsxs2("div", {
|
|
238
|
-
className: "space-y-3",
|
|
239
|
-
children: [
|
|
240
|
-
/* @__PURE__ */ jsxs2("h3", {
|
|
241
|
-
className: "flex items-center gap-2 font-semibold text-xl",
|
|
242
|
-
children: [
|
|
243
|
-
/* @__PURE__ */ jsx2(Scan, {
|
|
244
|
-
size: 18,
|
|
245
|
-
className: "text-blue-400"
|
|
246
|
-
}),
|
|
247
|
-
"NestJS"
|
|
248
|
-
]
|
|
249
|
-
}),
|
|
250
|
-
/* @__PURE__ */ jsx2(CodeBlock, {
|
|
251
|
-
language: "typescript",
|
|
252
|
-
filename: "src/users/users.controller.ts (before)",
|
|
253
|
-
code: `@Controller('users')
|
|
8
|
+
contractspec import ./src --framework nestjs`}),t("p",{className:"text-muted-foreground text-sm",children:"Expected output: A summary of endpoints found, schemas extracted, and files generated."})]}),e("div",{className:"space-y-3",children:[t("h2",{className:"font-bold text-2xl",children:"2) Framework-specific patterns"}),t("p",{className:"text-muted-foreground text-sm",children:"The import command recognizes these patterns in each framework:"})]}),e("div",{className:"space-y-3",children:[e("h3",{className:"flex items-center gap-2 font-semibold text-xl",children:[t(h,{size:18,className:"text-blue-400"}),"NestJS"]}),t(p,{language:"typescript",filename:"src/users/users.controller.ts (before)",code:`@Controller('users')
|
|
254
9
|
export class UsersController {
|
|
255
10
|
@Get(':id')
|
|
256
11
|
async getUser(@Param('id') id: string): Promise<UserDto> {
|
|
@@ -262,59 +17,7 @@ export class UsersController {
|
|
|
262
17
|
async createUser(@Body() dto: CreateUserDto): Promise<UserDto> {
|
|
263
18
|
return this.usersService.create(dto);
|
|
264
19
|
}
|
|
265
|
-
}`
|
|
266
|
-
}),
|
|
267
|
-
/* @__PURE__ */ jsxs2("p", {
|
|
268
|
-
className: "text-muted-foreground text-sm",
|
|
269
|
-
children: [
|
|
270
|
-
"Detected: ",
|
|
271
|
-
/* @__PURE__ */ jsx2("code", {
|
|
272
|
-
children: "@Controller"
|
|
273
|
-
}),
|
|
274
|
-
", ",
|
|
275
|
-
/* @__PURE__ */ jsx2("code", {
|
|
276
|
-
children: "@Get"
|
|
277
|
-
}),
|
|
278
|
-
",",
|
|
279
|
-
" ",
|
|
280
|
-
/* @__PURE__ */ jsx2("code", {
|
|
281
|
-
children: "@Post"
|
|
282
|
-
}),
|
|
283
|
-
", ",
|
|
284
|
-
/* @__PURE__ */ jsx2("code", {
|
|
285
|
-
children: "@Body"
|
|
286
|
-
}),
|
|
287
|
-
", ",
|
|
288
|
-
/* @__PURE__ */ jsx2("code", {
|
|
289
|
-
children: "@Param"
|
|
290
|
-
}),
|
|
291
|
-
",",
|
|
292
|
-
" ",
|
|
293
|
-
/* @__PURE__ */ jsx2("code", {
|
|
294
|
-
children: "@UseGuards"
|
|
295
|
-
}),
|
|
296
|
-
" decorators."
|
|
297
|
-
]
|
|
298
|
-
})
|
|
299
|
-
]
|
|
300
|
-
}),
|
|
301
|
-
/* @__PURE__ */ jsxs2("div", {
|
|
302
|
-
className: "space-y-3",
|
|
303
|
-
children: [
|
|
304
|
-
/* @__PURE__ */ jsxs2("h3", {
|
|
305
|
-
className: "flex items-center gap-2 font-semibold text-xl",
|
|
306
|
-
children: [
|
|
307
|
-
/* @__PURE__ */ jsx2(Scan, {
|
|
308
|
-
size: 18,
|
|
309
|
-
className: "text-green-400"
|
|
310
|
-
}),
|
|
311
|
-
"Express"
|
|
312
|
-
]
|
|
313
|
-
}),
|
|
314
|
-
/* @__PURE__ */ jsx2(CodeBlock, {
|
|
315
|
-
language: "typescript",
|
|
316
|
-
filename: "src/routes/users.ts (before)",
|
|
317
|
-
code: `const router = express.Router();
|
|
20
|
+
}`}),e("p",{className:"text-muted-foreground text-sm",children:["Detected: ",t("code",{children:"@Controller"}),", ",t("code",{children:"@Get"}),","," ",t("code",{children:"@Post"}),", ",t("code",{children:"@Body"}),", ",t("code",{children:"@Param"}),","," ",t("code",{children:"@UseGuards"})," decorators."]})]}),e("div",{className:"space-y-3",children:[e("h3",{className:"flex items-center gap-2 font-semibold text-xl",children:[t(h,{size:18,className:"text-green-400"}),"Express"]}),t(p,{language:"typescript",filename:"src/routes/users.ts (before)",code:`const router = express.Router();
|
|
318
21
|
|
|
319
22
|
router.get('/users/:id', async (req, res) => {
|
|
320
23
|
const user = await getUserById(req.params.id);
|
|
@@ -324,41 +27,7 @@ router.get('/users/:id', async (req, res) => {
|
|
|
324
27
|
router.post('/users', validateBody(CreateUserSchema), async (req, res) => {
|
|
325
28
|
const user = await createUser(req.body);
|
|
326
29
|
res.status(201).json(user);
|
|
327
|
-
});`
|
|
328
|
-
}),
|
|
329
|
-
/* @__PURE__ */ jsxs2("p", {
|
|
330
|
-
className: "text-muted-foreground text-sm",
|
|
331
|
-
children: [
|
|
332
|
-
"Detected: ",
|
|
333
|
-
/* @__PURE__ */ jsx2("code", {
|
|
334
|
-
children: "router.get"
|
|
335
|
-
}),
|
|
336
|
-
", ",
|
|
337
|
-
/* @__PURE__ */ jsx2("code", {
|
|
338
|
-
children: "router.post"
|
|
339
|
-
}),
|
|
340
|
-
", validation middleware, Zod schemas."
|
|
341
|
-
]
|
|
342
|
-
})
|
|
343
|
-
]
|
|
344
|
-
}),
|
|
345
|
-
/* @__PURE__ */ jsxs2("div", {
|
|
346
|
-
className: "space-y-3",
|
|
347
|
-
children: [
|
|
348
|
-
/* @__PURE__ */ jsxs2("h3", {
|
|
349
|
-
className: "flex items-center gap-2 font-semibold text-xl",
|
|
350
|
-
children: [
|
|
351
|
-
/* @__PURE__ */ jsx2(Scan, {
|
|
352
|
-
size: 18,
|
|
353
|
-
className: "text-purple-400"
|
|
354
|
-
}),
|
|
355
|
-
"Next.js API Routes"
|
|
356
|
-
]
|
|
357
|
-
}),
|
|
358
|
-
/* @__PURE__ */ jsx2(CodeBlock, {
|
|
359
|
-
language: "typescript",
|
|
360
|
-
filename: "app/api/users/[id]/route.ts (before)",
|
|
361
|
-
code: `export async function GET(
|
|
30
|
+
});`}),e("p",{className:"text-muted-foreground text-sm",children:["Detected: ",t("code",{children:"router.get"}),", ",t("code",{children:"router.post"}),", validation middleware, Zod schemas."]})]}),e("div",{className:"space-y-3",children:[e("h3",{className:"flex items-center gap-2 font-semibold text-xl",children:[t(h,{size:18,className:"text-purple-400"}),"Next.js API Routes"]}),t(p,{language:"typescript",filename:"app/api/users/[id]/route.ts (before)",code:`export async function GET(
|
|
362
31
|
request: Request,
|
|
363
32
|
{ params }: { params: { id: string } }
|
|
364
33
|
) {
|
|
@@ -370,48 +39,7 @@ export async function POST(request: Request) {
|
|
|
370
39
|
const body = await request.json();
|
|
371
40
|
const user = await createUser(body);
|
|
372
41
|
return Response.json(user, { status: 201 });
|
|
373
|
-
}`
|
|
374
|
-
}),
|
|
375
|
-
/* @__PURE__ */ jsxs2("p", {
|
|
376
|
-
className: "text-muted-foreground text-sm",
|
|
377
|
-
children: [
|
|
378
|
-
"Detected: ",
|
|
379
|
-
/* @__PURE__ */ jsx2("code", {
|
|
380
|
-
children: "GET"
|
|
381
|
-
}),
|
|
382
|
-
", ",
|
|
383
|
-
/* @__PURE__ */ jsx2("code", {
|
|
384
|
-
children: "POST"
|
|
385
|
-
}),
|
|
386
|
-
" exports in",
|
|
387
|
-
" ",
|
|
388
|
-
/* @__PURE__ */ jsx2("code", {
|
|
389
|
-
children: "app/api/**/route.ts"
|
|
390
|
-
}),
|
|
391
|
-
" and ",
|
|
392
|
-
/* @__PURE__ */ jsx2("code", {
|
|
393
|
-
children: "pages/api/**/*.ts"
|
|
394
|
-
}),
|
|
395
|
-
"."
|
|
396
|
-
]
|
|
397
|
-
})
|
|
398
|
-
]
|
|
399
|
-
}),
|
|
400
|
-
/* @__PURE__ */ jsxs2("div", {
|
|
401
|
-
className: "space-y-3",
|
|
402
|
-
children: [
|
|
403
|
-
/* @__PURE__ */ jsx2("h2", {
|
|
404
|
-
className: "font-bold text-2xl",
|
|
405
|
-
children: "3) Understanding generated contracts"
|
|
406
|
-
}),
|
|
407
|
-
/* @__PURE__ */ jsx2("p", {
|
|
408
|
-
className: "text-muted-foreground text-sm",
|
|
409
|
-
children: "The import command generates ContractSpec operations with TODO placeholders for fields it cannot infer:"
|
|
410
|
-
}),
|
|
411
|
-
/* @__PURE__ */ jsx2(CodeBlock, {
|
|
412
|
-
language: "typescript",
|
|
413
|
-
filename: ".contractspec/generated/users.operation.ts",
|
|
414
|
-
code: `import { defineQuery, defineCommand } from "@contractspec/lib.contracts-spec";
|
|
42
|
+
}`}),e("p",{className:"text-muted-foreground text-sm",children:["Detected: ",t("code",{children:"GET"}),", ",t("code",{children:"POST"})," exports in"," ",t("code",{children:"app/api/**/route.ts"})," and ",t("code",{children:"pages/api/**/*.ts"}),"."]})]}),e("div",{className:"space-y-3",children:[t("h2",{className:"font-bold text-2xl",children:"3) Understanding generated contracts"}),t("p",{className:"text-muted-foreground text-sm",children:"The import command generates ContractSpec operations with TODO placeholders for fields it cannot infer:"}),t(p,{language:"typescript",filename:".contractspec/generated/users.operation.ts",code:`import { defineQuery, defineCommand } from "@contractspec/lib.contracts-spec";
|
|
415
43
|
import { SchemaModel, ScalarTypeEnum } from "@contractspec/lib.schema";
|
|
416
44
|
|
|
417
45
|
export const GetUserQuery = defineQuery({
|
|
@@ -471,191 +99,7 @@ export const CreateUserCommand = defineCommand({
|
|
|
471
99
|
transport: {
|
|
472
100
|
rest: { method: "POST", path: "/users" },
|
|
473
101
|
},
|
|
474
|
-
});`
|
|
475
|
-
})
|
|
476
|
-
]
|
|
477
|
-
}),
|
|
478
|
-
/* @__PURE__ */ jsxs2("div", {
|
|
479
|
-
className: "space-y-3",
|
|
480
|
-
children: [
|
|
481
|
-
/* @__PURE__ */ jsx2("h2", {
|
|
482
|
-
className: "font-bold text-2xl",
|
|
483
|
-
children: "4) Customizing imports"
|
|
484
|
-
}),
|
|
485
|
-
/* @__PURE__ */ jsxs2("div", {
|
|
486
|
-
className: "flex items-center gap-2",
|
|
487
|
-
children: [
|
|
488
|
-
/* @__PURE__ */ jsx2(Settings, {
|
|
489
|
-
size: 18,
|
|
490
|
-
className: "text-violet-400"
|
|
491
|
-
}),
|
|
492
|
-
/* @__PURE__ */ jsx2("h3", {
|
|
493
|
-
className: "font-semibold text-lg",
|
|
494
|
-
children: "Available options"
|
|
495
|
-
})
|
|
496
|
-
]
|
|
497
|
-
}),
|
|
498
|
-
/* @__PURE__ */ jsx2("div", {
|
|
499
|
-
className: "overflow-x-auto",
|
|
500
|
-
children: /* @__PURE__ */ jsxs2("table", {
|
|
501
|
-
className: "w-full text-sm",
|
|
502
|
-
children: [
|
|
503
|
-
/* @__PURE__ */ jsx2("thead", {
|
|
504
|
-
children: /* @__PURE__ */ jsxs2("tr", {
|
|
505
|
-
className: "border-white/10 border-b",
|
|
506
|
-
children: [
|
|
507
|
-
/* @__PURE__ */ jsx2("th", {
|
|
508
|
-
className: "py-2 pr-4 text-left",
|
|
509
|
-
children: "Option"
|
|
510
|
-
}),
|
|
511
|
-
/* @__PURE__ */ jsx2("th", {
|
|
512
|
-
className: "py-2 pr-4 text-left",
|
|
513
|
-
children: "Description"
|
|
514
|
-
}),
|
|
515
|
-
/* @__PURE__ */ jsx2("th", {
|
|
516
|
-
className: "py-2 text-left",
|
|
517
|
-
children: "Example"
|
|
518
|
-
})
|
|
519
|
-
]
|
|
520
|
-
})
|
|
521
|
-
}),
|
|
522
|
-
/* @__PURE__ */ jsxs2("tbody", {
|
|
523
|
-
className: "text-muted-foreground",
|
|
524
|
-
children: [
|
|
525
|
-
/* @__PURE__ */ jsxs2("tr", {
|
|
526
|
-
className: "border-white/5 border-b",
|
|
527
|
-
children: [
|
|
528
|
-
/* @__PURE__ */ jsx2("td", {
|
|
529
|
-
className: "py-2 pr-4",
|
|
530
|
-
children: /* @__PURE__ */ jsx2("code", {
|
|
531
|
-
children: "--scope"
|
|
532
|
-
})
|
|
533
|
-
}),
|
|
534
|
-
/* @__PURE__ */ jsx2("td", {
|
|
535
|
-
className: "py-2 pr-4",
|
|
536
|
-
children: "Limit to specific directories"
|
|
537
|
-
}),
|
|
538
|
-
/* @__PURE__ */ jsx2("td", {
|
|
539
|
-
className: "py-2",
|
|
540
|
-
children: /* @__PURE__ */ jsx2("code", {
|
|
541
|
-
children: "--scope src/users src/auth"
|
|
542
|
-
})
|
|
543
|
-
})
|
|
544
|
-
]
|
|
545
|
-
}),
|
|
546
|
-
/* @__PURE__ */ jsxs2("tr", {
|
|
547
|
-
className: "border-white/5 border-b",
|
|
548
|
-
children: [
|
|
549
|
-
/* @__PURE__ */ jsx2("td", {
|
|
550
|
-
className: "py-2 pr-4",
|
|
551
|
-
children: /* @__PURE__ */ jsx2("code", {
|
|
552
|
-
children: "--framework"
|
|
553
|
-
})
|
|
554
|
-
}),
|
|
555
|
-
/* @__PURE__ */ jsx2("td", {
|
|
556
|
-
className: "py-2 pr-4",
|
|
557
|
-
children: "Force a specific framework"
|
|
558
|
-
}),
|
|
559
|
-
/* @__PURE__ */ jsx2("td", {
|
|
560
|
-
className: "py-2",
|
|
561
|
-
children: /* @__PURE__ */ jsx2("code", {
|
|
562
|
-
children: "--framework express"
|
|
563
|
-
})
|
|
564
|
-
})
|
|
565
|
-
]
|
|
566
|
-
}),
|
|
567
|
-
/* @__PURE__ */ jsxs2("tr", {
|
|
568
|
-
className: "border-white/5 border-b",
|
|
569
|
-
children: [
|
|
570
|
-
/* @__PURE__ */ jsx2("td", {
|
|
571
|
-
className: "py-2 pr-4",
|
|
572
|
-
children: /* @__PURE__ */ jsx2("code", {
|
|
573
|
-
children: "--output"
|
|
574
|
-
})
|
|
575
|
-
}),
|
|
576
|
-
/* @__PURE__ */ jsx2("td", {
|
|
577
|
-
className: "py-2 pr-4",
|
|
578
|
-
children: "Output directory"
|
|
579
|
-
}),
|
|
580
|
-
/* @__PURE__ */ jsx2("td", {
|
|
581
|
-
className: "py-2",
|
|
582
|
-
children: /* @__PURE__ */ jsx2("code", {
|
|
583
|
-
children: "--output ./contracts"
|
|
584
|
-
})
|
|
585
|
-
})
|
|
586
|
-
]
|
|
587
|
-
}),
|
|
588
|
-
/* @__PURE__ */ jsxs2("tr", {
|
|
589
|
-
className: "border-white/5 border-b",
|
|
590
|
-
children: [
|
|
591
|
-
/* @__PURE__ */ jsx2("td", {
|
|
592
|
-
className: "py-2 pr-4",
|
|
593
|
-
children: /* @__PURE__ */ jsx2("code", {
|
|
594
|
-
children: "--dry-run"
|
|
595
|
-
})
|
|
596
|
-
}),
|
|
597
|
-
/* @__PURE__ */ jsx2("td", {
|
|
598
|
-
className: "py-2 pr-4",
|
|
599
|
-
children: "Preview without writing files"
|
|
600
|
-
}),
|
|
601
|
-
/* @__PURE__ */ jsx2("td", {
|
|
602
|
-
className: "py-2",
|
|
603
|
-
children: /* @__PURE__ */ jsx2("code", {
|
|
604
|
-
children: "--dry-run"
|
|
605
|
-
})
|
|
606
|
-
})
|
|
607
|
-
]
|
|
608
|
-
}),
|
|
609
|
-
/* @__PURE__ */ jsxs2("tr", {
|
|
610
|
-
className: "border-white/5 border-b",
|
|
611
|
-
children: [
|
|
612
|
-
/* @__PURE__ */ jsx2("td", {
|
|
613
|
-
className: "py-2 pr-4",
|
|
614
|
-
children: /* @__PURE__ */ jsx2("code", {
|
|
615
|
-
children: "--analyze"
|
|
616
|
-
})
|
|
617
|
-
}),
|
|
618
|
-
/* @__PURE__ */ jsx2("td", {
|
|
619
|
-
className: "py-2 pr-4",
|
|
620
|
-
children: "Analysis only, no code generation"
|
|
621
|
-
}),
|
|
622
|
-
/* @__PURE__ */ jsx2("td", {
|
|
623
|
-
className: "py-2",
|
|
624
|
-
children: /* @__PURE__ */ jsx2("code", {
|
|
625
|
-
children: "--analyze"
|
|
626
|
-
})
|
|
627
|
-
})
|
|
628
|
-
]
|
|
629
|
-
}),
|
|
630
|
-
/* @__PURE__ */ jsxs2("tr", {
|
|
631
|
-
children: [
|
|
632
|
-
/* @__PURE__ */ jsx2("td", {
|
|
633
|
-
className: "py-2 pr-4",
|
|
634
|
-
children: /* @__PURE__ */ jsx2("code", {
|
|
635
|
-
children: "--json"
|
|
636
|
-
})
|
|
637
|
-
}),
|
|
638
|
-
/* @__PURE__ */ jsx2("td", {
|
|
639
|
-
className: "py-2 pr-4",
|
|
640
|
-
children: "Output as JSON for scripting"
|
|
641
|
-
}),
|
|
642
|
-
/* @__PURE__ */ jsx2("td", {
|
|
643
|
-
className: "py-2",
|
|
644
|
-
children: /* @__PURE__ */ jsx2("code", {
|
|
645
|
-
children: "--json"
|
|
646
|
-
})
|
|
647
|
-
})
|
|
648
|
-
]
|
|
649
|
-
})
|
|
650
|
-
]
|
|
651
|
-
})
|
|
652
|
-
]
|
|
653
|
-
})
|
|
654
|
-
}),
|
|
655
|
-
/* @__PURE__ */ jsx2(CodeBlock, {
|
|
656
|
-
language: "bash",
|
|
657
|
-
filename: "import-options",
|
|
658
|
-
code: `# Import only specific modules
|
|
102
|
+
});`})]}),e("div",{className:"space-y-3",children:[t("h2",{className:"font-bold text-2xl",children:"4) Customizing imports"}),e("div",{className:"flex items-center gap-2",children:[t(P,{size:18,className:"text-violet-400"}),t("h3",{className:"font-semibold text-lg",children:"Available options"})]}),t("div",{className:"overflow-x-auto",children:e("table",{className:"w-full text-sm",children:[t("thead",{children:e("tr",{className:"border-white/10 border-b",children:[t("th",{className:"py-2 pr-4 text-left",children:"Option"}),t("th",{className:"py-2 pr-4 text-left",children:"Description"}),t("th",{className:"py-2 text-left",children:"Example"})]})}),e("tbody",{className:"text-muted-foreground",children:[e("tr",{className:"border-white/5 border-b",children:[t("td",{className:"py-2 pr-4",children:t("code",{children:"--scope"})}),t("td",{className:"py-2 pr-4",children:"Limit to specific directories"}),t("td",{className:"py-2",children:t("code",{children:"--scope src/users src/auth"})})]}),e("tr",{className:"border-white/5 border-b",children:[t("td",{className:"py-2 pr-4",children:t("code",{children:"--framework"})}),t("td",{className:"py-2 pr-4",children:"Force a specific framework"}),t("td",{className:"py-2",children:t("code",{children:"--framework express"})})]}),e("tr",{className:"border-white/5 border-b",children:[t("td",{className:"py-2 pr-4",children:t("code",{children:"--output"})}),t("td",{className:"py-2 pr-4",children:"Output directory"}),t("td",{className:"py-2",children:t("code",{children:"--output ./contracts"})})]}),e("tr",{className:"border-white/5 border-b",children:[t("td",{className:"py-2 pr-4",children:t("code",{children:"--dry-run"})}),t("td",{className:"py-2 pr-4",children:"Preview without writing files"}),t("td",{className:"py-2",children:t("code",{children:"--dry-run"})})]}),e("tr",{className:"border-white/5 border-b",children:[t("td",{className:"py-2 pr-4",children:t("code",{children:"--analyze"})}),t("td",{className:"py-2 pr-4",children:"Analysis only, no code generation"}),t("td",{className:"py-2",children:t("code",{children:"--analyze"})})]}),e("tr",{children:[t("td",{className:"py-2 pr-4",children:t("code",{children:"--json"})}),t("td",{className:"py-2 pr-4",children:"Output as JSON for scripting"}),t("td",{className:"py-2",children:t("code",{children:"--json"})})]})]})]})}),t(p,{language:"bash",filename:"import-options",code:`# Import only specific modules
|
|
659
103
|
contractspec import ./src --scope src/users src/orders
|
|
660
104
|
|
|
661
105
|
# Preview with analysis
|
|
@@ -665,25 +109,7 @@ contractspec import ./src --dry-run --analyze
|
|
|
665
109
|
contractspec import ./src --output ./src/contracts/generated
|
|
666
110
|
|
|
667
111
|
# Get JSON for CI/scripting
|
|
668
|
-
contractspec import ./src --json > import-result.json`
|
|
669
|
-
})
|
|
670
|
-
]
|
|
671
|
-
}),
|
|
672
|
-
/* @__PURE__ */ jsxs2("div", {
|
|
673
|
-
className: "space-y-3",
|
|
674
|
-
children: [
|
|
675
|
-
/* @__PURE__ */ jsx2("h2", {
|
|
676
|
-
className: "font-bold text-2xl",
|
|
677
|
-
children: "5) Registering imported contracts"
|
|
678
|
-
}),
|
|
679
|
-
/* @__PURE__ */ jsx2("p", {
|
|
680
|
-
className: "text-muted-foreground text-sm",
|
|
681
|
-
children: "After import, register contracts and add handlers:"
|
|
682
|
-
}),
|
|
683
|
-
/* @__PURE__ */ jsx2(CodeBlock, {
|
|
684
|
-
language: "typescript",
|
|
685
|
-
filename: "src/contracts/registry.ts",
|
|
686
|
-
code: `import {
|
|
112
|
+
contractspec import ./src --json > import-result.json`})]}),e("div",{className:"space-y-3",children:[t("h2",{className:"font-bold text-2xl",children:"5) Registering imported contracts"}),t("p",{className:"text-muted-foreground text-sm",children:"After import, register contracts and add handlers:"}),t(p,{language:"typescript",filename:"src/contracts/registry.ts",code:`import {
|
|
687
113
|
OperationSpecRegistry,
|
|
688
114
|
installOp,
|
|
689
115
|
} from "@contractspec/lib.contracts-spec/operations";
|
|
@@ -703,176 +129,4 @@ installOp(registry, GetUserQuery, async (input) => {
|
|
|
703
129
|
installOp(registry, CreateUserCommand, async (input) => {
|
|
704
130
|
const user = await db.user.create({ data: input });
|
|
705
131
|
return { id: user.id };
|
|
706
|
-
});`
|
|
707
|
-
})
|
|
708
|
-
]
|
|
709
|
-
}),
|
|
710
|
-
/* @__PURE__ */ jsxs2("div", {
|
|
711
|
-
className: "space-y-3",
|
|
712
|
-
children: [
|
|
713
|
-
/* @__PURE__ */ jsx2("h2", {
|
|
714
|
-
className: "font-bold text-2xl",
|
|
715
|
-
children: "6) After importing"
|
|
716
|
-
}),
|
|
717
|
-
/* @__PURE__ */ jsxs2("ol", {
|
|
718
|
-
className: "list-decimal space-y-2 pl-5 text-muted-foreground text-sm",
|
|
719
|
-
children: [
|
|
720
|
-
/* @__PURE__ */ jsxs2("li", {
|
|
721
|
-
children: [
|
|
722
|
-
/* @__PURE__ */ jsx2("strong", {
|
|
723
|
-
children: "Review generated contracts"
|
|
724
|
-
}),
|
|
725
|
-
" — Check the TODO placeholders and fill in descriptions, owners, and tags."
|
|
726
|
-
]
|
|
727
|
-
}),
|
|
728
|
-
/* @__PURE__ */ jsxs2("li", {
|
|
729
|
-
children: [
|
|
730
|
-
/* @__PURE__ */ jsx2("strong", {
|
|
731
|
-
children: "Refine schemas"
|
|
732
|
-
}),
|
|
733
|
-
" — Add proper types, validation rules, and error definitions."
|
|
734
|
-
]
|
|
735
|
-
}),
|
|
736
|
-
/* @__PURE__ */ jsxs2("li", {
|
|
737
|
-
children: [
|
|
738
|
-
/* @__PURE__ */ jsx2("strong", {
|
|
739
|
-
children: "Run validation"
|
|
740
|
-
}),
|
|
741
|
-
" —",
|
|
742
|
-
" ",
|
|
743
|
-
/* @__PURE__ */ jsx2("code", {
|
|
744
|
-
children: "contractspec validate"
|
|
745
|
-
}),
|
|
746
|
-
" to ensure contracts are valid."
|
|
747
|
-
]
|
|
748
|
-
}),
|
|
749
|
-
/* @__PURE__ */ jsxs2("li", {
|
|
750
|
-
children: [
|
|
751
|
-
/* @__PURE__ */ jsx2("strong", {
|
|
752
|
-
children: "Register and wire handlers"
|
|
753
|
-
}),
|
|
754
|
-
" — Connect contracts to your existing business logic."
|
|
755
|
-
]
|
|
756
|
-
}),
|
|
757
|
-
/* @__PURE__ */ jsxs2("li", {
|
|
758
|
-
children: [
|
|
759
|
-
/* @__PURE__ */ jsx2("strong", {
|
|
760
|
-
children: "Iterate"
|
|
761
|
-
}),
|
|
762
|
-
" — The imported contracts are a starting point. Refine them as your spec matures."
|
|
763
|
-
]
|
|
764
|
-
})
|
|
765
|
-
]
|
|
766
|
-
})
|
|
767
|
-
]
|
|
768
|
-
}),
|
|
769
|
-
/* @__PURE__ */ jsxs2("div", {
|
|
770
|
-
className: "space-y-3",
|
|
771
|
-
children: [
|
|
772
|
-
/* @__PURE__ */ jsxs2("h2", {
|
|
773
|
-
className: "flex items-center gap-2 font-bold text-2xl",
|
|
774
|
-
children: [
|
|
775
|
-
/* @__PURE__ */ jsx2(AlertCircle, {
|
|
776
|
-
size: 20,
|
|
777
|
-
className: "text-yellow-400"
|
|
778
|
-
}),
|
|
779
|
-
"Troubleshooting"
|
|
780
|
-
]
|
|
781
|
-
}),
|
|
782
|
-
/* @__PURE__ */ jsxs2("div", {
|
|
783
|
-
className: "space-y-4",
|
|
784
|
-
children: [
|
|
785
|
-
/* @__PURE__ */ jsxs2("div", {
|
|
786
|
-
className: "card-subtle space-y-2 p-4",
|
|
787
|
-
children: [
|
|
788
|
-
/* @__PURE__ */ jsx2("h3", {
|
|
789
|
-
className: "font-semibold",
|
|
790
|
-
children: "Framework not detected"
|
|
791
|
-
}),
|
|
792
|
-
/* @__PURE__ */ jsxs2("p", {
|
|
793
|
-
className: "text-muted-foreground text-sm",
|
|
794
|
-
children: [
|
|
795
|
-
"Use ",
|
|
796
|
-
/* @__PURE__ */ jsx2("code", {
|
|
797
|
-
children: "--framework <name>"
|
|
798
|
-
}),
|
|
799
|
-
" to force a specific framework. Check that your entry files follow standard patterns."
|
|
800
|
-
]
|
|
801
|
-
})
|
|
802
|
-
]
|
|
803
|
-
}),
|
|
804
|
-
/* @__PURE__ */ jsxs2("div", {
|
|
805
|
-
className: "card-subtle space-y-2 p-4",
|
|
806
|
-
children: [
|
|
807
|
-
/* @__PURE__ */ jsx2("h3", {
|
|
808
|
-
className: "font-semibold",
|
|
809
|
-
children: "Missing schemas"
|
|
810
|
-
}),
|
|
811
|
-
/* @__PURE__ */ jsxs2("p", {
|
|
812
|
-
className: "text-muted-foreground text-sm",
|
|
813
|
-
children: [
|
|
814
|
-
"Schema inference works best with explicit types. If using",
|
|
815
|
-
" ",
|
|
816
|
-
/* @__PURE__ */ jsx2("code", {
|
|
817
|
-
children: "any"
|
|
818
|
-
}),
|
|
819
|
-
" or dynamic types, you'll see TODO placeholders. Fill them in manually."
|
|
820
|
-
]
|
|
821
|
-
})
|
|
822
|
-
]
|
|
823
|
-
}),
|
|
824
|
-
/* @__PURE__ */ jsxs2("div", {
|
|
825
|
-
className: "card-subtle space-y-2 p-4",
|
|
826
|
-
children: [
|
|
827
|
-
/* @__PURE__ */ jsx2("h3", {
|
|
828
|
-
className: "font-semibold",
|
|
829
|
-
children: "Partial imports"
|
|
830
|
-
}),
|
|
831
|
-
/* @__PURE__ */ jsxs2("p", {
|
|
832
|
-
className: "text-muted-foreground text-sm",
|
|
833
|
-
children: [
|
|
834
|
-
"Some endpoints may not be detected if they use unconventional patterns. Use ",
|
|
835
|
-
/* @__PURE__ */ jsx2("code", {
|
|
836
|
-
children: "--analyze"
|
|
837
|
-
}),
|
|
838
|
-
" to see what was found, then add missing contracts manually."
|
|
839
|
-
]
|
|
840
|
-
})
|
|
841
|
-
]
|
|
842
|
-
})
|
|
843
|
-
]
|
|
844
|
-
})
|
|
845
|
-
]
|
|
846
|
-
}),
|
|
847
|
-
/* @__PURE__ */ jsx2(StudioPrompt, {
|
|
848
|
-
title: "Want evidence-driven migration priorities?",
|
|
849
|
-
body: "Studio clusters product signals into scored patterns, then proposes contract changes and execution-ready work for the highest-impact areas."
|
|
850
|
-
})
|
|
851
|
-
]
|
|
852
|
-
}),
|
|
853
|
-
/* @__PURE__ */ jsxs2("div", {
|
|
854
|
-
className: "flex items-center gap-4 pt-4",
|
|
855
|
-
children: [
|
|
856
|
-
/* @__PURE__ */ jsxs2(Link2, {
|
|
857
|
-
href: "/docs/guides/spec-validation-and-typing",
|
|
858
|
-
className: "btn-primary",
|
|
859
|
-
children: [
|
|
860
|
-
"Next: Spec validation + typing ",
|
|
861
|
-
/* @__PURE__ */ jsx2(ChevronRight, {
|
|
862
|
-
size: 16
|
|
863
|
-
})
|
|
864
|
-
]
|
|
865
|
-
}),
|
|
866
|
-
/* @__PURE__ */ jsx2(Link2, {
|
|
867
|
-
href: "/docs/guides",
|
|
868
|
-
className: "btn-ghost",
|
|
869
|
-
children: "Back to guides"
|
|
870
|
-
})
|
|
871
|
-
]
|
|
872
|
-
})
|
|
873
|
-
]
|
|
874
|
-
});
|
|
875
|
-
}
|
|
876
|
-
export {
|
|
877
|
-
GuideImportExistingCodebasesPage
|
|
878
|
-
};
|
|
132
|
+
});`})]}),e("div",{className:"space-y-3",children:[t("h2",{className:"font-bold text-2xl",children:"6) After importing"}),e("ol",{className:"list-decimal space-y-2 pl-5 text-muted-foreground text-sm",children:[e("li",{children:[t("strong",{children:"Review generated contracts"})," — Check the TODO placeholders and fill in descriptions, owners, and tags."]}),e("li",{children:[t("strong",{children:"Refine schemas"})," — Add proper types, validation rules, and error definitions."]}),e("li",{children:[t("strong",{children:"Run validation"})," —"," ",t("code",{children:"contractspec validate"})," to ensure contracts are valid."]}),e("li",{children:[t("strong",{children:"Register and wire handlers"})," — Connect contracts to your existing business logic."]}),e("li",{children:[t("strong",{children:"Iterate"})," — The imported contracts are a starting point. Refine them as your spec matures."]})]})]}),e("div",{className:"space-y-3",children:[e("h2",{className:"flex items-center gap-2 font-bold text-2xl",children:[t(i,{size:20,className:"text-yellow-400"}),"Troubleshooting"]}),e("div",{className:"space-y-4",children:[e("div",{className:"card-subtle space-y-2 p-4",children:[t("h3",{className:"font-semibold",children:"Framework not detected"}),e("p",{className:"text-muted-foreground text-sm",children:["Use ",t("code",{children:"--framework <name>"})," to force a specific framework. Check that your entry files follow standard patterns."]})]}),e("div",{className:"card-subtle space-y-2 p-4",children:[t("h3",{className:"font-semibold",children:"Missing schemas"}),e("p",{className:"text-muted-foreground text-sm",children:["Schema inference works best with explicit types. If using"," ",t("code",{children:"any"})," or dynamic types, you'll see TODO placeholders. Fill them in manually."]})]}),e("div",{className:"card-subtle space-y-2 p-4",children:[t("h3",{className:"font-semibold",children:"Partial imports"}),e("p",{className:"text-muted-foreground text-sm",children:["Some endpoints may not be detected if they use unconventional patterns. Use ",t("code",{children:"--analyze"})," to see what was found, then add missing contracts manually."]})]})]})]}),t(d,{title:"Want evidence-driven migration priorities?",body:"Studio clusters product signals into scored patterns, then proposes contract changes and execution-ready work for the highest-impact areas."})]}),e("div",{className:"flex items-center gap-4 pt-4",children:[e(n,{href:"/docs/guides/spec-validation-and-typing",className:"btn-primary",children:["Next: Spec validation + typing ",t(v,{size:16})]}),t(n,{href:"/docs/guides",className:"btn-ghost",children:"Back to guides"})]})]})}export{G as GuideImportExistingCodebasesPage};
|