@contractspec/bundle.library 3.8.12 → 3.9.2
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 +614 -602
- package/CHANGELOG.md +97 -0
- package/dist/application/context-storage/index.js +1 -1
- package/dist/application/index.js +11 -11
- package/dist/application/mcp/cliMcp.js +6 -6
- package/dist/application/mcp/cliMcp.onboarding.d.ts +4 -0
- package/dist/application/mcp/cliMcp.onboarding.js +2 -0
- package/dist/application/mcp/cliMcp.test.d.ts +1 -0
- package/dist/application/mcp/common.js +1 -1
- package/dist/application/mcp/contractsMcp.js +2 -2
- package/dist/application/mcp/contractsMcp.test.d.ts +1 -0
- package/dist/application/mcp/contractsMcpAdoptionTools.d.ts +3 -0
- package/dist/application/mcp/contractsMcpAdoptionTools.js +2 -0
- package/dist/application/mcp/contractsMcpResources.js +2 -2
- package/dist/application/mcp/contractsMcpTools.js +1 -1
- package/dist/application/mcp/contractsMcpTypes.d.ts +16 -0
- package/dist/application/mcp/docsMcp.catalog.js +2 -2
- package/dist/application/mcp/docsMcp.data.js +1 -1
- package/dist/application/mcp/docsMcp.js +3 -3
- package/dist/application/mcp/docsMcp.prompts.js +3 -3
- package/dist/application/mcp/docsMcp.reference.js +2 -2
- package/dist/application/mcp/docsMcp.resources.js +2 -2
- package/dist/application/mcp/docsMcp.tools.js +2 -2
- package/dist/application/mcp/index.js +11 -11
- package/dist/application/mcp/internalMcp.js +2 -2
- package/dist/application/mcp/normalizeMcpRequest.js +1 -1
- package/dist/application/mcp/providerRankingMcp.js +1 -1
- package/dist/bundles/LibraryBundle.d.ts +19 -111
- package/dist/bundles/LibraryBundle.js +1 -1
- package/dist/bundles/index.js +1 -1
- package/dist/components/docs/DocsIndexPage.js +2 -2
- package/dist/components/docs/advanced/AdvancedMCPPage.js +3 -3
- package/dist/components/docs/advanced/AdvancedOverlayEditorPage.js +1 -1
- package/dist/components/docs/advanced/AdvancedRenderersPage.js +2 -2
- package/dist/components/docs/advanced/AdvancedSpecExperimentsPage.js +4 -4
- package/dist/components/docs/advanced/AdvancedTelemetryPage.js +2 -2
- package/dist/components/docs/advanced/AdvancedWorkflowMonitoringPage.js +2 -2
- package/dist/components/docs/advanced/index.js +9 -9
- package/dist/components/docs/architecture/ArchitectureAppConfigPage.js +6 -6
- package/dist/components/docs/architecture/ArchitectureControlPlanePage.js +3 -3
- package/dist/components/docs/architecture/ArchitectureIntegrationBindingPage.js +7 -7
- package/dist/components/docs/architecture/ArchitectureKnowledgeBindingPage.js +6 -6
- package/dist/components/docs/architecture/ArchitectureMultiTenancyPage.js +2 -2
- package/dist/components/docs/architecture/ArchitectureOverviewPage.js +1 -1
- package/dist/components/docs/architecture/index.js +20 -20
- package/dist/components/docs/comparison/ComparisonAutomationPlatformsPage.js +1 -1
- package/dist/components/docs/comparison/ComparisonEnterprisePlatformsPage.js +1 -1
- package/dist/components/docs/comparison/ComparisonInternalToolBuildersPage.js +1 -1
- package/dist/components/docs/comparison/ComparisonOverviewPage.js +1 -1
- package/dist/components/docs/comparison/ComparisonWindmillPage.js +1 -1
- package/dist/components/docs/comparison/ComparisonWorkflowEnginesPage.js +1 -1
- package/dist/components/docs/comparison/index.js +1 -1
- package/dist/components/docs/docsManifest.js +1 -1
- package/dist/components/docs/ecosystem/IntegrationsPage.js +2 -2
- package/dist/components/docs/ecosystem/PluginsPage.js +4 -4
- package/dist/components/docs/ecosystem/RegistryPage.js +4 -4
- package/dist/components/docs/ecosystem/TemplatesPage.js +3 -3
- package/dist/components/docs/ecosystem/index.js +11 -11
- package/dist/components/docs/examples/DocsExamplesPage.js +1 -17
- package/dist/components/docs/examples/ExampleShowcasePage.d.ts +1 -1
- package/dist/components/docs/examples/ExampleShowcasePage.js +2 -17
- package/dist/components/docs/examples/exampleShowcaseData.d.ts +2 -2
- package/dist/components/docs/examples/exampleShowcaseData.js +2 -17
- package/dist/components/docs/examples/exampleShowcaseData.test.d.ts +1 -0
- package/dist/components/docs/examples/index.js +2 -17
- package/dist/components/docs/generated/docs-index.generated.js +1 -1
- package/dist/components/docs/generated/index.d.ts +7 -1
- package/dist/components/docs/generated/index.js +1 -1
- package/dist/components/docs/generated/loader.js +1 -1
- package/dist/components/docs/getting-started/CLIPage.js +6 -5
- package/dist/components/docs/getting-started/CompatibilityPage.js +1 -1
- package/dist/components/docs/getting-started/DataViewTutorialPage.js +44 -67
- package/dist/components/docs/getting-started/DeveloperToolsPage.js +1 -1
- package/dist/components/docs/getting-started/HelloWorldPage.js +5 -5
- package/dist/components/docs/getting-started/InstallationPage.js +3 -3
- package/dist/components/docs/getting-started/StartHerePage.js +4 -2
- package/dist/components/docs/getting-started/TroubleshootingPage.js +2 -2
- package/dist/components/docs/getting-started/VSCodeExtensionPage.js +1 -1
- package/dist/components/docs/getting-started/getting-started.docblocks.js +2 -2
- package/dist/components/docs/getting-started/index.js +60 -80
- package/dist/components/docs/guides/GuideCIDiffGatingPage.js +2 -2
- package/dist/components/docs/guides/GuideConnectInRepoPage.js +30 -5
- package/dist/components/docs/guides/GuideContractTypesPage.js +6 -6
- package/dist/components/docs/guides/GuideDocsPipelinePage.js +3 -3
- package/dist/components/docs/guides/GuideFirstModuleBundlePage.js +4 -4
- package/dist/components/docs/guides/GuideGenerateDocsClientsSchemasPage.js +2 -2
- package/dist/components/docs/guides/GuideHostBuilderWorkbenchPage.js +21 -6
- package/dist/components/docs/guides/GuideImportExistingCodebasesPage.js +8 -8
- package/dist/components/docs/guides/GuideNextjsOneEndpointPage.js +6 -6
- package/dist/components/docs/guides/GuideReleaseCapsulesPage.d.ts +1 -0
- package/dist/components/docs/guides/GuideReleaseCapsulesPage.js +16 -0
- package/dist/components/docs/guides/GuideSpecValidationTypingPage.js +4 -4
- package/dist/components/docs/guides/GuidesIndexPage.js +2 -2
- package/dist/components/docs/guides/index.d.ts +1 -0
- package/dist/components/docs/guides/index.js +93 -39
- package/dist/components/docs/index.js +690 -419
- package/dist/components/docs/integrations/IntegrationsCircuitBreakersPage.js +2 -2
- package/dist/components/docs/integrations/IntegrationsElevenLabsPage.js +3 -3
- package/dist/components/docs/integrations/IntegrationsGithubPage.js +2 -2
- package/dist/components/docs/integrations/IntegrationsGmailPage.js +3 -3
- package/dist/components/docs/integrations/IntegrationsGoogleCalendarPage.js +3 -3
- package/dist/components/docs/integrations/IntegrationsHealthRoutingPage.js +2 -2
- package/dist/components/docs/integrations/IntegrationsMistralPage.js +2 -2
- package/dist/components/docs/integrations/IntegrationsOpenAIPage.js +2 -2
- package/dist/components/docs/integrations/IntegrationsOverviewPage.js +1 -1
- package/dist/components/docs/integrations/IntegrationsPostmarkPage.js +2 -2
- package/dist/components/docs/integrations/IntegrationsPowensPage.js +2 -2
- package/dist/components/docs/integrations/IntegrationsQdrantPage.js +5 -5
- package/dist/components/docs/integrations/IntegrationsResendPage.js +3 -3
- package/dist/components/docs/integrations/IntegrationsS3Page.js +4 -4
- package/dist/components/docs/integrations/IntegrationsSlackPage.js +2 -2
- package/dist/components/docs/integrations/IntegrationsSpecModelPage.js +2 -2
- package/dist/components/docs/integrations/IntegrationsStripePage.js +2 -2
- package/dist/components/docs/integrations/IntegrationsTwilioPage.js +3 -3
- package/dist/components/docs/integrations/IntegrationsWhatsappMetaPage.js +2 -2
- package/dist/components/docs/integrations/IntegrationsWhatsappTwilioPage.js +2 -2
- package/dist/components/docs/integrations/index.js +39 -39
- package/dist/components/docs/intent/ContractFirstApiPage.js +2 -2
- package/dist/components/docs/intent/DeterministicCodegenPage.js +2 -2
- package/dist/components/docs/intent/GenerateClientFromSchemaPage.js +7 -7
- package/dist/components/docs/intent/OpenapiAlternativePage.js +3 -3
- package/dist/components/docs/intent/SchemaValidationTypescriptPage.js +4 -4
- package/dist/components/docs/intent/SpecDrivenDevelopmentPage.js +2 -2
- package/dist/components/docs/intent/index.js +15 -15
- package/dist/components/docs/intent/intent-pages.docblocks.js +1 -1
- package/dist/components/docs/knowledge/KnowledgeCategoriesPage.js +2 -2
- package/dist/components/docs/knowledge/KnowledgeExamplesPage.js +2 -2
- package/dist/components/docs/knowledge/KnowledgeOverviewPage.js +1 -1
- package/dist/components/docs/knowledge/KnowledgeSourcesPage.js +2 -2
- package/dist/components/docs/knowledge/KnowledgeSpacesPage.js +2 -2
- package/dist/components/docs/knowledge/index.js +5 -5
- package/dist/components/docs/libraries/LibrariesAccessibilityPage.js +3 -3
- package/dist/components/docs/libraries/LibrariesAiAgentPage.js +3 -3
- package/dist/components/docs/libraries/LibrariesAnalyticsPage.js +4 -4
- package/dist/components/docs/libraries/LibrariesContentGenPage.js +2 -2
- package/dist/components/docs/libraries/LibrariesContractsPage.js +43 -18
- package/dist/components/docs/libraries/LibrariesCostTrackingPage.js +3 -3
- package/dist/components/docs/libraries/LibrariesCrossPlatformUIPage.content.d.ts +67 -0
- package/dist/components/docs/libraries/LibrariesCrossPlatformUIPage.content.js +86 -0
- package/dist/components/docs/libraries/LibrariesCrossPlatformUIPage.d.ts +1 -0
- package/dist/components/docs/libraries/LibrariesCrossPlatformUIPage.js +86 -0
- package/dist/components/docs/libraries/LibrariesDataBackendPage.js +2 -2
- package/dist/components/docs/libraries/LibrariesDataViewsPage.js +3 -3
- package/dist/components/docs/libraries/LibrariesDesignSystemPage.js +77 -29
- package/dist/components/docs/libraries/LibrariesEvolutionPage.js +4 -4
- package/dist/components/docs/libraries/LibrariesGraphQLPage.js +2 -2
- package/dist/components/docs/libraries/LibrariesGrowthPage.js +3 -3
- package/dist/components/docs/libraries/LibrariesMultiTenancyPage.js +3 -3
- package/dist/components/docs/libraries/LibrariesObservabilityPage.js +5 -5
- package/dist/components/docs/libraries/LibrariesOverlayEnginePage.js +4 -4
- package/dist/components/docs/libraries/LibrariesOverviewPage.js +1 -1
- package/dist/components/docs/libraries/LibrariesPersonalizationPage.js +4 -4
- package/dist/components/docs/libraries/LibrariesProgressiveDeliveryPage.js +3 -3
- package/dist/components/docs/libraries/LibrariesResiliencePage.js +4 -4
- package/dist/components/docs/libraries/LibrariesRuntimePage.js +2 -2
- package/dist/components/docs/libraries/LibrariesSLOPage.js +3 -3
- package/dist/components/docs/libraries/LibrariesSchemaPage.js +3 -3
- package/dist/components/docs/libraries/LibrariesSupportBotPage.js +3 -3
- package/dist/components/docs/libraries/LibrariesTestingPage.js +3 -3
- package/dist/components/docs/libraries/LibrariesUIKitPage.js +42 -16
- package/dist/components/docs/libraries/LibrariesUIKitWebPage.d.ts +1 -0
- package/dist/components/docs/libraries/LibrariesUIKitWebPage.js +47 -0
- package/dist/components/docs/libraries/LibrariesWorkflowComposerPage.js +3 -3
- package/dist/components/docs/libraries/LibrariesWorkflowsPage.js +2 -2
- package/dist/components/docs/libraries/index.d.ts +2 -0
- package/dist/components/docs/libraries/index.js +338 -110
- package/dist/components/docs/manifesto/ManifestoPage.js +1 -1
- package/dist/components/docs/ops/AutoEvolutionOpsPage.js +2 -2
- package/dist/components/docs/ops/DistributedTracingOpsPage.js +2 -2
- package/dist/components/docs/ops/index.js +3 -3
- package/dist/components/docs/ops/ops-lifecycle.docblocks.js +2 -2
- package/dist/components/docs/ops/ops-runbooks-a.docblocks.js +2 -2
- package/dist/components/docs/ops/ops-runbooks-b.docblocks.js +2 -2
- package/dist/components/docs/ops/ops-slo-tenant.docblocks.js +2 -2
- package/dist/components/docs/ops/ops-top.docs.js +2 -2
- package/dist/components/docs/ops/ops.docs.js +6 -6
- package/dist/components/docs/product/product.docblocks.js +2 -2
- package/dist/components/docs/reference/DocsMarkdownContent.js +2 -2
- package/dist/components/docs/reference/DocsReferenceContent.js +3 -3
- package/dist/components/docs/reference/DocsReferenceIndexClient.js +2 -2
- package/dist/components/docs/reference/DocsReferenceIndexPage.js +2 -2
- package/dist/components/docs/reference/DocsReferencePage.js +3 -3
- package/dist/components/docs/reference/docsMarkdownParser.js +2 -2
- package/dist/components/docs/reference/index.js +4 -4
- package/dist/components/docs/safety/SafetyAuditingPage.js +2 -2
- package/dist/components/docs/safety/SafetyMigrationsPage.js +2 -2
- package/dist/components/docs/safety/SafetyOverviewPage.js +1 -1
- package/dist/components/docs/safety/SafetyPDPPage.js +2 -2
- package/dist/components/docs/safety/SafetySecurityTrustPage.js +1 -1
- package/dist/components/docs/safety/SafetySigningPage.js +3 -3
- package/dist/components/docs/safety/SafetyTenantIsolationPage.js +2 -2
- package/dist/components/docs/safety/index.js +7 -7
- package/dist/components/docs/shared/StudioPrompt.js +1 -1
- package/dist/components/docs/specs/SpecsBuilderControlPlanePage.js +18 -3
- package/dist/components/docs/specs/SpecsCapabilitiesPage.js +2 -2
- package/dist/components/docs/specs/SpecsConnectPage.js +4 -2
- package/dist/components/docs/specs/SpecsDataViewsPage.js +39 -32
- package/dist/components/docs/specs/SpecsModuleBundlesPage.js +3 -3
- package/dist/components/docs/specs/SpecsOverlaysPage.js +2 -2
- package/dist/components/docs/specs/SpecsOverviewPage.js +1 -1
- package/dist/components/docs/specs/SpecsPolicyPage.js +3 -3
- package/dist/components/docs/specs/SpecsWorkflowsPage.js +2 -2
- package/dist/components/docs/specs/index.js +66 -42
- package/dist/components/docs/studio/StudioBYOKPage.js +1 -1
- package/dist/components/docs/studio/StudioDeploymentsPage.js +1 -1
- package/dist/components/docs/studio/StudioGettingStartedPage.js +1 -1
- package/dist/components/docs/studio/StudioIntegrationsPage.js +1 -1
- package/dist/components/docs/studio/StudioOverviewPage.js +1 -1
- package/dist/components/docs/studio/StudioVisualBuilderPage.js +1 -1
- package/dist/components/docs/studio/index.js +1 -1
- package/dist/components/docs/tech/contracts/tech-docs.docblocks.js +2 -2
- package/dist/components/integrations/index.js +2 -2
- package/dist/components/integrations/molecules/IntegrationCard.js +1 -1
- package/dist/components/integrations/organisms/IntegrationMarketplace.js +1 -1
- package/dist/components/integrations/organisms/IntegrationSettings.js +2 -2
- package/dist/components/integrations/organisms/KnowledgeSourceList.js +1 -1
- package/dist/components/legal/PrivacyTemplate.js +1 -1
- package/dist/components/legal/TermsTemplate.js +1 -1
- package/dist/components/legal/index.js +1 -1
- package/dist/components/shared/FeatureGateNotice.js +1 -1
- package/dist/components/shared/index.js +1 -1
- package/dist/components/shell/WorkspaceHeader.js +1 -1
- package/dist/components/shell/WorkspaceProjectShellLayout.js +1 -1
- package/dist/components/shell/WorkspaceShellRenderer.js +1 -1
- package/dist/components/shell/WorkspaceSidebar.js +1 -1
- package/dist/components/shell/index.js +1 -1
- package/dist/components/templates/engine/index.js +1 -1
- package/dist/components/templates/index.js +11 -11
- package/dist/components/templates/messaging/ConversationList.js +2 -2
- package/dist/components/templates/messaging/MessageComposer.js +4 -4
- package/dist/components/templates/messaging/MessageThread.js +3 -3
- package/dist/components/templates/messaging/MessagingWorkspace.js +5 -5
- package/dist/components/templates/messaging/index.js +5 -5
- package/dist/components/templates/recipes/LanguageSwitcher.js +1 -1
- package/dist/components/templates/recipes/RecipeCard.js +1 -1
- package/dist/components/templates/recipes/RecipeDetail.js +1 -1
- package/dist/components/templates/recipes/RecipeList.js +3 -3
- package/dist/components/templates/recipes/index.js +3 -3
- package/dist/components/templates/todos/FilterBar.js +1 -1
- package/dist/components/templates/todos/TaskForm.js +2 -2
- package/dist/components/templates/todos/TaskItem.js +1 -1
- package/dist/components/templates/todos/TaskList.js +5 -5
- package/dist/components/templates/todos/index.js +5 -5
- package/dist/config/contractspec-blueprint.js +1 -1
- package/dist/config/contractspec-branding.js +1 -1
- package/dist/config/contractspec-routes.js +1 -1
- package/dist/config/index.js +1 -1
- package/dist/features/contracts-registry.js +1 -1
- package/dist/features/docs/docs.contracts.js +1 -1
- package/dist/features/docs/index.js +1 -1
- package/dist/features/docs.feature.js +1 -1
- package/dist/features/index.js +1 -1
- package/dist/features/mcp.feature.js +1 -1
- package/dist/features/presentations.feature.js +1 -1
- package/dist/features/registry.js +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.js +701 -430
- package/dist/infrastructure/elysia/index.js +1 -1
- package/dist/infrastructure/elysia/logger.js +1 -1
- package/dist/infrastructure/index.js +1 -1
- package/dist/libs/email/client.js +1 -1
- package/dist/libs/email/contact.js +3 -3
- package/dist/libs/email/newsletter.js +3 -3
- package/dist/libs/email/utils.js +2 -2
- package/dist/libs/email/waitlist-application.js +3 -3
- package/dist/libs/email/waitlist.js +3 -3
- package/dist/libs/email.js +6 -6
- package/dist/libs/posthog/client.js +1 -1
- package/dist/libs/posthog/native.js +1 -1
- package/dist/libs/posthog/server.js +1 -1
- package/dist/libs/pricing-examples.js +1 -1
- package/dist/node/application/context-storage/index.js +1 -1
- package/dist/node/application/index.js +11 -11
- package/dist/node/application/mcp/cliMcp.js +6 -6
- package/dist/node/application/mcp/cliMcp.onboarding.js +1 -0
- package/dist/node/application/mcp/common.js +1 -1
- package/dist/node/application/mcp/contractsMcp.js +2 -2
- package/dist/node/application/mcp/contractsMcpAdoptionTools.js +1 -0
- package/dist/node/application/mcp/contractsMcpResources.js +2 -2
- package/dist/node/application/mcp/contractsMcpTools.js +1 -1
- package/dist/node/application/mcp/docsMcp.catalog.js +2 -2
- package/dist/node/application/mcp/docsMcp.data.js +1 -1
- package/dist/node/application/mcp/docsMcp.js +3 -3
- package/dist/node/application/mcp/docsMcp.prompts.js +3 -3
- package/dist/node/application/mcp/docsMcp.reference.js +2 -2
- package/dist/node/application/mcp/docsMcp.resources.js +2 -2
- package/dist/node/application/mcp/docsMcp.tools.js +2 -2
- package/dist/node/application/mcp/index.js +11 -11
- package/dist/node/application/mcp/internalMcp.js +2 -2
- package/dist/node/application/mcp/normalizeMcpRequest.js +1 -1
- package/dist/node/application/mcp/providerRankingMcp.js +1 -1
- package/dist/node/bundles/LibraryBundle.js +1 -1
- package/dist/node/bundles/index.js +1 -1
- package/dist/node/components/docs/DocsIndexPage.js +2 -2
- package/dist/node/components/docs/advanced/AdvancedMCPPage.js +3 -3
- package/dist/node/components/docs/advanced/AdvancedOverlayEditorPage.js +1 -1
- package/dist/node/components/docs/advanced/AdvancedRenderersPage.js +2 -2
- package/dist/node/components/docs/advanced/AdvancedSpecExperimentsPage.js +4 -4
- package/dist/node/components/docs/advanced/AdvancedTelemetryPage.js +2 -2
- package/dist/node/components/docs/advanced/AdvancedWorkflowMonitoringPage.js +2 -2
- package/dist/node/components/docs/advanced/index.js +9 -9
- package/dist/node/components/docs/architecture/ArchitectureAppConfigPage.js +6 -6
- package/dist/node/components/docs/architecture/ArchitectureControlPlanePage.js +3 -3
- package/dist/node/components/docs/architecture/ArchitectureIntegrationBindingPage.js +7 -7
- package/dist/node/components/docs/architecture/ArchitectureKnowledgeBindingPage.js +6 -6
- package/dist/node/components/docs/architecture/ArchitectureMultiTenancyPage.js +2 -2
- package/dist/node/components/docs/architecture/ArchitectureOverviewPage.js +1 -1
- package/dist/node/components/docs/architecture/index.js +20 -20
- package/dist/node/components/docs/comparison/ComparisonAutomationPlatformsPage.js +1 -1
- package/dist/node/components/docs/comparison/ComparisonEnterprisePlatformsPage.js +1 -1
- package/dist/node/components/docs/comparison/ComparisonInternalToolBuildersPage.js +1 -1
- package/dist/node/components/docs/comparison/ComparisonOverviewPage.js +1 -1
- package/dist/node/components/docs/comparison/ComparisonWindmillPage.js +1 -1
- package/dist/node/components/docs/comparison/ComparisonWorkflowEnginesPage.js +1 -1
- package/dist/node/components/docs/comparison/index.js +1 -1
- package/dist/node/components/docs/docsManifest.js +1 -1
- package/dist/node/components/docs/ecosystem/IntegrationsPage.js +2 -2
- package/dist/node/components/docs/ecosystem/PluginsPage.js +4 -4
- package/dist/node/components/docs/ecosystem/RegistryPage.js +4 -4
- package/dist/node/components/docs/ecosystem/TemplatesPage.js +3 -3
- package/dist/node/components/docs/ecosystem/index.js +11 -11
- package/dist/node/components/docs/examples/DocsExamplesPage.js +1 -17
- package/dist/node/components/docs/examples/ExampleShowcasePage.js +2 -17
- package/dist/node/components/docs/examples/exampleShowcaseData.js +2 -17
- package/dist/node/components/docs/examples/index.js +2 -17
- package/dist/node/components/docs/generated/docs-index.generated.js +1 -1
- package/dist/node/components/docs/generated/index.js +1 -1
- package/dist/node/components/docs/generated/loader.js +1 -1
- package/dist/node/components/docs/getting-started/CLIPage.js +6 -5
- package/dist/node/components/docs/getting-started/CompatibilityPage.js +1 -1
- package/dist/node/components/docs/getting-started/DataViewTutorialPage.js +44 -67
- package/dist/node/components/docs/getting-started/DeveloperToolsPage.js +1 -1
- package/dist/node/components/docs/getting-started/HelloWorldPage.js +5 -5
- package/dist/node/components/docs/getting-started/InstallationPage.js +3 -3
- package/dist/node/components/docs/getting-started/StartHerePage.js +4 -2
- package/dist/node/components/docs/getting-started/TroubleshootingPage.js +2 -2
- package/dist/node/components/docs/getting-started/VSCodeExtensionPage.js +1 -1
- package/dist/node/components/docs/getting-started/getting-started.docblocks.js +2 -2
- package/dist/node/components/docs/getting-started/index.js +60 -80
- package/dist/node/components/docs/guides/GuideCIDiffGatingPage.js +2 -2
- package/dist/node/components/docs/guides/GuideConnectInRepoPage.js +30 -5
- package/dist/node/components/docs/guides/GuideContractTypesPage.js +6 -6
- package/dist/node/components/docs/guides/GuideDocsPipelinePage.js +3 -3
- package/dist/node/components/docs/guides/GuideFirstModuleBundlePage.js +4 -4
- package/dist/node/components/docs/guides/GuideGenerateDocsClientsSchemasPage.js +2 -2
- package/dist/node/components/docs/guides/GuideHostBuilderWorkbenchPage.js +21 -6
- package/dist/node/components/docs/guides/GuideImportExistingCodebasesPage.js +8 -8
- package/dist/node/components/docs/guides/GuideNextjsOneEndpointPage.js +6 -6
- package/dist/node/components/docs/guides/GuideReleaseCapsulesPage.js +15 -0
- package/dist/node/components/docs/guides/GuideSpecValidationTypingPage.js +4 -4
- package/dist/node/components/docs/guides/GuidesIndexPage.js +2 -2
- package/dist/node/components/docs/guides/index.js +93 -39
- package/dist/node/components/docs/index.js +690 -419
- package/dist/node/components/docs/integrations/IntegrationsCircuitBreakersPage.js +2 -2
- package/dist/node/components/docs/integrations/IntegrationsElevenLabsPage.js +3 -3
- package/dist/node/components/docs/integrations/IntegrationsGithubPage.js +2 -2
- package/dist/node/components/docs/integrations/IntegrationsGmailPage.js +3 -3
- package/dist/node/components/docs/integrations/IntegrationsGoogleCalendarPage.js +3 -3
- package/dist/node/components/docs/integrations/IntegrationsHealthRoutingPage.js +2 -2
- package/dist/node/components/docs/integrations/IntegrationsMistralPage.js +2 -2
- package/dist/node/components/docs/integrations/IntegrationsOpenAIPage.js +2 -2
- package/dist/node/components/docs/integrations/IntegrationsOverviewPage.js +1 -1
- package/dist/node/components/docs/integrations/IntegrationsPostmarkPage.js +2 -2
- package/dist/node/components/docs/integrations/IntegrationsPowensPage.js +2 -2
- package/dist/node/components/docs/integrations/IntegrationsQdrantPage.js +5 -5
- package/dist/node/components/docs/integrations/IntegrationsResendPage.js +3 -3
- package/dist/node/components/docs/integrations/IntegrationsS3Page.js +4 -4
- package/dist/node/components/docs/integrations/IntegrationsSlackPage.js +2 -2
- package/dist/node/components/docs/integrations/IntegrationsSpecModelPage.js +2 -2
- package/dist/node/components/docs/integrations/IntegrationsStripePage.js +2 -2
- package/dist/node/components/docs/integrations/IntegrationsTwilioPage.js +3 -3
- package/dist/node/components/docs/integrations/IntegrationsWhatsappMetaPage.js +2 -2
- package/dist/node/components/docs/integrations/IntegrationsWhatsappTwilioPage.js +2 -2
- package/dist/node/components/docs/integrations/index.js +39 -39
- package/dist/node/components/docs/intent/ContractFirstApiPage.js +2 -2
- package/dist/node/components/docs/intent/DeterministicCodegenPage.js +2 -2
- package/dist/node/components/docs/intent/GenerateClientFromSchemaPage.js +7 -7
- package/dist/node/components/docs/intent/OpenapiAlternativePage.js +3 -3
- package/dist/node/components/docs/intent/SchemaValidationTypescriptPage.js +4 -4
- package/dist/node/components/docs/intent/SpecDrivenDevelopmentPage.js +2 -2
- package/dist/node/components/docs/intent/index.js +15 -15
- package/dist/node/components/docs/intent/intent-pages.docblocks.js +1 -1
- package/dist/node/components/docs/knowledge/KnowledgeCategoriesPage.js +2 -2
- package/dist/node/components/docs/knowledge/KnowledgeExamplesPage.js +2 -2
- package/dist/node/components/docs/knowledge/KnowledgeOverviewPage.js +1 -1
- package/dist/node/components/docs/knowledge/KnowledgeSourcesPage.js +2 -2
- package/dist/node/components/docs/knowledge/KnowledgeSpacesPage.js +2 -2
- package/dist/node/components/docs/knowledge/index.js +5 -5
- package/dist/node/components/docs/libraries/LibrariesAccessibilityPage.js +3 -3
- package/dist/node/components/docs/libraries/LibrariesAiAgentPage.js +3 -3
- package/dist/node/components/docs/libraries/LibrariesAnalyticsPage.js +4 -4
- package/dist/node/components/docs/libraries/LibrariesContentGenPage.js +2 -2
- package/dist/node/components/docs/libraries/LibrariesContractsPage.js +43 -18
- package/dist/node/components/docs/libraries/LibrariesCostTrackingPage.js +3 -3
- package/dist/node/components/docs/libraries/LibrariesCrossPlatformUIPage.content.js +85 -0
- package/dist/node/components/docs/libraries/LibrariesCrossPlatformUIPage.js +85 -0
- package/dist/node/components/docs/libraries/LibrariesDataBackendPage.js +2 -2
- package/dist/node/components/docs/libraries/LibrariesDataViewsPage.js +3 -3
- package/dist/node/components/docs/libraries/LibrariesDesignSystemPage.js +77 -29
- package/dist/node/components/docs/libraries/LibrariesEvolutionPage.js +4 -4
- package/dist/node/components/docs/libraries/LibrariesGraphQLPage.js +2 -2
- package/dist/node/components/docs/libraries/LibrariesGrowthPage.js +3 -3
- package/dist/node/components/docs/libraries/LibrariesMultiTenancyPage.js +3 -3
- package/dist/node/components/docs/libraries/LibrariesObservabilityPage.js +5 -5
- package/dist/node/components/docs/libraries/LibrariesOverlayEnginePage.js +4 -4
- package/dist/node/components/docs/libraries/LibrariesOverviewPage.js +1 -1
- package/dist/node/components/docs/libraries/LibrariesPersonalizationPage.js +4 -4
- package/dist/node/components/docs/libraries/LibrariesProgressiveDeliveryPage.js +3 -3
- package/dist/node/components/docs/libraries/LibrariesResiliencePage.js +4 -4
- package/dist/node/components/docs/libraries/LibrariesRuntimePage.js +2 -2
- package/dist/node/components/docs/libraries/LibrariesSLOPage.js +3 -3
- package/dist/node/components/docs/libraries/LibrariesSchemaPage.js +3 -3
- package/dist/node/components/docs/libraries/LibrariesSupportBotPage.js +3 -3
- package/dist/node/components/docs/libraries/LibrariesTestingPage.js +3 -3
- package/dist/node/components/docs/libraries/LibrariesUIKitPage.js +42 -16
- package/dist/node/components/docs/libraries/LibrariesUIKitWebPage.js +46 -0
- package/dist/node/components/docs/libraries/LibrariesWorkflowComposerPage.js +3 -3
- package/dist/node/components/docs/libraries/LibrariesWorkflowsPage.js +2 -2
- package/dist/node/components/docs/libraries/index.js +338 -110
- package/dist/node/components/docs/manifesto/ManifestoPage.js +1 -1
- package/dist/node/components/docs/ops/AutoEvolutionOpsPage.js +2 -2
- package/dist/node/components/docs/ops/DistributedTracingOpsPage.js +2 -2
- package/dist/node/components/docs/ops/index.js +3 -3
- package/dist/node/components/docs/ops/ops-lifecycle.docblocks.js +2 -2
- package/dist/node/components/docs/ops/ops-runbooks-a.docblocks.js +2 -2
- package/dist/node/components/docs/ops/ops-runbooks-b.docblocks.js +2 -2
- package/dist/node/components/docs/ops/ops-slo-tenant.docblocks.js +2 -2
- package/dist/node/components/docs/ops/ops-top.docs.js +2 -2
- package/dist/node/components/docs/ops/ops.docs.js +6 -6
- package/dist/node/components/docs/product/product.docblocks.js +2 -2
- package/dist/node/components/docs/reference/DocsMarkdownContent.js +2 -2
- package/dist/node/components/docs/reference/DocsReferenceContent.js +3 -3
- package/dist/node/components/docs/reference/DocsReferenceIndexClient.js +2 -2
- package/dist/node/components/docs/reference/DocsReferenceIndexPage.js +2 -2
- package/dist/node/components/docs/reference/DocsReferencePage.js +3 -3
- package/dist/node/components/docs/reference/docsMarkdownParser.js +2 -2
- package/dist/node/components/docs/reference/index.js +4 -4
- package/dist/node/components/docs/safety/SafetyAuditingPage.js +2 -2
- package/dist/node/components/docs/safety/SafetyMigrationsPage.js +2 -2
- package/dist/node/components/docs/safety/SafetyOverviewPage.js +1 -1
- package/dist/node/components/docs/safety/SafetyPDPPage.js +2 -2
- package/dist/node/components/docs/safety/SafetySecurityTrustPage.js +1 -1
- package/dist/node/components/docs/safety/SafetySigningPage.js +3 -3
- package/dist/node/components/docs/safety/SafetyTenantIsolationPage.js +2 -2
- package/dist/node/components/docs/safety/index.js +7 -7
- package/dist/node/components/docs/shared/StudioPrompt.js +1 -1
- package/dist/node/components/docs/specs/SpecsBuilderControlPlanePage.js +18 -3
- package/dist/node/components/docs/specs/SpecsCapabilitiesPage.js +2 -2
- package/dist/node/components/docs/specs/SpecsConnectPage.js +4 -2
- package/dist/node/components/docs/specs/SpecsDataViewsPage.js +39 -32
- package/dist/node/components/docs/specs/SpecsModuleBundlesPage.js +3 -3
- package/dist/node/components/docs/specs/SpecsOverlaysPage.js +2 -2
- package/dist/node/components/docs/specs/SpecsOverviewPage.js +1 -1
- package/dist/node/components/docs/specs/SpecsPolicyPage.js +3 -3
- package/dist/node/components/docs/specs/SpecsWorkflowsPage.js +2 -2
- package/dist/node/components/docs/specs/index.js +66 -42
- package/dist/node/components/docs/studio/StudioBYOKPage.js +1 -1
- package/dist/node/components/docs/studio/StudioDeploymentsPage.js +1 -1
- package/dist/node/components/docs/studio/StudioGettingStartedPage.js +1 -1
- package/dist/node/components/docs/studio/StudioIntegrationsPage.js +1 -1
- package/dist/node/components/docs/studio/StudioOverviewPage.js +1 -1
- package/dist/node/components/docs/studio/StudioVisualBuilderPage.js +1 -1
- package/dist/node/components/docs/studio/index.js +1 -1
- package/dist/node/components/docs/tech/contracts/tech-docs.docblocks.js +2 -2
- package/dist/node/components/integrations/index.js +2 -2
- package/dist/node/components/integrations/molecules/IntegrationCard.js +1 -1
- package/dist/node/components/integrations/organisms/IntegrationMarketplace.js +1 -1
- package/dist/node/components/integrations/organisms/IntegrationSettings.js +2 -2
- package/dist/node/components/integrations/organisms/KnowledgeSourceList.js +1 -1
- package/dist/node/components/legal/PrivacyTemplate.js +1 -1
- package/dist/node/components/legal/TermsTemplate.js +1 -1
- package/dist/node/components/legal/index.js +1 -1
- package/dist/node/components/shared/FeatureGateNotice.js +1 -1
- package/dist/node/components/shared/index.js +1 -1
- package/dist/node/components/shell/WorkspaceHeader.js +1 -1
- package/dist/node/components/shell/WorkspaceProjectShellLayout.js +1 -1
- package/dist/node/components/shell/WorkspaceShellRenderer.js +1 -1
- package/dist/node/components/shell/WorkspaceSidebar.js +1 -1
- package/dist/node/components/shell/index.js +1 -1
- package/dist/node/components/templates/engine/index.js +1 -1
- package/dist/node/components/templates/index.js +11 -11
- package/dist/node/components/templates/messaging/ConversationList.js +2 -2
- package/dist/node/components/templates/messaging/MessageComposer.js +4 -4
- package/dist/node/components/templates/messaging/MessageThread.js +3 -3
- package/dist/node/components/templates/messaging/MessagingWorkspace.js +5 -5
- package/dist/node/components/templates/messaging/index.js +5 -5
- package/dist/node/components/templates/recipes/LanguageSwitcher.js +1 -1
- package/dist/node/components/templates/recipes/RecipeCard.js +1 -1
- package/dist/node/components/templates/recipes/RecipeDetail.js +1 -1
- package/dist/node/components/templates/recipes/RecipeList.js +3 -3
- package/dist/node/components/templates/recipes/index.js +3 -3
- package/dist/node/components/templates/todos/FilterBar.js +1 -1
- package/dist/node/components/templates/todos/TaskForm.js +2 -2
- package/dist/node/components/templates/todos/TaskItem.js +1 -1
- package/dist/node/components/templates/todos/TaskList.js +5 -5
- package/dist/node/components/templates/todos/index.js +5 -5
- package/dist/node/config/contractspec-blueprint.js +1 -1
- package/dist/node/config/contractspec-branding.js +1 -1
- package/dist/node/config/contractspec-routes.js +1 -1
- package/dist/node/config/index.js +1 -1
- package/dist/node/features/contracts-registry.js +1 -1
- package/dist/node/features/docs/docs.contracts.js +1 -1
- package/dist/node/features/docs/index.js +1 -1
- package/dist/node/features/docs.feature.js +1 -1
- package/dist/node/features/index.js +1 -1
- package/dist/node/features/mcp.feature.js +1 -1
- package/dist/node/features/presentations.feature.js +1 -1
- package/dist/node/features/registry.js +1 -1
- package/dist/node/index.js +701 -430
- package/dist/node/infrastructure/elysia/index.js +1 -1
- package/dist/node/infrastructure/elysia/logger.js +1 -1
- package/dist/node/infrastructure/index.js +1 -1
- package/dist/node/libs/email/client.js +1 -1
- package/dist/node/libs/email/contact.js +3 -3
- package/dist/node/libs/email/newsletter.js +3 -3
- package/dist/node/libs/email/utils.js +2 -2
- package/dist/node/libs/email/waitlist-application.js +3 -3
- package/dist/node/libs/email/waitlist.js +3 -3
- package/dist/node/libs/email.js +6 -6
- package/dist/node/libs/posthog/client.js +1 -1
- package/dist/node/libs/posthog/native.js +1 -1
- package/dist/node/libs/posthog/server.js +1 -1
- package/dist/node/libs/pricing-examples.js +1 -1
- package/dist/node/presentation/features/atoms/FeatureIcon/FeatureIcon.js +1 -1
- package/dist/node/presentation/features/atoms/FeatureIcon/index.js +1 -1
- package/dist/node/presentation/features/atoms/index.js +1 -1
- package/dist/node/presentation/features/hooks/index.js +1 -1
- package/dist/node/presentation/features/hooks/useContractsRegistry.js +1 -1
- package/dist/node/presentation/features/hooks/useFeatureFilters.js +1 -1
- package/dist/node/presentation/features/hooks/useFeatureRegistry.js +1 -1
- package/dist/node/presentation/features/hooks/useRelatedDocs.js +1 -1
- package/dist/node/presentation/features/index.js +1 -1
- package/dist/node/presentation/features/molecules/FeatureCard/FeatureCard.js +1 -1
- package/dist/node/presentation/features/molecules/FeatureCard/index.js +1 -1
- package/dist/node/presentation/features/molecules/FeatureCategoryHeader/FeatureCategoryHeader.js +1 -1
- package/dist/node/presentation/features/molecules/FeatureCategoryHeader/index.js +1 -1
- package/dist/node/presentation/features/molecules/FeatureFilters/FeatureFilters.js +1 -1
- package/dist/node/presentation/features/molecules/FeatureFilters/index.js +1 -1
- package/dist/node/presentation/features/molecules/FeatureHoverPreview/FeatureHoverPreview.js +1 -1
- package/dist/node/presentation/features/molecules/FeatureHoverPreview/index.js +1 -1
- package/dist/node/presentation/features/molecules/index.js +1 -1
- package/dist/node/presentation/features/organisms/FeatureDataViewsList.js +1 -1
- package/dist/node/presentation/features/organisms/FeatureDetail/FeatureDetail.js +1 -1
- package/dist/node/presentation/features/organisms/FeatureDetail/index.js +1 -1
- package/dist/node/presentation/features/organisms/FeatureDiscovery/FeatureDiscovery.js +1 -1
- package/dist/node/presentation/features/organisms/FeatureDiscovery/index.js +1 -1
- package/dist/node/presentation/features/organisms/FeatureEventsList.js +1 -1
- package/dist/node/presentation/features/organisms/FeatureFormsList.js +1 -1
- package/dist/node/presentation/features/organisms/FeatureOperationsList.js +1 -1
- package/dist/node/presentation/features/organisms/FeaturePresentationsList.js +1 -1
- package/dist/node/presentation/features/organisms/index.js +1 -1
- package/dist/node/presentation/features/templates/FeatureDataViewDetailTemplate/FeatureDataViewDetailTemplate.js +1 -1
- package/dist/node/presentation/features/templates/FeatureDataViewDetailTemplate/index.js +1 -1
- package/dist/node/presentation/features/templates/FeatureDataViewsTemplate/FeatureDataViewsTemplate.js +1 -1
- package/dist/node/presentation/features/templates/FeatureDataViewsTemplate/index.js +1 -1
- package/dist/node/presentation/features/templates/FeatureEventDetailTemplate/FeatureEventDetailTemplate.js +1 -1
- package/dist/node/presentation/features/templates/FeatureEventDetailTemplate/index.js +1 -1
- package/dist/node/presentation/features/templates/FeatureEventsTemplate/FeatureEventsTemplate.js +1 -1
- package/dist/node/presentation/features/templates/FeatureEventsTemplate/index.js +1 -1
- package/dist/node/presentation/features/templates/FeatureFormDetailTemplate/FeatureFormDetailTemplate.js +1 -1
- package/dist/node/presentation/features/templates/FeatureFormDetailTemplate/index.js +1 -1
- package/dist/node/presentation/features/templates/FeatureFormsTemplate/FeatureFormsTemplate.js +1 -1
- package/dist/node/presentation/features/templates/FeatureFormsTemplate/index.js +1 -1
- package/dist/node/presentation/features/templates/FeatureOperationDetailTemplate/FeatureOperationDetailTemplate.js +1 -1
- package/dist/node/presentation/features/templates/FeatureOperationDetailTemplate/index.js +1 -1
- package/dist/node/presentation/features/templates/FeatureOperationsTemplate/FeatureOperationsTemplate.js +1 -1
- package/dist/node/presentation/features/templates/FeatureOperationsTemplate/index.js +1 -1
- package/dist/node/presentation/features/templates/FeatureOverviewTemplate/FeatureOverviewTemplate.js +1 -1
- package/dist/node/presentation/features/templates/FeatureOverviewTemplate/index.js +1 -1
- package/dist/node/presentation/features/templates/FeaturePresentationDetailTemplate/FeaturePresentationDetailTemplate.js +1 -1
- package/dist/node/presentation/features/templates/FeaturePresentationDetailTemplate/index.js +1 -1
- package/dist/node/presentation/features/templates/FeaturePresentationsTemplate/FeaturePresentationsTemplate.js +1 -1
- package/dist/node/presentation/features/templates/FeaturePresentationsTemplate/index.js +1 -1
- package/dist/presentation/features/atoms/FeatureIcon/FeatureIcon.js +1 -1
- package/dist/presentation/features/atoms/FeatureIcon/index.js +1 -1
- package/dist/presentation/features/atoms/index.js +1 -1
- package/dist/presentation/features/hooks/index.js +1 -1
- package/dist/presentation/features/hooks/useContractsRegistry.js +1 -1
- package/dist/presentation/features/hooks/useFeatureFilters.js +1 -1
- package/dist/presentation/features/hooks/useFeatureRegistry.js +1 -1
- package/dist/presentation/features/hooks/useRelatedDocs.js +1 -1
- package/dist/presentation/features/index.js +1 -1
- package/dist/presentation/features/molecules/FeatureCard/FeatureCard.js +1 -1
- package/dist/presentation/features/molecules/FeatureCard/index.js +1 -1
- package/dist/presentation/features/molecules/FeatureCategoryHeader/FeatureCategoryHeader.js +1 -1
- package/dist/presentation/features/molecules/FeatureCategoryHeader/index.js +1 -1
- package/dist/presentation/features/molecules/FeatureFilters/FeatureFilters.js +1 -1
- package/dist/presentation/features/molecules/FeatureFilters/index.js +1 -1
- package/dist/presentation/features/molecules/FeatureHoverPreview/FeatureHoverPreview.js +1 -1
- package/dist/presentation/features/molecules/FeatureHoverPreview/index.js +1 -1
- package/dist/presentation/features/molecules/index.js +1 -1
- package/dist/presentation/features/organisms/FeatureDataViewsList.js +1 -1
- package/dist/presentation/features/organisms/FeatureDetail/FeatureDetail.js +1 -1
- package/dist/presentation/features/organisms/FeatureDetail/index.js +1 -1
- package/dist/presentation/features/organisms/FeatureDiscovery/FeatureDiscovery.js +1 -1
- package/dist/presentation/features/organisms/FeatureDiscovery/index.js +1 -1
- package/dist/presentation/features/organisms/FeatureEventsList.js +1 -1
- package/dist/presentation/features/organisms/FeatureFormsList.js +1 -1
- package/dist/presentation/features/organisms/FeatureOperationsList.js +1 -1
- package/dist/presentation/features/organisms/FeaturePresentationsList.js +1 -1
- package/dist/presentation/features/organisms/index.js +1 -1
- package/dist/presentation/features/templates/FeatureDataViewDetailTemplate/FeatureDataViewDetailTemplate.js +1 -1
- package/dist/presentation/features/templates/FeatureDataViewDetailTemplate/index.js +1 -1
- package/dist/presentation/features/templates/FeatureDataViewsTemplate/FeatureDataViewsTemplate.js +1 -1
- package/dist/presentation/features/templates/FeatureDataViewsTemplate/index.js +1 -1
- package/dist/presentation/features/templates/FeatureEventDetailTemplate/FeatureEventDetailTemplate.js +1 -1
- package/dist/presentation/features/templates/FeatureEventDetailTemplate/index.js +1 -1
- package/dist/presentation/features/templates/FeatureEventsTemplate/FeatureEventsTemplate.js +1 -1
- package/dist/presentation/features/templates/FeatureEventsTemplate/index.js +1 -1
- package/dist/presentation/features/templates/FeatureFormDetailTemplate/FeatureFormDetailTemplate.js +1 -1
- package/dist/presentation/features/templates/FeatureFormDetailTemplate/index.js +1 -1
- package/dist/presentation/features/templates/FeatureFormsTemplate/FeatureFormsTemplate.js +1 -1
- package/dist/presentation/features/templates/FeatureFormsTemplate/index.js +1 -1
- package/dist/presentation/features/templates/FeatureOperationDetailTemplate/FeatureOperationDetailTemplate.js +1 -1
- package/dist/presentation/features/templates/FeatureOperationDetailTemplate/index.js +1 -1
- package/dist/presentation/features/templates/FeatureOperationsTemplate/FeatureOperationsTemplate.js +1 -1
- package/dist/presentation/features/templates/FeatureOperationsTemplate/index.js +1 -1
- package/dist/presentation/features/templates/FeatureOverviewTemplate/FeatureOverviewTemplate.js +1 -1
- package/dist/presentation/features/templates/FeatureOverviewTemplate/index.js +1 -1
- package/dist/presentation/features/templates/FeaturePresentationDetailTemplate/FeaturePresentationDetailTemplate.js +1 -1
- package/dist/presentation/features/templates/FeaturePresentationDetailTemplate/index.js +1 -1
- package/dist/presentation/features/templates/FeaturePresentationsTemplate/FeaturePresentationsTemplate.js +1 -1
- package/dist/presentation/features/templates/FeaturePresentationsTemplate/index.js +1 -1
- package/package.json +96 -23
- package/src/application/mcp/cliMcp.onboarding.ts +297 -0
- package/src/application/mcp/cliMcp.test.ts +99 -0
- package/src/application/mcp/cliMcp.ts +30 -3
- package/src/application/mcp/contractsMcp.test.ts +65 -0
- package/src/application/mcp/contractsMcpAdoptionTools.ts +131 -0
- package/src/application/mcp/contractsMcpResources.ts +49 -0
- package/src/application/mcp/contractsMcpTools.ts +2 -0
- package/src/application/mcp/contractsMcpTypes.ts +16 -0
- package/src/bundles/LibraryBundle.ts +19 -130
- package/src/components/docs/docsManifest.test.ts +14 -0
- package/src/components/docs/docsManifest.ts +22 -0
- package/src/components/docs/examples/DocsExamplesPage.tsx +6 -14
- package/src/components/docs/examples/ExampleShowcasePage.tsx +22 -18
- package/src/components/docs/examples/exampleShowcaseData.test.ts +22 -0
- package/src/components/docs/examples/exampleShowcaseData.ts +75 -50
- package/src/components/docs/generated/docs-index._common.json +9 -1
- package/src/components/docs/generated/docs-index.ai-chat.json +1 -1
- package/src/components/docs/generated/docs-index.app-config.json +4 -4
- package/src/components/docs/generated/docs-index.data-grid-showcase.json +9 -1
- package/src/components/docs/generated/docs-index.jobs.json +1 -1
- package/src/components/docs/generated/docs-index.kb-update-pipeline.json +5 -5
- package/src/components/docs/generated/docs-index.learning-journey-crm-onboarding.json +1 -1
- package/src/components/docs/generated/docs-index.learning-journey-platform-tour.json +1 -1
- package/src/components/docs/generated/docs-index.learning-journey-registry.json +1 -1
- package/src/components/docs/generated/docs-index.learning-journey.json +27 -3
- package/src/components/docs/generated/docs-index.locale-jurisdiction-gate.json +8 -0
- package/src/components/docs/generated/docs-index.manifest.json +13 -13
- package/src/components/docs/generated/docs-index.mobile-demo-landing.json +42 -0
- package/src/components/docs/generated/docs-index.platform-agent.json +18 -2
- package/src/components/docs/generated/docs-index.platform-context.json +16 -0
- package/src/components/docs/generated/docs-index.platform-docs.json +9 -1
- package/src/components/docs/generated/docs-index.platform-provider-ranking.json +32 -0
- package/src/components/docs/generated/docs-index.wealth-snapshot.json +4 -4
- package/src/components/docs/generated/index.ts +20 -5
- package/src/components/docs/generated/loader.ts +15 -8
- package/src/components/docs/getting-started/CLIPage.tsx +10 -2
- package/src/components/docs/getting-started/CompatibilityPage.tsx +14 -0
- package/src/components/docs/getting-started/DataViewTutorialPage.tsx +63 -70
- package/src/components/docs/getting-started/StartHerePage.tsx +10 -9
- package/src/components/docs/guides/GuideConnectInRepoPage.tsx +52 -3
- package/src/components/docs/guides/GuideHostBuilderWorkbenchPage.tsx +55 -6
- package/src/components/docs/guides/GuideReleaseCapsulesPage.tsx +147 -0
- package/src/components/docs/guides/GuidesIndexPage.tsx +7 -0
- package/src/components/docs/guides/index.ts +1 -0
- package/src/components/docs/libraries/LibrariesContractsPage.tsx +72 -27
- package/src/components/docs/libraries/LibrariesCrossPlatformUIPage.content.ts +252 -0
- package/src/components/docs/libraries/LibrariesCrossPlatformUIPage.tsx +232 -0
- package/src/components/docs/libraries/LibrariesDesignSystemPage.tsx +140 -55
- package/src/components/docs/libraries/LibrariesOverviewPage.tsx +13 -1
- package/src/components/docs/libraries/LibrariesRuntimePage.tsx +15 -0
- package/src/components/docs/libraries/LibrariesUIKitPage.tsx +78 -25
- package/src/components/docs/libraries/LibrariesUIKitWebPage.tsx +129 -0
- package/src/components/docs/libraries/index.ts +2 -0
- package/src/components/docs/reference/DocsReferenceIndexPage.tsx +1 -1
- package/src/components/docs/specs/SpecsBuilderControlPlanePage.tsx +58 -3
- package/src/components/docs/specs/SpecsConnectPage.tsx +30 -0
- package/src/components/docs/specs/SpecsDataViewsPage.tsx +63 -42
- package/src/index.ts +1 -1
- package/src/components/docs/generated/docs-index.mobile-demo-tasks.json +0 -34
|
@@ -0,0 +1,297 @@
|
|
|
1
|
+
import { createNodeAdapters, onboarding } from '@contractspec/bundle.workspace';
|
|
2
|
+
import {
|
|
3
|
+
defineCommand,
|
|
4
|
+
definePrompt,
|
|
5
|
+
defineResourceTemplate,
|
|
6
|
+
installOp,
|
|
7
|
+
type OperationSpecRegistry,
|
|
8
|
+
type PromptRegistry,
|
|
9
|
+
type ResourceRegistry,
|
|
10
|
+
} from '@contractspec/lib.contracts-spec';
|
|
11
|
+
import { defineSchemaModel, ScalarTypeEnum } from '@contractspec/lib.schema';
|
|
12
|
+
import z from 'zod';
|
|
13
|
+
|
|
14
|
+
const ONBOARDING_TAGS = ['cli', 'mcp', 'onboarding'];
|
|
15
|
+
const ONBOARDING_OWNERS = ['@contractspec'];
|
|
16
|
+
|
|
17
|
+
function parseTrackIds(tracks: string | undefined) {
|
|
18
|
+
return tracks
|
|
19
|
+
?.split(',')
|
|
20
|
+
.map((track) => track.trim())
|
|
21
|
+
.filter(Boolean) as onboarding.OnboardingTrackId[] | undefined;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
async function buildPlan(args: { tracks?: string; example?: string } = {}) {
|
|
25
|
+
const adapters = createNodeAdapters({
|
|
26
|
+
cwd: process.cwd(),
|
|
27
|
+
silent: true,
|
|
28
|
+
});
|
|
29
|
+
return onboarding.buildOnboardingPlan(adapters, {
|
|
30
|
+
forcedExampleKey: args.example,
|
|
31
|
+
selectedTracks: parseTrackIds(args.tracks),
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
export function registerCliOnboardingResources(resources: ResourceRegistry) {
|
|
36
|
+
resources.register(
|
|
37
|
+
defineResourceTemplate({
|
|
38
|
+
meta: {
|
|
39
|
+
uriTemplate: 'onboarding://tracks',
|
|
40
|
+
title: 'Onboarding tracks',
|
|
41
|
+
description:
|
|
42
|
+
'Primary ContractSpec onboarding tracks exposed by the CLI.',
|
|
43
|
+
mimeType: 'application/json',
|
|
44
|
+
tags: ONBOARDING_TAGS,
|
|
45
|
+
},
|
|
46
|
+
input: z.object({}),
|
|
47
|
+
resolve: async () => ({
|
|
48
|
+
uri: 'onboarding://tracks',
|
|
49
|
+
mimeType: 'application/json',
|
|
50
|
+
data: JSON.stringify(onboarding.listOnboardingTracks(), null, 2),
|
|
51
|
+
}),
|
|
52
|
+
})
|
|
53
|
+
);
|
|
54
|
+
|
|
55
|
+
resources.register(
|
|
56
|
+
defineResourceTemplate({
|
|
57
|
+
meta: {
|
|
58
|
+
uriTemplate: 'onboarding://track/{id}',
|
|
59
|
+
title: 'Onboarding track',
|
|
60
|
+
description:
|
|
61
|
+
'Track-specific onboarding metadata and recommended commands.',
|
|
62
|
+
mimeType: 'application/json',
|
|
63
|
+
tags: ONBOARDING_TAGS,
|
|
64
|
+
},
|
|
65
|
+
input: z.object({ id: z.string() }),
|
|
66
|
+
resolve: async ({ id }) => ({
|
|
67
|
+
uri: `onboarding://track/${id}`,
|
|
68
|
+
mimeType: 'application/json',
|
|
69
|
+
data: JSON.stringify(
|
|
70
|
+
onboarding.getOnboardingTrack(id) ?? null,
|
|
71
|
+
null,
|
|
72
|
+
2
|
|
73
|
+
),
|
|
74
|
+
}),
|
|
75
|
+
})
|
|
76
|
+
);
|
|
77
|
+
|
|
78
|
+
resources.register(
|
|
79
|
+
defineResourceTemplate({
|
|
80
|
+
meta: {
|
|
81
|
+
uriTemplate: 'onboarding://artifacts/{id}{?tracks,example}',
|
|
82
|
+
title: 'Rendered onboarding artifact',
|
|
83
|
+
description:
|
|
84
|
+
'Render AGENTS.md or USAGE.md content for the current repo.',
|
|
85
|
+
mimeType: 'text/markdown',
|
|
86
|
+
tags: ONBOARDING_TAGS,
|
|
87
|
+
},
|
|
88
|
+
input: z.object({
|
|
89
|
+
example: z.string().optional(),
|
|
90
|
+
id: z.enum(['agent-guide', 'human-guide']),
|
|
91
|
+
tracks: z.string().optional(),
|
|
92
|
+
}),
|
|
93
|
+
resolve: async ({ example, id, tracks }) => {
|
|
94
|
+
const plan = await buildPlan({ example, tracks });
|
|
95
|
+
return {
|
|
96
|
+
uri: `onboarding://artifacts/${id}`,
|
|
97
|
+
mimeType: 'text/markdown',
|
|
98
|
+
data:
|
|
99
|
+
id === 'agent-guide'
|
|
100
|
+
? plan.guides.agentGuide
|
|
101
|
+
: plan.guides.humanGuide,
|
|
102
|
+
};
|
|
103
|
+
},
|
|
104
|
+
})
|
|
105
|
+
);
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
export function registerCliOnboardingPrompts(prompts: PromptRegistry) {
|
|
109
|
+
prompts.register(
|
|
110
|
+
definePrompt({
|
|
111
|
+
meta: {
|
|
112
|
+
key: 'cli.onboarding',
|
|
113
|
+
version: '1.0.0',
|
|
114
|
+
title: 'Plan a ContractSpec onboarding flow',
|
|
115
|
+
description:
|
|
116
|
+
'Suggest the right onboarding track and artifacts for a repo.',
|
|
117
|
+
tags: ONBOARDING_TAGS,
|
|
118
|
+
stability: 'beta',
|
|
119
|
+
owners: ONBOARDING_OWNERS,
|
|
120
|
+
},
|
|
121
|
+
args: [
|
|
122
|
+
{
|
|
123
|
+
name: 'goal',
|
|
124
|
+
description: 'Repository onboarding goal or focus area.',
|
|
125
|
+
required: false,
|
|
126
|
+
schema: z.string().optional(),
|
|
127
|
+
},
|
|
128
|
+
],
|
|
129
|
+
input: z.object({ goal: z.string().optional() }),
|
|
130
|
+
render: async ({ goal }) => [
|
|
131
|
+
{
|
|
132
|
+
type: 'text',
|
|
133
|
+
text: `Use onboarding://tracks and onboarding_suggestTracks-v1_0_0 before recommending repo-local ContractSpec adoption steps.${goal ? ` Goal: ${goal}.` : ''}`,
|
|
134
|
+
},
|
|
135
|
+
{
|
|
136
|
+
type: 'resource' as const,
|
|
137
|
+
uri: 'onboarding://tracks',
|
|
138
|
+
title: 'Tracks',
|
|
139
|
+
},
|
|
140
|
+
],
|
|
141
|
+
})
|
|
142
|
+
);
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
export function registerCliOnboardingOps(registry: OperationSpecRegistry) {
|
|
146
|
+
const SuggestTracksInput = defineSchemaModel({
|
|
147
|
+
name: 'OnboardingSuggestTracksInput',
|
|
148
|
+
fields: {
|
|
149
|
+
example: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },
|
|
150
|
+
tracks: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },
|
|
151
|
+
},
|
|
152
|
+
});
|
|
153
|
+
const SuggestTracksOutput = defineSchemaModel({
|
|
154
|
+
name: 'OnboardingSuggestTracksOutput',
|
|
155
|
+
fields: {
|
|
156
|
+
nextCommands: {
|
|
157
|
+
type: ScalarTypeEnum.String_unsecure(),
|
|
158
|
+
isArray: true,
|
|
159
|
+
isOptional: false,
|
|
160
|
+
},
|
|
161
|
+
primaryTrack: {
|
|
162
|
+
type: ScalarTypeEnum.String_unsecure(),
|
|
163
|
+
isOptional: false,
|
|
164
|
+
},
|
|
165
|
+
reason: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
|
|
166
|
+
tracks: {
|
|
167
|
+
type: ScalarTypeEnum.String_unsecure(),
|
|
168
|
+
isArray: true,
|
|
169
|
+
isOptional: false,
|
|
170
|
+
},
|
|
171
|
+
},
|
|
172
|
+
});
|
|
173
|
+
const RenderArtifactsOutput = defineSchemaModel({
|
|
174
|
+
name: 'OnboardingRenderArtifactOutput',
|
|
175
|
+
fields: {
|
|
176
|
+
content: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
|
|
177
|
+
primaryTrack: {
|
|
178
|
+
type: ScalarTypeEnum.String_unsecure(),
|
|
179
|
+
isOptional: false,
|
|
180
|
+
},
|
|
181
|
+
},
|
|
182
|
+
});
|
|
183
|
+
const NextCommandOutput = defineSchemaModel({
|
|
184
|
+
name: 'OnboardingNextCommandOutput',
|
|
185
|
+
fields: {
|
|
186
|
+
nextCommand: {
|
|
187
|
+
type: ScalarTypeEnum.String_unsecure(),
|
|
188
|
+
isOptional: false,
|
|
189
|
+
},
|
|
190
|
+
primaryTrack: {
|
|
191
|
+
type: ScalarTypeEnum.String_unsecure(),
|
|
192
|
+
isOptional: false,
|
|
193
|
+
},
|
|
194
|
+
},
|
|
195
|
+
});
|
|
196
|
+
|
|
197
|
+
installOp(
|
|
198
|
+
registry,
|
|
199
|
+
defineCommand({
|
|
200
|
+
meta: {
|
|
201
|
+
key: 'onboarding.suggestTracks',
|
|
202
|
+
version: '1.0.0',
|
|
203
|
+
stability: 'stable',
|
|
204
|
+
owners: ONBOARDING_OWNERS,
|
|
205
|
+
tags: ONBOARDING_TAGS,
|
|
206
|
+
description: 'Suggest the recommended ContractSpec onboarding tracks.',
|
|
207
|
+
goal: 'Help agents choose the right onboarding track before editing repo-local guides.',
|
|
208
|
+
context: 'Used inside the CLI MCP server.',
|
|
209
|
+
},
|
|
210
|
+
io: { input: SuggestTracksInput, output: SuggestTracksOutput },
|
|
211
|
+
policy: { auth: 'anonymous' },
|
|
212
|
+
}),
|
|
213
|
+
async ({ example, tracks }) => {
|
|
214
|
+
const plan = await buildPlan({ example, tracks });
|
|
215
|
+
return {
|
|
216
|
+
nextCommands: plan.nextCommands,
|
|
217
|
+
primaryTrack: plan.primaryTrack.id,
|
|
218
|
+
reason: plan.recommendations[0]?.reason ?? plan.primaryTrack.summary,
|
|
219
|
+
tracks: plan.recommendations.map(
|
|
220
|
+
(recommendation) => recommendation.track.id
|
|
221
|
+
),
|
|
222
|
+
};
|
|
223
|
+
}
|
|
224
|
+
);
|
|
225
|
+
|
|
226
|
+
installOp(
|
|
227
|
+
registry,
|
|
228
|
+
defineCommand({
|
|
229
|
+
meta: {
|
|
230
|
+
key: 'onboarding.renderArtifacts',
|
|
231
|
+
version: '1.0.0',
|
|
232
|
+
stability: 'stable',
|
|
233
|
+
owners: ONBOARDING_OWNERS,
|
|
234
|
+
tags: ONBOARDING_TAGS,
|
|
235
|
+
description: 'Render onboarding artifacts for the current repo.',
|
|
236
|
+
goal: 'Provide AGENTS.md or USAGE.md content without mutating the repo.',
|
|
237
|
+
context: 'Used inside the CLI MCP server.',
|
|
238
|
+
},
|
|
239
|
+
io: {
|
|
240
|
+
input: defineSchemaModel({
|
|
241
|
+
name: 'OnboardingRenderArtifactInput',
|
|
242
|
+
fields: {
|
|
243
|
+
artifact: {
|
|
244
|
+
type: ScalarTypeEnum.String_unsecure(),
|
|
245
|
+
isOptional: false,
|
|
246
|
+
},
|
|
247
|
+
example: {
|
|
248
|
+
type: ScalarTypeEnum.String_unsecure(),
|
|
249
|
+
isOptional: true,
|
|
250
|
+
},
|
|
251
|
+
tracks: {
|
|
252
|
+
type: ScalarTypeEnum.String_unsecure(),
|
|
253
|
+
isOptional: true,
|
|
254
|
+
},
|
|
255
|
+
},
|
|
256
|
+
}),
|
|
257
|
+
output: RenderArtifactsOutput,
|
|
258
|
+
},
|
|
259
|
+
policy: { auth: 'anonymous' },
|
|
260
|
+
}),
|
|
261
|
+
async ({ artifact, example, tracks }) => {
|
|
262
|
+
const plan = await buildPlan({ example, tracks });
|
|
263
|
+
return {
|
|
264
|
+
content:
|
|
265
|
+
artifact === 'agent-guide'
|
|
266
|
+
? plan.guides.agentGuide
|
|
267
|
+
: plan.guides.humanGuide,
|
|
268
|
+
primaryTrack: plan.primaryTrack.id,
|
|
269
|
+
};
|
|
270
|
+
}
|
|
271
|
+
);
|
|
272
|
+
|
|
273
|
+
installOp(
|
|
274
|
+
registry,
|
|
275
|
+
defineCommand({
|
|
276
|
+
meta: {
|
|
277
|
+
key: 'onboarding.nextCommand',
|
|
278
|
+
version: '1.0.0',
|
|
279
|
+
stability: 'stable',
|
|
280
|
+
owners: ONBOARDING_OWNERS,
|
|
281
|
+
tags: ONBOARDING_TAGS,
|
|
282
|
+
description: 'Return the next recommended CLI command for onboarding.',
|
|
283
|
+
goal: 'Help agents choose the next onboarding command without mutating the repo.',
|
|
284
|
+
context: 'Used inside the CLI MCP server.',
|
|
285
|
+
},
|
|
286
|
+
io: { input: SuggestTracksInput, output: NextCommandOutput },
|
|
287
|
+
policy: { auth: 'anonymous' },
|
|
288
|
+
}),
|
|
289
|
+
async ({ example, tracks }) => {
|
|
290
|
+
const plan = await buildPlan({ example, tracks });
|
|
291
|
+
return {
|
|
292
|
+
nextCommand: plan.nextCommands[0] ?? 'contractspec onboard',
|
|
293
|
+
primaryTrack: plan.primaryTrack.id,
|
|
294
|
+
};
|
|
295
|
+
}
|
|
296
|
+
);
|
|
297
|
+
}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
import { describe, expect, it } from 'bun:test';
|
|
2
|
+
import { Elysia } from 'elysia';
|
|
3
|
+
import { createCliMcpHandler } from './cliMcp';
|
|
4
|
+
|
|
5
|
+
function createTestApp() {
|
|
6
|
+
return new Elysia().use(createCliMcpHandler('/mcp/cli'));
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
async function mcpRequest(
|
|
10
|
+
method: string,
|
|
11
|
+
params: Record<string, unknown> = {}
|
|
12
|
+
) {
|
|
13
|
+
return createTestApp().handle(
|
|
14
|
+
new Request('http://localhost/mcp/cli', {
|
|
15
|
+
method: 'POST',
|
|
16
|
+
headers: {
|
|
17
|
+
accept: 'application/json',
|
|
18
|
+
'content-type': 'application/json',
|
|
19
|
+
},
|
|
20
|
+
body: JSON.stringify({
|
|
21
|
+
jsonrpc: '2.0',
|
|
22
|
+
id: 1,
|
|
23
|
+
method,
|
|
24
|
+
params,
|
|
25
|
+
}),
|
|
26
|
+
})
|
|
27
|
+
);
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
async function initialize() {
|
|
31
|
+
const response = await mcpRequest('initialize', {
|
|
32
|
+
protocolVersion: '2024-11-05',
|
|
33
|
+
capabilities: {},
|
|
34
|
+
clientInfo: { name: 'cli-mcp-test', version: '1.0.0' },
|
|
35
|
+
});
|
|
36
|
+
expect(response.status).toBe(200);
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
describe('cli MCP handler', () => {
|
|
40
|
+
it('exposes onboarding resources, prompts, and tools', async () => {
|
|
41
|
+
await initialize();
|
|
42
|
+
|
|
43
|
+
const toolsResponse = await mcpRequest('tools/list');
|
|
44
|
+
const toolsBody = await toolsResponse.json();
|
|
45
|
+
const toolNames = toolsBody.result.tools.map(
|
|
46
|
+
(tool: { name: string }) => tool.name
|
|
47
|
+
);
|
|
48
|
+
expect(toolNames).toContain('cli_suggestCommand-v1_0_0');
|
|
49
|
+
expect(toolNames).toContain('onboarding_suggestTracks-v1_0_0');
|
|
50
|
+
expect(toolNames).toContain('onboarding_renderArtifacts-v1_0_0');
|
|
51
|
+
expect(toolNames).toContain('onboarding_nextCommand-v1_0_0');
|
|
52
|
+
|
|
53
|
+
const promptsResponse = await mcpRequest('prompts/list');
|
|
54
|
+
const promptsBody = await promptsResponse.json();
|
|
55
|
+
const promptNames = promptsBody.result.prompts.map(
|
|
56
|
+
(prompt: { name: string }) => prompt.name
|
|
57
|
+
);
|
|
58
|
+
expect(promptNames).toContain('cli_usage');
|
|
59
|
+
expect(promptNames).toContain('cli_onboarding');
|
|
60
|
+
|
|
61
|
+
const resourcesResponse = await mcpRequest('resources/list');
|
|
62
|
+
const resourcesBody = await resourcesResponse.json();
|
|
63
|
+
const resourceUris = (resourcesBody.result.resources ?? []).map(
|
|
64
|
+
(resource: { uri?: string; uriTemplate?: string }) =>
|
|
65
|
+
resource.uriTemplate ?? resource.uri
|
|
66
|
+
);
|
|
67
|
+
expect(resourceUris).toContain('cli://commands');
|
|
68
|
+
expect(resourceUris).toContain('onboarding://tracks');
|
|
69
|
+
});
|
|
70
|
+
|
|
71
|
+
it('renders onboarding artifacts and next-command guidance', async () => {
|
|
72
|
+
await initialize();
|
|
73
|
+
|
|
74
|
+
const artifactResponse = await mcpRequest('tools/call', {
|
|
75
|
+
name: 'onboarding_renderArtifacts-v1_0_0',
|
|
76
|
+
arguments: {
|
|
77
|
+
artifact: 'human-guide',
|
|
78
|
+
tracks: 'knowledge',
|
|
79
|
+
},
|
|
80
|
+
});
|
|
81
|
+
const artifactBody = await artifactResponse.json();
|
|
82
|
+
const artifactResult = JSON.parse(artifactBody.result.content[0].text);
|
|
83
|
+
expect(artifactResult.primaryTrack).toBe('knowledge');
|
|
84
|
+
expect(artifactResult.content).toContain('ContractSpec Repo Onboarding');
|
|
85
|
+
|
|
86
|
+
const nextCommandResponse = await mcpRequest('tools/call', {
|
|
87
|
+
name: 'onboarding_nextCommand-v1_0_0',
|
|
88
|
+
arguments: {
|
|
89
|
+
tracks: 'ai-agents',
|
|
90
|
+
},
|
|
91
|
+
});
|
|
92
|
+
const nextCommandBody = await nextCommandResponse.json();
|
|
93
|
+
const nextCommandResult = JSON.parse(
|
|
94
|
+
nextCommandBody.result.content[0].text
|
|
95
|
+
);
|
|
96
|
+
expect(nextCommandResult.primaryTrack).toBe('ai-agents');
|
|
97
|
+
expect(nextCommandResult.nextCommand).toContain('contractspec onboard');
|
|
98
|
+
});
|
|
99
|
+
});
|
|
@@ -12,6 +12,11 @@ import { defineSchemaModel, ScalarTypeEnum } from '@contractspec/lib.schema';
|
|
|
12
12
|
import path from 'path';
|
|
13
13
|
import z from 'zod';
|
|
14
14
|
import { appLogger } from '../../infrastructure/elysia/logger';
|
|
15
|
+
import {
|
|
16
|
+
registerCliOnboardingOps,
|
|
17
|
+
registerCliOnboardingPrompts,
|
|
18
|
+
registerCliOnboardingResources,
|
|
19
|
+
} from './cliMcp.onboarding';
|
|
15
20
|
import { createMcpElysiaHandler } from './common';
|
|
16
21
|
|
|
17
22
|
const CLI_DOC_PATHS = {
|
|
@@ -22,11 +27,11 @@ const CLI_DOC_PATHS = {
|
|
|
22
27
|
|
|
23
28
|
const CLI_DOC_FALLBACK = {
|
|
24
29
|
quickstart:
|
|
25
|
-
'# ContractSpec CLI quickstart\n\ncontractspec
|
|
30
|
+
'# ContractSpec CLI quickstart\n\ncontractspec quickstart\ncontractspec onboard\ncontractspec validate',
|
|
26
31
|
reference:
|
|
27
|
-
'# ContractSpec CLI reference\n\nKey commands: create,
|
|
32
|
+
'# ContractSpec CLI reference\n\nKey commands: onboard, create, generate, validate. See README for full options.',
|
|
28
33
|
readme:
|
|
29
|
-
'# ContractSpec CLI\n\nStabilize AI-generated code across API, DB, UI, events. Use create/
|
|
34
|
+
'# ContractSpec CLI\n\nStabilize AI-generated code across API, DB, UI, events. Use onboard/create/generate/validate commands.',
|
|
30
35
|
};
|
|
31
36
|
|
|
32
37
|
const CLI_DOC_TAGS = ['cli', 'mcp'];
|
|
@@ -108,6 +113,12 @@ function buildCliResources() {
|
|
|
108
113
|
input: z.object({}),
|
|
109
114
|
resolve: async () => {
|
|
110
115
|
const commands = [
|
|
116
|
+
{
|
|
117
|
+
command: 'contractspec onboard',
|
|
118
|
+
summary:
|
|
119
|
+
'Generate repo-local AGENTS.md and USAGE.md guidance plus recommended tracks.',
|
|
120
|
+
doc: 'cli://doc/quickstart',
|
|
121
|
+
},
|
|
111
122
|
{
|
|
112
123
|
command: 'contractspec create',
|
|
113
124
|
summary: 'Interactive wizard to author specs (with optional AI).',
|
|
@@ -136,6 +147,7 @@ function buildCliResources() {
|
|
|
136
147
|
})
|
|
137
148
|
);
|
|
138
149
|
|
|
150
|
+
registerCliOnboardingResources(resources);
|
|
139
151
|
return resources;
|
|
140
152
|
}
|
|
141
153
|
|
|
@@ -178,6 +190,7 @@ function buildCliPrompts() {
|
|
|
178
190
|
})
|
|
179
191
|
);
|
|
180
192
|
|
|
193
|
+
registerCliOnboardingPrompts(prompts);
|
|
181
194
|
return prompts;
|
|
182
195
|
}
|
|
183
196
|
|
|
@@ -224,6 +237,19 @@ function buildCliOps() {
|
|
|
224
237
|
installOp(registry, suggestSpec, async ({ goal, prefersAi }) => {
|
|
225
238
|
const lower = goal.toLowerCase();
|
|
226
239
|
|
|
240
|
+
if (
|
|
241
|
+
lower.includes('onboard') ||
|
|
242
|
+
lower.includes('start') ||
|
|
243
|
+
lower.includes('guide') ||
|
|
244
|
+
lower.includes('install')
|
|
245
|
+
) {
|
|
246
|
+
return {
|
|
247
|
+
command: 'contractspec onboard',
|
|
248
|
+
docUri: 'cli://doc/quickstart',
|
|
249
|
+
reason: 'Starts the CLI-first onboarding flow for the current repo.',
|
|
250
|
+
};
|
|
251
|
+
}
|
|
252
|
+
|
|
227
253
|
if (lower.includes('create') || lower.includes('new')) {
|
|
228
254
|
return {
|
|
229
255
|
command: prefersAi ? 'contractspec create --ai' : 'contractspec create',
|
|
@@ -258,6 +284,7 @@ function buildCliOps() {
|
|
|
258
284
|
};
|
|
259
285
|
});
|
|
260
286
|
|
|
287
|
+
registerCliOnboardingOps(registry);
|
|
261
288
|
return registry;
|
|
262
289
|
}
|
|
263
290
|
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { describe, expect, it } from 'bun:test';
|
|
2
|
+
import { buildContractsResources } from './contractsMcpResources';
|
|
3
|
+
import { buildContractsOps } from './contractsMcpTools';
|
|
4
|
+
import type { ContractsMcpServices } from './contractsMcpTypes';
|
|
5
|
+
|
|
6
|
+
const services: ContractsMcpServices = {
|
|
7
|
+
async buildSpec() {
|
|
8
|
+
return { results: [] };
|
|
9
|
+
},
|
|
10
|
+
async deleteSpec() {
|
|
11
|
+
return { cleanedFiles: [], deleted: true, errors: [] };
|
|
12
|
+
},
|
|
13
|
+
async fetchRegistryManifest() {
|
|
14
|
+
return {};
|
|
15
|
+
},
|
|
16
|
+
async getSpec() {
|
|
17
|
+
return null;
|
|
18
|
+
},
|
|
19
|
+
async listSpecs() {
|
|
20
|
+
return [];
|
|
21
|
+
},
|
|
22
|
+
async resolveAdoption(options) {
|
|
23
|
+
return {
|
|
24
|
+
ambiguous: false,
|
|
25
|
+
candidates: [],
|
|
26
|
+
exhausted: false,
|
|
27
|
+
family: options.family,
|
|
28
|
+
query: options.query,
|
|
29
|
+
reason: `Resolved ${options.family}`,
|
|
30
|
+
selected: null,
|
|
31
|
+
verdict: 'rewrite',
|
|
32
|
+
};
|
|
33
|
+
},
|
|
34
|
+
async searchAdoptionCatalog() {
|
|
35
|
+
return [{ packageRef: '@contractspec/lib.contracts-spec' }];
|
|
36
|
+
},
|
|
37
|
+
async syncAdoptionCatalog() {
|
|
38
|
+
return { catalogPath: '.contractspec/adoption/catalog.json', total: 1 };
|
|
39
|
+
},
|
|
40
|
+
async updateSpec() {
|
|
41
|
+
return { errors: [], updated: true, warnings: [] };
|
|
42
|
+
},
|
|
43
|
+
async validateSpec() {
|
|
44
|
+
return { errors: [], valid: true, warnings: [] };
|
|
45
|
+
},
|
|
46
|
+
};
|
|
47
|
+
|
|
48
|
+
describe('contracts MCP adoption extensions', () => {
|
|
49
|
+
it('registers adoption tools alongside contract tools', () => {
|
|
50
|
+
const registry = buildContractsOps(services);
|
|
51
|
+
const keys = registry.list().map((spec) => spec.meta.key);
|
|
52
|
+
|
|
53
|
+
expect(keys).toContain('adoption.catalog_search');
|
|
54
|
+
expect(keys).toContain('adoption.resolve');
|
|
55
|
+
expect(keys).toContain('adoption.sync');
|
|
56
|
+
});
|
|
57
|
+
|
|
58
|
+
it('registers adoption resources', () => {
|
|
59
|
+
const resources = buildContractsResources(services);
|
|
60
|
+
const uris = resources.listTemplates().map((tmpl) => tmpl.meta.uriTemplate);
|
|
61
|
+
|
|
62
|
+
expect(uris).toContain('adoption://catalog');
|
|
63
|
+
expect(uris).toContain('adoption://policy/{family}');
|
|
64
|
+
});
|
|
65
|
+
});
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
import {
|
|
2
|
+
defineCommand,
|
|
3
|
+
installOp,
|
|
4
|
+
type OperationSpecRegistry,
|
|
5
|
+
} from '@contractspec/lib.contracts-spec';
|
|
6
|
+
import { defineSchemaModel, ScalarTypeEnum } from '@contractspec/lib.schema';
|
|
7
|
+
import type { ContractsMcpServices } from './contractsMcpTypes';
|
|
8
|
+
|
|
9
|
+
const OWNERS = ['@contractspec'];
|
|
10
|
+
const TAGS = ['contracts', 'mcp', 'adoption'];
|
|
11
|
+
|
|
12
|
+
export function registerAdoptionOps(
|
|
13
|
+
registry: OperationSpecRegistry,
|
|
14
|
+
services: ContractsMcpServices
|
|
15
|
+
) {
|
|
16
|
+
const SearchInput = defineSchemaModel({
|
|
17
|
+
name: 'AdoptionCatalogSearchInput',
|
|
18
|
+
fields: {
|
|
19
|
+
query: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
|
|
20
|
+
family: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },
|
|
21
|
+
platform: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },
|
|
22
|
+
},
|
|
23
|
+
});
|
|
24
|
+
const SearchOutput = defineSchemaModel({
|
|
25
|
+
name: 'AdoptionCatalogSearchOutput',
|
|
26
|
+
fields: {
|
|
27
|
+
results: { type: ScalarTypeEnum.JSON(), isOptional: false },
|
|
28
|
+
},
|
|
29
|
+
});
|
|
30
|
+
installOp(
|
|
31
|
+
registry,
|
|
32
|
+
defineCommand({
|
|
33
|
+
meta: {
|
|
34
|
+
key: 'adoption.catalog_search',
|
|
35
|
+
version: '1.0.0',
|
|
36
|
+
stability: 'beta',
|
|
37
|
+
owners: OWNERS,
|
|
38
|
+
tags: TAGS,
|
|
39
|
+
description: 'Search the local ContractSpec adoption catalog.',
|
|
40
|
+
goal: 'Find relevant ContractSpec reuse candidates for a query.',
|
|
41
|
+
context: 'Contracts MCP server.',
|
|
42
|
+
},
|
|
43
|
+
io: { input: SearchInput, output: SearchOutput },
|
|
44
|
+
policy: { auth: 'anonymous' },
|
|
45
|
+
}),
|
|
46
|
+
async ({ family, platform, query }) => ({
|
|
47
|
+
results: await services.searchAdoptionCatalog({
|
|
48
|
+
family,
|
|
49
|
+
platform,
|
|
50
|
+
query,
|
|
51
|
+
}),
|
|
52
|
+
})
|
|
53
|
+
);
|
|
54
|
+
|
|
55
|
+
const ResolveInput = defineSchemaModel({
|
|
56
|
+
name: 'AdoptionResolveInput',
|
|
57
|
+
fields: {
|
|
58
|
+
family: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
|
|
59
|
+
query: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
|
|
60
|
+
paths: { type: ScalarTypeEnum.JSON(), isOptional: true },
|
|
61
|
+
platform: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },
|
|
62
|
+
runtime: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },
|
|
63
|
+
},
|
|
64
|
+
});
|
|
65
|
+
const ResolveOutput = defineSchemaModel({
|
|
66
|
+
name: 'AdoptionResolveOutput',
|
|
67
|
+
fields: {
|
|
68
|
+
resolution: { type: ScalarTypeEnum.JSON(), isOptional: false },
|
|
69
|
+
},
|
|
70
|
+
});
|
|
71
|
+
installOp(
|
|
72
|
+
registry,
|
|
73
|
+
defineCommand({
|
|
74
|
+
meta: {
|
|
75
|
+
key: 'adoption.resolve',
|
|
76
|
+
version: '1.0.0',
|
|
77
|
+
stability: 'beta',
|
|
78
|
+
owners: OWNERS,
|
|
79
|
+
tags: TAGS,
|
|
80
|
+
description: 'Resolve the best adoption candidate for one family.',
|
|
81
|
+
goal: 'Provide one ordered recommendation that matches Connect.',
|
|
82
|
+
context: 'Contracts MCP server.',
|
|
83
|
+
},
|
|
84
|
+
io: { input: ResolveInput, output: ResolveOutput },
|
|
85
|
+
policy: { auth: 'anonymous' },
|
|
86
|
+
}),
|
|
87
|
+
async ({ family, paths, platform, query, runtime }) => ({
|
|
88
|
+
resolution: await services.resolveAdoption({
|
|
89
|
+
family,
|
|
90
|
+
paths: Array.isArray(paths) ? (paths as string[]) : undefined,
|
|
91
|
+
platform,
|
|
92
|
+
query,
|
|
93
|
+
runtime,
|
|
94
|
+
}),
|
|
95
|
+
})
|
|
96
|
+
);
|
|
97
|
+
|
|
98
|
+
const SyncInput = defineSchemaModel({
|
|
99
|
+
name: 'AdoptionSyncInput',
|
|
100
|
+
fields: {},
|
|
101
|
+
});
|
|
102
|
+
const SyncOutput = defineSchemaModel({
|
|
103
|
+
name: 'AdoptionSyncOutput',
|
|
104
|
+
fields: {
|
|
105
|
+
catalogPath: {
|
|
106
|
+
type: ScalarTypeEnum.String_unsecure(),
|
|
107
|
+
isOptional: false,
|
|
108
|
+
},
|
|
109
|
+
total: { type: ScalarTypeEnum.Int_unsecure(), isOptional: false },
|
|
110
|
+
},
|
|
111
|
+
});
|
|
112
|
+
installOp(
|
|
113
|
+
registry,
|
|
114
|
+
defineCommand({
|
|
115
|
+
meta: {
|
|
116
|
+
key: 'adoption.sync',
|
|
117
|
+
version: '1.0.0',
|
|
118
|
+
stability: 'beta',
|
|
119
|
+
owners: OWNERS,
|
|
120
|
+
tags: TAGS,
|
|
121
|
+
description:
|
|
122
|
+
'Mirror the bundled ContractSpec adoption catalog locally.',
|
|
123
|
+
goal: 'Refresh the local adoption catalog used by Connect and MCP.',
|
|
124
|
+
context: 'Contracts MCP server.',
|
|
125
|
+
},
|
|
126
|
+
io: { input: SyncInput, output: SyncOutput },
|
|
127
|
+
policy: { auth: 'user' },
|
|
128
|
+
}),
|
|
129
|
+
async () => services.syncAdoptionCatalog()
|
|
130
|
+
);
|
|
131
|
+
}
|