@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
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import{Logger as
|
|
1
|
+
var s=Object.defineProperty;var r=(j)=>j;function e(j,Q){this[j]=r.bind(null,Q)}var Rj=(j,Q)=>{for(var U in Q)s(j,U,{get:Q[U],enumerable:!0,configurable:!0,set:e.bind(Q,U)})};var kj=(j,Q)=>()=>(j&&(Q=j(j=0)),Q);import{Logger as k,LogLevel as C}from"@contractspec/lib.logger";function v(){return"production"}var jj=()=>new k({level:C.INFO,environment:v(),enableTracing:!0,enableTiming:!0,enableContext:!0,enableColors:!1}),O=jj(),Ij=new k({level:C.WARN,environment:v(),enableTracing:!0,enableTiming:!0,enableContext:!0,enableColors:!1}),Aj=new k({level:C.INFO,environment:v(),enableTracing:!0,enableTiming:!0,enableContext:!0,enableColors:!1});import{createNodeAdapters as Qj,onboarding as T}from"@contractspec/bundle.workspace";import{defineCommand as I,definePrompt as Uj,defineResourceTemplate as A,installOp as h}from"@contractspec/lib.contracts-spec";import{defineSchemaModel as D,ScalarTypeEnum as K}from"@contractspec/lib.schema";import W from"zod";var w=["cli","mcp","onboarding"],q=["@contractspec"];function Yj(j){return j?.split(",").map((Q)=>Q.trim()).filter(Boolean)}async function _(j={}){let Q=Qj({cwd:process.cwd(),silent:!0});return T.buildOnboardingPlan(Q,{forcedExampleKey:j.example,selectedTracks:Yj(j.tracks)})}function S(j){j.register(A({meta:{uriTemplate:"onboarding://tracks",title:"Onboarding tracks",description:"Primary ContractSpec onboarding tracks exposed by the CLI.",mimeType:"application/json",tags:w},input:W.object({}),resolve:async()=>({uri:"onboarding://tracks",mimeType:"application/json",data:JSON.stringify(T.listOnboardingTracks(),null,2)})})),j.register(A({meta:{uriTemplate:"onboarding://track/{id}",title:"Onboarding track",description:"Track-specific onboarding metadata and recommended commands.",mimeType:"application/json",tags:w},input:W.object({id:W.string()}),resolve:async({id:Q})=>({uri:`onboarding://track/${Q}`,mimeType:"application/json",data:JSON.stringify(T.getOnboardingTrack(Q)??null,null,2)})})),j.register(A({meta:{uriTemplate:"onboarding://artifacts/{id}{?tracks,example}",title:"Rendered onboarding artifact",description:"Render AGENTS.md or USAGE.md content for the current repo.",mimeType:"text/markdown",tags:w},input:W.object({example:W.string().optional(),id:W.enum(["agent-guide","human-guide"]),tracks:W.string().optional()}),resolve:async({example:Q,id:U,tracks:J})=>{let X=await _({example:Q,tracks:J});return{uri:`onboarding://artifacts/${U}`,mimeType:"text/markdown",data:U==="agent-guide"?X.guides.agentGuide:X.guides.humanGuide}}}))}function m(j){j.register(Uj({meta:{key:"cli.onboarding",version:"1.0.0",title:"Plan a ContractSpec onboarding flow",description:"Suggest the right onboarding track and artifacts for a repo.",tags:w,stability:"beta",owners:q},args:[{name:"goal",description:"Repository onboarding goal or focus area.",required:!1,schema:W.string().optional()}],input:W.object({goal:W.string().optional()}),render:async({goal:Q})=>[{type:"text",text:`Use onboarding://tracks and onboarding_suggestTracks-v1_0_0 before recommending repo-local ContractSpec adoption steps.${Q?` Goal: ${Q}.`:""}`},{type:"resource",uri:"onboarding://tracks",title:"Tracks"}]}))}function g(j){let Q=D({name:"OnboardingSuggestTracksInput",fields:{example:{type:K.String_unsecure(),isOptional:!0},tracks:{type:K.String_unsecure(),isOptional:!0}}}),U=D({name:"OnboardingSuggestTracksOutput",fields:{nextCommands:{type:K.String_unsecure(),isArray:!0,isOptional:!1},primaryTrack:{type:K.String_unsecure(),isOptional:!1},reason:{type:K.String_unsecure(),isOptional:!1},tracks:{type:K.String_unsecure(),isArray:!0,isOptional:!1}}}),J=D({name:"OnboardingRenderArtifactOutput",fields:{content:{type:K.String_unsecure(),isOptional:!1},primaryTrack:{type:K.String_unsecure(),isOptional:!1}}}),X=D({name:"OnboardingNextCommandOutput",fields:{nextCommand:{type:K.String_unsecure(),isOptional:!1},primaryTrack:{type:K.String_unsecure(),isOptional:!1}}});h(j,I({meta:{key:"onboarding.suggestTracks",version:"1.0.0",stability:"stable",owners:q,tags:w,description:"Suggest the recommended ContractSpec onboarding tracks.",goal:"Help agents choose the right onboarding track before editing repo-local guides.",context:"Used inside the CLI MCP server."},io:{input:Q,output:U},policy:{auth:"anonymous"}}),async({example:Z,tracks:Y})=>{let V=await _({example:Z,tracks:Y});return{nextCommands:V.nextCommands,primaryTrack:V.primaryTrack.id,reason:V.recommendations[0]?.reason??V.primaryTrack.summary,tracks:V.recommendations.map((H)=>H.track.id)}}),h(j,I({meta:{key:"onboarding.renderArtifacts",version:"1.0.0",stability:"stable",owners:q,tags:w,description:"Render onboarding artifacts for the current repo.",goal:"Provide AGENTS.md or USAGE.md content without mutating the repo.",context:"Used inside the CLI MCP server."},io:{input:D({name:"OnboardingRenderArtifactInput",fields:{artifact:{type:K.String_unsecure(),isOptional:!1},example:{type:K.String_unsecure(),isOptional:!0},tracks:{type:K.String_unsecure(),isOptional:!0}}}),output:J},policy:{auth:"anonymous"}}),async({artifact:Z,example:Y,tracks:V})=>{let H=await _({example:Y,tracks:V});return{content:Z==="agent-guide"?H.guides.agentGuide:H.guides.humanGuide,primaryTrack:H.primaryTrack.id}}),h(j,I({meta:{key:"onboarding.nextCommand",version:"1.0.0",stability:"stable",owners:q,tags:w,description:"Return the next recommended CLI command for onboarding.",goal:"Help agents choose the next onboarding command without mutating the repo.",context:"Used inside the CLI MCP server."},io:{input:Q,output:X},policy:{auth:"anonymous"}}),async({example:Z,tracks:Y})=>{let V=await _({example:Z,tracks:Y});return{nextCommand:V.nextCommands[0]??"contractspec onboard",primaryTrack:V.primaryTrack.id}})}var u=["application/json","text/event-stream"];function Jj(j){return!j||j.includes("*/*")||j.includes("application/*")||u.some((Q)=>j.includes(Q))}function N(j){if(j.method!=="POST")return j;let Q=j.headers.get("accept");if(!Jj(Q))return j;let U=u.filter((X)=>!Q?.includes(X));if(U.length===0)return j;let J=new Headers(j.headers);return J.set("accept",[Q,...U].filter(Boolean).join(", ")),new Request(j,{headers:J})}import{createMcpServer as Vj}from"@contractspec/lib.contracts-runtime-server-mcp/provider-mcp";import{PresentationRegistry as Xj}from"@contractspec/lib.contracts-spec/presentations";import{McpServer as Zj}from"@modelcontextprotocol/sdk/server/mcp.js";import{WebStandardStreamableHTTPServerTransport as $j}from"@modelcontextprotocol/sdk/server/webStandardStreamableHttp.js";import{randomUUID as Fj}from"crypto";import{Elysia as Kj}from"elysia";var Hj={actor:"anonymous",decide:async()=>({effect:"allow"})};function y(j,Q,U,J){return new Response(JSON.stringify({jsonrpc:"2.0",error:{code:Q,message:U,...J?{data:J}:{}},id:null}),{status:j,headers:{"content-type":"application/json"}})}function c({logger:j,serverName:Q,ops:U,resources:J,prompts:X,presentations:Z,stateful:Y}){let V=new Zj({name:Q,version:"1.0.0"},{capabilities:{tools:{},resources:{},prompts:{},logging:{}}});j.info("Setting up MCP server..."),Vj(V,U,J,X,{logger:j,toolCtx:()=>Hj,promptCtx:()=>({locale:"en"}),resourceCtx:()=>({locale:"en"}),presentations:new Xj(Z)});let H=new $j({sessionIdGenerator:Y?()=>Fj():void 0,enableJsonResponse:!0});return V.connect(H).then(()=>({server:V,transport:H}))}async function f(j){await Promise.allSettled([j.transport.close(),j.server.close()])}function Wj(j){return j instanceof Error?j.stack??j.message:String(j)}function d({logger:j,path:Q,serverName:U,ops:J,resources:X,prompts:Z,presentations:Y,validateAuth:V,requiredAuthMethods:H}){j.info("Setting up MCP handler...",{requiredAuthMethods:H??[]});let l=process.env.CONTRACTSPEC_MCP_STATEFUL==="1",z=new Map;async function o($){let F=await c({logger:j,path:Q,serverName:U,ops:J,resources:X,prompts:Z,presentations:Y,stateful:!1});try{return await F.transport.handleRequest(N($))}finally{await f(F)}}async function t($){let F=z.get($);if(!F)return;z.delete($),await f(F)}async function a($){let F=$.headers.get("mcp-session-id"),P,R=!1;if(F){let x=z.get(F);if(!x)return y(404,-32001,"Session not found");P=x}else P=await c({logger:j,path:Q,serverName:U,ops:J,resources:X,prompts:Z,presentations:Y,stateful:!0}),R=!0;try{let x=await P.transport.handleRequest(N($)),B=P.transport.sessionId;if(B&&!z.has(B))z.set(B,P);if($.method==="DELETE"&&B)await t(B);else if(!B&&R)await f(P);return x}catch(x){if(R)await f(P);throw x}}return new Kj({name:`mcp-${U}`}).all(Q,async({request:$})=>{try{if(V){let F=await V($);if(!F.valid)return y(401,-32002,"Authentication failed",F.reason)}if(l)return await a($);return await o($)}catch(F){return j.error("Error handling MCP request",{path:Q,method:$.method,error:Wj(F)}),y(500,-32000,"Internal error")}})}import Pj from"node:fs/promises";import{defineCommand as wj,definePrompt as xj,defineResourceTemplate as i,installOp as Bj,OperationSpecRegistry as Mj,PromptRegistry as zj,ResourceRegistry as Dj}from"@contractspec/lib.contracts-spec";import{defineSchemaModel as n,ScalarTypeEnum as b}from"@contractspec/lib.schema";import G from"path";import M from"zod";var __dirname="/home/runner/work/contractspec/contractspec/packages/bundles/library/src/application/mcp",bj={quickstart:"packages/apps/cli-contractspec/QUICK_START.md",reference:"packages/apps/cli-contractspec/QUICK_REFERENCE.md",readme:"packages/apps/cli-contractspec/README.md"},Gj={quickstart:`# ContractSpec CLI quickstart
|
|
2
2
|
|
|
3
|
-
contractspec
|
|
4
|
-
contractspec
|
|
5
|
-
contractspec validate
|
|
3
|
+
contractspec quickstart
|
|
4
|
+
contractspec onboard
|
|
5
|
+
contractspec validate`,reference:`# ContractSpec CLI reference
|
|
6
6
|
|
|
7
|
-
Key commands: create,
|
|
7
|
+
Key commands: onboard, create, generate, validate. See README for full options.`,readme:`# ContractSpec CLI
|
|
8
8
|
|
|
9
|
-
Stabilize AI-generated code across API, DB, UI, events. Use create/
|
|
9
|
+
Stabilize AI-generated code across API, DB, UI, events. Use onboard/create/generate/validate commands.`},L=["cli","mcp"],p=["@contractspec"],qj=(()=>{let j=new Set([process.cwd(),G.resolve(process.cwd(),".."),G.resolve(process.cwd(),"../.."),G.resolve(process.cwd(),"../../..")]);if(typeof __dirname==="string")j.add(G.resolve(__dirname,"../../../../.."));return[...j]})(),E=new Map;async function _j(j){if(E.has(j))return E.get(j);let Q=bj[j];for(let J of qj){let X=G.resolve(J,Q);try{let Z=await Pj.readFile(X,"utf8");return E.set(j,Z),Z}catch{}}let U=Gj[j];return E.set(j,U),U}function fj(){let j=new Dj;return j.register(i({meta:{uriTemplate:"cli://doc/{slug}",title:"CLI documentation",description:"Quickstart, reference, and README for the CLI.",mimeType:"text/markdown",tags:L},input:M.object({slug:M.enum(["quickstart","reference","readme"])}),resolve:async({slug:Q})=>{let U=await _j(Q);return{uri:`cli://doc/${Q}`,mimeType:"text/markdown",data:U}}})),j.register(i({meta:{uriTemplate:"cli://commands",title:"CLI commands summary",description:"Key ContractSpec CLI commands and when to use them.",mimeType:"application/json",tags:L},input:M.object({}),resolve:async()=>{return{uri:"cli://commands",mimeType:"application/json",data:JSON.stringify([{command:"contractspec onboard",summary:"Generate repo-local AGENTS.md and USAGE.md guidance plus recommended tracks.",doc:"cli://doc/quickstart"},{command:"contractspec create",summary:"Interactive wizard to author specs (with optional AI).",doc:"cli://doc/quickstart"},{command:"contractspec build <specPath>",summary:"Generate implementation code from a ContractSpec (agents + templates).",doc:"cli://doc/reference"},{command:"contractspec validate <specPath>",summary:"Validate specs and optionally check implementations against them.",doc:"cli://doc/reference"}],null,2)}}})),S(j),j}function Ej(){let j=new zj;return j.register(xj({meta:{key:"cli.usage",version:"1.0.0",title:"Use ContractSpec CLI safely",description:"Remind agents to read CLI docs and pick commands from the canonical list.",tags:L,stability:"beta",owners:p},args:[{name:"goal",description:"Task the user wants to achieve.",required:!1,schema:M.string().optional()}],input:M.object({goal:M.string().optional()}),render:async({goal:Q})=>[{type:"text",text:`Use CLI commands only from cli://commands. Prefer quickstart for newcomers and reference for options.${Q?` Goal: ${Q}.`:""}`},{type:"resource",uri:"cli://commands",title:"Commands"},{type:"resource",uri:"cli://doc/quickstart",title:"Quickstart"}]})),m(j),j}function Lj(){let j=new Mj,Q=n({name:"CliSuggestInput",fields:{goal:{type:b.String_unsecure(),isOptional:!1},prefersAi:{type:b.Boolean(),isOptional:!0}}}),U=n({name:"CliSuggestOutput",fields:{command:{type:b.String_unsecure(),isOptional:!1},docUri:{type:b.String_unsecure(),isOptional:!1},reason:{type:b.String_unsecure(),isOptional:!1}}}),J=wj({meta:{key:"cli_suggestCommand",version:"1.0.0",stability:"stable",owners:p,tags:L,description:"Recommend a CLI command for the requested goal.",goal:"Help AI agents choose the correct CLI entrypoint quickly.",context:"Used inside the CLI MCP server."},io:{input:Q,output:U},policy:{auth:"anonymous"}});return Bj(j,J,async({goal:X,prefersAi:Z})=>{let Y=X.toLowerCase();if(Y.includes("onboard")||Y.includes("start")||Y.includes("guide")||Y.includes("install"))return{command:"contractspec onboard",docUri:"cli://doc/quickstart",reason:"Starts the CLI-first onboarding flow for the current repo."};if(Y.includes("create")||Y.includes("new"))return{command:Z?"contractspec create --ai":"contractspec create",docUri:"cli://doc/quickstart",reason:"Creates a new ContractSpec interactively (optionally with AI)."};if(Y.includes("build")||Y.includes("generate"))return{command:"contractspec build <path-to-spec>",docUri:"cli://doc/reference",reason:"Builds implementation code from a spec using agents + templates."};if(Y.includes("validate")||Y.includes("check"))return{command:"contractspec validate <path-to-spec>",docUri:"cli://doc/reference",reason:"Validates a spec and optionally checks its implementation for drift."};return{command:"contractspec --help",docUri:"cli://doc/readme",reason:"Fallback when the goal is unclear; read README for options."}}),g(j),j}function UQ(j="/api/mcp/cli"){return d({logger:O,path:j,serverName:"contractspec-cli-mcp",ops:Lj(),resources:fj(),prompts:Ej()})}export{UQ as createCliMcpHandler};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var P=Object.defineProperty;var h=(j)=>j;function b(j,q){this[j]=h.bind(null,q)}var D=(j,q)=>{for(var H in q)P(j,H,{get:q[H],enumerable:!0,configurable:!0,set:b.bind(q,H)})};var _=(j,q)=>()=>(j&&(q=j(j=0)),q);import{createNodeAdapters as x,onboarding as M}from"@contractspec/bundle.workspace";import{defineCommand as $,definePrompt as z,defineResourceTemplate as C,installOp as W}from"@contractspec/lib.contracts-spec";import{defineSchemaModel as U,ScalarTypeEnum as v}from"@contractspec/lib.schema";import F from"zod";var J=["cli","mcp","onboarding"],X=["@contractspec"];function B(j){return j?.split(",").map((q)=>q.trim()).filter(Boolean)}async function Y(j={}){let q=x({cwd:process.cwd(),silent:!0});return M.buildOnboardingPlan(q,{forcedExampleKey:j.example,selectedTracks:B(j.tracks)})}function y(j){j.register(C({meta:{uriTemplate:"onboarding://tracks",title:"Onboarding tracks",description:"Primary ContractSpec onboarding tracks exposed by the CLI.",mimeType:"application/json",tags:J},input:F.object({}),resolve:async()=>({uri:"onboarding://tracks",mimeType:"application/json",data:JSON.stringify(M.listOnboardingTracks(),null,2)})})),j.register(C({meta:{uriTemplate:"onboarding://track/{id}",title:"Onboarding track",description:"Track-specific onboarding metadata and recommended commands.",mimeType:"application/json",tags:J},input:F.object({id:F.string()}),resolve:async({id:q})=>({uri:`onboarding://track/${q}`,mimeType:"application/json",data:JSON.stringify(M.getOnboardingTrack(q)??null,null,2)})})),j.register(C({meta:{uriTemplate:"onboarding://artifacts/{id}{?tracks,example}",title:"Rendered onboarding artifact",description:"Render AGENTS.md or USAGE.md content for the current repo.",mimeType:"text/markdown",tags:J},input:F.object({example:F.string().optional(),id:F.enum(["agent-guide","human-guide"]),tracks:F.string().optional()}),resolve:async({example:q,id:H,tracks:Z})=>{let V=await Y({example:q,tracks:Z});return{uri:`onboarding://artifacts/${H}`,mimeType:"text/markdown",data:H==="agent-guide"?V.guides.agentGuide:V.guides.humanGuide}}}))}function R(j){j.register(z({meta:{key:"cli.onboarding",version:"1.0.0",title:"Plan a ContractSpec onboarding flow",description:"Suggest the right onboarding track and artifacts for a repo.",tags:J,stability:"beta",owners:X},args:[{name:"goal",description:"Repository onboarding goal or focus area.",required:!1,schema:F.string().optional()}],input:F.object({goal:F.string().optional()}),render:async({goal:q})=>[{type:"text",text:`Use onboarding://tracks and onboarding_suggestTracks-v1_0_0 before recommending repo-local ContractSpec adoption steps.${q?` Goal: ${q}.`:""}`},{type:"resource",uri:"onboarding://tracks",title:"Tracks"}]}))}function A(j){let q=U({name:"OnboardingSuggestTracksInput",fields:{example:{type:v.String_unsecure(),isOptional:!0},tracks:{type:v.String_unsecure(),isOptional:!0}}}),H=U({name:"OnboardingSuggestTracksOutput",fields:{nextCommands:{type:v.String_unsecure(),isArray:!0,isOptional:!1},primaryTrack:{type:v.String_unsecure(),isOptional:!1},reason:{type:v.String_unsecure(),isOptional:!1},tracks:{type:v.String_unsecure(),isArray:!0,isOptional:!1}}}),Z=U({name:"OnboardingRenderArtifactOutput",fields:{content:{type:v.String_unsecure(),isOptional:!1},primaryTrack:{type:v.String_unsecure(),isOptional:!1}}}),V=U({name:"OnboardingNextCommandOutput",fields:{nextCommand:{type:v.String_unsecure(),isOptional:!1},primaryTrack:{type:v.String_unsecure(),isOptional:!1}}});W(j,$({meta:{key:"onboarding.suggestTracks",version:"1.0.0",stability:"stable",owners:X,tags:J,description:"Suggest the recommended ContractSpec onboarding tracks.",goal:"Help agents choose the right onboarding track before editing repo-local guides.",context:"Used inside the CLI MCP server."},io:{input:q,output:H},policy:{auth:"anonymous"}}),async({example:K,tracks:L})=>{let w=await Y({example:K,tracks:L});return{nextCommands:w.nextCommands,primaryTrack:w.primaryTrack.id,reason:w.recommendations[0]?.reason??w.primaryTrack.summary,tracks:w.recommendations.map((Q)=>Q.track.id)}}),W(j,$({meta:{key:"onboarding.renderArtifacts",version:"1.0.0",stability:"stable",owners:X,tags:J,description:"Render onboarding artifacts for the current repo.",goal:"Provide AGENTS.md or USAGE.md content without mutating the repo.",context:"Used inside the CLI MCP server."},io:{input:U({name:"OnboardingRenderArtifactInput",fields:{artifact:{type:v.String_unsecure(),isOptional:!1},example:{type:v.String_unsecure(),isOptional:!0},tracks:{type:v.String_unsecure(),isOptional:!0}}}),output:Z},policy:{auth:"anonymous"}}),async({artifact:K,example:L,tracks:w})=>{let Q=await Y({example:L,tracks:w});return{content:K==="agent-guide"?Q.guides.agentGuide:Q.guides.humanGuide,primaryTrack:Q.primaryTrack.id}}),W(j,$({meta:{key:"onboarding.nextCommand",version:"1.0.0",stability:"stable",owners:X,tags:J,description:"Return the next recommended CLI command for onboarding.",goal:"Help agents choose the next onboarding command without mutating the repo.",context:"Used inside the CLI MCP server."},io:{input:q,output:V},policy:{auth:"anonymous"}}),async({example:K,tracks:L})=>{let w=await Y({example:K,tracks:L});return{nextCommand:w.nextCommands[0]??"contractspec onboard",primaryTrack:w.primaryTrack.id}})}export{y as registerCliOnboardingResources,R as registerCliOnboardingPrompts,A as registerCliOnboardingOps};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
var G=["application/json","text/event-stream"];function
|
|
1
|
+
var Z=Object.defineProperty;var $=(f)=>f;function x(f,E){this[f]=$.bind(null,E)}var I=(f,E)=>{for(var R in E)Z(f,R,{get:E[R],enumerable:!0,configurable:!0,set:x.bind(E,R)})};var l=(f,E)=>()=>(f&&(E=f(f=0)),E);var G=["application/json","text/event-stream"];function H(f){return!f||f.includes("*/*")||f.includes("application/*")||G.some((E)=>f.includes(E))}function k(f){if(f.method!=="POST")return f;let E=f.headers.get("accept");if(!H(E))return f;let R=G.filter((_)=>!E?.includes(_));if(R.length===0)return f;let z=new Headers(f.headers);return z.set("accept",[E,...R].filter(Boolean).join(", ")),new Request(f,{headers:z})}import{createMcpServer as W}from"@contractspec/lib.contracts-runtime-server-mcp/provider-mcp";import{PresentationRegistry as c}from"@contractspec/lib.contracts-spec/presentations";import{McpServer as M}from"@modelcontextprotocol/sdk/server/mcp.js";import{WebStandardStreamableHTTPServerTransport as b}from"@modelcontextprotocol/sdk/server/webStandardStreamableHttp.js";import{randomUUID as A}from"crypto";import{Elysia as N}from"elysia";var n={actor:"anonymous",decide:async()=>({effect:"allow"})};function F(f,E,R,z){return new Response(JSON.stringify({jsonrpc:"2.0",error:{code:E,message:R,...z?{data:z}:{}},id:null}),{status:f,headers:{"content-type":"application/json"}})}function J({logger:f,serverName:E,ops:R,resources:z,prompts:_,presentations:O,stateful:Q}){let y=new M({name:E,version:"1.0.0"},{capabilities:{tools:{},resources:{},prompts:{},logging:{}}});f.info("Setting up MCP server..."),W(y,R,z,_,{logger:f,toolCtx:()=>n,promptCtx:()=>({locale:"en"}),resourceCtx:()=>({locale:"en"}),presentations:new c(O)});let T=new b({sessionIdGenerator:Q?()=>A():void 0,enableJsonResponse:!0});return y.connect(T).then(()=>({server:y,transport:T}))}async function U(f){await Promise.allSettled([f.transport.close(),f.server.close()])}function m(f){return f instanceof Error?f.stack??f.message:String(f)}function o({logger:f,path:E,serverName:R,ops:z,resources:_,prompts:O,presentations:Q,validateAuth:y,requiredAuthMethods:T}){f.info("Setting up MCP handler...",{requiredAuthMethods:T??[]});let K=process.env.CONTRACTSPEC_MCP_STATEFUL==="1",D=new Map;async function L(j){let w=await J({logger:f,path:E,serverName:R,ops:z,resources:_,prompts:O,presentations:Q,stateful:!1});try{return await w.transport.handleRequest(k(j))}finally{await U(w)}}async function V(j){let w=D.get(j);if(!w)return;D.delete(j),await U(w)}async function X(j){let w=j.headers.get("mcp-session-id"),P,Y=!1;if(w){let B=D.get(w);if(!B)return F(404,-32001,"Session not found");P=B}else P=await J({logger:f,path:E,serverName:R,ops:z,resources:_,prompts:O,presentations:Q,stateful:!0}),Y=!0;try{let B=await P.transport.handleRequest(k(j)),C=P.transport.sessionId;if(C&&!D.has(C))D.set(C,P);if(j.method==="DELETE"&&C)await V(C);else if(!C&&Y)await U(P);return B}catch(B){if(Y)await U(P);throw B}}return new N({name:`mcp-${R}`}).all(E,async({request:j})=>{try{if(y){let w=await y(j);if(!w.valid)return F(401,-32002,"Authentication failed",w.reason)}if(K)return await X(j);return await L(j)}catch(w){return f.error("Error handling MCP request",{path:E,method:j.method,error:m(w)}),F(500,-32000,"Internal error")}})}export{o as createMcpElysiaHandler};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{Logger as
|
|
2
|
-
`)},{type:"resource",uri:"contracts://list",title:"Available contracts"}]})),j}import{defineCommand as z,installOp as
|
|
1
|
+
var a=Object.defineProperty;var t=(j)=>j;function r(j,_){this[j]=t.bind(null,_)}var Dj=(j,_)=>{for(var w in _)a(j,w,{get:_[w],enumerable:!0,configurable:!0,set:r.bind(_,w)})};var Pj=(j,_)=>()=>(j&&(_=j(j=0)),_);import{Logger as O,LogLevel as E}from"@contractspec/lib.logger";function f(){return"production"}var s=()=>new O({level:E.INFO,environment:f(),enableTracing:!0,enableTiming:!0,enableContext:!0,enableColors:!1}),d=s(),Vj=new O({level:E.WARN,environment:f(),enableTracing:!0,enableTiming:!0,enableContext:!0,enableColors:!1}),zj=new O({level:E.INFO,environment:f(),enableTracing:!0,enableTiming:!0,enableContext:!0,enableColors:!1});var m=["application/json","text/event-stream"];function e(j){return!j||j.includes("*/*")||j.includes("application/*")||m.some((_)=>j.includes(_))}function T(j){if(j.method!=="POST")return j;let _=j.headers.get("accept");if(!e(_))return j;let w=m.filter((Z)=>!_?.includes(Z));if(w.length===0)return j;let Y=new Headers(j.headers);return Y.set("accept",[_,...w].filter(Boolean).join(", ")),new Request(j,{headers:Y})}import{createMcpServer as jj}from"@contractspec/lib.contracts-runtime-server-mcp/provider-mcp";import{PresentationRegistry as _j}from"@contractspec/lib.contracts-spec/presentations";import{McpServer as wj}from"@modelcontextprotocol/sdk/server/mcp.js";import{WebStandardStreamableHTTPServerTransport as Qj}from"@modelcontextprotocol/sdk/server/webStandardStreamableHttp.js";import{randomUUID as Yj}from"crypto";import{Elysia as kj}from"elysia";var Fj={actor:"anonymous",decide:async()=>({effect:"allow"})};function h(j,_,w,Y){return new Response(JSON.stringify({jsonrpc:"2.0",error:{code:_,message:w,...Y?{data:Y}:{}},id:null}),{status:j,headers:{"content-type":"application/json"}})}function u({logger:j,serverName:_,ops:w,resources:Y,prompts:Z,presentations:D,stateful:$}){let F=new wj({name:_,version:"1.0.0"},{capabilities:{tools:{},resources:{},prompts:{},logging:{}}});j.info("Setting up MCP server..."),jj(F,w,Y,Z,{logger:j,toolCtx:()=>Fj,promptCtx:()=>({locale:"en"}),resourceCtx:()=>({locale:"en"}),presentations:new _j(D)});let J=new Qj({sessionIdGenerator:$?()=>Yj():void 0,enableJsonResponse:!0});return F.connect(J).then(()=>({server:F,transport:J}))}async function M(j){await Promise.allSettled([j.transport.close(),j.server.close()])}function Jj(j){return j instanceof Error?j.stack??j.message:String(j)}function l({logger:j,path:_,serverName:w,ops:Y,resources:Z,prompts:D,presentations:$,validateAuth:F,requiredAuthMethods:J}){j.info("Setting up MCP handler...",{requiredAuthMethods:J??[]});let H=process.env.CONTRACTSPEC_MCP_STATEFUL==="1",k=new Map;async function P(K){let X=await u({logger:j,path:_,serverName:w,ops:Y,resources:Z,prompts:D,presentations:$,stateful:!1});try{return await X.transport.handleRequest(T(K))}finally{await M(X)}}async function z(K){let X=k.get(K);if(!X)return;k.delete(K),await M(X)}async function o(K){let X=K.headers.get("mcp-session-id"),V,q=!1;if(X){let C=k.get(X);if(!C)return h(404,-32001,"Session not found");V=C}else V=await u({logger:j,path:_,serverName:w,ops:Y,resources:Z,prompts:D,presentations:$,stateful:!0}),q=!0;try{let C=await V.transport.handleRequest(T(K)),W=V.transport.sessionId;if(W&&!k.has(W))k.set(W,V);if(K.method==="DELETE"&&W)await z(W);else if(!W&&q)await M(V);return C}catch(C){if(q)await M(V);throw C}}return new kj({name:`mcp-${w}`}).all(_,async({request:K})=>{try{if(F){let X=await F(K);if(!X.valid)return h(401,-32002,"Authentication failed",X.reason)}if(H)return await o(K);return await P(K)}catch(X){return j.error("Error handling MCP request",{path:_,method:K.method,error:Jj(X)}),h(500,-32000,"Internal error")}})}import{definePrompt as Kj,defineResourceTemplate as A,PromptRegistry as Xj,ResourceRegistry as Zj}from"@contractspec/lib.contracts-spec";import U from"zod";var $j=["@contractspec"],b=["contracts","mcp"];function n(j){let _=new Zj;return _.register(A({meta:{uriTemplate:"contracts://list",title:"Contract specs list",description:"JSON list of all contract specs in the workspace.",mimeType:"application/json",tags:b},input:U.object({}),resolve:async()=>{let w=await j.listSpecs();return{uri:"contracts://list",mimeType:"application/json",data:JSON.stringify(w,null,2)}}})),_.register(A({meta:{uriTemplate:"contracts://spec/{path}",title:"Contract spec content",description:"Read a single contract spec file by path.",mimeType:"text/plain",tags:b},input:U.object({path:U.string()}),resolve:async({path:w})=>{let Y=await j.getSpec(w);if(!Y)return{uri:`contracts://spec/${encodeURIComponent(w)}`,mimeType:"text/plain",data:`Spec not found: ${w}`};return{uri:`contracts://spec/${encodeURIComponent(w)}`,mimeType:"text/plain",data:Y.content}}})),_.register(A({meta:{uriTemplate:"contracts://registry/manifest",title:"Remote registry manifest",description:"Contract registry manifest from the remote server.",mimeType:"application/json",tags:b},input:U.object({}),resolve:async()=>{let w=await j.fetchRegistryManifest();return{uri:"contracts://registry/manifest",mimeType:"application/json",data:JSON.stringify(w,null,2)}}})),_.register(A({meta:{uriTemplate:"adoption://catalog",title:"ContractSpec adoption catalog",description:"Bundled ContractSpec adoption catalog used by Connect and MCP.",mimeType:"application/json",tags:b},input:U.object({}),resolve:async()=>{let w=await j.searchAdoptionCatalog({query:"contractspec"});return{uri:"adoption://catalog",mimeType:"application/json",data:JSON.stringify(w,null,2)}}})),_.register(A({meta:{uriTemplate:"adoption://policy/{family}",title:"ContractSpec adoption policy",description:"Family-aware adoption recommendation and verdict policy.",mimeType:"application/json",tags:b},input:U.object({family:U.string()}),resolve:async({family:w})=>{let Y=await j.resolveAdoption({family:w,query:w});return{uri:`adoption://policy/${encodeURIComponent(w)}`,mimeType:"application/json",data:JSON.stringify(Y,null,2)}}})),_}function c(){let j=new Xj;return j.register(Kj({meta:{key:"contracts.editor",version:"1.0.0",title:"Contract editing guide",description:"Guide AI agents through reading, editing, and validating contracts.",tags:b,stability:"beta",owners:$j},args:[{name:"goal",description:"What the agent wants to achieve with the contract.",required:!1,schema:U.string().optional()}],input:U.object({goal:U.string().optional()}),render:async({goal:_})=>[{type:"text",text:["Contract editing workflow:","1. Use contracts.list to discover specs","2. Use contracts.get to read a spec","3. Edit content and call contracts.update","4. Run contracts.validate to verify changes","5. Run contracts.build to regenerate artifacts","6. Use adoption.resolve to prefer existing workspace or ContractSpec surfaces before inventing new ones",_?`Agent goal: ${_}`:""].filter(Boolean).join(`
|
|
2
|
+
`)},{type:"resource",uri:"contracts://list",title:"Available contracts"}]})),j}import{defineCommand as v,installOp as g}from"@contractspec/lib.contracts-spec";import{defineSchemaModel as G,ScalarTypeEnum as x}from"@contractspec/lib.schema";var y=["@contractspec"],S=["contracts","mcp","adoption"];function i(j,_){let w=G({name:"AdoptionCatalogSearchInput",fields:{query:{type:x.String_unsecure(),isOptional:!1},family:{type:x.String_unsecure(),isOptional:!0},platform:{type:x.String_unsecure(),isOptional:!0}}}),Y=G({name:"AdoptionCatalogSearchOutput",fields:{results:{type:x.JSON(),isOptional:!1}}});g(j,v({meta:{key:"adoption.catalog_search",version:"1.0.0",stability:"beta",owners:y,tags:S,description:"Search the local ContractSpec adoption catalog.",goal:"Find relevant ContractSpec reuse candidates for a query.",context:"Contracts MCP server."},io:{input:w,output:Y},policy:{auth:"anonymous"}}),async({family:J,platform:H,query:k})=>({results:await _.searchAdoptionCatalog({family:J,platform:H,query:k})}));let Z=G({name:"AdoptionResolveInput",fields:{family:{type:x.String_unsecure(),isOptional:!1},query:{type:x.String_unsecure(),isOptional:!1},paths:{type:x.JSON(),isOptional:!0},platform:{type:x.String_unsecure(),isOptional:!0},runtime:{type:x.String_unsecure(),isOptional:!0}}}),D=G({name:"AdoptionResolveOutput",fields:{resolution:{type:x.JSON(),isOptional:!1}}});g(j,v({meta:{key:"adoption.resolve",version:"1.0.0",stability:"beta",owners:y,tags:S,description:"Resolve the best adoption candidate for one family.",goal:"Provide one ordered recommendation that matches Connect.",context:"Contracts MCP server."},io:{input:Z,output:D},policy:{auth:"anonymous"}}),async({family:J,paths:H,platform:k,query:P,runtime:z})=>({resolution:await _.resolveAdoption({family:J,paths:Array.isArray(H)?H:void 0,platform:k,query:P,runtime:z})}));let $=G({name:"AdoptionSyncInput",fields:{}}),F=G({name:"AdoptionSyncOutput",fields:{catalogPath:{type:x.String_unsecure(),isOptional:!1},total:{type:x.Int_unsecure(),isOptional:!1}}});g(j,v({meta:{key:"adoption.sync",version:"1.0.0",stability:"beta",owners:y,tags:S,description:"Mirror the bundled ContractSpec adoption catalog locally.",goal:"Refresh the local adoption catalog used by Connect and MCP.",context:"Contracts MCP server."},io:{input:$,output:F},policy:{auth:"user"}}),async()=>_.syncAdoptionCatalog())}import{defineCommand as L,installOp as I,OperationSpecRegistry as xj}from"@contractspec/lib.contracts-spec";import{defineSchemaModel as B,ScalarTypeEnum as Q}from"@contractspec/lib.schema";var N=["@contractspec"],R=["contracts","mcp"];function p(j){let _=new xj,w=B({name:"ContractsListInput",fields:{pattern:{type:Q.String_unsecure(),isOptional:!0},type:{type:Q.String_unsecure(),isOptional:!0}}}),Y=B({name:"ContractsListOutput",fields:{specs:{type:Q.JSON(),isOptional:!1},total:{type:Q.Int_unsecure(),isOptional:!1}}});I(_,L({meta:{key:"contracts.list",version:"1.0.0",stability:"beta",owners:N,tags:R,description:"List contract specs in the workspace.",goal:"Discover available contracts by type, pattern, or owner.",context:"Contracts MCP server."},io:{input:w,output:Y},policy:{auth:"anonymous"}}),async({pattern:k,type:P})=>{let z=await j.listSpecs({pattern:k,type:P});return{specs:z,total:z.length}});let Z=B({name:"ContractsGetInput",fields:{path:{type:Q.String_unsecure(),isOptional:!1}}}),D=B({name:"ContractsGetOutput",fields:{content:{type:Q.String_unsecure(),isOptional:!1},info:{type:Q.JSON(),isOptional:!1}}});I(_,L({meta:{key:"contracts.get",version:"1.0.0",stability:"beta",owners:N,tags:R,description:"Read a single contract spec file.",goal:"Fetch spec content and parsed metadata.",context:"Contracts MCP server."},io:{input:Z,output:D},policy:{auth:"anonymous"}}),async({path:k})=>{let P=await j.getSpec(k);if(!P)throw Error(`Spec not found: ${k}`);return P});let $=B({name:"ContractsValidateInput",fields:{path:{type:Q.String_unsecure(),isOptional:!1}}}),F=B({name:"ContractsValidateOutput",fields:{valid:{type:Q.Boolean(),isOptional:!1},errors:{type:Q.JSON(),isOptional:!1},warnings:{type:Q.JSON(),isOptional:!1}}});I(_,L({meta:{key:"contracts.validate",version:"1.0.0",stability:"beta",owners:N,tags:R,description:"Validate a contract spec structure.",goal:"Check spec for structural or policy issues.",context:"Contracts MCP server."},io:{input:$,output:F},policy:{auth:"anonymous"}}),async({path:k})=>j.validateSpec(k));let J=B({name:"ContractsBuildInput",fields:{path:{type:Q.String_unsecure(),isOptional:!1},dryRun:{type:Q.Boolean(),isOptional:!0}}}),H=B({name:"ContractsBuildOutput",fields:{results:{type:Q.JSON(),isOptional:!1}}});return I(_,L({meta:{key:"contracts.build",version:"1.0.0",stability:"beta",owners:N,tags:R,description:"Generate implementation code from a contract spec.",goal:"Produce handler, component, or test skeletons.",context:"Contracts MCP server."},io:{input:J,output:H},policy:{auth:"user"}}),async({path:k,dryRun:P})=>j.buildSpec(k,{dryRun:P})),Bj(_,j),i(_,j),_}function Bj(j,_){let w=B({name:"ContractsUpdateInput",fields:{path:{type:Q.String_unsecure(),isOptional:!1},content:{type:Q.String_unsecure(),isOptional:!0},fields:{type:Q.JSON(),isOptional:!0}}}),Y=B({name:"ContractsUpdateOutput",fields:{updated:{type:Q.Boolean(),isOptional:!1},errors:{type:Q.JSON(),isOptional:!1},warnings:{type:Q.JSON(),isOptional:!1}}});I(j,L({meta:{key:"contracts.update",version:"1.0.0",stability:"beta",owners:N,tags:R,description:"Update an existing contract spec.",goal:"Modify spec content or individual fields with validation.",context:"Contracts MCP server."},io:{input:w,output:Y},policy:{auth:"user"}}),async({path:$,content:F,fields:J})=>_.updateSpec($,{content:F,fields:Array.isArray(J)?J:void 0}));let Z=B({name:"ContractsDeleteInput",fields:{path:{type:Q.String_unsecure(),isOptional:!1},clean:{type:Q.Boolean(),isOptional:!0}}}),D=B({name:"ContractsDeleteOutput",fields:{deleted:{type:Q.Boolean(),isOptional:!1},cleanedFiles:{type:Q.JSON(),isOptional:!1},errors:{type:Q.JSON(),isOptional:!1}}});I(j,L({meta:{key:"contracts.delete",version:"1.0.0",stability:"beta",owners:N,tags:R,description:"Delete a contract spec and optionally its artifacts.",goal:"Remove a spec file and clean generated handlers/tests.",context:"Contracts MCP server."},io:{input:Z,output:D},policy:{auth:"user"}}),async({path:$,clean:F})=>_.deleteSpec($,{clean:F}))}function nj(j="/api/mcp/contracts",_){return l({logger:d,path:j,serverName:"contractspec-contracts-mcp",ops:p(_),resources:n(_),prompts:c()})}export{nj as createContractsMcpHandler};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var _=Object.defineProperty;var $=(j)=>j;function b(j,k){this[j]=$.bind(null,k)}var A=(j,k)=>{for(var z in k)_(j,z,{get:k[z],enumerable:!0,configurable:!0,set:b.bind(k,z)})};var C=(j,k)=>()=>(j&&(k=j(j=0)),k);import{defineCommand as H,installOp as J}from"@contractspec/lib.contracts-spec";import{defineSchemaModel as x,ScalarTypeEnum as w}from"@contractspec/lib.schema";var K=["@contractspec"],L=["contracts","mcp","adoption"];function W(j,k){let z=x({name:"AdoptionCatalogSearchInput",fields:{query:{type:w.String_unsecure(),isOptional:!1},family:{type:w.String_unsecure(),isOptional:!0},platform:{type:w.String_unsecure(),isOptional:!0}}}),P=x({name:"AdoptionCatalogSearchOutput",fields:{results:{type:w.JSON(),isOptional:!1}}});J(j,H({meta:{key:"adoption.catalog_search",version:"1.0.0",stability:"beta",owners:K,tags:L,description:"Search the local ContractSpec adoption catalog.",goal:"Find relevant ContractSpec reuse candidates for a query.",context:"Contracts MCP server."},io:{input:z,output:P},policy:{auth:"anonymous"}}),async({family:D,platform:B,query:F})=>({results:await k.searchAdoptionCatalog({family:D,platform:B,query:F})}));let Q=x({name:"AdoptionResolveInput",fields:{family:{type:w.String_unsecure(),isOptional:!1},query:{type:w.String_unsecure(),isOptional:!1},paths:{type:w.JSON(),isOptional:!0},platform:{type:w.String_unsecure(),isOptional:!0},runtime:{type:w.String_unsecure(),isOptional:!0}}}),U=x({name:"AdoptionResolveOutput",fields:{resolution:{type:w.JSON(),isOptional:!1}}});J(j,H({meta:{key:"adoption.resolve",version:"1.0.0",stability:"beta",owners:K,tags:L,description:"Resolve the best adoption candidate for one family.",goal:"Provide one ordered recommendation that matches Connect.",context:"Contracts MCP server."},io:{input:Q,output:U},policy:{auth:"anonymous"}}),async({family:D,paths:B,platform:F,query:Y,runtime:Z})=>({resolution:await k.resolveAdoption({family:D,paths:Array.isArray(B)?B:void 0,platform:F,query:Y,runtime:Z})}));let V=x({name:"AdoptionSyncInput",fields:{}}),X=x({name:"AdoptionSyncOutput",fields:{catalogPath:{type:w.String_unsecure(),isOptional:!1},total:{type:w.Int_unsecure(),isOptional:!1}}});J(j,H({meta:{key:"adoption.sync",version:"1.0.0",stability:"beta",owners:K,tags:L,description:"Mirror the bundled ContractSpec adoption catalog locally.",goal:"Refresh the local adoption catalog used by Connect and MCP.",context:"Contracts MCP server."},io:{input:V,output:X},policy:{auth:"user"}}),async()=>k.syncAdoptionCatalog())}export{W as registerAdoptionOps};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{definePrompt as
|
|
2
|
-
`)},{type:"resource",uri:"contracts://list",title:"Available contracts"}]})),
|
|
1
|
+
var D=Object.defineProperty;var F=(j)=>j;function H(j,k){this[j]=F.bind(null,k)}var M=(j,k)=>{for(var q in k)D(j,q,{get:k[q],enumerable:!0,configurable:!0,set:H.bind(k,q)})};var Q=(j,k)=>()=>(j&&(k=j(j=0)),k);import{definePrompt as I,defineResourceTemplate as B,PromptRegistry as J,ResourceRegistry as K}from"@contractspec/lib.contracts-spec";import w from"zod";var L=["@contractspec"],x=["contracts","mcp"];function Y(j){let k=new K;return k.register(B({meta:{uriTemplate:"contracts://list",title:"Contract specs list",description:"JSON list of all contract specs in the workspace.",mimeType:"application/json",tags:x},input:w.object({}),resolve:async()=>{let q=await j.listSpecs();return{uri:"contracts://list",mimeType:"application/json",data:JSON.stringify(q,null,2)}}})),k.register(B({meta:{uriTemplate:"contracts://spec/{path}",title:"Contract spec content",description:"Read a single contract spec file by path.",mimeType:"text/plain",tags:x},input:w.object({path:w.string()}),resolve:async({path:q})=>{let C=await j.getSpec(q);if(!C)return{uri:`contracts://spec/${encodeURIComponent(q)}`,mimeType:"text/plain",data:`Spec not found: ${q}`};return{uri:`contracts://spec/${encodeURIComponent(q)}`,mimeType:"text/plain",data:C.content}}})),k.register(B({meta:{uriTemplate:"contracts://registry/manifest",title:"Remote registry manifest",description:"Contract registry manifest from the remote server.",mimeType:"application/json",tags:x},input:w.object({}),resolve:async()=>{let q=await j.fetchRegistryManifest();return{uri:"contracts://registry/manifest",mimeType:"application/json",data:JSON.stringify(q,null,2)}}})),k.register(B({meta:{uriTemplate:"adoption://catalog",title:"ContractSpec adoption catalog",description:"Bundled ContractSpec adoption catalog used by Connect and MCP.",mimeType:"application/json",tags:x},input:w.object({}),resolve:async()=>{let q=await j.searchAdoptionCatalog({query:"contractspec"});return{uri:"adoption://catalog",mimeType:"application/json",data:JSON.stringify(q,null,2)}}})),k.register(B({meta:{uriTemplate:"adoption://policy/{family}",title:"ContractSpec adoption policy",description:"Family-aware adoption recommendation and verdict policy.",mimeType:"application/json",tags:x},input:w.object({family:w.string()}),resolve:async({family:q})=>{let C=await j.resolveAdoption({family:q,query:q});return{uri:`adoption://policy/${encodeURIComponent(q)}`,mimeType:"application/json",data:JSON.stringify(C,null,2)}}})),k}function Z(){let j=new J;return j.register(I({meta:{key:"contracts.editor",version:"1.0.0",title:"Contract editing guide",description:"Guide AI agents through reading, editing, and validating contracts.",tags:x,stability:"beta",owners:L},args:[{name:"goal",description:"What the agent wants to achieve with the contract.",required:!1,schema:w.string().optional()}],input:w.object({goal:w.string().optional()}),render:async({goal:k})=>[{type:"text",text:["Contract editing workflow:","1. Use contracts.list to discover specs","2. Use contracts.get to read a spec","3. Edit content and call contracts.update","4. Run contracts.validate to verify changes","5. Run contracts.build to regenerate artifacts","6. Use adoption.resolve to prefer existing workspace or ContractSpec surfaces before inventing new ones",k?`Agent goal: ${k}`:""].filter(Boolean).join(`
|
|
2
|
+
`)},{type:"resource",uri:"contracts://list",title:"Available contracts"}]})),j}export{Y as buildContractsResources,Z as buildContractsPrompts};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{defineCommand as
|
|
1
|
+
var W=Object.defineProperty;var A=(k)=>k;function G(k,w){this[k]=A.bind(null,w)}var M=(k,w)=>{for(var H in w)W(k,H,{get:w[H],enumerable:!0,configurable:!0,set:G.bind(w,H)})};var v=(k,w)=>()=>(k&&(w=k(k=0)),w);import{defineCommand as b,installOp as q}from"@contractspec/lib.contracts-spec";import{defineSchemaModel as Y,ScalarTypeEnum as z}from"@contractspec/lib.schema";var C=["@contractspec"],I=["contracts","mcp","adoption"];function N(k,w){let H=Y({name:"AdoptionCatalogSearchInput",fields:{query:{type:z.String_unsecure(),isOptional:!1},family:{type:z.String_unsecure(),isOptional:!0},platform:{type:z.String_unsecure(),isOptional:!0}}}),D=Y({name:"AdoptionCatalogSearchOutput",fields:{results:{type:z.JSON(),isOptional:!1}}});q(k,b({meta:{key:"adoption.catalog_search",version:"1.0.0",stability:"beta",owners:C,tags:I,description:"Search the local ContractSpec adoption catalog.",goal:"Find relevant ContractSpec reuse candidates for a query.",context:"Contracts MCP server."},io:{input:H,output:D},policy:{auth:"anonymous"}}),async({family:J,platform:X,query:x})=>({results:await w.searchAdoptionCatalog({family:J,platform:X,query:x})}));let L=Y({name:"AdoptionResolveInput",fields:{family:{type:z.String_unsecure(),isOptional:!1},query:{type:z.String_unsecure(),isOptional:!1},paths:{type:z.JSON(),isOptional:!0},platform:{type:z.String_unsecure(),isOptional:!0},runtime:{type:z.String_unsecure(),isOptional:!0}}}),U=Y({name:"AdoptionResolveOutput",fields:{resolution:{type:z.JSON(),isOptional:!1}}});q(k,b({meta:{key:"adoption.resolve",version:"1.0.0",stability:"beta",owners:C,tags:I,description:"Resolve the best adoption candidate for one family.",goal:"Provide one ordered recommendation that matches Connect.",context:"Contracts MCP server."},io:{input:L,output:U},policy:{auth:"anonymous"}}),async({family:J,paths:X,platform:x,query:K,runtime:V})=>({resolution:await w.resolveAdoption({family:J,paths:Array.isArray(X)?X:void 0,platform:x,query:K,runtime:V})}));let P=Y({name:"AdoptionSyncInput",fields:{}}),Q=Y({name:"AdoptionSyncOutput",fields:{catalogPath:{type:z.String_unsecure(),isOptional:!1},total:{type:z.Int_unsecure(),isOptional:!1}}});q(k,b({meta:{key:"adoption.sync",version:"1.0.0",stability:"beta",owners:C,tags:I,description:"Mirror the bundled ContractSpec adoption catalog locally.",goal:"Refresh the local adoption catalog used by Connect and MCP.",context:"Contracts MCP server."},io:{input:P,output:Q},policy:{auth:"user"}}),async()=>w.syncAdoptionCatalog())}import{defineCommand as Z,installOp as _,OperationSpecRegistry as R}from"@contractspec/lib.contracts-spec";import{defineSchemaModel as F,ScalarTypeEnum as j}from"@contractspec/lib.schema";var $=["@contractspec"],B=["contracts","mcp"];function y(k){let w=new R,H=F({name:"ContractsListInput",fields:{pattern:{type:j.String_unsecure(),isOptional:!0},type:{type:j.String_unsecure(),isOptional:!0}}}),D=F({name:"ContractsListOutput",fields:{specs:{type:j.JSON(),isOptional:!1},total:{type:j.Int_unsecure(),isOptional:!1}}});_(w,Z({meta:{key:"contracts.list",version:"1.0.0",stability:"beta",owners:$,tags:B,description:"List contract specs in the workspace.",goal:"Discover available contracts by type, pattern, or owner.",context:"Contracts MCP server."},io:{input:H,output:D},policy:{auth:"anonymous"}}),async({pattern:x,type:K})=>{let V=await k.listSpecs({pattern:x,type:K});return{specs:V,total:V.length}});let L=F({name:"ContractsGetInput",fields:{path:{type:j.String_unsecure(),isOptional:!1}}}),U=F({name:"ContractsGetOutput",fields:{content:{type:j.String_unsecure(),isOptional:!1},info:{type:j.JSON(),isOptional:!1}}});_(w,Z({meta:{key:"contracts.get",version:"1.0.0",stability:"beta",owners:$,tags:B,description:"Read a single contract spec file.",goal:"Fetch spec content and parsed metadata.",context:"Contracts MCP server."},io:{input:L,output:U},policy:{auth:"anonymous"}}),async({path:x})=>{let K=await k.getSpec(x);if(!K)throw Error(`Spec not found: ${x}`);return K});let P=F({name:"ContractsValidateInput",fields:{path:{type:j.String_unsecure(),isOptional:!1}}}),Q=F({name:"ContractsValidateOutput",fields:{valid:{type:j.Boolean(),isOptional:!1},errors:{type:j.JSON(),isOptional:!1},warnings:{type:j.JSON(),isOptional:!1}}});_(w,Z({meta:{key:"contracts.validate",version:"1.0.0",stability:"beta",owners:$,tags:B,description:"Validate a contract spec structure.",goal:"Check spec for structural or policy issues.",context:"Contracts MCP server."},io:{input:P,output:Q},policy:{auth:"anonymous"}}),async({path:x})=>k.validateSpec(x));let J=F({name:"ContractsBuildInput",fields:{path:{type:j.String_unsecure(),isOptional:!1},dryRun:{type:j.Boolean(),isOptional:!0}}}),X=F({name:"ContractsBuildOutput",fields:{results:{type:j.JSON(),isOptional:!1}}});return _(w,Z({meta:{key:"contracts.build",version:"1.0.0",stability:"beta",owners:$,tags:B,description:"Generate implementation code from a contract spec.",goal:"Produce handler, component, or test skeletons.",context:"Contracts MCP server."},io:{input:J,output:X},policy:{auth:"user"}}),async({path:x,dryRun:K})=>k.buildSpec(x,{dryRun:K})),g(w,k),N(w,k),w}function g(k,w){let H=F({name:"ContractsUpdateInput",fields:{path:{type:j.String_unsecure(),isOptional:!1},content:{type:j.String_unsecure(),isOptional:!0},fields:{type:j.JSON(),isOptional:!0}}}),D=F({name:"ContractsUpdateOutput",fields:{updated:{type:j.Boolean(),isOptional:!1},errors:{type:j.JSON(),isOptional:!1},warnings:{type:j.JSON(),isOptional:!1}}});_(k,Z({meta:{key:"contracts.update",version:"1.0.0",stability:"beta",owners:$,tags:B,description:"Update an existing contract spec.",goal:"Modify spec content or individual fields with validation.",context:"Contracts MCP server."},io:{input:H,output:D},policy:{auth:"user"}}),async({path:P,content:Q,fields:J})=>w.updateSpec(P,{content:Q,fields:Array.isArray(J)?J:void 0}));let L=F({name:"ContractsDeleteInput",fields:{path:{type:j.String_unsecure(),isOptional:!1},clean:{type:j.Boolean(),isOptional:!0}}}),U=F({name:"ContractsDeleteOutput",fields:{deleted:{type:j.Boolean(),isOptional:!1},cleanedFiles:{type:j.JSON(),isOptional:!1},errors:{type:j.JSON(),isOptional:!1}}});_(k,Z({meta:{key:"contracts.delete",version:"1.0.0",stability:"beta",owners:$,tags:B,description:"Delete a contract spec and optionally its artifacts.",goal:"Remove a spec file and clean generated handlers/tests.",context:"Contracts MCP server."},io:{input:L,output:U},policy:{auth:"user"}}),async({path:P,clean:Q})=>w.deleteSpec(P,{clean:Q}))}export{y as buildContractsOps};
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import{defaultDocRegistry as
|
|
1
|
+
var p=Object.defineProperty;var k=(j)=>j;function y(j,w){this[j]=k.bind(null,w)}var hj=(j,w)=>{for(var B in w)p(j,B,{get:w[B],enumerable:!0,configurable:!0,set:y.bind(w,B)})};var fj=(j,w)=>()=>(j&&(w=j(j=0)),w);import{defaultDocRegistry as d}from"@contractspec/lib.contracts-spec/docs";var u=20,l=100;function $(j){return j?.trim().toLowerCase()??""}function P(j){let w=decodeURIComponent(j).trim();if(!w)return"/";return w.startsWith("/")?w:`/${w}`}function n(j){return(Array.isArray(j)?j:j?[j]:[]).map((B)=>$(B)).filter(Boolean)}function g(j){if(!j||Number.isNaN(j))return u;return Math.min(Math.max(j,1),l)}function c(j){if(!j||Number.isNaN(j))return 0;return Math.max(j,0)}function _({block:j,route:w}){return{id:j.id,title:j.title,summary:j.summary??"",route:w,visibility:j.visibility??"public",kind:j.kind??"reference",version:j.version??"1.0.0",tags:j.tags??[]}}function i(j,w){if(!w)return 1;let B=w.split(/\s+/).filter(Boolean),H=$(j.block.title),N=$(j.block.id),J=$(j.block.summary),Z=$(j.block.body),W=$(j.route),Y=(j.block.tags??[]).map((G)=>$(G)),K=[H,N,J,Z,W,...Y].join(" ");if(B.some((G)=>!K.includes(G)))return 0;let C=0;for(let G of B){if(N.includes(G))C+=8;if(H.includes(G))C+=7;if(Y.some((F)=>F.includes(G)))C+=5;if(J.includes(G))C+=4;if(W.includes(G))C+=3;if(Z.includes(G))C+=2}return C}function pj(j,w){let B=$(typeof w.query==="string"?w.query:void 0),H=n(w.tag),N=$(typeof w.visibility==="string"?w.visibility:void 0),J=$(typeof w.kind==="string"?w.kind:void 0),Z=g(typeof w.limit==="number"?w.limit:void 0),W=c(typeof w.offset==="number"?w.offset:void 0),Y=j.map((G)=>({doc:_(G),score:i(G,B)})).filter(({doc:G,score:F})=>{let b=B?F>0:!0,T=H.length?H.every((v)=>G.tags.some((m)=>$(m).includes(v))):!0,h=N?$(G.visibility)===N:!0,f=J?$(G.kind)===J:!0;return b&&T&&h&&f}).sort((G,F)=>{if(F.score!==G.score)return F.score-G.score;return G.doc.title.localeCompare(F.doc.title)}),K=Y.slice(W,W+Z).map(({doc:G})=>G),C=W+K.length<Y.length?W+K.length:void 0;return{docs:K,items:K,total:Y.length,...C!=null?{nextOffset:C}:{}}}function kj(j){let w=decodeURIComponent(j),B=d.get(w);if(!B)return;return{doc:_(B),content:String(B.block.body??"")}}function yj(j,w){let B=P(w),H=j.find((N)=>P(N.route)===B);if(!H)return;return{doc:_(H),content:String(H.block.body??"")}}function dj(j){let w=new Map,B=new Map,H=new Map;for(let J of j){let Z=J.block.kind??"reference",W=J.block.visibility??"public";B.set(Z,(B.get(Z)??0)+1),H.set(W,(H.get(W)??0)+1);for(let Y of J.block.tags??[])w.set(Y,(w.get(Y)??0)+1)}let N=(J,Z)=>[...J.entries()].sort((W,Y)=>Y[1]-W[1]||W[0].localeCompare(Y[0])).map(([W,Y])=>({[Z]:W,count:Y}));return{totalDocs:j.length,tags:N(w,"tag"),kinds:N(B,"kind"),visibilities:N(H,"visibility")}}import{EventRegistry as a,OperationSpecRegistry as o}from"@contractspec/lib.contracts-spec";import{DataViewRegistry as t}from"@contractspec/lib.contracts-spec/data-views";import{ContractReferenceDataView as s,ContractReferenceQuery as r,DocsGenerateCommand as e,DocsGeneratedEvent as jj,DocsIndexDataView as wj,DocsIndexQuery as Bj,DocsLayoutPresentation as Gj,DocsPublishCommand as Hj,DocsPublishedEvent as Jj,DocsReferencePagePresentation as Nj,DocsSearchForm as Wj,ExampleCatalogDataView as Yj}from"@contractspec/lib.contracts-spec/docs";import{FormRegistry as Zj}from"@contractspec/lib.contracts-spec/forms";import{PresentationRegistry as $j}from"@contractspec/lib.contracts-spec/presentations";import{serializeDataViewSpec as Cj,serializeEventSpec as Fj,serializeFormSpec as Kj,serializeOperationSpec as Qj,serializePresentationSpec as Uj}from"@contractspec/lib.contracts-spec/serialization";var Q=null;function Vj(){let j=new o;return j.register(Bj).register(r).register(e).register(Hj),j}function Xj(){if(!Q)Q=Vj();return Q}function M(j,w){return Xj().get(j,w)}var U=null;function Aj(){let j=new a;return j.register(jj).register(Jj),j}function _j(){if(!U)U=Aj();return U}function O(j,w){return _j().get(j,w)}var V=null;function Mj(){let j=new $j;return j.register(Gj).register(Nj),j}function Oj(){if(!V)V=Mj();return V}function L(j,w){return Oj().get(j,w)}var X=null;function Lj(){let j=new t;return j.register(wj).register(s).register(Yj),j}function Rj(){if(!X)X=Lj();return X}function R(j,w){return Rj().get(j,w)}var A=null;function Ej(){let j=new Zj;return j.register(Wj),j}function Pj(){if(!A)A=Ej();return A}function E(j,w){return Pj().get(j)}function D(j,w){let B=M(j,w);return Qj(B)??void 0}function I(j,w){let B=O(j,w);return Fj(B)??void 0}function q(j,w){let B=L(j,w);return Uj(B)??void 0}function S(j,w){let B=R(j,w);return Cj(B)??void 0}function x(j,w){let B=E(j,w);return Kj(B)??void 0}function Dj(){Q=null}function Ij(){U=null}function qj(){V=null}function Sj(){X=null}function xj(){A=null}function oj(){Dj(),Ij(),qj(),Sj(),xj()}import{defaultDocRegistry as zj}from"@contractspec/lib.contracts-spec/docs";function bj(j){return j?.trim().toLowerCase()??""}function Tj(j){for(let w of j??[]){let B=zj.get(w);if(B)return B.route}return}function z(j,w,B,H){let N=j.meta.title??j.meta.key,J=Tj(j.meta.docId),Z=j.meta.description;return{key:j.meta.key,version:j.meta.version,type:w,title:N,description:Z,markdown:[`# ${N}`,`- Key: ${j.meta.key}`,`- Type: ${w}`,`- Version: ${j.meta.version}`,J?`- Docs route: ${J}`:"",Z?`
|
|
2
2
|
${Z}`:""].filter(Boolean).join(`
|
|
3
|
-
`),...J?{route:J}:{},...B?{schema:B}:{},...H?{policy:H}:{},tags:j.meta.tags??[],owners:j.meta.owners??[],stability:j.meta.stability}}function
|
|
3
|
+
`),...J?{route:J}:{},...B?{schema:B}:{},...H?{policy:H}:{},tags:j.meta.tags??[],owners:j.meta.owners??[],stability:j.meta.stability}}function ej(j){let w=j.includeSchema??!1,B=bj(j.type),H=M(j.key,j.version);if(H&&(!B||B==="operation"||B===H.meta.kind))return{reference:z(H,H.meta.kind,w?D(j.key,j.version):void 0,H.policy)};let N=[{type:"data-view",spec:R(j.key,j.version),schema:w?S(j.key,j.version):void 0},{type:"form",spec:E(j.key,j.version),schema:w?x(j.key,j.version):void 0},{type:"presentation",spec:L(j.key,j.version),schema:w?q(j.key,j.version):void 0},{type:"event",spec:O(j.key,j.version),schema:w?I(j.key,j.version):void 0}];for(let J of N)if(J.spec&&(!B||B===J.type))return{reference:z(J.spec,J.type,J.schema)};throw Error(`Contract reference not found: ${j.key}`)}export{_ as toDocSummary,pj as searchDocs,ej as resolveContractReference,dj as listDocFacets,yj as getDocByRoute,kj as getDocById};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{defaultDocRegistry as
|
|
1
|
+
var P=Object.defineProperty;var R=(j)=>j;function S(j,w){this[j]=R.bind(null,w)}var z=(j,w)=>{for(var C in w)P(j,C,{get:w[C],enumerable:!0,configurable:!0,set:S.bind(w,C)})};var h=(j,w)=>()=>(j&&(w=j(j=0)),w);import{defaultDocRegistry as E}from"@contractspec/lib.contracts-spec/docs";var L=20,I=100;function N(j){return j?.trim().toLowerCase()??""}function U(j){let w=decodeURIComponent(j).trim();if(!w)return"/";return w.startsWith("/")?w:`/${w}`}function p(j){return(Array.isArray(j)?j:j?[j]:[]).map((C)=>N(C)).filter(Boolean)}function q(j){if(!j||Number.isNaN(j))return L;return Math.min(Math.max(j,1),I)}function D(j){if(!j||Number.isNaN(j))return 0;return Math.max(j,0)}function Q({block:j,route:w}){return{id:j.id,title:j.title,summary:j.summary??"",route:w,visibility:j.visibility??"public",kind:j.kind??"reference",version:j.version??"1.0.0",tags:j.tags??[]}}function x(j,w){if(!w)return 1;let C=w.split(/\s+/).filter(Boolean),J=N(j.block.title),W=N(j.block.id),Y=N(j.block.summary),$=N(j.block.body),G=N(j.route),H=(j.block.tags??[]).map((B)=>N(B)),K=[J,W,Y,$,G,...H].join(" ");if(C.some((B)=>!K.includes(B)))return 0;let Z=0;for(let B of C){if(W.includes(B))Z+=8;if(J.includes(B))Z+=7;if(H.some((F)=>F.includes(B)))Z+=5;if(Y.includes(B))Z+=4;if(G.includes(B))Z+=3;if($.includes(B))Z+=2}return Z}function y(j,w){let C=N(typeof w.query==="string"?w.query:void 0),J=p(w.tag),W=N(typeof w.visibility==="string"?w.visibility:void 0),Y=N(typeof w.kind==="string"?w.kind:void 0),$=q(typeof w.limit==="number"?w.limit:void 0),G=D(typeof w.offset==="number"?w.offset:void 0),H=j.map((B)=>({doc:Q(B),score:x(B,C)})).filter(({doc:B,score:F})=>{let V=C?F>0:!0,X=J.length?J.every((M)=>B.tags.some((O)=>N(O).includes(M))):!0,A=W?N(B.visibility)===W:!0,_=Y?N(B.kind)===Y:!0;return V&&X&&A&&_}).sort((B,F)=>{if(F.score!==B.score)return F.score-B.score;return B.doc.title.localeCompare(F.doc.title)}),K=H.slice(G,G+$).map(({doc:B})=>B),Z=G+K.length<H.length?G+K.length:void 0;return{docs:K,items:K,total:H.length,...Z!=null?{nextOffset:Z}:{}}}function b(j){let w=decodeURIComponent(j),C=E.get(w);if(!C)return;return{doc:Q(C),content:String(C.block.body??"")}}function k(j,w){let C=U(w),J=j.find((W)=>U(W.route)===C);if(!J)return;return{doc:Q(J),content:String(J.block.body??"")}}function m(j){let w=new Map,C=new Map,J=new Map;for(let Y of j){let $=Y.block.kind??"reference",G=Y.block.visibility??"public";C.set($,(C.get($)??0)+1),J.set(G,(J.get(G)??0)+1);for(let H of Y.block.tags??[])w.set(H,(w.get(H)??0)+1)}let W=(Y,$)=>[...Y.entries()].sort((G,H)=>H[1]-G[1]||G[0].localeCompare(H[0])).map(([G,H])=>({[$]:G,count:H}));return{totalDocs:j.length,tags:W(w,"tag"),kinds:W(C,"kind"),visibilities:W(J,"visibility")}}export{Q as toDocSummary,y as searchDocs,m as listDocFacets,k as getDocByRoute,b as getDocById};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import{Logger as g,LogLevel as d}from"@contractspec/lib.logger";function u(){return"production"}var
|
|
1
|
+
var Gj=Object.defineProperty;var Nj=(j)=>j;function Lj(j,w){this[j]=Nj.bind(null,w)}var fw=(j,w)=>{for(var Y in w)Gj(j,Y,{get:w[Y],enumerable:!0,configurable:!0,set:Lj.bind(w,Y)})};var vw=(j,w)=>()=>(j&&(w=j(j=0)),w);import{Logger as g,LogLevel as d}from"@contractspec/lib.logger";function u(){return"production"}var Ej=()=>new g({level:d.INFO,environment:u(),enableTracing:!0,enableTiming:!0,enableContext:!0,enableColors:!1}),e=Ej(),lw=new g({level:d.WARN,environment:u(),enableTracing:!0,enableTiming:!0,enableContext:!0,enableColors:!1}),pw=new g({level:d.INFO,environment:u(),enableTracing:!0,enableTiming:!0,enableContext:!0,enableColors:!1});var jj=["application/json","text/event-stream"];function xj(j){return!j||j.includes("*/*")||j.includes("application/*")||jj.some((w)=>j.includes(w))}function n(j){if(j.method!=="POST")return j;let w=j.headers.get("accept");if(!xj(w))return j;let Y=jj.filter((U)=>!w?.includes(U));if(Y.length===0)return j;let J=new Headers(j.headers);return J.set("accept",[w,...Y].filter(Boolean).join(", ")),new Request(j,{headers:J})}import{createMcpServer as Mj}from"@contractspec/lib.contracts-runtime-server-mcp/provider-mcp";import{PresentationRegistry as _j}from"@contractspec/lib.contracts-spec/presentations";import{McpServer as Aj}from"@modelcontextprotocol/sdk/server/mcp.js";import{WebStandardStreamableHTTPServerTransport as Cj}from"@modelcontextprotocol/sdk/server/webStandardStreamableHttp.js";import{randomUUID as Ij}from"crypto";import{Elysia as Rj}from"elysia";var qj={actor:"anonymous",decide:async()=>({effect:"allow"})};function i(j,w,Y,J){return new Response(JSON.stringify({jsonrpc:"2.0",error:{code:w,message:Y,...J?{data:J}:{}},id:null}),{status:j,headers:{"content-type":"application/json"}})}function wj({logger:j,serverName:w,ops:Y,resources:J,prompts:U,presentations:Q,stateful:K}){let Z=new Aj({name:w,version:"1.0.0"},{capabilities:{tools:{},resources:{},prompts:{},logging:{}}});j.info("Setting up MCP server..."),Mj(Z,Y,J,U,{logger:j,toolCtx:()=>qj,promptCtx:()=>({locale:"en"}),resourceCtx:()=>({locale:"en"}),presentations:new _j(Q)});let V=new Cj({sessionIdGenerator:K?()=>Ij():void 0,enableJsonResponse:!0});return Z.connect(V).then(()=>({server:Z,transport:V}))}async function T(j){await Promise.allSettled([j.transport.close(),j.server.close()])}function bj(j){return j instanceof Error?j.stack??j.message:String(j)}function Yj({logger:j,path:w,serverName:Y,ops:J,resources:U,prompts:Q,presentations:K,validateAuth:Z,requiredAuthMethods:V}){j.info("Setting up MCP handler...",{requiredAuthMethods:V??[]});let L=process.env.CONTRACTSPEC_MCP_STATEFUL==="1",H=new Map;async function $(B){let F=await wj({logger:j,path:w,serverName:Y,ops:J,resources:U,prompts:Q,presentations:K,stateful:!1});try{return await F.transport.handleRequest(n(B))}finally{await T(F)}}async function G(B){let F=H.get(B);if(!F)return;H.delete(B),await T(F)}async function p(B){let F=B.headers.get("mcp-session-id"),N,q=!1;if(F){let E=H.get(F);if(!E)return i(404,-32001,"Session not found");N=E}else N=await wj({logger:j,path:w,serverName:Y,ops:J,resources:U,prompts:Q,presentations:K,stateful:!0}),q=!0;try{let E=await N.transport.handleRequest(n(B)),A=N.transport.sessionId;if(A&&!H.has(A))H.set(A,N);if(B.method==="DELETE"&&A)await G(A);else if(!A&&q)await T(N);return E}catch(E){if(q)await T(N);throw E}}return new Rj({name:`mcp-${Y}`}).all(w,async({request:B})=>{try{if(Z){let F=await Z(B);if(!F.valid)return i(401,-32002,"Authentication failed",F.reason)}if(L)return await p(B);return await $(B)}catch(F){return j.error("Error handling MCP request",{path:w,method:B.method,error:bj(F)}),i(500,-32000,"Internal error")}})}import{defaultDocRegistry as Oj}from"@contractspec/lib.contracts-spec/docs";var Dj=20,zj=100;function P(j){return j?.trim().toLowerCase()??""}function Jj(j){let w=decodeURIComponent(j).trim();if(!w)return"/";return w.startsWith("/")?w:`/${w}`}function Tj(j){return(Array.isArray(j)?j:j?[j]:[]).map((Y)=>P(Y)).filter(Boolean)}function Sj(j){if(!j||Number.isNaN(j))return Dj;return Math.min(Math.max(j,1),zj)}function hj(j){if(!j||Number.isNaN(j))return 0;return Math.max(j,0)}function c({block:j,route:w}){return{id:j.id,title:j.title,summary:j.summary??"",route:w,visibility:j.visibility??"public",kind:j.kind??"reference",version:j.version??"1.0.0",tags:j.tags??[]}}function kj(j,w){if(!w)return 1;let Y=w.split(/\s+/).filter(Boolean),J=P(j.block.title),U=P(j.block.id),Q=P(j.block.summary),K=P(j.block.body),Z=P(j.route),V=(j.block.tags??[]).map(($)=>P($)),L=[J,U,Q,K,Z,...V].join(" ");if(Y.some(($)=>!L.includes($)))return 0;let H=0;for(let $ of Y){if(U.includes($))H+=8;if(J.includes($))H+=7;if(V.some((G)=>G.includes($)))H+=5;if(Q.includes($))H+=4;if(Z.includes($))H+=3;if(K.includes($))H+=2}return H}function C(j,w){let Y=P(typeof w.query==="string"?w.query:void 0),J=Tj(w.tag),U=P(typeof w.visibility==="string"?w.visibility:void 0),Q=P(typeof w.kind==="string"?w.kind:void 0),K=Sj(typeof w.limit==="number"?w.limit:void 0),Z=hj(typeof w.offset==="number"?w.offset:void 0),V=j.map(($)=>({doc:c($),score:kj($,Y)})).filter(({doc:$,score:G})=>{let p=Y?G>0:!0,B=J.length?J.every((q)=>$.tags.some((E)=>P(E).includes(q))):!0,F=U?P($.visibility)===U:!0,N=Q?P($.kind)===Q:!0;return p&&B&&F&&N}).sort(($,G)=>{if(G.score!==$.score)return G.score-$.score;return $.doc.title.localeCompare(G.doc.title)}),L=V.slice(Z,Z+K).map(({doc:$})=>$),H=Z+L.length<V.length?Z+L.length:void 0;return{docs:L,items:L,total:V.length,...H!=null?{nextOffset:H}:{}}}function S(j){let w=decodeURIComponent(j),Y=Oj.get(w);if(!Y)return;return{doc:c(Y),content:String(Y.block.body??"")}}function h(j,w){let Y=Jj(w),J=j.find((U)=>Jj(U.route)===Y);if(!J)return;return{doc:c(J),content:String(J.block.body??"")}}function k(j){let w=new Map,Y=new Map,J=new Map;for(let Q of j){let K=Q.block.kind??"reference",Z=Q.block.visibility??"public";Y.set(K,(Y.get(K)??0)+1),J.set(Z,(J.get(Z)??0)+1);for(let V of Q.block.tags??[])w.set(V,(w.get(V)??0)+1)}let U=(Q,K)=>[...Q.entries()].sort((Z,V)=>V[1]-Z[1]||Z[0].localeCompare(V[0])).map(([Z,V])=>({[K]:Z,count:V}));return{totalDocs:j.length,tags:U(w,"tag"),kinds:U(Y,"kind"),visibilities:U(J,"visibility")}}import{EventRegistry as fj,OperationSpecRegistry as vj}from"@contractspec/lib.contracts-spec";import{DataViewRegistry as yj}from"@contractspec/lib.contracts-spec/data-views";import{ContractReferenceDataView as mj,ContractReferenceQuery as lj,DocsGenerateCommand as pj,DocsGeneratedEvent as gj,DocsIndexDataView as dj,DocsIndexQuery as uj,DocsLayoutPresentation as nj,DocsPublishCommand as ij,DocsPublishedEvent as cj,DocsReferencePagePresentation as aj,DocsSearchForm as oj,ExampleCatalogDataView as tj}from"@contractspec/lib.contracts-spec/docs";import{FormRegistry as rj}from"@contractspec/lib.contracts-spec/forms";import{PresentationRegistry as sj}from"@contractspec/lib.contracts-spec/presentations";import{serializeDataViewSpec as ej,serializeEventSpec as jw,serializeFormSpec as ww,serializeOperationSpec as Yw,serializePresentationSpec as Jw}from"@contractspec/lib.contracts-spec/serialization";var f=null;function Qw(){let j=new vj;return j.register(uj).register(lj).register(pj).register(ij),j}function Uw(){if(!f)f=Qw();return f}function a(j,w){return Uw().get(j,w)}var v=null;function Zw(){let j=new fj;return j.register(gj).register(cj),j}function $w(){if(!v)v=Zw();return v}function o(j,w){return $w().get(j,w)}var y=null;function Kw(){let j=new sj;return j.register(nj).register(aj),j}function Vw(){if(!y)y=Kw();return y}function t(j,w){return Vw().get(j,w)}var m=null;function Xw(){let j=new yj;return j.register(dj).register(mj).register(tj),j}function Hw(){if(!m)m=Xw();return m}function r(j,w){return Hw().get(j,w)}var l=null;function Bw(){let j=new rj;return j.register(oj),j}function Fw(){if(!l)l=Bw();return l}function s(j,w){return Fw().get(j)}function Qj(j,w){let Y=a(j,w);return Yw(Y)??void 0}function Uj(j,w){let Y=o(j,w);return jw(Y)??void 0}function Zj(j,w){let Y=t(j,w);return Jw(Y)??void 0}function $j(j,w){let Y=r(j,w);return ej(Y)??void 0}function Kj(j,w){let Y=s(j,w);return ww(Y)??void 0}function Ww(){f=null}function Pw(){v=null}function Gw(){y=null}function Nw(){m=null}function Lw(){l=null}function ZY(){Ww(),Pw(),Gw(),Nw(),Lw()}import{defaultDocRegistry as Ew}from"@contractspec/lib.contracts-spec/docs";function xw(j){return j?.trim().toLowerCase()??""}function Mw(j){for(let w of j??[]){let Y=Ew.get(w);if(Y)return Y.route}return}function Vj(j,w,Y,J){let U=j.meta.title??j.meta.key,Q=Mw(j.meta.docId),K=j.meta.description;return{key:j.meta.key,version:j.meta.version,type:w,title:U,description:K,markdown:[`# ${U}`,`- Key: ${j.meta.key}`,`- Type: ${w}`,`- Version: ${j.meta.version}`,Q?`- Docs route: ${Q}`:"",K?`
|
|
2
2
|
${K}`:""].filter(Boolean).join(`
|
|
3
|
-
`),...Q?{route:Q}:{},...Y?{schema:Y}:{},...J?{policy:J}:{},tags:j.meta.tags??[],owners:j.meta.owners??[],stability:j.meta.stability}}function I(j){let w=j.includeSchema??!1,Y=
|
|
3
|
+
`),...Q?{route:Q}:{},...Y?{schema:Y}:{},...J?{policy:J}:{},tags:j.meta.tags??[],owners:j.meta.owners??[],stability:j.meta.stability}}function I(j){let w=j.includeSchema??!1,Y=xw(j.type),J=a(j.key,j.version);if(J&&(!Y||Y==="operation"||Y===J.meta.kind))return{reference:Vj(J,J.meta.kind,w?Qj(j.key,j.version):void 0,J.policy)};let U=[{type:"data-view",spec:r(j.key,j.version),schema:w?$j(j.key,j.version):void 0},{type:"form",spec:s(j.key,j.version),schema:w?Kj(j.key,j.version):void 0},{type:"presentation",spec:t(j.key,j.version),schema:w?Zj(j.key,j.version):void 0},{type:"event",spec:o(j.key,j.version),schema:w?Uj(j.key,j.version):void 0}];for(let Q of U)if(Q.spec&&(!Y||Y===Q.type))return{reference:Vj(Q.spec,Q.type,Q.schema)};throw Error(`Contract reference not found: ${j.key}`)}import{definePrompt as Xj,PromptRegistry as _w}from"@contractspec/lib.contracts-spec";import W from"zod";var Hj=["@contractspec"],Bj=["docs","mcp"];function Fj(j){let w=new _w;return w.register(Xj({meta:{key:"docs.navigator",version:"1.0.0",title:"Find relevant ContractSpec docs",description:"Guide agents to search, filter, and open the right ContractSpec docs.",tags:Bj,stability:"beta",owners:Hj},args:[{name:"topic",description:"Goal or subject to search for.",required:!1,schema:W.string().optional()},{name:"kind",description:"Optional doc kind filter.",required:!1,schema:W.string().optional()},{name:"tag",description:"Optional tag filter.",required:!1,schema:W.string().optional()}],input:W.object({topic:W.string().optional(),kind:W.string().optional(),tag:W.string().optional()}),render:async({topic:Y,kind:J,tag:U})=>{let Q=C(j,{query:Y,kind:J,tag:U,limit:3}),K=Q.docs.length?Q.docs.map((Z)=>`- ${Z.title} (${Z.id}) -> ${Z.route}`).join(`
|
|
4
4
|
`):"- No direct pre-match. Use docs_list_facets-v1_0_0 to browse tags and kinds.";return[{type:"text",text:["Use docs_search-v1_0_0 first, then read docs://doc/{id} for the strongest matches.","Use docs_resolve_route-v1_0_0 when the user already gives you a docs URL or route.","Use docs_list_facets-v1_0_0 or docs://facets to browse the docs taxonomy before guessing.",Y?`Topic: ${Y}`:"",J?`Kind: ${J}`:"",U?`Tag: ${U}`:"","Suggested starting docs:",K].filter(Boolean).join(`
|
|
5
5
|
`)},{type:"resource",uri:"docs://index",title:"DocBlocks index"},{type:"resource",uri:"docs://facets",title:"Docs facets"}]}})),w.register(Xj({meta:{key:"docs.reference.guide",version:"1.0.0",title:"Resolve a ContractSpec reference",description:"Guide agents to fetch the canonical reference payload for a ContractSpec surface.",tags:Bj,stability:"beta",owners:Hj},args:[{name:"key",description:"ContractSpec key to resolve.",required:!0,schema:W.string()},{name:"version",description:"Optional version override.",required:!1,schema:W.string().optional()},{name:"type",description:"Optional surface type: command, query, form, data-view, presentation, event.",required:!1,schema:W.string().optional()}],input:W.object({key:W.string(),version:W.string().optional(),type:W.string().optional()}),render:async({key:Y,version:J,type:U})=>{let Q=I({key:Y,version:J,type:U,includeSchema:!0}).reference;return[{type:"text",text:["Use docs_contract_reference-v1_0_0 when you need the canonical docs payload for a ContractSpec surface.","Use docs_get-v1_0_0 only when you already know the exact DocBlock id and need raw markdown.",`Resolved key: ${Q.key}`,`Resolved type: ${Q.type}`,Q.route?`Docs route: ${Q.route}`:"",`Resource URI: docs://contract-reference/${encodeURIComponent(Y)}`].filter(Boolean).join(`
|
|
6
|
-
`)},{type:"resource",uri:`docs://contract-reference/${encodeURIComponent(Y)}`,title:"Contract reference"}]}})),w}import{defineResourceTemplate as x,ResourceRegistry as
|
|
6
|
+
`)},{type:"resource",uri:`docs://contract-reference/${encodeURIComponent(Y)}`,title:"Contract reference"}]}})),w}import{defineResourceTemplate as x,ResourceRegistry as Aw}from"@contractspec/lib.contracts-spec";import X from"zod";var M=["docs","mcp"];function Wj(j){let w=new Aw,Y=(J)=>C(j,J);return w.register(x({meta:{uriTemplate:"docs://index",title:"DocBlocks index",description:"Default ContractSpec docs index resource.",mimeType:"application/json",tags:M},input:X.object({}),resolve:async()=>({uri:"docs://index",mimeType:"application/json",data:JSON.stringify(Y({}),null,2)})})),w.register(x({meta:{uriTemplate:"docs://index{?query,tag,kind,visibility,limit,offset}",title:"DocBlocks index",description:"Search and paginate ContractSpec docs by query, tag, kind, or visibility.",mimeType:"application/json",tags:M},input:X.object({query:X.string().optional(),tag:X.string().optional(),kind:X.string().optional(),visibility:X.string().optional(),limit:X.coerce.number().optional(),offset:X.coerce.number().optional()}),resolve:async(J)=>({uri:"docs://index",mimeType:"application/json",data:JSON.stringify(Y(J),null,2)})})),w.register(x({meta:{uriTemplate:"docs://list",title:"DocBlocks index (legacy alias)",description:"Compatibility alias for the docs index resource.",mimeType:"application/json",tags:M},input:X.object({}),resolve:async()=>({uri:"docs://list",mimeType:"application/json",data:JSON.stringify(Y({}),null,2)})})),w.register(x({meta:{uriTemplate:"docs://doc/{id}",title:"Doc markdown",description:"Fetch a single DocBlock body by id as markdown.",mimeType:"text/markdown",tags:M},input:X.object({id:X.string()}),resolve:async({id:J})=>{let U=S(J);if(!U)return{uri:`docs://doc/${encodeURIComponent(J)}`,mimeType:"text/plain",data:`DocBlock not found: ${J}`};return{uri:`docs://doc/${encodeURIComponent(J)}`,mimeType:"text/markdown",data:U.content}}})),w.register(x({meta:{uriTemplate:"docs://route/{routePath}",title:"Doc by route",description:"Resolve a docs route to the matching DocBlock summary and body.",mimeType:"application/json",tags:M},input:X.object({routePath:X.string()}),resolve:async({routePath:J})=>({uri:`docs://route/${encodeURIComponent(J)}`,mimeType:"application/json",data:JSON.stringify(h(j,J)??{error:"not_found",route:J},null,2)})})),w.register(x({meta:{uriTemplate:"docs://facets",title:"Docs facets",description:"Counts of available tags, kinds, and visibilities across docs.",mimeType:"application/json",tags:M},input:X.object({}),resolve:async()=>({uri:"docs://facets",mimeType:"application/json",data:JSON.stringify(k(j),null,2)})})),w.register(x({meta:{uriTemplate:"docs://contract-reference/{key}{?version,type,includeSchema}",title:"Contract reference",description:"Resolve a ContractSpec surface into a docs-ready reference payload.",mimeType:"application/json",tags:M},input:X.object({key:X.string(),version:X.string().optional(),type:X.string().optional(),includeSchema:X.coerce.boolean().optional()}),resolve:async({key:J,version:U,type:Q,includeSchema:K})=>({uri:`docs://contract-reference/${encodeURIComponent(J)}`,mimeType:"application/json",data:JSON.stringify(I({key:J,version:U,type:Q,includeSchema:K}),null,2)})})),w}import{defineCommand as b,defineSchemaModel as R,installOp as O,OperationSpecRegistry as Cw}from"@contractspec/lib.contracts-spec";import{ContractReferenceInput as Iw,ContractReferenceOutput as Rw,DocsIndexInput as qw,DocsIndexOutput as bw}from"@contractspec/lib.contracts-spec/docs";import{ScalarTypeEnum as _}from"@contractspec/lib.schema";var D=["@contractspec"],z=["docs","mcp"],Ow=R({name:"DocsGetInput",fields:{id:{type:_.String_unsecure(),isOptional:!1}}}),Dw=R({name:"DocsGetOutput",fields:{doc:{type:_.JSON(),isOptional:!1},content:{type:_.String_unsecure(),isOptional:!1}}}),zw=R({name:"DocsResolveRouteInput",fields:{route:{type:_.String_unsecure(),isOptional:!1}}}),Tw=R({name:"DocsResolveRouteOutput",fields:{doc:{type:_.JSON(),isOptional:!1},content:{type:_.String_unsecure(),isOptional:!1}}}),Sw=R({name:"DocsFacetsInput",fields:{}}),hw=R({name:"DocsFacetsOutput",fields:{facets:{type:_.JSON(),isOptional:!1}}});function Pj(j){let w=new Cw;return O(w,b({meta:{key:"docs.search",version:"1.0.0",stability:"beta",owners:D,tags:z,description:"Search ContractSpec docs by query, tag, kind, or visibility.",goal:"Find the most relevant DocBlocks without browsing the full corpus.",context:"Read-only docs MCP search surface."},io:{input:qw,output:bw},policy:{auth:"anonymous"},transport:{mcp:{toolName:"docs_search-v1_0_0"}}}),async(Y)=>C(j,Y)),O(w,b({meta:{key:"docs.get",version:"1.0.0",stability:"beta",owners:D,tags:z,description:"Read a single DocBlock by id.",goal:"Fetch the exact markdown content and metadata for a known doc id.",context:"Read-only docs MCP surface."},io:{input:Ow,output:Dw},policy:{auth:"anonymous"},transport:{mcp:{toolName:"docs_get-v1_0_0"}}}),async({id:Y})=>{let J=S(Y);if(!J)throw Error(`DocBlock not found: ${Y}`);return J}),O(w,b({meta:{key:"docs.resolveRoute",version:"1.0.0",stability:"beta",owners:D,tags:z,description:"Resolve a docs route to the matching DocBlock.",goal:"Turn a route or URL path into a canonical doc id and markdown body.",context:"Read-only docs MCP surface."},io:{input:zw,output:Tw},policy:{auth:"anonymous"},transport:{mcp:{toolName:"docs_resolve_route-v1_0_0"}}}),async({route:Y})=>{let J=h(j,Y);if(!J)throw Error(`Doc route not found: ${Y}`);return J}),O(w,b({meta:{key:"docs.contract.lookup",version:"1.0.0",stability:"beta",owners:D,tags:z,description:"Resolve a ContractSpec surface into a docs-ready reference payload.",goal:"Get canonical docs metadata, route, and optional schema for a spec key.",context:"Read-only docs MCP surface."},io:{input:Iw,output:Rw},policy:{auth:"anonymous"},transport:{mcp:{toolName:"docs_contract_reference-v1_0_0"}}}),async(Y)=>I(Y)),O(w,b({meta:{key:"docs.list.facets",version:"1.0.0",stability:"beta",owners:D,tags:z,description:"List docs taxonomy facets such as tags, kinds, and visibilities.",goal:"Help agents browse the docs corpus before making targeted reads.",context:"Read-only docs MCP surface."},io:{input:Sw,output:hw},policy:{auth:"anonymous"},transport:{mcp:{toolName:"docs_list_facets-v1_0_0"}}}),async()=>({facets:k(j)})),w}import{defaultDocRegistry as kw}from"@contractspec/lib.contracts-spec/docs";function SY(j="/api/mcp/docs",w={}){let Y=kw.list();return Yj({logger:e,path:j,serverName:"contractspec-docs-mcp",ops:Pj(Y),resources:Wj(Y),prompts:Fj(Y),presentations:w.includePresentations?Y.map(({descriptor:J})=>J):void 0})}export{SY as createDocsMcpHandler};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import{defaultDocRegistry as
|
|
1
|
+
var n=Object.defineProperty;var g=(j)=>j;function c(j,w){this[j]=g.bind(null,w)}var uj=(j,w)=>{for(var B in w)n(j,B,{get:w[B],enumerable:!0,configurable:!0,set:c.bind(w,B)})};var lj=(j,w)=>()=>(j&&(w=j(j=0)),w);import{defaultDocRegistry as i}from"@contractspec/lib.contracts-spec/docs";var a=20,o=100;function U(j){return j?.trim().toLowerCase()??""}function O(j){let w=decodeURIComponent(j).trim();if(!w)return"/";return w.startsWith("/")?w:`/${w}`}function t(j){return(Array.isArray(j)?j:j?[j]:[]).map((B)=>U(B)).filter(Boolean)}function s(j){if(!j||Number.isNaN(j))return a;return Math.min(Math.max(j,1),o)}function r(j){if(!j||Number.isNaN(j))return 0;return Math.max(j,0)}function C({block:j,route:w}){return{id:j.id,title:j.title,summary:j.summary??"",route:w,visibility:j.visibility??"public",kind:j.kind??"reference",version:j.version??"1.0.0",tags:j.tags??[]}}function e(j,w){if(!w)return 1;let B=w.split(/\s+/).filter(Boolean),J=U(j.block.title),Z=U(j.block.id),H=U(j.block.summary),F=U(j.block.body),$=U(j.route),K=(j.block.tags??[]).map((Y)=>U(Y)),G=[J,Z,H,F,$,...K].join(" ");if(B.some((Y)=>!G.includes(Y)))return 0;let V=0;for(let Y of B){if(Z.includes(Y))V+=8;if(J.includes(Y))V+=7;if(K.some((X)=>X.includes(Y)))V+=5;if(H.includes(Y))V+=4;if($.includes(Y))V+=3;if(F.includes(Y))V+=2}return V}function q(j,w){let B=U(typeof w.query==="string"?w.query:void 0),J=t(w.tag),Z=U(typeof w.visibility==="string"?w.visibility:void 0),H=U(typeof w.kind==="string"?w.kind:void 0),F=s(typeof w.limit==="number"?w.limit:void 0),$=r(typeof w.offset==="number"?w.offset:void 0),K=j.map((Y)=>({doc:C(Y),score:e(Y,B)})).filter(({doc:Y,score:X})=>{let k=B?X>0:!0,y=J.length?J.every((l)=>Y.tags.some((d)=>U(d).includes(l))):!0,p=Z?U(Y.visibility)===Z:!0,u=H?U(Y.kind)===H:!0;return k&&y&&p&&u}).sort((Y,X)=>{if(X.score!==Y.score)return X.score-Y.score;return Y.doc.title.localeCompare(X.doc.title)}),G=K.slice($,$+F).map(({doc:Y})=>Y),V=$+G.length<K.length?$+G.length:void 0;return{docs:G,items:G,total:K.length,...V!=null?{nextOffset:V}:{}}}function gj(j){let w=decodeURIComponent(j),B=i.get(w);if(!B)return;return{doc:C(B),content:String(B.block.body??"")}}function cj(j,w){let B=O(w),J=j.find((Z)=>O(Z.route)===B);if(!J)return;return{doc:C(J),content:String(J.block.body??"")}}function ij(j){let w=new Map,B=new Map,J=new Map;for(let H of j){let F=H.block.kind??"reference",$=H.block.visibility??"public";B.set(F,(B.get(F)??0)+1),J.set($,(J.get($)??0)+1);for(let K of H.block.tags??[])w.set(K,(w.get(K)??0)+1)}let Z=(H,F)=>[...H.entries()].sort(($,K)=>K[1]-$[1]||$[0].localeCompare(K[0])).map(([$,K])=>({[F]:$,count:K}));return{totalDocs:j.length,tags:Z(w,"tag"),kinds:Z(B,"kind"),visibilities:Z(J,"visibility")}}import{EventRegistry as jj,OperationSpecRegistry as wj}from"@contractspec/lib.contracts-spec";import{DataViewRegistry as Bj}from"@contractspec/lib.contracts-spec/data-views";import{ContractReferenceDataView as Hj,ContractReferenceQuery as Jj,DocsGenerateCommand as Yj,DocsGeneratedEvent as Zj,DocsIndexDataView as $j,DocsIndexQuery as Fj,DocsLayoutPresentation as Kj,DocsPublishCommand as Qj,DocsPublishedEvent as Uj,DocsReferencePagePresentation as Vj,DocsSearchForm as Xj,ExampleCatalogDataView as Gj}from"@contractspec/lib.contracts-spec/docs";import{FormRegistry as Nj}from"@contractspec/lib.contracts-spec/forms";import{PresentationRegistry as Wj}from"@contractspec/lib.contracts-spec/presentations";import{serializeDataViewSpec as Aj,serializeEventSpec as Lj,serializeFormSpec as Mj,serializeOperationSpec as Cj,serializePresentationSpec as _j}from"@contractspec/lib.contracts-spec/serialization";var N=null;function Ej(){let j=new wj;return j.register(Fj).register(Jj).register(Yj).register(Qj),j}function Ij(){if(!N)N=Ej();return N}function _(j,w){return Ij().get(j,w)}var W=null;function Pj(){let j=new jj;return j.register(Zj).register(Uj),j}function Rj(){if(!W)W=Pj();return W}function E(j,w){return Rj().get(j,w)}var A=null;function Oj(){let j=new Wj;return j.register(Kj).register(Vj),j}function qj(){if(!A)A=Oj();return A}function I(j,w){return qj().get(j,w)}var L=null;function Dj(){let j=new Bj;return j.register($j).register(Hj).register(Gj),j}function xj(){if(!L)L=Dj();return L}function P(j,w){return xj().get(j,w)}var M=null;function Sj(){let j=new Nj;return j.register(Xj),j}function bj(){if(!M)M=Sj();return M}function R(j,w){return bj().get(j)}function D(j,w){let B=_(j,w);return Cj(B)??void 0}function x(j,w){let B=E(j,w);return Lj(B)??void 0}function S(j,w){let B=I(j,w);return _j(B)??void 0}function b(j,w){let B=P(j,w);return Aj(B)??void 0}function T(j,w){let B=R(j,w);return Mj(B)??void 0}function Tj(){N=null}function hj(){W=null}function zj(){A=null}function vj(){L=null}function fj(){M=null}function ww(){Tj(),hj(),zj(),vj(),fj()}import{defaultDocRegistry as mj}from"@contractspec/lib.contracts-spec/docs";function kj(j){return j?.trim().toLowerCase()??""}function yj(j){for(let w of j??[]){let B=mj.get(w);if(B)return B.route}return}function h(j,w,B,J){let Z=j.meta.title??j.meta.key,H=yj(j.meta.docId),F=j.meta.description;return{key:j.meta.key,version:j.meta.version,type:w,title:Z,description:F,markdown:[`# ${Z}`,`- Key: ${j.meta.key}`,`- Type: ${w}`,`- Version: ${j.meta.version}`,H?`- Docs route: ${H}`:"",F?`
|
|
2
2
|
${F}`:""].filter(Boolean).join(`
|
|
3
|
-
`),...H?{route:H}:{},...B?{schema:B}:{},...J?{policy:J}:{},tags:j.meta.tags??[],owners:j.meta.owners??[],stability:j.meta.stability}}function z(j){let w=j.includeSchema??!1,B=
|
|
3
|
+
`),...H?{route:H}:{},...B?{schema:B}:{},...J?{policy:J}:{},tags:j.meta.tags??[],owners:j.meta.owners??[],stability:j.meta.stability}}function z(j){let w=j.includeSchema??!1,B=kj(j.type),J=_(j.key,j.version);if(J&&(!B||B==="operation"||B===J.meta.kind))return{reference:h(J,J.meta.kind,w?D(j.key,j.version):void 0,J.policy)};let Z=[{type:"data-view",spec:P(j.key,j.version),schema:w?b(j.key,j.version):void 0},{type:"form",spec:R(j.key,j.version),schema:w?T(j.key,j.version):void 0},{type:"presentation",spec:I(j.key,j.version),schema:w?S(j.key,j.version):void 0},{type:"event",spec:E(j.key,j.version),schema:w?x(j.key,j.version):void 0}];for(let H of Z)if(H.spec&&(!B||B===H.type))return{reference:h(H.spec,H.type,H.schema)};throw Error(`Contract reference not found: ${j.key}`)}import{definePrompt as v,PromptRegistry as pj}from"@contractspec/lib.contracts-spec";import Q from"zod";var f=["@contractspec"],m=["docs","mcp"];function Qw(j){let w=new pj;return w.register(v({meta:{key:"docs.navigator",version:"1.0.0",title:"Find relevant ContractSpec docs",description:"Guide agents to search, filter, and open the right ContractSpec docs.",tags:m,stability:"beta",owners:f},args:[{name:"topic",description:"Goal or subject to search for.",required:!1,schema:Q.string().optional()},{name:"kind",description:"Optional doc kind filter.",required:!1,schema:Q.string().optional()},{name:"tag",description:"Optional tag filter.",required:!1,schema:Q.string().optional()}],input:Q.object({topic:Q.string().optional(),kind:Q.string().optional(),tag:Q.string().optional()}),render:async({topic:B,kind:J,tag:Z})=>{let H=q(j,{query:B,kind:J,tag:Z,limit:3}),F=H.docs.length?H.docs.map(($)=>`- ${$.title} (${$.id}) -> ${$.route}`).join(`
|
|
4
4
|
`):"- No direct pre-match. Use docs_list_facets-v1_0_0 to browse tags and kinds.";return[{type:"text",text:["Use docs_search-v1_0_0 first, then read docs://doc/{id} for the strongest matches.","Use docs_resolve_route-v1_0_0 when the user already gives you a docs URL or route.","Use docs_list_facets-v1_0_0 or docs://facets to browse the docs taxonomy before guessing.",B?`Topic: ${B}`:"",J?`Kind: ${J}`:"",Z?`Tag: ${Z}`:"","Suggested starting docs:",F].filter(Boolean).join(`
|
|
5
5
|
`)},{type:"resource",uri:"docs://index",title:"DocBlocks index"},{type:"resource",uri:"docs://facets",title:"Docs facets"}]}})),w.register(v({meta:{key:"docs.reference.guide",version:"1.0.0",title:"Resolve a ContractSpec reference",description:"Guide agents to fetch the canonical reference payload for a ContractSpec surface.",tags:m,stability:"beta",owners:f},args:[{name:"key",description:"ContractSpec key to resolve.",required:!0,schema:Q.string()},{name:"version",description:"Optional version override.",required:!1,schema:Q.string().optional()},{name:"type",description:"Optional surface type: command, query, form, data-view, presentation, event.",required:!1,schema:Q.string().optional()}],input:Q.object({key:Q.string(),version:Q.string().optional(),type:Q.string().optional()}),render:async({key:B,version:J,type:Z})=>{let H=z({key:B,version:J,type:Z,includeSchema:!0}).reference;return[{type:"text",text:["Use docs_contract_reference-v1_0_0 when you need the canonical docs payload for a ContractSpec surface.","Use docs_get-v1_0_0 only when you already know the exact DocBlock id and need raw markdown.",`Resolved key: ${H.key}`,`Resolved type: ${H.type}`,H.route?`Docs route: ${H.route}`:"",`Resource URI: docs://contract-reference/${encodeURIComponent(B)}`].filter(Boolean).join(`
|
|
6
|
-
`)},{type:"resource",uri:`docs://contract-reference/${encodeURIComponent(B)}`,title:"Contract reference"}]}})),w}export{
|
|
6
|
+
`)},{type:"resource",uri:`docs://contract-reference/${encodeURIComponent(B)}`,title:"Contract reference"}]}})),w}export{Qw as buildDocPrompts};
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import{EventRegistry as
|
|
1
|
+
var Z=Object.defineProperty;var _=(b)=>b;function $(b,f){this[b]=_.bind(null,f)}var Kb=(b,f)=>{for(var j in f)Z(b,j,{get:f[j],enumerable:!0,configurable:!0,set:$.bind(f,j)})};var Lb=(b,f)=>()=>(b&&(f=b(b=0)),f);import{EventRegistry as z,OperationSpecRegistry as C}from"@contractspec/lib.contracts-spec";import{DataViewRegistry as E}from"@contractspec/lib.contracts-spec/data-views";import{ContractReferenceDataView as R,ContractReferenceQuery as P,DocsGenerateCommand as I,DocsGeneratedEvent as q,DocsIndexDataView as T,DocsIndexQuery as h,DocsLayoutPresentation as m,DocsPublishCommand as S,DocsPublishedEvent as u,DocsReferencePagePresentation as l,DocsSearchForm as k,ExampleCatalogDataView as v}from"@contractspec/lib.contracts-spec/docs";import{FormRegistry as d}from"@contractspec/lib.contracts-spec/forms";import{PresentationRegistry as n}from"@contractspec/lib.contracts-spec/presentations";import{serializeDataViewSpec as y,serializeEventSpec as t,serializeFormSpec as o,serializeOperationSpec as p,serializePresentationSpec as g}from"@contractspec/lib.contracts-spec/serialization";var B=null;function i(){let b=new C;return b.register(h).register(P).register(I).register(S),b}function c(){if(!B)B=i();return B}function K(b,f){return c().get(b,f)}var D=null;function a(){let b=new z;return b.register(q).register(u),b}function r(){if(!D)D=a();return D}function L(b,f){return r().get(b,f)}var F=null;function s(){let b=new n;return b.register(m).register(l),b}function e(){if(!F)F=s();return F}function M(b,f){return e().get(b,f)}var G=null;function bb(){let b=new E;return b.register(T).register(R).register(v),b}function fb(){if(!G)G=bb();return G}function N(b,f){return fb().get(b,f)}var H=null;function jb(){let b=new d;return b.register(k),b}function wb(){if(!H)H=jb();return H}function O(b,f){return wb().get(b)}function Q(b,f){let j=K(b,f);return p(j)??void 0}function U(b,f){let j=L(b,f);return t(j)??void 0}function V(b,f){let j=M(b,f);return g(j)??void 0}function W(b,f){let j=N(b,f);return y(j)??void 0}function X(b,f){let j=O(b,f);return o(j)??void 0}function xb(){B=null}function Ab(){D=null}function Bb(){F=null}function Db(){G=null}function Fb(){H=null}function Xb(){xb(),Ab(),Bb(),Db(),Fb()}import{defaultDocRegistry as Gb}from"@contractspec/lib.contracts-spec/docs";function Hb(b){return b?.trim().toLowerCase()??""}function Jb(b){for(let f of b??[]){let j=Gb.get(f);if(j)return j.route}return}function Y(b,f,j,x){let A=b.meta.title??b.meta.key,w=Jb(b.meta.docId),J=b.meta.description;return{key:b.meta.key,version:b.meta.version,type:f,title:A,description:J,markdown:[`# ${A}`,`- Key: ${b.meta.key}`,`- Type: ${f}`,`- Version: ${b.meta.version}`,w?`- Docs route: ${w}`:"",J?`
|
|
2
2
|
${J}`:""].filter(Boolean).join(`
|
|
3
|
-
`),...w?{route:w}:{},...j?{schema:j}:{},...x?{policy:x}:{},tags:b.meta.tags??[],owners:b.meta.owners??[],stability:b.meta.stability}}function
|
|
3
|
+
`),...w?{route:w}:{},...j?{schema:j}:{},...x?{policy:x}:{},tags:b.meta.tags??[],owners:b.meta.owners??[],stability:b.meta.stability}}function $b(b){let f=b.includeSchema??!1,j=Hb(b.type),x=K(b.key,b.version);if(x&&(!j||j==="operation"||j===x.meta.kind))return{reference:Y(x,x.meta.kind,f?Q(b.key,b.version):void 0,x.policy)};let A=[{type:"data-view",spec:N(b.key,b.version),schema:f?W(b.key,b.version):void 0},{type:"form",spec:O(b.key,b.version),schema:f?X(b.key,b.version):void 0},{type:"presentation",spec:M(b.key,b.version),schema:f?V(b.key,b.version):void 0},{type:"event",spec:L(b.key,b.version),schema:f?U(b.key,b.version):void 0}];for(let w of A)if(w.spec&&(!j||j===w.type))return{reference:Y(w.spec,w.type,w.schema)};throw Error(`Contract reference not found: ${b.key}`)}export{$b as resolveContractReference};
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import{defaultDocRegistry as
|
|
1
|
+
var c=Object.defineProperty;var i=(j)=>j;function a(j,w){this[j]=i.bind(null,w)}var dj=(j,w)=>{for(var H in w)c(j,H,{get:w[H],enumerable:!0,configurable:!0,set:a.bind(w,H)})};var nj=(j,w)=>()=>(j&&(w=j(j=0)),w);import{defaultDocRegistry as o}from"@contractspec/lib.contracts-spec/docs";var t=20,s=100;function U(j){return j?.trim().toLowerCase()??""}function x(j){let w=decodeURIComponent(j).trim();if(!w)return"/";return w.startsWith("/")?w:`/${w}`}function r(j){return(Array.isArray(j)?j:j?[j]:[]).map((H)=>U(H)).filter(Boolean)}function e(j){if(!j||Number.isNaN(j))return t;return Math.min(Math.max(j,1),s)}function jj(j){if(!j||Number.isNaN(j))return 0;return Math.max(j,0)}function _({block:j,route:w}){return{id:j.id,title:j.title,summary:j.summary??"",route:w,visibility:j.visibility??"public",kind:j.kind??"reference",version:j.version??"1.0.0",tags:j.tags??[]}}function wj(j,w){if(!w)return 1;let H=w.split(/\s+/).filter(Boolean),J=U(j.block.title),Y=U(j.block.id),N=U(j.block.summary),$=U(j.block.body),K=U(j.route),Q=(j.block.tags??[]).map((W)=>U(W)),L=[J,Y,N,$,K,...Q].join(" ");if(H.some((W)=>!L.includes(W)))return 0;let V=0;for(let W of H){if(Y.includes(W))V+=8;if(J.includes(W))V+=7;if(Q.some((X)=>X.includes(W)))V+=5;if(N.includes(W))V+=4;if(K.includes(W))V+=3;if($.includes(W))V+=2}return V}function D(j,w){let H=U(typeof w.query==="string"?w.query:void 0),J=r(w.tag),Y=U(typeof w.visibility==="string"?w.visibility:void 0),N=U(typeof w.kind==="string"?w.kind:void 0),$=e(typeof w.limit==="number"?w.limit:void 0),K=jj(typeof w.offset==="number"?w.offset:void 0),Q=j.map((W)=>({doc:_(W),score:wj(W,H)})).filter(({doc:W,score:X})=>{let y=H?X>0:!0,l=J.length?J.every((n)=>W.tags.some((u)=>U(u).includes(n))):!0,g=Y?U(W.visibility)===Y:!0,d=N?U(W.kind)===N:!0;return y&&l&&g&&d}).sort((W,X)=>{if(X.score!==W.score)return X.score-W.score;return W.doc.title.localeCompare(X.doc.title)}),L=Q.slice(K,K+$).map(({doc:W})=>W),V=K+L.length<Q.length?K+L.length:void 0;return{docs:L,items:L,total:Q.length,...V!=null?{nextOffset:V}:{}}}function S(j){let w=decodeURIComponent(j),H=o.get(w);if(!H)return;return{doc:_(H),content:String(H.block.body??"")}}function b(j,w){let H=x(w),J=j.find((Y)=>x(Y.route)===H);if(!J)return;return{doc:_(J),content:String(J.block.body??"")}}function h(j){let w=new Map,H=new Map,J=new Map;for(let N of j){let $=N.block.kind??"reference",K=N.block.visibility??"public";H.set($,(H.get($)??0)+1),J.set(K,(J.get(K)??0)+1);for(let Q of N.block.tags??[])w.set(Q,(w.get(Q)??0)+1)}let Y=(N,$)=>[...N.entries()].sort((K,Q)=>Q[1]-K[1]||K[0].localeCompare(Q[0])).map(([K,Q])=>({[$]:K,count:Q}));return{totalDocs:j.length,tags:Y(w,"tag"),kinds:Y(H,"kind"),visibilities:Y(J,"visibility")}}import{EventRegistry as Hj,OperationSpecRegistry as Jj}from"@contractspec/lib.contracts-spec";import{DataViewRegistry as Nj}from"@contractspec/lib.contracts-spec/data-views";import{ContractReferenceDataView as Wj,ContractReferenceQuery as Yj,DocsGenerateCommand as Zj,DocsGeneratedEvent as $j,DocsIndexDataView as Kj,DocsIndexQuery as Qj,DocsLayoutPresentation as Uj,DocsPublishCommand as Vj,DocsPublishedEvent as Xj,DocsReferencePagePresentation as Bj,DocsSearchForm as Fj,ExampleCatalogDataView as Lj}from"@contractspec/lib.contracts-spec/docs";import{FormRegistry as Ej}from"@contractspec/lib.contracts-spec/forms";import{PresentationRegistry as Mj}from"@contractspec/lib.contracts-spec/presentations";import{serializeDataViewSpec as Gj,serializeEventSpec as Aj,serializeFormSpec as Cj,serializeOperationSpec as _j,serializePresentationSpec as Oj}from"@contractspec/lib.contracts-spec/serialization";var E=null;function qj(){let j=new Jj;return j.register(Qj).register(Yj).register(Zj).register(Vj),j}function Pj(){if(!E)E=qj();return E}function O(j,w){return Pj().get(j,w)}var M=null;function Ij(){let j=new Hj;return j.register($j).register(Xj),j}function Rj(){if(!M)M=Ij();return M}function q(j,w){return Rj().get(j,w)}var G=null;function xj(){let j=new Mj;return j.register(Uj).register(Bj),j}function Dj(){if(!G)G=xj();return G}function P(j,w){return Dj().get(j,w)}var A=null;function Sj(){let j=new Nj;return j.register(Kj).register(Wj).register(Lj),j}function bj(){if(!A)A=Sj();return A}function I(j,w){return bj().get(j,w)}var C=null;function hj(){let j=new Ej;return j.register(Fj),j}function zj(){if(!C)C=hj();return C}function R(j,w){return zj().get(j)}function z(j,w){let H=O(j,w);return _j(H)??void 0}function T(j,w){let H=q(j,w);return Aj(H)??void 0}function v(j,w){let H=P(j,w);return Oj(H)??void 0}function f(j,w){let H=I(j,w);return Gj(H)??void 0}function m(j,w){let H=R(j,w);return Cj(H)??void 0}function Tj(){E=null}function vj(){M=null}function fj(){G=null}function mj(){A=null}function kj(){C=null}function jw(){Tj(),vj(),fj(),mj(),kj()}import{defaultDocRegistry as pj}from"@contractspec/lib.contracts-spec/docs";function yj(j){return j?.trim().toLowerCase()??""}function lj(j){for(let w of j??[]){let H=pj.get(w);if(H)return H.route}return}function k(j,w,H,J){let Y=j.meta.title??j.meta.key,N=lj(j.meta.docId),$=j.meta.description;return{key:j.meta.key,version:j.meta.version,type:w,title:Y,description:$,markdown:[`# ${Y}`,`- Key: ${j.meta.key}`,`- Type: ${w}`,`- Version: ${j.meta.version}`,N?`- Docs route: ${N}`:"",$?`
|
|
2
2
|
${$}`:""].filter(Boolean).join(`
|
|
3
|
-
`),...N?{route:N}:{},...H?{schema:H}:{},...J?{policy:J}:{},tags:j.meta.tags??[],owners:j.meta.owners??[],stability:j.meta.stability}}function p(j){let w=j.includeSchema??!1,H=
|
|
3
|
+
`),...N?{route:N}:{},...H?{schema:H}:{},...J?{policy:J}:{},tags:j.meta.tags??[],owners:j.meta.owners??[],stability:j.meta.stability}}function p(j){let w=j.includeSchema??!1,H=yj(j.type),J=O(j.key,j.version);if(J&&(!H||H==="operation"||H===J.meta.kind))return{reference:k(J,J.meta.kind,w?z(j.key,j.version):void 0,J.policy)};let Y=[{type:"data-view",spec:I(j.key,j.version),schema:w?f(j.key,j.version):void 0},{type:"form",spec:R(j.key,j.version),schema:w?m(j.key,j.version):void 0},{type:"presentation",spec:P(j.key,j.version),schema:w?v(j.key,j.version):void 0},{type:"event",spec:q(j.key,j.version),schema:w?T(j.key,j.version):void 0}];for(let N of Y)if(N.spec&&(!H||H===N.type))return{reference:k(N.spec,N.type,N.schema)};throw Error(`Contract reference not found: ${j.key}`)}import{defineResourceTemplate as B,ResourceRegistry as gj}from"@contractspec/lib.contracts-spec";import Z from"zod";var F=["docs","mcp"];function Kw(j){let w=new gj,H=(J)=>D(j,J);return w.register(B({meta:{uriTemplate:"docs://index",title:"DocBlocks index",description:"Default ContractSpec docs index resource.",mimeType:"application/json",tags:F},input:Z.object({}),resolve:async()=>({uri:"docs://index",mimeType:"application/json",data:JSON.stringify(H({}),null,2)})})),w.register(B({meta:{uriTemplate:"docs://index{?query,tag,kind,visibility,limit,offset}",title:"DocBlocks index",description:"Search and paginate ContractSpec docs by query, tag, kind, or visibility.",mimeType:"application/json",tags:F},input:Z.object({query:Z.string().optional(),tag:Z.string().optional(),kind:Z.string().optional(),visibility:Z.string().optional(),limit:Z.coerce.number().optional(),offset:Z.coerce.number().optional()}),resolve:async(J)=>({uri:"docs://index",mimeType:"application/json",data:JSON.stringify(H(J),null,2)})})),w.register(B({meta:{uriTemplate:"docs://list",title:"DocBlocks index (legacy alias)",description:"Compatibility alias for the docs index resource.",mimeType:"application/json",tags:F},input:Z.object({}),resolve:async()=>({uri:"docs://list",mimeType:"application/json",data:JSON.stringify(H({}),null,2)})})),w.register(B({meta:{uriTemplate:"docs://doc/{id}",title:"Doc markdown",description:"Fetch a single DocBlock body by id as markdown.",mimeType:"text/markdown",tags:F},input:Z.object({id:Z.string()}),resolve:async({id:J})=>{let Y=S(J);if(!Y)return{uri:`docs://doc/${encodeURIComponent(J)}`,mimeType:"text/plain",data:`DocBlock not found: ${J}`};return{uri:`docs://doc/${encodeURIComponent(J)}`,mimeType:"text/markdown",data:Y.content}}})),w.register(B({meta:{uriTemplate:"docs://route/{routePath}",title:"Doc by route",description:"Resolve a docs route to the matching DocBlock summary and body.",mimeType:"application/json",tags:F},input:Z.object({routePath:Z.string()}),resolve:async({routePath:J})=>({uri:`docs://route/${encodeURIComponent(J)}`,mimeType:"application/json",data:JSON.stringify(b(j,J)??{error:"not_found",route:J},null,2)})})),w.register(B({meta:{uriTemplate:"docs://facets",title:"Docs facets",description:"Counts of available tags, kinds, and visibilities across docs.",mimeType:"application/json",tags:F},input:Z.object({}),resolve:async()=>({uri:"docs://facets",mimeType:"application/json",data:JSON.stringify(h(j),null,2)})})),w.register(B({meta:{uriTemplate:"docs://contract-reference/{key}{?version,type,includeSchema}",title:"Contract reference",description:"Resolve a ContractSpec surface into a docs-ready reference payload.",mimeType:"application/json",tags:F},input:Z.object({key:Z.string(),version:Z.string().optional(),type:Z.string().optional(),includeSchema:Z.coerce.boolean().optional()}),resolve:async({key:J,version:Y,type:N,includeSchema:$})=>({uri:`docs://contract-reference/${encodeURIComponent(J)}`,mimeType:"application/json",data:JSON.stringify(p({key:J,version:Y,type:N,includeSchema:$}),null,2)})})),w}export{Kw as buildDocResources};
|