@contractspec/bundle.library 3.4.3 → 3.5.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 +494 -488
- package/CHANGELOG.md +91 -0
- package/dist/application/index.js +8 -8
- package/dist/application/mcp/cliMcp.js +8 -8
- package/dist/application/mcp/contractsMcp.js +8 -8
- package/dist/application/mcp/docsMcp.js +8 -8
- package/dist/application/mcp/index.js +8 -8
- package/dist/application/mcp/internalMcp.js +8 -8
- package/dist/application/mcp/providerRankingMcp.js +8 -8
- package/dist/bundles/LibraryBundle.d.ts +126 -0
- package/dist/bundles/LibraryBundle.js +139 -0
- package/dist/bundles/index.d.ts +1 -0
- package/dist/bundles/index.js +139 -0
- package/dist/components/docs/DocsIndexPage.js +91 -91
- package/dist/components/docs/advanced/AdvancedMCPPage.js +125 -125
- package/dist/components/docs/advanced/AdvancedOverlayEditorPage.js +49 -49
- package/dist/components/docs/advanced/AdvancedRenderersPage.js +51 -51
- package/dist/components/docs/advanced/AdvancedSpecExperimentsPage.js +35 -35
- package/dist/components/docs/advanced/AdvancedTelemetryPage.js +177 -177
- package/dist/components/docs/advanced/AdvancedWorkflowMonitoringPage.js +45 -45
- package/dist/components/docs/advanced/index.js +482 -482
- package/dist/components/docs/architecture/ArchitectureAppConfigPage.js +107 -107
- package/dist/components/docs/architecture/ArchitectureControlPlanePage.js +73 -73
- package/dist/components/docs/architecture/ArchitectureIntegrationBindingPage.js +117 -117
- package/dist/components/docs/architecture/ArchitectureKnowledgeBindingPage.js +175 -175
- package/dist/components/docs/architecture/ArchitectureMultiTenancyPage.js +71 -71
- package/dist/components/docs/architecture/ArchitectureOverviewPage.js +205 -205
- package/dist/components/docs/architecture/index.js +748 -748
- package/dist/components/docs/comparison/ComparisonAutomationPlatformsPage.js +117 -117
- package/dist/components/docs/comparison/ComparisonEnterprisePlatformsPage.js +111 -111
- package/dist/components/docs/comparison/ComparisonInternalToolBuildersPage.js +117 -117
- package/dist/components/docs/comparison/ComparisonOverviewPage.js +97 -97
- package/dist/components/docs/comparison/ComparisonWindmillPage.js +125 -125
- package/dist/components/docs/comparison/ComparisonWorkflowEnginesPage.js +171 -171
- package/dist/components/docs/comparison/index.js +738 -738
- package/dist/components/docs/ecosystem/IntegrationsPage.js +45 -45
- package/dist/components/docs/ecosystem/PluginsPage.js +73 -73
- package/dist/components/docs/ecosystem/RegistryPage.js +37 -37
- package/dist/components/docs/ecosystem/TemplatesPage.js +56 -56
- package/dist/components/docs/ecosystem/index.js +211 -211
- package/dist/components/docs/examples/DocsExamplesPage.js +21 -21
- package/dist/components/docs/examples/index.js +21 -21
- package/dist/components/docs/generated/docs-index.generated.d.ts +6 -6
- package/dist/components/docs/getting-started/CLIPage.js +95 -95
- package/dist/components/docs/getting-started/CompatibilityPage.js +81 -81
- package/dist/components/docs/getting-started/DataViewTutorialPage.js +57 -57
- package/dist/components/docs/getting-started/DeveloperToolsPage.js +61 -61
- package/dist/components/docs/getting-started/HelloWorldPage.js +77 -77
- package/dist/components/docs/getting-started/InstallationPage.js +65 -65
- package/dist/components/docs/getting-started/StartHerePage.js +51 -51
- package/dist/components/docs/getting-started/TroubleshootingPage.js +73 -73
- package/dist/components/docs/getting-started/VSCodeExtensionPage.js +171 -171
- package/dist/components/docs/getting-started/index.js +731 -731
- package/dist/components/docs/guides/GuideCIDiffGatingPage.js +80 -80
- package/dist/components/docs/guides/GuideContractTypesPage.js +232 -232
- package/dist/components/docs/guides/GuideDocsPipelinePage.js +82 -82
- package/dist/components/docs/guides/GuideGenerateDocsClientsSchemasPage.js +84 -84
- package/dist/components/docs/guides/GuideImportExistingCodebasesPage.js +324 -324
- package/dist/components/docs/guides/GuideNextjsOneEndpointPage.js +107 -107
- package/dist/components/docs/guides/GuideSpecValidationTypingPage.js +78 -78
- package/dist/components/docs/guides/GuidesIndexPage.js +43 -43
- package/dist/components/docs/guides/index.js +976 -976
- package/dist/components/docs/index.js +10792 -10792
- package/dist/components/docs/integrations/IntegrationsCircuitBreakersPage.js +17 -17
- package/dist/components/docs/integrations/IntegrationsElevenLabsPage.js +47 -47
- package/dist/components/docs/integrations/IntegrationsGithubPage.js +61 -61
- package/dist/components/docs/integrations/IntegrationsGmailPage.js +49 -49
- package/dist/components/docs/integrations/IntegrationsGoogleCalendarPage.js +33 -33
- package/dist/components/docs/integrations/IntegrationsHealthRoutingPage.js +65 -65
- package/dist/components/docs/integrations/IntegrationsMistralPage.js +69 -69
- package/dist/components/docs/integrations/IntegrationsOpenAIPage.js +65 -65
- package/dist/components/docs/integrations/IntegrationsOverviewPage.js +313 -313
- package/dist/components/docs/integrations/IntegrationsPostmarkPage.js +101 -101
- package/dist/components/docs/integrations/IntegrationsPowensPage.js +121 -121
- package/dist/components/docs/integrations/IntegrationsQdrantPage.js +49 -49
- package/dist/components/docs/integrations/IntegrationsResendPage.js +45 -45
- package/dist/components/docs/integrations/IntegrationsS3Page.js +57 -57
- package/dist/components/docs/integrations/IntegrationsSlackPage.js +63 -63
- package/dist/components/docs/integrations/IntegrationsSpecModelPage.js +139 -139
- package/dist/components/docs/integrations/IntegrationsStripePage.js +159 -159
- package/dist/components/docs/integrations/IntegrationsTwilioPage.js +61 -61
- package/dist/components/docs/integrations/IntegrationsWhatsappMetaPage.js +63 -63
- package/dist/components/docs/integrations/IntegrationsWhatsappTwilioPage.js +65 -65
- package/dist/components/docs/integrations/index.js +1642 -1642
- package/dist/components/docs/intent/ContractFirstApiPage.js +51 -51
- package/dist/components/docs/intent/DeterministicCodegenPage.js +59 -59
- package/dist/components/docs/intent/GenerateClientFromSchemaPage.js +85 -85
- package/dist/components/docs/intent/OpenapiAlternativePage.js +91 -91
- package/dist/components/docs/intent/SchemaValidationTypescriptPage.js +59 -59
- package/dist/components/docs/intent/SpecDrivenDevelopmentPage.js +51 -51
- package/dist/components/docs/intent/index.js +396 -396
- package/dist/components/docs/knowledge/KnowledgeCategoriesPage.js +371 -371
- package/dist/components/docs/knowledge/KnowledgeExamplesPage.js +79 -79
- package/dist/components/docs/knowledge/KnowledgeOverviewPage.js +185 -185
- package/dist/components/docs/knowledge/KnowledgeSourcesPage.js +187 -187
- package/dist/components/docs/knowledge/KnowledgeSpacesPage.js +141 -141
- package/dist/components/docs/knowledge/index.js +963 -963
- package/dist/components/docs/libraries/LibrariesAccessibilityPage.js +85 -85
- package/dist/components/docs/libraries/LibrariesAiAgentPage.js +63 -63
- package/dist/components/docs/libraries/LibrariesAnalyticsPage.js +33 -33
- package/dist/components/docs/libraries/LibrariesContentGenPage.js +43 -43
- package/dist/components/docs/libraries/LibrariesContractsPage.js +125 -125
- package/dist/components/docs/libraries/LibrariesCostTrackingPage.js +45 -45
- package/dist/components/docs/libraries/LibrariesDataBackendPage.js +69 -69
- package/dist/components/docs/libraries/LibrariesDataViewsPage.js +79 -79
- package/dist/components/docs/libraries/LibrariesDesignSystemPage.js +129 -129
- package/dist/components/docs/libraries/LibrariesEvolutionPage.js +49 -49
- package/dist/components/docs/libraries/LibrariesGraphQLPage.js +73 -73
- package/dist/components/docs/libraries/LibrariesGrowthPage.js +35 -35
- package/dist/components/docs/libraries/LibrariesMultiTenancyPage.js +43 -43
- package/dist/components/docs/libraries/LibrariesObservabilityPage.js +53 -53
- package/dist/components/docs/libraries/LibrariesOverlayEnginePage.js +45 -45
- package/dist/components/docs/libraries/LibrariesOverviewPage.js +191 -191
- package/dist/components/docs/libraries/LibrariesPersonalizationPage.js +47 -47
- package/dist/components/docs/libraries/LibrariesProgressiveDeliveryPage.js +53 -53
- package/dist/components/docs/libraries/LibrariesResiliencePage.js +49 -49
- package/dist/components/docs/libraries/LibrariesRuntimePage.js +87 -87
- package/dist/components/docs/libraries/LibrariesSLOPage.js +47 -47
- package/dist/components/docs/libraries/LibrariesSchemaPage.js +139 -139
- package/dist/components/docs/libraries/LibrariesSupportBotPage.js +57 -57
- package/dist/components/docs/libraries/LibrariesTestingPage.js +49 -49
- package/dist/components/docs/libraries/LibrariesUIKitPage.js +107 -107
- package/dist/components/docs/libraries/LibrariesWorkflowComposerPage.js +35 -35
- package/dist/components/docs/libraries/LibrariesWorkflowsPage.js +89 -89
- package/dist/components/docs/libraries/index.js +1919 -1919
- package/dist/components/docs/manifesto/ManifestoPage.js +79 -79
- package/dist/components/docs/ops/AutoEvolutionOpsPage.js +59 -59
- package/dist/components/docs/ops/DistributedTracingOpsPage.js +33 -33
- package/dist/components/docs/ops/index.js +92 -92
- package/dist/components/docs/reference/DocsMarkdownContent.js +27 -27
- package/dist/components/docs/reference/DocsReferenceContent.js +34 -34
- package/dist/components/docs/reference/DocsReferenceIndexClient.js +23 -23
- package/dist/components/docs/reference/DocsReferenceIndexPage.js +26 -26
- package/dist/components/docs/reference/DocsReferencePage.js +37 -37
- package/dist/components/docs/reference/index.js +63 -63
- package/dist/components/docs/safety/SafetyAuditingPage.js +161 -161
- package/dist/components/docs/safety/SafetyMigrationsPage.js +169 -169
- package/dist/components/docs/safety/SafetyOverviewPage.js +99 -99
- package/dist/components/docs/safety/SafetyPDPPage.js +137 -137
- package/dist/components/docs/safety/SafetySecurityTrustPage.js +95 -95
- package/dist/components/docs/safety/SafetySigningPage.js +39 -39
- package/dist/components/docs/safety/SafetyTenantIsolationPage.js +33 -33
- package/dist/components/docs/safety/index.js +733 -733
- package/dist/components/docs/shared/StudioPrompt.js +9 -9
- package/dist/components/docs/specs/SpecsCapabilitiesPage.js +61 -61
- package/dist/components/docs/specs/SpecsDataViewsPage.js +119 -119
- package/dist/components/docs/specs/SpecsOverlaysPage.js +171 -171
- package/dist/components/docs/specs/SpecsOverviewPage.js +167 -167
- package/dist/components/docs/specs/SpecsPolicyPage.js +179 -179
- package/dist/components/docs/specs/SpecsWorkflowsPage.js +141 -141
- package/dist/components/docs/specs/index.js +838 -838
- package/dist/components/docs/studio/StudioBYOKPage.js +9 -9
- package/dist/components/docs/studio/StudioDeploymentsPage.js +9 -9
- package/dist/components/docs/studio/StudioGettingStartedPage.js +9 -9
- package/dist/components/docs/studio/StudioIntegrationsPage.js +9 -9
- package/dist/components/docs/studio/StudioOverviewPage.js +33 -33
- package/dist/components/docs/studio/StudioVisualBuilderPage.js +9 -9
- package/dist/components/docs/studio/index.js +78 -78
- package/dist/components/integrations/index.js +209 -209
- package/dist/components/integrations/molecules/IntegrationCard.js +33 -33
- package/dist/components/integrations/organisms/IntegrationMarketplace.js +71 -71
- package/dist/components/integrations/organisms/IntegrationSettings.js +98 -98
- package/dist/components/integrations/organisms/KnowledgeSourceList.js +40 -40
- package/dist/components/legal/PrivacyTemplate.js +477 -477
- package/dist/components/legal/TermsTemplate.js +421 -421
- package/dist/components/legal/index.js +898 -898
- package/dist/components/shared/FeatureGateNotice.js +13 -13
- package/dist/components/shared/index.js +13 -13
- package/dist/components/shell/WorkspaceHeader.js +37 -37
- package/dist/components/shell/WorkspaceProjectShellLayout.js +77 -77
- package/dist/components/shell/WorkspaceShellRenderer.d.ts +17 -0
- package/dist/components/shell/WorkspaceShellRenderer.js +229 -0
- package/dist/components/shell/WorkspaceSidebar.js +27 -27
- package/dist/components/shell/index.d.ts +1 -0
- package/dist/components/shell/index.js +140 -77
- package/dist/components/templates/index.js +272 -272
- package/dist/components/templates/messaging/ConversationList.js +27 -27
- package/dist/components/templates/messaging/MessageComposer.js +27 -27
- package/dist/components/templates/messaging/MessageThread.js +18 -18
- package/dist/components/templates/messaging/MessagingWorkspace.js +65 -65
- package/dist/components/templates/messaging/index.js +65 -65
- package/dist/components/templates/recipes/LanguageSwitcher.js +5 -5
- package/dist/components/templates/recipes/RecipeCard.js +26 -26
- package/dist/components/templates/recipes/RecipeDetail.js +33 -33
- package/dist/components/templates/recipes/RecipeList.js +80 -80
- package/dist/components/templates/recipes/index.js +80 -80
- package/dist/components/templates/todos/FilterBar.js +39 -39
- package/dist/components/templates/todos/TaskForm.js +43 -43
- package/dist/components/templates/todos/TaskItem.js +30 -30
- package/dist/components/templates/todos/TaskList.js +127 -127
- package/dist/components/templates/todos/index.js +127 -127
- package/dist/index.js +12324 -12261
- package/dist/infrastructure/elysia/index.js +8 -8
- package/dist/infrastructure/elysia/logger.js +8 -8
- package/dist/infrastructure/index.js +8 -8
- package/dist/libs/posthog/client.js +2 -2
- package/dist/node/application/index.js +8 -8
- package/dist/node/application/mcp/cliMcp.js +8 -8
- package/dist/node/application/mcp/contractsMcp.js +8 -8
- package/dist/node/application/mcp/docsMcp.js +8 -8
- package/dist/node/application/mcp/index.js +8 -8
- package/dist/node/application/mcp/internalMcp.js +8 -8
- package/dist/node/application/mcp/providerRankingMcp.js +8 -8
- package/dist/node/bundles/LibraryBundle.js +138 -0
- package/dist/node/bundles/index.js +138 -0
- package/dist/node/components/docs/DocsIndexPage.js +91 -91
- package/dist/node/components/docs/advanced/AdvancedMCPPage.js +125 -125
- package/dist/node/components/docs/advanced/AdvancedOverlayEditorPage.js +49 -49
- package/dist/node/components/docs/advanced/AdvancedRenderersPage.js +51 -51
- package/dist/node/components/docs/advanced/AdvancedSpecExperimentsPage.js +35 -35
- package/dist/node/components/docs/advanced/AdvancedTelemetryPage.js +177 -177
- package/dist/node/components/docs/advanced/AdvancedWorkflowMonitoringPage.js +45 -45
- package/dist/node/components/docs/advanced/index.js +482 -482
- package/dist/node/components/docs/architecture/ArchitectureAppConfigPage.js +107 -107
- package/dist/node/components/docs/architecture/ArchitectureControlPlanePage.js +73 -73
- package/dist/node/components/docs/architecture/ArchitectureIntegrationBindingPage.js +117 -117
- package/dist/node/components/docs/architecture/ArchitectureKnowledgeBindingPage.js +175 -175
- package/dist/node/components/docs/architecture/ArchitectureMultiTenancyPage.js +71 -71
- package/dist/node/components/docs/architecture/ArchitectureOverviewPage.js +205 -205
- package/dist/node/components/docs/architecture/index.js +748 -748
- package/dist/node/components/docs/comparison/ComparisonAutomationPlatformsPage.js +117 -117
- package/dist/node/components/docs/comparison/ComparisonEnterprisePlatformsPage.js +111 -111
- package/dist/node/components/docs/comparison/ComparisonInternalToolBuildersPage.js +117 -117
- package/dist/node/components/docs/comparison/ComparisonOverviewPage.js +97 -97
- package/dist/node/components/docs/comparison/ComparisonWindmillPage.js +125 -125
- package/dist/node/components/docs/comparison/ComparisonWorkflowEnginesPage.js +171 -171
- package/dist/node/components/docs/comparison/index.js +738 -738
- package/dist/node/components/docs/ecosystem/IntegrationsPage.js +45 -45
- package/dist/node/components/docs/ecosystem/PluginsPage.js +73 -73
- package/dist/node/components/docs/ecosystem/RegistryPage.js +37 -37
- package/dist/node/components/docs/ecosystem/TemplatesPage.js +56 -56
- package/dist/node/components/docs/ecosystem/index.js +211 -211
- package/dist/node/components/docs/examples/DocsExamplesPage.js +21 -21
- package/dist/node/components/docs/examples/index.js +21 -21
- package/dist/node/components/docs/getting-started/CLIPage.js +95 -95
- package/dist/node/components/docs/getting-started/CompatibilityPage.js +81 -81
- package/dist/node/components/docs/getting-started/DataViewTutorialPage.js +57 -57
- package/dist/node/components/docs/getting-started/DeveloperToolsPage.js +61 -61
- package/dist/node/components/docs/getting-started/HelloWorldPage.js +77 -77
- package/dist/node/components/docs/getting-started/InstallationPage.js +65 -65
- package/dist/node/components/docs/getting-started/StartHerePage.js +51 -51
- package/dist/node/components/docs/getting-started/TroubleshootingPage.js +73 -73
- package/dist/node/components/docs/getting-started/VSCodeExtensionPage.js +171 -171
- package/dist/node/components/docs/getting-started/index.js +731 -731
- package/dist/node/components/docs/guides/GuideCIDiffGatingPage.js +80 -80
- package/dist/node/components/docs/guides/GuideContractTypesPage.js +232 -232
- package/dist/node/components/docs/guides/GuideDocsPipelinePage.js +82 -82
- package/dist/node/components/docs/guides/GuideGenerateDocsClientsSchemasPage.js +84 -84
- package/dist/node/components/docs/guides/GuideImportExistingCodebasesPage.js +324 -324
- package/dist/node/components/docs/guides/GuideNextjsOneEndpointPage.js +107 -107
- package/dist/node/components/docs/guides/GuideSpecValidationTypingPage.js +78 -78
- package/dist/node/components/docs/guides/GuidesIndexPage.js +43 -43
- package/dist/node/components/docs/guides/index.js +976 -976
- package/dist/node/components/docs/index.js +10792 -10792
- package/dist/node/components/docs/integrations/IntegrationsCircuitBreakersPage.js +17 -17
- package/dist/node/components/docs/integrations/IntegrationsElevenLabsPage.js +47 -47
- package/dist/node/components/docs/integrations/IntegrationsGithubPage.js +61 -61
- package/dist/node/components/docs/integrations/IntegrationsGmailPage.js +49 -49
- package/dist/node/components/docs/integrations/IntegrationsGoogleCalendarPage.js +33 -33
- package/dist/node/components/docs/integrations/IntegrationsHealthRoutingPage.js +65 -65
- package/dist/node/components/docs/integrations/IntegrationsMistralPage.js +69 -69
- package/dist/node/components/docs/integrations/IntegrationsOpenAIPage.js +65 -65
- package/dist/node/components/docs/integrations/IntegrationsOverviewPage.js +313 -313
- package/dist/node/components/docs/integrations/IntegrationsPostmarkPage.js +101 -101
- package/dist/node/components/docs/integrations/IntegrationsPowensPage.js +121 -121
- package/dist/node/components/docs/integrations/IntegrationsQdrantPage.js +49 -49
- package/dist/node/components/docs/integrations/IntegrationsResendPage.js +45 -45
- package/dist/node/components/docs/integrations/IntegrationsS3Page.js +57 -57
- package/dist/node/components/docs/integrations/IntegrationsSlackPage.js +63 -63
- package/dist/node/components/docs/integrations/IntegrationsSpecModelPage.js +139 -139
- package/dist/node/components/docs/integrations/IntegrationsStripePage.js +159 -159
- package/dist/node/components/docs/integrations/IntegrationsTwilioPage.js +61 -61
- package/dist/node/components/docs/integrations/IntegrationsWhatsappMetaPage.js +63 -63
- package/dist/node/components/docs/integrations/IntegrationsWhatsappTwilioPage.js +65 -65
- package/dist/node/components/docs/integrations/index.js +1642 -1642
- package/dist/node/components/docs/intent/ContractFirstApiPage.js +51 -51
- package/dist/node/components/docs/intent/DeterministicCodegenPage.js +59 -59
- package/dist/node/components/docs/intent/GenerateClientFromSchemaPage.js +85 -85
- package/dist/node/components/docs/intent/OpenapiAlternativePage.js +91 -91
- package/dist/node/components/docs/intent/SchemaValidationTypescriptPage.js +59 -59
- package/dist/node/components/docs/intent/SpecDrivenDevelopmentPage.js +51 -51
- package/dist/node/components/docs/intent/index.js +396 -396
- package/dist/node/components/docs/knowledge/KnowledgeCategoriesPage.js +371 -371
- package/dist/node/components/docs/knowledge/KnowledgeExamplesPage.js +79 -79
- package/dist/node/components/docs/knowledge/KnowledgeOverviewPage.js +185 -185
- package/dist/node/components/docs/knowledge/KnowledgeSourcesPage.js +187 -187
- package/dist/node/components/docs/knowledge/KnowledgeSpacesPage.js +141 -141
- package/dist/node/components/docs/knowledge/index.js +963 -963
- package/dist/node/components/docs/libraries/LibrariesAccessibilityPage.js +85 -85
- package/dist/node/components/docs/libraries/LibrariesAiAgentPage.js +63 -63
- package/dist/node/components/docs/libraries/LibrariesAnalyticsPage.js +33 -33
- package/dist/node/components/docs/libraries/LibrariesContentGenPage.js +43 -43
- package/dist/node/components/docs/libraries/LibrariesContractsPage.js +125 -125
- package/dist/node/components/docs/libraries/LibrariesCostTrackingPage.js +45 -45
- package/dist/node/components/docs/libraries/LibrariesDataBackendPage.js +69 -69
- package/dist/node/components/docs/libraries/LibrariesDataViewsPage.js +79 -79
- package/dist/node/components/docs/libraries/LibrariesDesignSystemPage.js +129 -129
- package/dist/node/components/docs/libraries/LibrariesEvolutionPage.js +49 -49
- package/dist/node/components/docs/libraries/LibrariesGraphQLPage.js +73 -73
- package/dist/node/components/docs/libraries/LibrariesGrowthPage.js +35 -35
- package/dist/node/components/docs/libraries/LibrariesMultiTenancyPage.js +43 -43
- package/dist/node/components/docs/libraries/LibrariesObservabilityPage.js +53 -53
- package/dist/node/components/docs/libraries/LibrariesOverlayEnginePage.js +45 -45
- package/dist/node/components/docs/libraries/LibrariesOverviewPage.js +191 -191
- package/dist/node/components/docs/libraries/LibrariesPersonalizationPage.js +47 -47
- package/dist/node/components/docs/libraries/LibrariesProgressiveDeliveryPage.js +53 -53
- package/dist/node/components/docs/libraries/LibrariesResiliencePage.js +49 -49
- package/dist/node/components/docs/libraries/LibrariesRuntimePage.js +87 -87
- package/dist/node/components/docs/libraries/LibrariesSLOPage.js +47 -47
- package/dist/node/components/docs/libraries/LibrariesSchemaPage.js +139 -139
- package/dist/node/components/docs/libraries/LibrariesSupportBotPage.js +57 -57
- package/dist/node/components/docs/libraries/LibrariesTestingPage.js +49 -49
- package/dist/node/components/docs/libraries/LibrariesUIKitPage.js +107 -107
- package/dist/node/components/docs/libraries/LibrariesWorkflowComposerPage.js +35 -35
- package/dist/node/components/docs/libraries/LibrariesWorkflowsPage.js +89 -89
- package/dist/node/components/docs/libraries/index.js +1919 -1919
- package/dist/node/components/docs/manifesto/ManifestoPage.js +79 -79
- package/dist/node/components/docs/ops/AutoEvolutionOpsPage.js +59 -59
- package/dist/node/components/docs/ops/DistributedTracingOpsPage.js +33 -33
- package/dist/node/components/docs/ops/index.js +92 -92
- package/dist/node/components/docs/reference/DocsMarkdownContent.js +27 -27
- package/dist/node/components/docs/reference/DocsReferenceContent.js +34 -34
- package/dist/node/components/docs/reference/DocsReferenceIndexClient.js +23 -23
- package/dist/node/components/docs/reference/DocsReferenceIndexPage.js +26 -26
- package/dist/node/components/docs/reference/DocsReferencePage.js +37 -37
- package/dist/node/components/docs/reference/index.js +63 -63
- package/dist/node/components/docs/safety/SafetyAuditingPage.js +161 -161
- package/dist/node/components/docs/safety/SafetyMigrationsPage.js +169 -169
- package/dist/node/components/docs/safety/SafetyOverviewPage.js +99 -99
- package/dist/node/components/docs/safety/SafetyPDPPage.js +137 -137
- package/dist/node/components/docs/safety/SafetySecurityTrustPage.js +95 -95
- package/dist/node/components/docs/safety/SafetySigningPage.js +39 -39
- package/dist/node/components/docs/safety/SafetyTenantIsolationPage.js +33 -33
- package/dist/node/components/docs/safety/index.js +733 -733
- package/dist/node/components/docs/shared/StudioPrompt.js +9 -9
- package/dist/node/components/docs/specs/SpecsCapabilitiesPage.js +61 -61
- package/dist/node/components/docs/specs/SpecsDataViewsPage.js +119 -119
- package/dist/node/components/docs/specs/SpecsOverlaysPage.js +171 -171
- package/dist/node/components/docs/specs/SpecsOverviewPage.js +167 -167
- package/dist/node/components/docs/specs/SpecsPolicyPage.js +179 -179
- package/dist/node/components/docs/specs/SpecsWorkflowsPage.js +141 -141
- package/dist/node/components/docs/specs/index.js +838 -838
- package/dist/node/components/docs/studio/StudioBYOKPage.js +9 -9
- package/dist/node/components/docs/studio/StudioDeploymentsPage.js +9 -9
- package/dist/node/components/docs/studio/StudioGettingStartedPage.js +9 -9
- package/dist/node/components/docs/studio/StudioIntegrationsPage.js +9 -9
- package/dist/node/components/docs/studio/StudioOverviewPage.js +33 -33
- package/dist/node/components/docs/studio/StudioVisualBuilderPage.js +9 -9
- package/dist/node/components/docs/studio/index.js +78 -78
- package/dist/node/components/integrations/index.js +209 -209
- package/dist/node/components/integrations/molecules/IntegrationCard.js +33 -33
- package/dist/node/components/integrations/organisms/IntegrationMarketplace.js +71 -71
- package/dist/node/components/integrations/organisms/IntegrationSettings.js +98 -98
- package/dist/node/components/integrations/organisms/KnowledgeSourceList.js +40 -40
- package/dist/node/components/legal/PrivacyTemplate.js +477 -477
- package/dist/node/components/legal/TermsTemplate.js +421 -421
- package/dist/node/components/legal/index.js +898 -898
- package/dist/node/components/shared/FeatureGateNotice.js +13 -13
- package/dist/node/components/shared/index.js +13 -13
- package/dist/node/components/shell/WorkspaceHeader.js +37 -37
- package/dist/node/components/shell/WorkspaceProjectShellLayout.js +77 -77
- package/dist/node/components/shell/WorkspaceShellRenderer.js +228 -0
- package/dist/node/components/shell/WorkspaceSidebar.js +27 -27
- package/dist/node/components/shell/index.js +140 -77
- package/dist/node/components/templates/index.js +272 -272
- package/dist/node/components/templates/messaging/ConversationList.js +27 -27
- package/dist/node/components/templates/messaging/MessageComposer.js +27 -27
- package/dist/node/components/templates/messaging/MessageThread.js +18 -18
- package/dist/node/components/templates/messaging/MessagingWorkspace.js +65 -65
- package/dist/node/components/templates/messaging/index.js +65 -65
- package/dist/node/components/templates/recipes/LanguageSwitcher.js +5 -5
- package/dist/node/components/templates/recipes/RecipeCard.js +26 -26
- package/dist/node/components/templates/recipes/RecipeDetail.js +33 -33
- package/dist/node/components/templates/recipes/RecipeList.js +80 -80
- package/dist/node/components/templates/recipes/index.js +80 -80
- package/dist/node/components/templates/todos/FilterBar.js +39 -39
- package/dist/node/components/templates/todos/TaskForm.js +43 -43
- package/dist/node/components/templates/todos/TaskItem.js +30 -30
- package/dist/node/components/templates/todos/TaskList.js +127 -127
- package/dist/node/components/templates/todos/index.js +127 -127
- package/dist/node/index.js +12324 -12261
- package/dist/node/infrastructure/elysia/index.js +8 -8
- package/dist/node/infrastructure/elysia/logger.js +8 -8
- package/dist/node/infrastructure/index.js +8 -8
- package/dist/node/libs/posthog/client.js +2 -2
- package/dist/node/presentation/features/atoms/FeatureIcon/FeatureIcon.js +3 -3
- package/dist/node/presentation/features/atoms/FeatureIcon/index.js +3 -3
- package/dist/node/presentation/features/atoms/index.js +3 -3
- package/dist/node/presentation/features/index.js +915 -915
- package/dist/node/presentation/features/molecules/FeatureCard/FeatureCard.js +101 -101
- package/dist/node/presentation/features/molecules/FeatureCard/index.js +101 -101
- package/dist/node/presentation/features/molecules/FeatureCategoryHeader/FeatureCategoryHeader.js +15 -15
- package/dist/node/presentation/features/molecules/FeatureCategoryHeader/index.js +15 -15
- package/dist/node/presentation/features/molecules/FeatureFilters/FeatureFilters.js +23 -23
- package/dist/node/presentation/features/molecules/FeatureFilters/index.js +23 -23
- package/dist/node/presentation/features/molecules/FeatureHoverPreview/FeatureHoverPreview.js +67 -67
- package/dist/node/presentation/features/molecules/FeatureHoverPreview/index.js +67 -67
- package/dist/node/presentation/features/molecules/index.js +139 -139
- package/dist/node/presentation/features/organisms/FeatureDataViewsList.js +7 -7
- package/dist/node/presentation/features/organisms/FeatureDetail/FeatureDetail.js +57 -57
- package/dist/node/presentation/features/organisms/FeatureDetail/index.js +57 -57
- package/dist/node/presentation/features/organisms/FeatureDiscovery/FeatureDiscovery.js +183 -183
- package/dist/node/presentation/features/organisms/FeatureDiscovery/index.js +183 -183
- package/dist/node/presentation/features/organisms/FeatureEventsList.js +7 -7
- package/dist/node/presentation/features/organisms/FeatureFormsList.js +7 -7
- package/dist/node/presentation/features/organisms/FeatureOperationsList.js +7 -7
- package/dist/node/presentation/features/organisms/FeaturePresentationsList.js +7 -7
- package/dist/node/presentation/features/organisms/index.js +275 -275
- package/dist/node/presentation/features/templates/FeatureDataViewDetailTemplate/FeatureDataViewDetailTemplate.js +126 -126
- package/dist/node/presentation/features/templates/FeatureDataViewDetailTemplate/index.js +126 -126
- package/dist/node/presentation/features/templates/FeatureDataViewsTemplate/FeatureDataViewsTemplate.js +16 -16
- package/dist/node/presentation/features/templates/FeatureDataViewsTemplate/index.js +16 -16
- package/dist/node/presentation/features/templates/FeatureEventDetailTemplate/FeatureEventDetailTemplate.js +112 -112
- package/dist/node/presentation/features/templates/FeatureEventDetailTemplate/index.js +112 -112
- package/dist/node/presentation/features/templates/FeatureEventsTemplate/FeatureEventsTemplate.js +16 -16
- package/dist/node/presentation/features/templates/FeatureEventsTemplate/index.js +16 -16
- package/dist/node/presentation/features/templates/FeatureFormDetailTemplate/FeatureFormDetailTemplate.js +126 -126
- package/dist/node/presentation/features/templates/FeatureFormDetailTemplate/index.js +126 -126
- package/dist/node/presentation/features/templates/FeatureFormsTemplate/FeatureFormsTemplate.js +16 -16
- package/dist/node/presentation/features/templates/FeatureFormsTemplate/index.js +16 -16
- package/dist/node/presentation/features/templates/FeatureOperationDetailTemplate/FeatureOperationDetailTemplate.js +110 -110
- package/dist/node/presentation/features/templates/FeatureOperationDetailTemplate/index.js +110 -110
- package/dist/node/presentation/features/templates/FeatureOperationsTemplate/FeatureOperationsTemplate.js +16 -16
- package/dist/node/presentation/features/templates/FeatureOperationsTemplate/index.js +16 -16
- package/dist/node/presentation/features/templates/FeatureOverviewTemplate/FeatureOverviewTemplate.js +66 -66
- package/dist/node/presentation/features/templates/FeatureOverviewTemplate/index.js +66 -66
- package/dist/node/presentation/features/templates/FeaturePresentationDetailTemplate/FeaturePresentationDetailTemplate.js +112 -112
- package/dist/node/presentation/features/templates/FeaturePresentationDetailTemplate/index.js +112 -112
- package/dist/node/presentation/features/templates/FeaturePresentationsTemplate/FeaturePresentationsTemplate.js +16 -16
- package/dist/node/presentation/features/templates/FeaturePresentationsTemplate/index.js +16 -16
- package/dist/presentation/features/atoms/FeatureIcon/FeatureIcon.js +3 -3
- package/dist/presentation/features/atoms/FeatureIcon/index.js +3 -3
- package/dist/presentation/features/atoms/index.js +3 -3
- package/dist/presentation/features/index.js +915 -915
- package/dist/presentation/features/molecules/FeatureCard/FeatureCard.js +101 -101
- package/dist/presentation/features/molecules/FeatureCard/index.js +101 -101
- package/dist/presentation/features/molecules/FeatureCategoryHeader/FeatureCategoryHeader.js +15 -15
- package/dist/presentation/features/molecules/FeatureCategoryHeader/index.js +15 -15
- package/dist/presentation/features/molecules/FeatureFilters/FeatureFilters.js +23 -23
- package/dist/presentation/features/molecules/FeatureFilters/index.js +23 -23
- package/dist/presentation/features/molecules/FeatureHoverPreview/FeatureHoverPreview.js +67 -67
- package/dist/presentation/features/molecules/FeatureHoverPreview/index.js +67 -67
- package/dist/presentation/features/molecules/index.js +139 -139
- package/dist/presentation/features/organisms/FeatureDataViewsList.js +7 -7
- package/dist/presentation/features/organisms/FeatureDetail/FeatureDetail.js +57 -57
- package/dist/presentation/features/organisms/FeatureDetail/index.js +57 -57
- package/dist/presentation/features/organisms/FeatureDiscovery/FeatureDiscovery.js +183 -183
- package/dist/presentation/features/organisms/FeatureDiscovery/index.js +183 -183
- package/dist/presentation/features/organisms/FeatureEventsList.js +7 -7
- package/dist/presentation/features/organisms/FeatureFormsList.js +7 -7
- package/dist/presentation/features/organisms/FeatureOperationsList.js +7 -7
- package/dist/presentation/features/organisms/FeaturePresentationsList.js +7 -7
- package/dist/presentation/features/organisms/index.js +275 -275
- package/dist/presentation/features/templates/FeatureDataViewDetailTemplate/FeatureDataViewDetailTemplate.js +126 -126
- package/dist/presentation/features/templates/FeatureDataViewDetailTemplate/index.js +126 -126
- package/dist/presentation/features/templates/FeatureDataViewsTemplate/FeatureDataViewsTemplate.js +16 -16
- package/dist/presentation/features/templates/FeatureDataViewsTemplate/index.js +16 -16
- package/dist/presentation/features/templates/FeatureEventDetailTemplate/FeatureEventDetailTemplate.js +112 -112
- package/dist/presentation/features/templates/FeatureEventDetailTemplate/index.js +112 -112
- package/dist/presentation/features/templates/FeatureEventsTemplate/FeatureEventsTemplate.js +16 -16
- package/dist/presentation/features/templates/FeatureEventsTemplate/index.js +16 -16
- package/dist/presentation/features/templates/FeatureFormDetailTemplate/FeatureFormDetailTemplate.js +126 -126
- package/dist/presentation/features/templates/FeatureFormDetailTemplate/index.js +126 -126
- package/dist/presentation/features/templates/FeatureFormsTemplate/FeatureFormsTemplate.js +16 -16
- package/dist/presentation/features/templates/FeatureFormsTemplate/index.js +16 -16
- package/dist/presentation/features/templates/FeatureOperationDetailTemplate/FeatureOperationDetailTemplate.js +110 -110
- package/dist/presentation/features/templates/FeatureOperationDetailTemplate/index.js +110 -110
- package/dist/presentation/features/templates/FeatureOperationsTemplate/FeatureOperationsTemplate.js +16 -16
- package/dist/presentation/features/templates/FeatureOperationsTemplate/index.js +16 -16
- package/dist/presentation/features/templates/FeatureOverviewTemplate/FeatureOverviewTemplate.js +66 -66
- package/dist/presentation/features/templates/FeatureOverviewTemplate/index.js +66 -66
- package/dist/presentation/features/templates/FeaturePresentationDetailTemplate/FeaturePresentationDetailTemplate.js +112 -112
- package/dist/presentation/features/templates/FeaturePresentationDetailTemplate/index.js +112 -112
- package/dist/presentation/features/templates/FeaturePresentationsTemplate/FeaturePresentationsTemplate.js +16 -16
- package/dist/presentation/features/templates/FeaturePresentationsTemplate/index.js +16 -16
- package/package.json +71 -22
- package/src/bundles/LibraryBundle.ts +152 -0
- package/src/bundles/index.ts +1 -0
- package/src/components/docs/generated/docs-index._common.json +441 -90
- package/src/components/docs/generated/docs-index.agent-console.json +1 -1
- package/src/components/docs/generated/docs-index.ai-chat.json +1 -1
- package/src/components/docs/generated/docs-index.ai-support-bot.json +1 -1
- package/src/components/docs/generated/docs-index.analytics-dashboard.json +1 -1
- package/src/components/docs/generated/docs-index.app-config.json +1 -1
- package/src/components/docs/generated/docs-index.audit-trail.json +1 -1
- package/src/components/docs/generated/docs-index.calendar-google.json +1 -1
- package/src/components/docs/generated/docs-index.content-generation.json +1 -1
- package/src/components/docs/generated/docs-index.crm-pipeline.json +1 -1
- package/src/components/docs/generated/docs-index.email-gmail.json +1 -1
- package/src/components/docs/generated/docs-index.feature-flags.json +1 -1
- package/src/components/docs/generated/docs-index.files.json +1 -1
- package/src/components/docs/generated/docs-index.generated.ts +7 -7
- package/src/components/docs/generated/docs-index.health.json +1 -1
- package/src/components/docs/generated/docs-index.identity-rbac.json +1 -1
- package/src/components/docs/generated/docs-index.in-app-docs.json +1 -1
- package/src/components/docs/generated/docs-index.integration-hub.json +1 -1
- package/src/components/docs/generated/docs-index.integration-posthog.json +1 -1
- package/src/components/docs/generated/docs-index.integration-stripe.json +1 -1
- package/src/components/docs/generated/docs-index.integration-supabase.json +1 -1
- package/src/components/docs/generated/docs-index.jobs.json +1 -1
- package/src/components/docs/generated/docs-index.kb-update-pipeline.json +1 -1
- package/src/components/docs/generated/docs-index.knowledge-canon.json +1 -1
- package/src/components/docs/generated/docs-index.learning-journey-ambient-coach.json +1 -1
- package/src/components/docs/generated/docs-index.learning-journey-crm-onboarding.json +1 -1
- package/src/components/docs/generated/docs-index.learning-journey-duo-drills.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-quest-challenges.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-studio-onboarding.json +1 -1
- package/src/components/docs/generated/docs-index.learning-journey-ui-coaching.json +1 -1
- package/src/components/docs/generated/docs-index.learning-journey-ui-gamified.json +1 -1
- package/src/components/docs/generated/docs-index.learning-journey-ui-onboarding.json +1 -1
- package/src/components/docs/generated/docs-index.learning-journey-ui-shared.json +1 -1
- package/src/components/docs/generated/docs-index.learning-journey.json +1 -1
- package/src/components/docs/generated/docs-index.learning-patterns.json +1 -1
- package/src/components/docs/generated/docs-index.lifecycle-cli.json +1 -1
- package/src/components/docs/generated/docs-index.lifecycle-dashboard.json +1 -1
- package/src/components/docs/generated/docs-index.locale-jurisdiction-gate.json +1 -1
- package/src/components/docs/generated/docs-index.manifest.json +2 -2
- package/src/components/docs/generated/docs-index.marketplace.json +1 -1
- package/src/components/docs/generated/docs-index.meeting-recorder-providers.json +1 -1
- package/src/components/docs/generated/docs-index.meeting-recorder.json +1 -1
- package/src/components/docs/generated/docs-index.metrics.json +1 -1
- package/src/components/docs/generated/docs-index.minimal.json +1 -1
- package/src/components/docs/generated/docs-index.notifications.json +1 -1
- package/src/components/docs/generated/docs-index.openbanking-powens.json +1 -1
- package/src/components/docs/generated/docs-index.openbanking.json +1 -1
- package/src/components/docs/generated/docs-index.opencode-cli.json +1 -1
- package/src/components/docs/generated/docs-index.personalization.json +1 -1
- package/src/components/docs/generated/docs-index.platform-acp.json +1 -1
- package/src/components/docs/generated/docs-index.platform-agent.json +1 -1
- package/src/components/docs/generated/docs-index.platform-context.json +1 -1
- package/src/components/docs/generated/docs-index.platform-database.json +1 -1
- package/src/components/docs/generated/docs-index.platform-docs.json +1 -1
- package/src/components/docs/generated/docs-index.platform-integrations.json +1 -1
- package/src/components/docs/generated/docs-index.platform-knowledge.json +1 -1
- package/src/components/docs/generated/docs-index.platform-provider-ranking.json +1 -1
- package/src/components/docs/generated/docs-index.pocket-family-office.json +1 -1
- package/src/components/docs/generated/docs-index.policy-safe-knowledge-assistant.json +1 -1
- package/src/components/docs/generated/docs-index.product-intent.json +1 -1
- package/src/components/docs/generated/docs-index.project-management-sync.json +1 -1
- package/src/components/docs/generated/docs-index.saas-boilerplate.json +1 -1
- package/src/components/docs/generated/docs-index.service-business-os.json +1 -1
- package/src/components/docs/generated/docs-index.team-hub.json +1 -1
- package/src/components/docs/generated/docs-index.unknown.json +1 -1
- package/src/components/docs/generated/docs-index.versioned-knowledge-base.json +1 -1
- package/src/components/docs/generated/docs-index.video-api-showcase.json +1 -1
- package/src/components/docs/generated/docs-index.video-docs-terminal.json +1 -1
- package/src/components/docs/generated/docs-index.video-marketing-clip.json +1 -1
- package/src/components/docs/generated/docs-index.voice-providers.json +1 -1
- package/src/components/docs/generated/docs-index.wealth-snapshot.json +1 -1
- package/src/components/docs/generated/docs-index.workflow-system.json +1 -1
- package/src/components/docs/generated/docs-index.workspace-cli.json +1 -1
- package/src/components/docs/guides/GuideNextjsOneEndpointPage.tsx +1 -1
- package/src/components/shell/WorkspaceShellRenderer.tsx +90 -0
- package/src/components/shell/index.ts +1 -0
|
@@ -1,114 +1,114 @@
|
|
|
1
1
|
// src/components/docs/advanced/AdvancedMCPPage.tsx
|
|
2
2
|
import Link from "@contractspec/lib.ui-link";
|
|
3
3
|
import { ChevronRight } from "lucide-react";
|
|
4
|
-
import {
|
|
4
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
5
5
|
function AdvancedMCPPage() {
|
|
6
|
-
return /* @__PURE__ */
|
|
6
|
+
return /* @__PURE__ */ jsxs("div", {
|
|
7
7
|
className: "space-y-8",
|
|
8
8
|
children: [
|
|
9
|
-
/* @__PURE__ */
|
|
9
|
+
/* @__PURE__ */ jsxs("div", {
|
|
10
10
|
className: "space-y-4",
|
|
11
11
|
children: [
|
|
12
|
-
/* @__PURE__ */
|
|
12
|
+
/* @__PURE__ */ jsx("h1", {
|
|
13
13
|
className: "text-4xl font-bold",
|
|
14
14
|
children: "MCP Adapters"
|
|
15
|
-
}
|
|
16
|
-
/* @__PURE__ */
|
|
15
|
+
}),
|
|
16
|
+
/* @__PURE__ */ jsxs("p", {
|
|
17
17
|
className: "text-muted-foreground",
|
|
18
18
|
children: [
|
|
19
19
|
"The ",
|
|
20
|
-
/* @__PURE__ */
|
|
20
|
+
/* @__PURE__ */ jsx("strong", {
|
|
21
21
|
children: "Model Context Protocol (MCP)"
|
|
22
|
-
}
|
|
22
|
+
}),
|
|
23
23
|
" is an open standard for connecting AI models to external tools and data sources. ContractSpec provides MCP adapters that allow you to expose your capabilities as MCP tools and consume external MCP servers as capabilities."
|
|
24
24
|
]
|
|
25
|
-
}
|
|
25
|
+
})
|
|
26
26
|
]
|
|
27
|
-
}
|
|
28
|
-
/* @__PURE__ */
|
|
27
|
+
}),
|
|
28
|
+
/* @__PURE__ */ jsxs("div", {
|
|
29
29
|
className: "space-y-4",
|
|
30
30
|
children: [
|
|
31
|
-
/* @__PURE__ */
|
|
31
|
+
/* @__PURE__ */ jsx("h2", {
|
|
32
32
|
className: "text-2xl font-bold",
|
|
33
33
|
children: "Why MCP integration matters"
|
|
34
|
-
}
|
|
35
|
-
/* @__PURE__ */
|
|
34
|
+
}),
|
|
35
|
+
/* @__PURE__ */ jsx("p", {
|
|
36
36
|
className: "text-muted-foreground",
|
|
37
37
|
children: "AI agents need access to real-world tools and data to be useful. MCP provides a standardized way to expose these capabilities. By integrating ContractSpec with MCP, you can:"
|
|
38
|
-
}
|
|
39
|
-
/* @__PURE__ */
|
|
38
|
+
}),
|
|
39
|
+
/* @__PURE__ */ jsxs("ul", {
|
|
40
40
|
className: "text-muted-foreground list-inside list-disc space-y-2",
|
|
41
41
|
children: [
|
|
42
|
-
/* @__PURE__ */
|
|
42
|
+
/* @__PURE__ */ jsx("li", {
|
|
43
43
|
children: "Let AI agents invoke your ContractSpec capabilities safely and securely"
|
|
44
|
-
}
|
|
45
|
-
/* @__PURE__ */
|
|
44
|
+
}),
|
|
45
|
+
/* @__PURE__ */ jsx("li", {
|
|
46
46
|
children: "Use external MCP servers (databases, APIs, search engines) as capability providers in your workflows"
|
|
47
|
-
}
|
|
48
|
-
/* @__PURE__ */
|
|
47
|
+
}),
|
|
48
|
+
/* @__PURE__ */ jsx("li", {
|
|
49
49
|
children: "Build AI-powered features without writing custom integration code"
|
|
50
|
-
}
|
|
51
|
-
/* @__PURE__ */
|
|
50
|
+
}),
|
|
51
|
+
/* @__PURE__ */ jsx("li", {
|
|
52
52
|
children: "Enforce policies on AI agent actions just like any other user"
|
|
53
|
-
}
|
|
53
|
+
})
|
|
54
54
|
]
|
|
55
|
-
}
|
|
55
|
+
})
|
|
56
56
|
]
|
|
57
|
-
}
|
|
58
|
-
/* @__PURE__ */
|
|
57
|
+
}),
|
|
58
|
+
/* @__PURE__ */ jsxs("div", {
|
|
59
59
|
className: "space-y-4",
|
|
60
60
|
children: [
|
|
61
|
-
/* @__PURE__ */
|
|
61
|
+
/* @__PURE__ */ jsx("h2", {
|
|
62
62
|
className: "text-2xl font-bold",
|
|
63
63
|
children: "Exposing capabilities as MCP tools"
|
|
64
|
-
}
|
|
65
|
-
/* @__PURE__ */
|
|
64
|
+
}),
|
|
65
|
+
/* @__PURE__ */ jsxs("p", {
|
|
66
66
|
className: "text-muted-foreground",
|
|
67
67
|
children: [
|
|
68
68
|
"Any",
|
|
69
69
|
" ",
|
|
70
|
-
/* @__PURE__ */
|
|
70
|
+
/* @__PURE__ */ jsx(Link, {
|
|
71
71
|
href: "/docs/specs/capabilities",
|
|
72
72
|
className: "text-violet-400 hover:text-violet-300",
|
|
73
73
|
children: "CapabilitySpec"
|
|
74
|
-
}
|
|
74
|
+
}),
|
|
75
75
|
" ",
|
|
76
76
|
"can be automatically exposed as an MCP tool. ContractSpec generates:"
|
|
77
77
|
]
|
|
78
|
-
}
|
|
79
|
-
/* @__PURE__ */
|
|
78
|
+
}),
|
|
79
|
+
/* @__PURE__ */ jsxs("ul", {
|
|
80
80
|
className: "text-muted-foreground list-inside list-disc space-y-2",
|
|
81
81
|
children: [
|
|
82
|
-
/* @__PURE__ */
|
|
82
|
+
/* @__PURE__ */ jsx("li", {
|
|
83
83
|
children: "A tool schema describing the capability's inputs, outputs, and purpose"
|
|
84
|
-
}
|
|
85
|
-
/* @__PURE__ */
|
|
84
|
+
}),
|
|
85
|
+
/* @__PURE__ */ jsx("li", {
|
|
86
86
|
children: "An MCP server endpoint that AI agents can connect to"
|
|
87
|
-
}
|
|
88
|
-
/* @__PURE__ */
|
|
87
|
+
}),
|
|
88
|
+
/* @__PURE__ */ jsx("li", {
|
|
89
89
|
children: "Policy enforcement ensuring agents can only invoke capabilities they're authorized to use"
|
|
90
|
-
}
|
|
91
|
-
/* @__PURE__ */
|
|
90
|
+
}),
|
|
91
|
+
/* @__PURE__ */ jsx("li", {
|
|
92
92
|
children: "Audit logging of all agent actions for compliance and debugging"
|
|
93
|
-
}
|
|
93
|
+
})
|
|
94
94
|
]
|
|
95
|
-
}
|
|
95
|
+
})
|
|
96
96
|
]
|
|
97
|
-
}
|
|
98
|
-
/* @__PURE__ */
|
|
97
|
+
}),
|
|
98
|
+
/* @__PURE__ */ jsxs("div", {
|
|
99
99
|
className: "space-y-4",
|
|
100
100
|
children: [
|
|
101
|
-
/* @__PURE__ */
|
|
101
|
+
/* @__PURE__ */ jsx("h2", {
|
|
102
102
|
className: "text-2xl font-bold",
|
|
103
103
|
children: "Example: Exposing a capability"
|
|
104
|
-
}
|
|
105
|
-
/* @__PURE__ */
|
|
104
|
+
}),
|
|
105
|
+
/* @__PURE__ */ jsx("p", {
|
|
106
106
|
className: "text-muted-foreground",
|
|
107
107
|
children: "Here's how to expose ContractSpec operations as MCP tools:"
|
|
108
|
-
}
|
|
109
|
-
/* @__PURE__ */
|
|
108
|
+
}),
|
|
109
|
+
/* @__PURE__ */ jsx("div", {
|
|
110
110
|
className: "bg-background/50 border-border text-muted-foreground overflow-x-auto rounded-lg border p-4 font-mono text-sm",
|
|
111
|
-
children: /* @__PURE__ */
|
|
111
|
+
children: /* @__PURE__ */ jsx("pre", {
|
|
112
112
|
children: `import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
113
113
|
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
|
|
114
114
|
import { createMcpServer } from '@contractspec/lib.contracts-runtime-server-mcp/provider-mcp';
|
|
@@ -127,28 +127,28 @@ createMcpServer(server, registry, resources, prompts, {
|
|
|
127
127
|
|
|
128
128
|
const transport = new StdioServerTransport();
|
|
129
129
|
await server.connect(transport);`
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
/* @__PURE__ */
|
|
130
|
+
})
|
|
131
|
+
}),
|
|
132
|
+
/* @__PURE__ */ jsx("p", {
|
|
133
133
|
className: "text-muted-foreground",
|
|
134
134
|
children: "AI agents can now discover and invoke your operations through the MCP protocol. ContractSpec handles authentication, authorization, and execution automatically via the `OperationSpecRegistry`."
|
|
135
|
-
}
|
|
135
|
+
})
|
|
136
136
|
]
|
|
137
|
-
}
|
|
138
|
-
/* @__PURE__ */
|
|
137
|
+
}),
|
|
138
|
+
/* @__PURE__ */ jsxs("div", {
|
|
139
139
|
className: "space-y-4",
|
|
140
140
|
children: [
|
|
141
|
-
/* @__PURE__ */
|
|
141
|
+
/* @__PURE__ */ jsx("h2", {
|
|
142
142
|
className: "text-2xl font-bold",
|
|
143
143
|
children: "Consuming external MCP servers"
|
|
144
|
-
}
|
|
145
|
-
/* @__PURE__ */
|
|
144
|
+
}),
|
|
145
|
+
/* @__PURE__ */ jsx("p", {
|
|
146
146
|
className: "text-muted-foreground",
|
|
147
147
|
children: "You can integrate external MCP servers into your workflows. Define an integration spec and use it in your operations:"
|
|
148
|
-
}
|
|
149
|
-
/* @__PURE__ */
|
|
148
|
+
}),
|
|
149
|
+
/* @__PURE__ */ jsx("div", {
|
|
150
150
|
className: "bg-background/50 border-border text-muted-foreground overflow-x-auto rounded-lg border p-4 font-mono text-sm",
|
|
151
|
-
children: /* @__PURE__ */
|
|
151
|
+
children: /* @__PURE__ */ jsx("pre", {
|
|
152
152
|
children: `import { defineIntegration } from '@contractspec/lib.contracts-integrations';
|
|
153
153
|
import { SchemaModel, ScalarTypeEnum } from '@contractspec/lib.schema';
|
|
154
154
|
|
|
@@ -179,33 +179,33 @@ const SearchProductsIntegration = defineIntegration({
|
|
|
179
179
|
}),
|
|
180
180
|
},
|
|
181
181
|
});`
|
|
182
|
-
}
|
|
183
|
-
}
|
|
182
|
+
})
|
|
183
|
+
})
|
|
184
184
|
]
|
|
185
|
-
}
|
|
186
|
-
/* @__PURE__ */
|
|
185
|
+
}),
|
|
186
|
+
/* @__PURE__ */ jsxs("div", {
|
|
187
187
|
className: "space-y-4",
|
|
188
188
|
children: [
|
|
189
|
-
/* @__PURE__ */
|
|
189
|
+
/* @__PURE__ */ jsx("h2", {
|
|
190
190
|
className: "text-2xl font-bold",
|
|
191
191
|
children: "Policy enforcement for AI agents"
|
|
192
|
-
}
|
|
193
|
-
/* @__PURE__ */
|
|
192
|
+
}),
|
|
193
|
+
/* @__PURE__ */ jsxs("p", {
|
|
194
194
|
className: "text-muted-foreground",
|
|
195
195
|
children: [
|
|
196
196
|
"AI agents are treated like any other actor in ContractSpec. They must authenticate, and all their actions are subject to",
|
|
197
197
|
" ",
|
|
198
|
-
/* @__PURE__ */
|
|
198
|
+
/* @__PURE__ */ jsx(Link, {
|
|
199
199
|
href: "/docs/specs/policy",
|
|
200
200
|
className: "text-violet-400 hover:text-violet-300",
|
|
201
201
|
children: "PolicySpecs"
|
|
202
|
-
}
|
|
202
|
+
}),
|
|
203
203
|
". You can define specific policies in TypeScript:"
|
|
204
204
|
]
|
|
205
|
-
}
|
|
206
|
-
/* @__PURE__ */
|
|
205
|
+
}),
|
|
206
|
+
/* @__PURE__ */ jsx("div", {
|
|
207
207
|
className: "bg-background/50 border-border text-muted-foreground overflow-x-auto rounded-lg border p-4 font-mono text-sm",
|
|
208
|
-
children: /* @__PURE__ */
|
|
208
|
+
children: /* @__PURE__ */ jsx("pre", {
|
|
209
209
|
children: `import { definePolicy } from '@contractspec/lib.contracts-spec';
|
|
210
210
|
|
|
211
211
|
export const AIAgentRestrictions = definePolicy({
|
|
@@ -230,271 +230,271 @@ export const AIAgentRestrictions = definePolicy({
|
|
|
230
230
|
},
|
|
231
231
|
],
|
|
232
232
|
});`
|
|
233
|
-
}
|
|
234
|
-
}
|
|
233
|
+
})
|
|
234
|
+
})
|
|
235
235
|
]
|
|
236
|
-
}
|
|
237
|
-
/* @__PURE__ */
|
|
236
|
+
}),
|
|
237
|
+
/* @__PURE__ */ jsxs("div", {
|
|
238
238
|
className: "space-y-4",
|
|
239
239
|
children: [
|
|
240
|
-
/* @__PURE__ */
|
|
240
|
+
/* @__PURE__ */ jsx("h2", {
|
|
241
241
|
className: "text-2xl font-bold",
|
|
242
242
|
children: "Human-in-the-loop workflows"
|
|
243
|
-
}
|
|
244
|
-
/* @__PURE__ */
|
|
243
|
+
}),
|
|
244
|
+
/* @__PURE__ */ jsx("p", {
|
|
245
245
|
className: "text-muted-foreground",
|
|
246
246
|
children: "For sensitive operations, you can require human approval before an AI agent can proceed. ContractSpec provides built-in approval workflows:"
|
|
247
|
-
}
|
|
248
|
-
/* @__PURE__ */
|
|
247
|
+
}),
|
|
248
|
+
/* @__PURE__ */ jsxs("ul", {
|
|
249
249
|
className: "text-muted-foreground list-inside list-disc space-y-2",
|
|
250
250
|
children: [
|
|
251
|
-
/* @__PURE__ */
|
|
251
|
+
/* @__PURE__ */ jsx("li", {
|
|
252
252
|
children: "Agent requests permission to invoke a capability"
|
|
253
|
-
}
|
|
254
|
-
/* @__PURE__ */
|
|
253
|
+
}),
|
|
254
|
+
/* @__PURE__ */ jsx("li", {
|
|
255
255
|
children: "Request is sent to designated approvers (via email, Slack, etc.)"
|
|
256
|
-
}
|
|
257
|
-
/* @__PURE__ */
|
|
256
|
+
}),
|
|
257
|
+
/* @__PURE__ */ jsx("li", {
|
|
258
258
|
children: "Approver reviews the request and approves or denies it"
|
|
259
|
-
}
|
|
260
|
-
/* @__PURE__ */
|
|
259
|
+
}),
|
|
260
|
+
/* @__PURE__ */ jsx("li", {
|
|
261
261
|
children: "Agent receives the decision and can proceed if approved"
|
|
262
|
-
}
|
|
262
|
+
})
|
|
263
263
|
]
|
|
264
|
-
}
|
|
265
|
-
/* @__PURE__ */
|
|
264
|
+
}),
|
|
265
|
+
/* @__PURE__ */ jsxs("p", {
|
|
266
266
|
className: "text-muted-foreground",
|
|
267
267
|
children: [
|
|
268
268
|
"All approval decisions are logged in the",
|
|
269
269
|
" ",
|
|
270
|
-
/* @__PURE__ */
|
|
270
|
+
/* @__PURE__ */ jsx(Link, {
|
|
271
271
|
href: "/docs/safety/auditing",
|
|
272
272
|
className: "text-violet-400 hover:text-violet-300",
|
|
273
273
|
children: "audit log"
|
|
274
|
-
}
|
|
274
|
+
}),
|
|
275
275
|
"."
|
|
276
276
|
]
|
|
277
|
-
}
|
|
277
|
+
})
|
|
278
278
|
]
|
|
279
|
-
}
|
|
280
|
-
/* @__PURE__ */
|
|
279
|
+
}),
|
|
280
|
+
/* @__PURE__ */ jsxs("div", {
|
|
281
281
|
className: "space-y-4",
|
|
282
282
|
children: [
|
|
283
|
-
/* @__PURE__ */
|
|
283
|
+
/* @__PURE__ */ jsx("h2", {
|
|
284
284
|
className: "text-2xl font-bold",
|
|
285
285
|
children: "Best practices"
|
|
286
|
-
}
|
|
287
|
-
/* @__PURE__ */
|
|
286
|
+
}),
|
|
287
|
+
/* @__PURE__ */ jsxs("ul", {
|
|
288
288
|
className: "text-muted-foreground list-inside list-disc space-y-2",
|
|
289
289
|
children: [
|
|
290
|
-
/* @__PURE__ */
|
|
290
|
+
/* @__PURE__ */ jsx("li", {
|
|
291
291
|
children: "Start with read-only capabilities for AI agents—only grant write access when necessary."
|
|
292
|
-
}
|
|
293
|
-
/* @__PURE__ */
|
|
292
|
+
}),
|
|
293
|
+
/* @__PURE__ */ jsx("li", {
|
|
294
294
|
children: "Use human-in-the-loop approval for any capability that modifies critical data or triggers financial transactions."
|
|
295
|
-
}
|
|
296
|
-
/* @__PURE__ */
|
|
295
|
+
}),
|
|
296
|
+
/* @__PURE__ */ jsx("li", {
|
|
297
297
|
children: "Set rate limits to prevent runaway agents from overwhelming your system."
|
|
298
|
-
}
|
|
299
|
-
/* @__PURE__ */
|
|
298
|
+
}),
|
|
299
|
+
/* @__PURE__ */ jsx("li", {
|
|
300
300
|
children: "Provide clear, detailed descriptions for each capability so agents know when to use them."
|
|
301
|
-
}
|
|
302
|
-
/* @__PURE__ */
|
|
301
|
+
}),
|
|
302
|
+
/* @__PURE__ */ jsx("li", {
|
|
303
303
|
children: "Monitor agent actions closely in production and adjust policies as needed."
|
|
304
|
-
}
|
|
305
|
-
/* @__PURE__ */
|
|
304
|
+
}),
|
|
305
|
+
/* @__PURE__ */ jsx("li", {
|
|
306
306
|
children: "Test agent integrations thoroughly with realistic scenarios before deploying."
|
|
307
|
-
}
|
|
307
|
+
})
|
|
308
308
|
]
|
|
309
|
-
}
|
|
309
|
+
})
|
|
310
310
|
]
|
|
311
|
-
}
|
|
312
|
-
/* @__PURE__ */
|
|
311
|
+
}),
|
|
312
|
+
/* @__PURE__ */ jsxs("div", {
|
|
313
313
|
className: "flex items-center gap-4 pt-4",
|
|
314
314
|
children: [
|
|
315
|
-
/* @__PURE__ */
|
|
315
|
+
/* @__PURE__ */ jsx(Link, {
|
|
316
316
|
href: "/docs/advanced/renderers",
|
|
317
317
|
className: "btn-ghost",
|
|
318
318
|
children: "Previous: Custom Renderers"
|
|
319
|
-
}
|
|
320
|
-
/* @__PURE__ */
|
|
319
|
+
}),
|
|
320
|
+
/* @__PURE__ */ jsxs(Link, {
|
|
321
321
|
href: "/docs/advanced/telemetry",
|
|
322
322
|
className: "btn-primary",
|
|
323
323
|
children: [
|
|
324
324
|
"Next: Telemetry ",
|
|
325
|
-
/* @__PURE__ */
|
|
325
|
+
/* @__PURE__ */ jsx(ChevronRight, {
|
|
326
326
|
size: 16
|
|
327
|
-
}
|
|
327
|
+
})
|
|
328
328
|
]
|
|
329
|
-
}
|
|
329
|
+
})
|
|
330
330
|
]
|
|
331
|
-
}
|
|
331
|
+
})
|
|
332
332
|
]
|
|
333
|
-
}
|
|
333
|
+
});
|
|
334
334
|
}
|
|
335
335
|
|
|
336
336
|
// src/components/docs/advanced/AdvancedOverlayEditorPage.tsx
|
|
337
337
|
import Link2 from "@contractspec/lib.ui-link";
|
|
338
|
-
import {
|
|
338
|
+
import { jsx as jsx2, jsxs as jsxs2 } from "react/jsx-runtime";
|
|
339
339
|
function AdvancedOverlayEditorPage() {
|
|
340
|
-
return /* @__PURE__ */
|
|
340
|
+
return /* @__PURE__ */ jsxs2("div", {
|
|
341
341
|
className: "space-y-8",
|
|
342
342
|
children: [
|
|
343
|
-
/* @__PURE__ */
|
|
343
|
+
/* @__PURE__ */ jsxs2("div", {
|
|
344
344
|
className: "space-y-4",
|
|
345
345
|
children: [
|
|
346
|
-
/* @__PURE__ */
|
|
346
|
+
/* @__PURE__ */ jsx2("h1", {
|
|
347
347
|
className: "text-4xl font-bold",
|
|
348
348
|
children: "Overlay Editor"
|
|
349
|
-
}
|
|
350
|
-
/* @__PURE__ */
|
|
349
|
+
}),
|
|
350
|
+
/* @__PURE__ */ jsx2("p", {
|
|
351
351
|
className: "text-muted-foreground text-lg",
|
|
352
352
|
children: "A Next.js app (`@contractspec/app.overlay-editor`) that lets tenant admins tweak field visibility, labels, and ordering, then sign OverlaySpecs."
|
|
353
|
-
}
|
|
353
|
+
})
|
|
354
354
|
]
|
|
355
|
-
}
|
|
356
|
-
/* @__PURE__ */
|
|
355
|
+
}),
|
|
356
|
+
/* @__PURE__ */ jsxs2("div", {
|
|
357
357
|
className: "space-y-4",
|
|
358
358
|
children: [
|
|
359
|
-
/* @__PURE__ */
|
|
359
|
+
/* @__PURE__ */ jsx2("h2", {
|
|
360
360
|
className: "text-2xl font-bold",
|
|
361
361
|
children: "Features"
|
|
362
|
-
}
|
|
363
|
-
/* @__PURE__ */
|
|
362
|
+
}),
|
|
363
|
+
/* @__PURE__ */ jsxs2("ul", {
|
|
364
364
|
className: "list-disc space-y-2 pl-6",
|
|
365
365
|
children: [
|
|
366
|
-
/* @__PURE__ */
|
|
366
|
+
/* @__PURE__ */ jsx2("li", {
|
|
367
367
|
children: "Toggle visibility and rename labels without touching code."
|
|
368
|
-
}
|
|
369
|
-
/* @__PURE__ */
|
|
368
|
+
}),
|
|
369
|
+
/* @__PURE__ */ jsx2("li", {
|
|
370
370
|
children: "Move fields up/down to define the overlay order."
|
|
371
|
-
}
|
|
372
|
-
/* @__PURE__ */
|
|
371
|
+
}),
|
|
372
|
+
/* @__PURE__ */ jsx2("li", {
|
|
373
373
|
children: "Preview JSON output powered by `@contractspec/lib.overlay-engine`."
|
|
374
|
-
}
|
|
375
|
-
/* @__PURE__ */
|
|
374
|
+
}),
|
|
375
|
+
/* @__PURE__ */ jsx2("li", {
|
|
376
376
|
children: "Server action for PEM signing (Ed25519/RSA-PSS)."
|
|
377
|
-
}
|
|
377
|
+
})
|
|
378
378
|
]
|
|
379
|
-
}
|
|
380
|
-
/* @__PURE__ */
|
|
379
|
+
}),
|
|
380
|
+
/* @__PURE__ */ jsxs2("p", {
|
|
381
381
|
children: [
|
|
382
382
|
"Project path: ",
|
|
383
|
-
/* @__PURE__ */
|
|
383
|
+
/* @__PURE__ */ jsx2("code", {
|
|
384
384
|
children: "packages/apps/overlay-editor"
|
|
385
|
-
}
|
|
385
|
+
})
|
|
386
386
|
]
|
|
387
|
-
}
|
|
387
|
+
})
|
|
388
388
|
]
|
|
389
|
-
}
|
|
390
|
-
/* @__PURE__ */
|
|
389
|
+
}),
|
|
390
|
+
/* @__PURE__ */ jsxs2("div", {
|
|
391
391
|
className: "space-y-4",
|
|
392
392
|
children: [
|
|
393
|
-
/* @__PURE__ */
|
|
393
|
+
/* @__PURE__ */ jsx2("h2", {
|
|
394
394
|
className: "text-2xl font-bold",
|
|
395
395
|
children: "Provisioning flow"
|
|
396
|
-
}
|
|
397
|
-
/* @__PURE__ */
|
|
396
|
+
}),
|
|
397
|
+
/* @__PURE__ */ jsxs2("ol", {
|
|
398
398
|
className: "list-decimal space-y-2 pl-6",
|
|
399
399
|
children: [
|
|
400
|
-
/* @__PURE__ */
|
|
400
|
+
/* @__PURE__ */ jsxs2("li", {
|
|
401
401
|
children: [
|
|
402
402
|
"Clone the repo and run ",
|
|
403
|
-
/* @__PURE__ */
|
|
403
|
+
/* @__PURE__ */ jsx2("code", {
|
|
404
404
|
children: "bun dev"
|
|
405
|
-
}
|
|
405
|
+
}),
|
|
406
406
|
" inside the app."
|
|
407
407
|
]
|
|
408
|
-
}
|
|
409
|
-
/* @__PURE__ */
|
|
408
|
+
}),
|
|
409
|
+
/* @__PURE__ */ jsx2("li", {
|
|
410
410
|
children: "Use the UI to craft the overlay for a tenant."
|
|
411
|
-
}
|
|
412
|
-
/* @__PURE__ */
|
|
411
|
+
}),
|
|
412
|
+
/* @__PURE__ */ jsx2("li", {
|
|
413
413
|
children: "Paste the tenant's PEM private key (stored in Vault/KMS)."
|
|
414
|
-
}
|
|
415
|
-
/* @__PURE__ */
|
|
414
|
+
}),
|
|
415
|
+
/* @__PURE__ */ jsx2("li", {
|
|
416
416
|
children: "Click “Sign overlay” to get the final JSON payload."
|
|
417
|
-
}
|
|
418
|
-
/* @__PURE__ */
|
|
417
|
+
}),
|
|
418
|
+
/* @__PURE__ */ jsx2("li", {
|
|
419
419
|
children: "Persist in the `Overlay` table and register with `OverlayRegistry`."
|
|
420
|
-
}
|
|
420
|
+
})
|
|
421
421
|
]
|
|
422
|
-
}
|
|
423
|
-
/* @__PURE__ */
|
|
422
|
+
}),
|
|
423
|
+
/* @__PURE__ */ jsxs2("p", {
|
|
424
424
|
children: [
|
|
425
425
|
"See also:",
|
|
426
426
|
" ",
|
|
427
|
-
/* @__PURE__ */
|
|
427
|
+
/* @__PURE__ */ jsx2(Link2, {
|
|
428
428
|
href: "/docs/ops/tenant-customization",
|
|
429
429
|
className: "text-violet-400 underline",
|
|
430
430
|
children: "Tenant customization runbook"
|
|
431
|
-
}
|
|
431
|
+
}),
|
|
432
432
|
"."
|
|
433
433
|
]
|
|
434
|
-
}
|
|
434
|
+
})
|
|
435
435
|
]
|
|
436
|
-
}
|
|
436
|
+
})
|
|
437
437
|
]
|
|
438
|
-
}
|
|
438
|
+
});
|
|
439
439
|
}
|
|
440
440
|
|
|
441
441
|
// src/components/docs/advanced/AdvancedRenderersPage.tsx
|
|
442
442
|
import Link3 from "@contractspec/lib.ui-link";
|
|
443
443
|
import { ChevronRight as ChevronRight2 } from "lucide-react";
|
|
444
|
-
import {
|
|
444
|
+
import { jsx as jsx3, jsxs as jsxs3 } from "react/jsx-runtime";
|
|
445
445
|
function AdvancedRenderersPage() {
|
|
446
|
-
return /* @__PURE__ */
|
|
446
|
+
return /* @__PURE__ */ jsxs3("div", {
|
|
447
447
|
className: "space-y-8",
|
|
448
448
|
children: [
|
|
449
|
-
/* @__PURE__ */
|
|
449
|
+
/* @__PURE__ */ jsxs3("div", {
|
|
450
450
|
className: "space-y-2",
|
|
451
451
|
children: [
|
|
452
|
-
/* @__PURE__ */
|
|
452
|
+
/* @__PURE__ */ jsx3("h1", {
|
|
453
453
|
className: "text-4xl font-bold",
|
|
454
454
|
children: "Custom Renderers"
|
|
455
|
-
}
|
|
456
|
-
/* @__PURE__ */
|
|
455
|
+
}),
|
|
456
|
+
/* @__PURE__ */ jsx3("p", {
|
|
457
457
|
className: "text-muted-foreground text-lg",
|
|
458
458
|
children: "ContractSpec ships with React and React Native renderers. You can build custom renderers for any framework."
|
|
459
|
-
}
|
|
459
|
+
})
|
|
460
460
|
]
|
|
461
|
-
}
|
|
462
|
-
/* @__PURE__ */
|
|
461
|
+
}),
|
|
462
|
+
/* @__PURE__ */ jsxs3("div", {
|
|
463
463
|
className: "space-y-6",
|
|
464
464
|
children: [
|
|
465
|
-
/* @__PURE__ */
|
|
465
|
+
/* @__PURE__ */ jsxs3("div", {
|
|
466
466
|
className: "space-y-3",
|
|
467
467
|
children: [
|
|
468
|
-
/* @__PURE__ */
|
|
468
|
+
/* @__PURE__ */ jsx3("h2", {
|
|
469
469
|
className: "text-2xl font-bold",
|
|
470
470
|
children: "Overview"
|
|
471
|
-
}
|
|
472
|
-
/* @__PURE__ */
|
|
471
|
+
}),
|
|
472
|
+
/* @__PURE__ */ jsxs3("p", {
|
|
473
473
|
className: "text-muted-foreground",
|
|
474
474
|
children: [
|
|
475
475
|
"The presentation runtime libraries (",
|
|
476
|
-
/* @__PURE__ */
|
|
476
|
+
/* @__PURE__ */ jsx3("code", {
|
|
477
477
|
children: "@contractspec/lib.presentation-runtime-react"
|
|
478
|
-
}
|
|
478
|
+
}),
|
|
479
479
|
" and",
|
|
480
|
-
/* @__PURE__ */
|
|
480
|
+
/* @__PURE__ */ jsx3("code", {
|
|
481
481
|
children: "@contractspec/lib.presentation-runtime-react-native"
|
|
482
|
-
}
|
|
482
|
+
}),
|
|
483
483
|
") provide hooks and components to render ContractSpec-defined UI like workflows and data views. You can extend these or create custom implementations for other frameworks."
|
|
484
484
|
]
|
|
485
|
-
}
|
|
485
|
+
})
|
|
486
486
|
]
|
|
487
|
-
}
|
|
488
|
-
/* @__PURE__ */
|
|
487
|
+
}),
|
|
488
|
+
/* @__PURE__ */ jsxs3("div", {
|
|
489
489
|
className: "space-y-3",
|
|
490
490
|
children: [
|
|
491
|
-
/* @__PURE__ */
|
|
491
|
+
/* @__PURE__ */ jsx3("h2", {
|
|
492
492
|
className: "text-2xl font-bold",
|
|
493
493
|
children: "Using the React Renderer"
|
|
494
|
-
}
|
|
495
|
-
/* @__PURE__ */
|
|
494
|
+
}),
|
|
495
|
+
/* @__PURE__ */ jsx3("div", {
|
|
496
496
|
className: "bg-background/50 border-border text-muted-foreground overflow-x-auto rounded-lg border p-4 font-mono text-sm",
|
|
497
|
-
children: /* @__PURE__ */
|
|
497
|
+
children: /* @__PURE__ */ jsx3("pre", {
|
|
498
498
|
children: `import { useWorkflow, WorkflowStepRenderer } from '@contractspec/lib.presentation-runtime-react';
|
|
499
499
|
import { MyWorkflowSpec } from './specs';
|
|
500
500
|
|
|
@@ -511,90 +511,90 @@ export function WorkflowPage() {
|
|
|
511
511
|
</div>
|
|
512
512
|
);
|
|
513
513
|
}`
|
|
514
|
-
}
|
|
515
|
-
}
|
|
514
|
+
})
|
|
515
|
+
})
|
|
516
516
|
]
|
|
517
|
-
}
|
|
518
|
-
/* @__PURE__ */
|
|
517
|
+
}),
|
|
518
|
+
/* @__PURE__ */ jsxs3("div", {
|
|
519
519
|
className: "space-y-3",
|
|
520
520
|
children: [
|
|
521
|
-
/* @__PURE__ */
|
|
521
|
+
/* @__PURE__ */ jsx3("h2", {
|
|
522
522
|
className: "text-2xl font-bold",
|
|
523
523
|
children: "Custom Platform Support"
|
|
524
|
-
}
|
|
525
|
-
/* @__PURE__ */
|
|
524
|
+
}),
|
|
525
|
+
/* @__PURE__ */ jsx3("p", {
|
|
526
526
|
className: "text-muted-foreground",
|
|
527
527
|
children: "To support a new platform (e.g., Vue, Svelte), you would:"
|
|
528
|
-
}
|
|
529
|
-
/* @__PURE__ */
|
|
528
|
+
}),
|
|
529
|
+
/* @__PURE__ */ jsxs3("ol", {
|
|
530
530
|
className: "text-muted-foreground list-inside list-decimal space-y-2",
|
|
531
531
|
children: [
|
|
532
|
-
/* @__PURE__ */
|
|
532
|
+
/* @__PURE__ */ jsxs3("li", {
|
|
533
533
|
children: [
|
|
534
534
|
"Implement the core workflow state machine (from",
|
|
535
535
|
" ",
|
|
536
|
-
/* @__PURE__ */
|
|
536
|
+
/* @__PURE__ */ jsx3("code", {
|
|
537
537
|
children: "@contractspec/lib.presentation-runtime-core"
|
|
538
|
-
}
|
|
538
|
+
}),
|
|
539
539
|
")"
|
|
540
540
|
]
|
|
541
|
-
}
|
|
542
|
-
/* @__PURE__ */
|
|
541
|
+
}),
|
|
542
|
+
/* @__PURE__ */ jsx3("li", {
|
|
543
543
|
children: "Create framework-specific hooks/components for step rendering"
|
|
544
|
-
}
|
|
545
|
-
/* @__PURE__ */
|
|
544
|
+
}),
|
|
545
|
+
/* @__PURE__ */ jsx3("li", {
|
|
546
546
|
children: "Handle validation and submission via the ContractSpec I/O schemas"
|
|
547
|
-
}
|
|
547
|
+
})
|
|
548
548
|
]
|
|
549
|
-
}
|
|
549
|
+
})
|
|
550
550
|
]
|
|
551
|
-
}
|
|
552
|
-
/* @__PURE__ */
|
|
551
|
+
}),
|
|
552
|
+
/* @__PURE__ */ jsx3("div", {
|
|
553
553
|
className: "flex items-center gap-4 pt-4",
|
|
554
|
-
children: /* @__PURE__ */
|
|
554
|
+
children: /* @__PURE__ */ jsxs3(Link3, {
|
|
555
555
|
href: "/docs",
|
|
556
556
|
className: "btn-primary",
|
|
557
557
|
children: [
|
|
558
558
|
"Back to docs ",
|
|
559
|
-
/* @__PURE__ */
|
|
559
|
+
/* @__PURE__ */ jsx3(ChevronRight2, {
|
|
560
560
|
size: 16
|
|
561
|
-
}
|
|
561
|
+
})
|
|
562
562
|
]
|
|
563
|
-
}
|
|
564
|
-
}
|
|
563
|
+
})
|
|
564
|
+
})
|
|
565
565
|
]
|
|
566
|
-
}
|
|
566
|
+
})
|
|
567
567
|
]
|
|
568
|
-
}
|
|
568
|
+
});
|
|
569
569
|
}
|
|
570
570
|
|
|
571
571
|
// src/components/docs/advanced/AdvancedSpecExperimentsPage.tsx
|
|
572
|
-
import {
|
|
572
|
+
import { jsx as jsx4, jsxs as jsxs4 } from "react/jsx-runtime";
|
|
573
573
|
function AdvancedSpecExperimentsPage() {
|
|
574
|
-
return /* @__PURE__ */
|
|
574
|
+
return /* @__PURE__ */ jsxs4("div", {
|
|
575
575
|
className: "space-y-8",
|
|
576
576
|
children: [
|
|
577
|
-
/* @__PURE__ */
|
|
577
|
+
/* @__PURE__ */ jsxs4("div", {
|
|
578
578
|
className: "space-y-4",
|
|
579
579
|
children: [
|
|
580
|
-
/* @__PURE__ */
|
|
580
|
+
/* @__PURE__ */ jsx4("h1", {
|
|
581
581
|
className: "text-4xl font-bold",
|
|
582
582
|
children: "Spec Experiments"
|
|
583
|
-
}
|
|
584
|
-
/* @__PURE__ */
|
|
583
|
+
}),
|
|
584
|
+
/* @__PURE__ */ jsx4("p", {
|
|
585
585
|
className: "text-muted-foreground text-lg",
|
|
586
586
|
children: "Run controlled experiments on ContractSpec operations, gradually shift traffic, and roll back automatically when guardrails trip."
|
|
587
|
-
}
|
|
587
|
+
})
|
|
588
588
|
]
|
|
589
|
-
}
|
|
590
|
-
/* @__PURE__ */
|
|
589
|
+
}),
|
|
590
|
+
/* @__PURE__ */ jsxs4("div", {
|
|
591
591
|
className: "space-y-3",
|
|
592
592
|
children: [
|
|
593
|
-
/* @__PURE__ */
|
|
593
|
+
/* @__PURE__ */ jsx4("h2", {
|
|
594
594
|
className: "text-2xl font-bold",
|
|
595
595
|
children: "Define control + variants"
|
|
596
|
-
}
|
|
597
|
-
/* @__PURE__ */
|
|
596
|
+
}),
|
|
597
|
+
/* @__PURE__ */ jsx4("pre", {
|
|
598
598
|
className: "bg-muted rounded-lg border p-4 text-sm",
|
|
599
599
|
children: `import { SpecExperimentRegistry } from '@contractspec/lib.growth/spec-experiments';
|
|
600
600
|
|
|
@@ -617,17 +617,17 @@ const registry = new SpecExperimentRegistry().register({
|
|
|
617
617
|
rolloutStages: [0.01, 0.1, 0.5, 1],
|
|
618
618
|
guardrails: { errorRateThreshold: 0.02, latencyP99ThresholdMs: 500 },
|
|
619
619
|
});`
|
|
620
|
-
}
|
|
620
|
+
})
|
|
621
621
|
]
|
|
622
|
-
}
|
|
623
|
-
/* @__PURE__ */
|
|
622
|
+
}),
|
|
623
|
+
/* @__PURE__ */ jsxs4("div", {
|
|
624
624
|
className: "space-y-3",
|
|
625
625
|
children: [
|
|
626
|
-
/* @__PURE__ */
|
|
626
|
+
/* @__PURE__ */ jsx4("h2", {
|
|
627
627
|
className: "text-2xl font-bold",
|
|
628
628
|
children: "Attach to runtime"
|
|
629
|
-
}
|
|
630
|
-
/* @__PURE__ */
|
|
629
|
+
}),
|
|
630
|
+
/* @__PURE__ */ jsx4("pre", {
|
|
631
631
|
className: "bg-muted rounded-lg border p-4 text-sm",
|
|
632
632
|
children: `import { createSpecVariantResolver } from '@contractspec/lib.growth/spec-experiments';
|
|
633
633
|
|
|
@@ -635,17 +635,17 @@ adapterContext.specVariantResolver = createSpecVariantResolver({
|
|
|
635
635
|
adapter,
|
|
636
636
|
resolveUserId: (ctx) => ctx.userId ?? ctx.organizationId ?? 'anon',
|
|
637
637
|
});`
|
|
638
|
-
}
|
|
638
|
+
})
|
|
639
639
|
]
|
|
640
|
-
}
|
|
641
|
-
/* @__PURE__ */
|
|
640
|
+
}),
|
|
641
|
+
/* @__PURE__ */ jsxs4("div", {
|
|
642
642
|
className: "space-y-3",
|
|
643
643
|
children: [
|
|
644
|
-
/* @__PURE__ */
|
|
644
|
+
/* @__PURE__ */ jsx4("h2", {
|
|
645
645
|
className: "text-2xl font-bold",
|
|
646
646
|
children: "Track outcomes + auto-rollback"
|
|
647
|
-
}
|
|
648
|
-
/* @__PURE__ */
|
|
647
|
+
}),
|
|
648
|
+
/* @__PURE__ */ jsx4("pre", {
|
|
649
649
|
className: "bg-muted rounded-lg border p-4 text-sm",
|
|
650
650
|
children: `import {
|
|
651
651
|
SpecExperimentAnalyzer,
|
|
@@ -658,10 +658,10 @@ const controller = new SpecExperimentController({
|
|
|
658
658
|
analyzer,
|
|
659
659
|
onRollback: (target, evaluation) => notifyOps(target, evaluation.reasons),
|
|
660
660
|
});`
|
|
661
|
-
}
|
|
661
|
+
})
|
|
662
662
|
]
|
|
663
|
-
}
|
|
664
|
-
/* @__PURE__ */
|
|
663
|
+
}),
|
|
664
|
+
/* @__PURE__ */ jsx4("div", {
|
|
665
665
|
className: "grid gap-4 md:grid-cols-2",
|
|
666
666
|
children: [
|
|
667
667
|
{
|
|
@@ -672,132 +672,132 @@ const controller = new SpecExperimentController({
|
|
|
672
672
|
title: "Multi-stage rollouts",
|
|
673
673
|
description: "Use `rolloutStages` to shift 1% → 10% → 50% → 100%. Guardrails trigger rollbacks automatically."
|
|
674
674
|
}
|
|
675
|
-
].map((card) => /* @__PURE__ */
|
|
675
|
+
].map((card) => /* @__PURE__ */ jsxs4("div", {
|
|
676
676
|
className: "card-subtle space-y-2 p-4",
|
|
677
677
|
children: [
|
|
678
|
-
/* @__PURE__ */
|
|
678
|
+
/* @__PURE__ */ jsx4("h3", {
|
|
679
679
|
className: "text-lg font-semibold",
|
|
680
680
|
children: card.title
|
|
681
|
-
}
|
|
682
|
-
/* @__PURE__ */
|
|
681
|
+
}),
|
|
682
|
+
/* @__PURE__ */ jsx4("p", {
|
|
683
683
|
className: "text-muted-foreground text-sm",
|
|
684
684
|
children: card.description
|
|
685
|
-
}
|
|
685
|
+
})
|
|
686
686
|
]
|
|
687
|
-
}, card.title
|
|
688
|
-
}
|
|
687
|
+
}, card.title))
|
|
688
|
+
})
|
|
689
689
|
]
|
|
690
|
-
}
|
|
690
|
+
});
|
|
691
691
|
}
|
|
692
692
|
|
|
693
693
|
// src/components/docs/advanced/AdvancedTelemetryPage.tsx
|
|
694
694
|
import Link4 from "@contractspec/lib.ui-link";
|
|
695
695
|
import { ChevronRight as ChevronRight3 } from "lucide-react";
|
|
696
|
-
import {
|
|
696
|
+
import { jsx as jsx5, jsxs as jsxs5 } from "react/jsx-runtime";
|
|
697
697
|
function AdvancedTelemetryPage() {
|
|
698
|
-
return /* @__PURE__ */
|
|
698
|
+
return /* @__PURE__ */ jsxs5("div", {
|
|
699
699
|
className: "space-y-8",
|
|
700
700
|
children: [
|
|
701
|
-
/* @__PURE__ */
|
|
701
|
+
/* @__PURE__ */ jsxs5("div", {
|
|
702
702
|
className: "space-y-4",
|
|
703
703
|
children: [
|
|
704
|
-
/* @__PURE__ */
|
|
704
|
+
/* @__PURE__ */ jsx5("h1", {
|
|
705
705
|
className: "text-4xl font-bold",
|
|
706
706
|
children: "Telemetry"
|
|
707
|
-
}
|
|
708
|
-
/* @__PURE__ */
|
|
707
|
+
}),
|
|
708
|
+
/* @__PURE__ */ jsxs5("p", {
|
|
709
709
|
className: "text-muted-foreground",
|
|
710
710
|
children: [
|
|
711
711
|
"A ",
|
|
712
|
-
/* @__PURE__ */
|
|
712
|
+
/* @__PURE__ */ jsx5("strong", {
|
|
713
713
|
children: "TelemetrySpec"
|
|
714
|
-
}
|
|
714
|
+
}),
|
|
715
715
|
" defines what metrics, logs, and traces to collect for observability. ContractSpec automatically instruments your application based on these specs, ensuring you have the visibility you need to monitor, debug, and optimize your system."
|
|
716
716
|
]
|
|
717
|
-
}
|
|
717
|
+
})
|
|
718
718
|
]
|
|
719
|
-
}
|
|
720
|
-
/* @__PURE__ */
|
|
719
|
+
}),
|
|
720
|
+
/* @__PURE__ */ jsxs5("div", {
|
|
721
721
|
className: "space-y-4",
|
|
722
722
|
children: [
|
|
723
|
-
/* @__PURE__ */
|
|
723
|
+
/* @__PURE__ */ jsx5("h2", {
|
|
724
724
|
className: "text-2xl font-bold",
|
|
725
725
|
children: "Why telemetry matters"
|
|
726
|
-
}
|
|
727
|
-
/* @__PURE__ */
|
|
726
|
+
}),
|
|
727
|
+
/* @__PURE__ */ jsx5("p", {
|
|
728
728
|
className: "text-muted-foreground",
|
|
729
729
|
children: "You can't fix what you can't see. Telemetry provides visibility into how your application is performing, where errors are occurring, and how users are interacting with your system. Without proper instrumentation, you're flying blind in production."
|
|
730
|
-
}
|
|
731
|
-
/* @__PURE__ */
|
|
730
|
+
}),
|
|
731
|
+
/* @__PURE__ */ jsx5("p", {
|
|
732
732
|
className: "text-muted-foreground",
|
|
733
733
|
children: "ContractSpec takes a spec-first approach to telemetry: you declare what you want to observe, and runtime adapters instrument operations automatically. This ensures consistent, comprehensive coverage without manual effort."
|
|
734
|
-
}
|
|
734
|
+
})
|
|
735
735
|
]
|
|
736
|
-
}
|
|
737
|
-
/* @__PURE__ */
|
|
736
|
+
}),
|
|
737
|
+
/* @__PURE__ */ jsxs5("div", {
|
|
738
738
|
className: "space-y-4",
|
|
739
739
|
children: [
|
|
740
|
-
/* @__PURE__ */
|
|
740
|
+
/* @__PURE__ */ jsx5("h2", {
|
|
741
741
|
className: "text-2xl font-bold",
|
|
742
742
|
children: "Three pillars of observability"
|
|
743
|
-
}
|
|
744
|
-
/* @__PURE__ */
|
|
743
|
+
}),
|
|
744
|
+
/* @__PURE__ */ jsxs5("div", {
|
|
745
745
|
className: "space-y-3",
|
|
746
746
|
children: [
|
|
747
|
-
/* @__PURE__ */
|
|
747
|
+
/* @__PURE__ */ jsxs5("div", {
|
|
748
748
|
children: [
|
|
749
|
-
/* @__PURE__ */
|
|
749
|
+
/* @__PURE__ */ jsx5("h3", {
|
|
750
750
|
className: "text-lg font-semibold",
|
|
751
751
|
children: "Metrics"
|
|
752
|
-
}
|
|
753
|
-
/* @__PURE__ */
|
|
752
|
+
}),
|
|
753
|
+
/* @__PURE__ */ jsx5("p", {
|
|
754
754
|
className: "text-muted-foreground",
|
|
755
755
|
children: "Numerical measurements collected over time. Examples: request count, error rate, latency percentiles, active users, queue depth. Metrics are cheap to collect and store, making them ideal for high-level monitoring and alerting."
|
|
756
|
-
}
|
|
756
|
+
})
|
|
757
757
|
]
|
|
758
|
-
}
|
|
759
|
-
/* @__PURE__ */
|
|
758
|
+
}),
|
|
759
|
+
/* @__PURE__ */ jsxs5("div", {
|
|
760
760
|
children: [
|
|
761
|
-
/* @__PURE__ */
|
|
761
|
+
/* @__PURE__ */ jsx5("h3", {
|
|
762
762
|
className: "text-lg font-semibold",
|
|
763
763
|
children: "Logs"
|
|
764
|
-
}
|
|
765
|
-
/* @__PURE__ */
|
|
764
|
+
}),
|
|
765
|
+
/* @__PURE__ */ jsx5("p", {
|
|
766
766
|
className: "text-muted-foreground",
|
|
767
767
|
children: 'Timestamped text records of events. Examples: "User 123 logged in", "Payment failed for order 456", "Database connection pool exhausted". Logs provide detailed context for debugging specific issues.'
|
|
768
|
-
}
|
|
768
|
+
})
|
|
769
769
|
]
|
|
770
|
-
}
|
|
771
|
-
/* @__PURE__ */
|
|
770
|
+
}),
|
|
771
|
+
/* @__PURE__ */ jsxs5("div", {
|
|
772
772
|
children: [
|
|
773
|
-
/* @__PURE__ */
|
|
773
|
+
/* @__PURE__ */ jsx5("h3", {
|
|
774
774
|
className: "text-lg font-semibold",
|
|
775
775
|
children: "Traces"
|
|
776
|
-
}
|
|
777
|
-
/* @__PURE__ */
|
|
776
|
+
}),
|
|
777
|
+
/* @__PURE__ */ jsx5("p", {
|
|
778
778
|
className: "text-muted-foreground",
|
|
779
779
|
children: "Records of requests as they flow through your system. A trace shows the complete path of a request—which services it touched, how long each step took, and where errors occurred. Traces are essential for debugging distributed systems."
|
|
780
|
-
}
|
|
780
|
+
})
|
|
781
781
|
]
|
|
782
|
-
}
|
|
782
|
+
})
|
|
783
783
|
]
|
|
784
|
-
}
|
|
784
|
+
})
|
|
785
785
|
]
|
|
786
|
-
}
|
|
787
|
-
/* @__PURE__ */
|
|
786
|
+
}),
|
|
787
|
+
/* @__PURE__ */ jsxs5("div", {
|
|
788
788
|
className: "space-y-4",
|
|
789
789
|
children: [
|
|
790
|
-
/* @__PURE__ */
|
|
790
|
+
/* @__PURE__ */ jsx5("h2", {
|
|
791
791
|
className: "text-2xl font-bold",
|
|
792
792
|
children: "Example TelemetrySpec"
|
|
793
|
-
}
|
|
794
|
-
/* @__PURE__ */
|
|
793
|
+
}),
|
|
794
|
+
/* @__PURE__ */ jsx5("p", {
|
|
795
795
|
className: "text-muted-foreground",
|
|
796
796
|
children: "Here's how telemetry is configured in TypeScript:"
|
|
797
|
-
}
|
|
798
|
-
/* @__PURE__ */
|
|
797
|
+
}),
|
|
798
|
+
/* @__PURE__ */ jsx5("div", {
|
|
799
799
|
className: "bg-background/50 border-border text-muted-foreground overflow-x-auto rounded-lg border p-4 font-mono text-sm",
|
|
800
|
-
children: /* @__PURE__ */
|
|
800
|
+
children: /* @__PURE__ */ jsx5("pre", {
|
|
801
801
|
children: `import { defineTelemetry } from '@contractspec/lib.contracts-spec/telemetry';
|
|
802
802
|
|
|
803
803
|
export const OrderProcessingTelemetry = defineTelemetry({
|
|
@@ -844,303 +844,303 @@ export const OrderProcessingTelemetry = defineTelemetry({
|
|
|
844
844
|
},
|
|
845
845
|
],
|
|
846
846
|
});`
|
|
847
|
-
}
|
|
848
|
-
}
|
|
847
|
+
})
|
|
848
|
+
})
|
|
849
849
|
]
|
|
850
|
-
}
|
|
851
|
-
/* @__PURE__ */
|
|
850
|
+
}),
|
|
851
|
+
/* @__PURE__ */ jsxs5("div", {
|
|
852
852
|
className: "space-y-4",
|
|
853
853
|
children: [
|
|
854
|
-
/* @__PURE__ */
|
|
854
|
+
/* @__PURE__ */ jsx5("h2", {
|
|
855
855
|
className: "text-2xl font-bold",
|
|
856
856
|
children: "Automatic instrumentation"
|
|
857
|
-
}
|
|
858
|
-
/* @__PURE__ */
|
|
857
|
+
}),
|
|
858
|
+
/* @__PURE__ */ jsx5("p", {
|
|
859
859
|
className: "text-muted-foreground",
|
|
860
860
|
children: "ContractSpec automatically instruments:"
|
|
861
|
-
}
|
|
862
|
-
/* @__PURE__ */
|
|
861
|
+
}),
|
|
862
|
+
/* @__PURE__ */ jsxs5("ul", {
|
|
863
863
|
className: "text-muted-foreground list-inside list-disc space-y-2",
|
|
864
864
|
children: [
|
|
865
|
-
/* @__PURE__ */
|
|
865
|
+
/* @__PURE__ */ jsxs5("li", {
|
|
866
866
|
children: [
|
|
867
|
-
/* @__PURE__ */
|
|
867
|
+
/* @__PURE__ */ jsx5("strong", {
|
|
868
868
|
children: "All operations"
|
|
869
|
-
}
|
|
869
|
+
}),
|
|
870
870
|
" – Request count, latency, error rate per Command/Query"
|
|
871
871
|
]
|
|
872
|
-
}
|
|
873
|
-
/* @__PURE__ */
|
|
872
|
+
}),
|
|
873
|
+
/* @__PURE__ */ jsxs5("li", {
|
|
874
874
|
children: [
|
|
875
|
-
/* @__PURE__ */
|
|
875
|
+
/* @__PURE__ */ jsx5("strong", {
|
|
876
876
|
children: "All workflows"
|
|
877
|
-
}
|
|
877
|
+
}),
|
|
878
878
|
" – Step execution time, retry counts, compensation events"
|
|
879
879
|
]
|
|
880
|
-
}
|
|
881
|
-
/* @__PURE__ */
|
|
880
|
+
}),
|
|
881
|
+
/* @__PURE__ */ jsxs5("li", {
|
|
882
882
|
children: [
|
|
883
|
-
/* @__PURE__ */
|
|
883
|
+
/* @__PURE__ */ jsx5("strong", {
|
|
884
884
|
children: "All data views"
|
|
885
|
-
}
|
|
885
|
+
}),
|
|
886
886
|
" – Query execution time, result set size"
|
|
887
887
|
]
|
|
888
|
-
}
|
|
889
|
-
/* @__PURE__ */
|
|
888
|
+
}),
|
|
889
|
+
/* @__PURE__ */ jsxs5("li", {
|
|
890
890
|
children: [
|
|
891
|
-
/* @__PURE__ */
|
|
891
|
+
/* @__PURE__ */ jsx5("strong", {
|
|
892
892
|
children: "All policy decisions"
|
|
893
|
-
}
|
|
893
|
+
}),
|
|
894
894
|
" – Decision time, permit/deny ratio"
|
|
895
895
|
]
|
|
896
|
-
}
|
|
897
|
-
/* @__PURE__ */
|
|
896
|
+
}),
|
|
897
|
+
/* @__PURE__ */ jsxs5("li", {
|
|
898
898
|
children: [
|
|
899
|
-
/* @__PURE__ */
|
|
899
|
+
/* @__PURE__ */ jsx5("strong", {
|
|
900
900
|
children: "System resources"
|
|
901
|
-
}
|
|
901
|
+
}),
|
|
902
902
|
" – CPU, memory, disk, network usage"
|
|
903
903
|
]
|
|
904
|
-
}
|
|
904
|
+
})
|
|
905
905
|
]
|
|
906
|
-
}
|
|
907
|
-
/* @__PURE__ */
|
|
906
|
+
}),
|
|
907
|
+
/* @__PURE__ */ jsx5("p", {
|
|
908
908
|
className: "text-muted-foreground",
|
|
909
909
|
children: "You don't need to add instrumentation code manually—the runtime handles it based on your specs."
|
|
910
|
-
}
|
|
910
|
+
})
|
|
911
911
|
]
|
|
912
|
-
}
|
|
913
|
-
/* @__PURE__ */
|
|
912
|
+
}),
|
|
913
|
+
/* @__PURE__ */ jsxs5("div", {
|
|
914
914
|
className: "space-y-4",
|
|
915
915
|
children: [
|
|
916
|
-
/* @__PURE__ */
|
|
916
|
+
/* @__PURE__ */ jsx5("h2", {
|
|
917
917
|
className: "text-2xl font-bold",
|
|
918
918
|
children: "Integration with observability platforms"
|
|
919
|
-
}
|
|
920
|
-
/* @__PURE__ */
|
|
919
|
+
}),
|
|
920
|
+
/* @__PURE__ */ jsx5("p", {
|
|
921
921
|
className: "text-muted-foreground",
|
|
922
922
|
children: "ContractSpec supports multiple observability backends:"
|
|
923
|
-
}
|
|
924
|
-
/* @__PURE__ */
|
|
923
|
+
}),
|
|
924
|
+
/* @__PURE__ */ jsxs5("ul", {
|
|
925
925
|
className: "text-muted-foreground list-inside list-disc space-y-2",
|
|
926
926
|
children: [
|
|
927
|
-
/* @__PURE__ */
|
|
927
|
+
/* @__PURE__ */ jsxs5("li", {
|
|
928
928
|
children: [
|
|
929
|
-
/* @__PURE__ */
|
|
929
|
+
/* @__PURE__ */ jsx5("strong", {
|
|
930
930
|
children: "Prometheus"
|
|
931
|
-
}
|
|
931
|
+
}),
|
|
932
932
|
" – For metrics collection and alerting"
|
|
933
933
|
]
|
|
934
|
-
}
|
|
935
|
-
/* @__PURE__ */
|
|
934
|
+
}),
|
|
935
|
+
/* @__PURE__ */ jsxs5("li", {
|
|
936
936
|
children: [
|
|
937
|
-
/* @__PURE__ */
|
|
937
|
+
/* @__PURE__ */ jsx5("strong", {
|
|
938
938
|
children: "Grafana"
|
|
939
|
-
}
|
|
939
|
+
}),
|
|
940
940
|
" – For dashboards and visualization"
|
|
941
941
|
]
|
|
942
|
-
}
|
|
943
|
-
/* @__PURE__ */
|
|
942
|
+
}),
|
|
943
|
+
/* @__PURE__ */ jsxs5("li", {
|
|
944
944
|
children: [
|
|
945
|
-
/* @__PURE__ */
|
|
945
|
+
/* @__PURE__ */ jsx5("strong", {
|
|
946
946
|
children: "Jaeger / Tempo"
|
|
947
|
-
}
|
|
947
|
+
}),
|
|
948
948
|
" – For distributed tracing"
|
|
949
949
|
]
|
|
950
|
-
}
|
|
951
|
-
/* @__PURE__ */
|
|
950
|
+
}),
|
|
951
|
+
/* @__PURE__ */ jsxs5("li", {
|
|
952
952
|
children: [
|
|
953
|
-
/* @__PURE__ */
|
|
953
|
+
/* @__PURE__ */ jsx5("strong", {
|
|
954
954
|
children: "Loki"
|
|
955
|
-
}
|
|
955
|
+
}),
|
|
956
956
|
" – For log aggregation"
|
|
957
957
|
]
|
|
958
|
-
}
|
|
959
|
-
/* @__PURE__ */
|
|
958
|
+
}),
|
|
959
|
+
/* @__PURE__ */ jsxs5("li", {
|
|
960
960
|
children: [
|
|
961
|
-
/* @__PURE__ */
|
|
961
|
+
/* @__PURE__ */ jsx5("strong", {
|
|
962
962
|
children: "Datadog"
|
|
963
|
-
}
|
|
963
|
+
}),
|
|
964
964
|
" – All-in-one observability platform"
|
|
965
965
|
]
|
|
966
|
-
}
|
|
967
|
-
/* @__PURE__ */
|
|
966
|
+
}),
|
|
967
|
+
/* @__PURE__ */ jsxs5("li", {
|
|
968
968
|
children: [
|
|
969
|
-
/* @__PURE__ */
|
|
969
|
+
/* @__PURE__ */ jsx5("strong", {
|
|
970
970
|
children: "New Relic"
|
|
971
|
-
}
|
|
971
|
+
}),
|
|
972
972
|
" – Application performance monitoring"
|
|
973
973
|
]
|
|
974
|
-
}
|
|
975
|
-
/* @__PURE__ */
|
|
974
|
+
}),
|
|
975
|
+
/* @__PURE__ */ jsxs5("li", {
|
|
976
976
|
children: [
|
|
977
|
-
/* @__PURE__ */
|
|
977
|
+
/* @__PURE__ */ jsx5("strong", {
|
|
978
978
|
children: "Honeycomb"
|
|
979
|
-
}
|
|
979
|
+
}),
|
|
980
980
|
" – Observability for complex systems"
|
|
981
981
|
]
|
|
982
|
-
}
|
|
982
|
+
})
|
|
983
983
|
]
|
|
984
|
-
}
|
|
985
|
-
/* @__PURE__ */
|
|
984
|
+
}),
|
|
985
|
+
/* @__PURE__ */ jsx5("p", {
|
|
986
986
|
className: "text-muted-foreground",
|
|
987
987
|
children: "You can configure multiple backends and send telemetry to all of them simultaneously."
|
|
988
|
-
}
|
|
988
|
+
})
|
|
989
989
|
]
|
|
990
|
-
}
|
|
991
|
-
/* @__PURE__ */
|
|
990
|
+
}),
|
|
991
|
+
/* @__PURE__ */ jsxs5("div", {
|
|
992
992
|
className: "space-y-4",
|
|
993
993
|
children: [
|
|
994
|
-
/* @__PURE__ */
|
|
994
|
+
/* @__PURE__ */ jsx5("h2", {
|
|
995
995
|
className: "text-2xl font-bold",
|
|
996
996
|
children: "Sampling and performance"
|
|
997
|
-
}
|
|
998
|
-
/* @__PURE__ */
|
|
997
|
+
}),
|
|
998
|
+
/* @__PURE__ */ jsx5("p", {
|
|
999
999
|
className: "text-muted-foreground",
|
|
1000
1000
|
children: "Collecting telemetry has a cost—CPU, memory, network bandwidth, and storage. ContractSpec provides several mechanisms to control overhead:"
|
|
1001
|
-
}
|
|
1002
|
-
/* @__PURE__ */
|
|
1001
|
+
}),
|
|
1002
|
+
/* @__PURE__ */ jsxs5("ul", {
|
|
1003
1003
|
className: "text-muted-foreground list-inside list-disc space-y-2",
|
|
1004
1004
|
children: [
|
|
1005
|
-
/* @__PURE__ */
|
|
1005
|
+
/* @__PURE__ */ jsxs5("li", {
|
|
1006
1006
|
children: [
|
|
1007
|
-
/* @__PURE__ */
|
|
1007
|
+
/* @__PURE__ */ jsx5("strong", {
|
|
1008
1008
|
children: "Sampling"
|
|
1009
|
-
}
|
|
1009
|
+
}),
|
|
1010
1010
|
" – Trace only a percentage of requests (e.g., 10%)"
|
|
1011
1011
|
]
|
|
1012
|
-
}
|
|
1013
|
-
/* @__PURE__ */
|
|
1012
|
+
}),
|
|
1013
|
+
/* @__PURE__ */ jsxs5("li", {
|
|
1014
1014
|
children: [
|
|
1015
|
-
/* @__PURE__ */
|
|
1015
|
+
/* @__PURE__ */ jsx5("strong", {
|
|
1016
1016
|
children: "Adaptive sampling"
|
|
1017
|
-
}
|
|
1017
|
+
}),
|
|
1018
1018
|
" – Automatically reduce sampling rate under high load"
|
|
1019
1019
|
]
|
|
1020
|
-
}
|
|
1021
|
-
/* @__PURE__ */
|
|
1020
|
+
}),
|
|
1021
|
+
/* @__PURE__ */ jsxs5("li", {
|
|
1022
1022
|
children: [
|
|
1023
|
-
/* @__PURE__ */
|
|
1023
|
+
/* @__PURE__ */ jsx5("strong", {
|
|
1024
1024
|
children: "Tail-based sampling"
|
|
1025
|
-
}
|
|
1025
|
+
}),
|
|
1026
1026
|
" – Keep traces for failed requests, sample successful ones"
|
|
1027
1027
|
]
|
|
1028
|
-
}
|
|
1029
|
-
/* @__PURE__ */
|
|
1028
|
+
}),
|
|
1029
|
+
/* @__PURE__ */ jsxs5("li", {
|
|
1030
1030
|
children: [
|
|
1031
|
-
/* @__PURE__ */
|
|
1031
|
+
/* @__PURE__ */ jsx5("strong", {
|
|
1032
1032
|
children: "Field redaction"
|
|
1033
|
-
}
|
|
1033
|
+
}),
|
|
1034
1034
|
" – Remove sensitive data from traces and logs"
|
|
1035
1035
|
]
|
|
1036
|
-
}
|
|
1037
|
-
/* @__PURE__ */
|
|
1036
|
+
}),
|
|
1037
|
+
/* @__PURE__ */ jsxs5("li", {
|
|
1038
1038
|
children: [
|
|
1039
|
-
/* @__PURE__ */
|
|
1039
|
+
/* @__PURE__ */ jsx5("strong", {
|
|
1040
1040
|
children: "Aggregation"
|
|
1041
|
-
}
|
|
1041
|
+
}),
|
|
1042
1042
|
" – Pre-aggregate metrics before sending to reduce network traffic"
|
|
1043
1043
|
]
|
|
1044
|
-
}
|
|
1044
|
+
})
|
|
1045
1045
|
]
|
|
1046
|
-
}
|
|
1046
|
+
})
|
|
1047
1047
|
]
|
|
1048
|
-
}
|
|
1049
|
-
/* @__PURE__ */
|
|
1048
|
+
}),
|
|
1049
|
+
/* @__PURE__ */ jsxs5("div", {
|
|
1050
1050
|
className: "space-y-4",
|
|
1051
1051
|
children: [
|
|
1052
|
-
/* @__PURE__ */
|
|
1052
|
+
/* @__PURE__ */ jsx5("h2", {
|
|
1053
1053
|
className: "text-2xl font-bold",
|
|
1054
1054
|
children: "Best practices"
|
|
1055
|
-
}
|
|
1056
|
-
/* @__PURE__ */
|
|
1055
|
+
}),
|
|
1056
|
+
/* @__PURE__ */ jsxs5("ul", {
|
|
1057
1057
|
className: "text-muted-foreground list-inside list-disc space-y-2",
|
|
1058
1058
|
children: [
|
|
1059
|
-
/* @__PURE__ */
|
|
1059
|
+
/* @__PURE__ */ jsx5("li", {
|
|
1060
1060
|
children: "Start with high-level metrics (request rate, error rate, latency) and add more detailed instrumentation as needed."
|
|
1061
|
-
}
|
|
1062
|
-
/* @__PURE__ */
|
|
1061
|
+
}),
|
|
1062
|
+
/* @__PURE__ */ jsx5("li", {
|
|
1063
1063
|
children: "Use structured logging—log events with structured fields, not free-form text."
|
|
1064
|
-
}
|
|
1065
|
-
/* @__PURE__ */
|
|
1064
|
+
}),
|
|
1065
|
+
/* @__PURE__ */ jsx5("li", {
|
|
1066
1066
|
children: "Set up alerts for critical metrics so you're notified when things go wrong."
|
|
1067
|
-
}
|
|
1068
|
-
/* @__PURE__ */
|
|
1067
|
+
}),
|
|
1068
|
+
/* @__PURE__ */ jsx5("li", {
|
|
1069
1069
|
children: "Use traces to debug complex issues—they show the complete picture of a request."
|
|
1070
|
-
}
|
|
1071
|
-
/* @__PURE__ */
|
|
1070
|
+
}),
|
|
1071
|
+
/* @__PURE__ */ jsx5("li", {
|
|
1072
1072
|
children: "Redact sensitive data from logs and traces to comply with privacy regulations."
|
|
1073
|
-
}
|
|
1074
|
-
/* @__PURE__ */
|
|
1073
|
+
}),
|
|
1074
|
+
/* @__PURE__ */ jsx5("li", {
|
|
1075
1075
|
children: "Review dashboards regularly to understand normal behavior—this makes anomalies easier to spot."
|
|
1076
|
-
}
|
|
1077
|
-
/* @__PURE__ */
|
|
1076
|
+
}),
|
|
1077
|
+
/* @__PURE__ */ jsx5("li", {
|
|
1078
1078
|
children: "Use sampling to control costs, but always trace errors and slow requests."
|
|
1079
|
-
}
|
|
1079
|
+
})
|
|
1080
1080
|
]
|
|
1081
|
-
}
|
|
1081
|
+
})
|
|
1082
1082
|
]
|
|
1083
|
-
}
|
|
1084
|
-
/* @__PURE__ */
|
|
1083
|
+
}),
|
|
1084
|
+
/* @__PURE__ */ jsxs5("div", {
|
|
1085
1085
|
className: "flex items-center gap-4 pt-4",
|
|
1086
1086
|
children: [
|
|
1087
|
-
/* @__PURE__ */
|
|
1087
|
+
/* @__PURE__ */ jsx5(Link4, {
|
|
1088
1088
|
href: "/docs/advanced/mcp",
|
|
1089
1089
|
className: "btn-ghost",
|
|
1090
1090
|
children: "Previous: MCP Adapters"
|
|
1091
|
-
}
|
|
1092
|
-
/* @__PURE__ */
|
|
1091
|
+
}),
|
|
1092
|
+
/* @__PURE__ */ jsxs5(Link4, {
|
|
1093
1093
|
href: "/docs/comparison",
|
|
1094
1094
|
className: "btn-primary",
|
|
1095
1095
|
children: [
|
|
1096
1096
|
"Next: Comparison ",
|
|
1097
|
-
/* @__PURE__ */
|
|
1097
|
+
/* @__PURE__ */ jsx5(ChevronRight3, {
|
|
1098
1098
|
size: 16
|
|
1099
|
-
}
|
|
1099
|
+
})
|
|
1100
1100
|
]
|
|
1101
|
-
}
|
|
1101
|
+
})
|
|
1102
1102
|
]
|
|
1103
|
-
}
|
|
1103
|
+
})
|
|
1104
1104
|
]
|
|
1105
|
-
}
|
|
1105
|
+
});
|
|
1106
1106
|
}
|
|
1107
1107
|
|
|
1108
1108
|
// src/components/docs/advanced/AdvancedWorkflowMonitoringPage.tsx
|
|
1109
|
-
import {
|
|
1109
|
+
import { jsx as jsx6, jsxs as jsxs6 } from "react/jsx-runtime";
|
|
1110
1110
|
function AdvancedWorkflowMonitoringPage() {
|
|
1111
|
-
return /* @__PURE__ */
|
|
1111
|
+
return /* @__PURE__ */ jsxs6("div", {
|
|
1112
1112
|
className: "space-y-8",
|
|
1113
1113
|
children: [
|
|
1114
|
-
/* @__PURE__ */
|
|
1114
|
+
/* @__PURE__ */ jsxs6("div", {
|
|
1115
1115
|
className: "space-y-4",
|
|
1116
1116
|
children: [
|
|
1117
|
-
/* @__PURE__ */
|
|
1117
|
+
/* @__PURE__ */ jsx6("h1", {
|
|
1118
1118
|
className: "text-4xl font-bold",
|
|
1119
1119
|
children: "Workflow Monitoring"
|
|
1120
|
-
}
|
|
1121
|
-
/* @__PURE__ */
|
|
1120
|
+
}),
|
|
1121
|
+
/* @__PURE__ */ jsx6("p", {
|
|
1122
1122
|
className: "text-muted-foreground text-lg",
|
|
1123
1123
|
children: "Production workflows need robust observability. ContractSpec provides SLA monitoring, distributed tracing, and audit logging out of the box."
|
|
1124
|
-
}
|
|
1124
|
+
})
|
|
1125
1125
|
]
|
|
1126
|
-
}
|
|
1127
|
-
/* @__PURE__ */
|
|
1126
|
+
}),
|
|
1127
|
+
/* @__PURE__ */ jsxs6("div", {
|
|
1128
1128
|
className: "space-y-4",
|
|
1129
1129
|
children: [
|
|
1130
|
-
/* @__PURE__ */
|
|
1130
|
+
/* @__PURE__ */ jsx6("h2", {
|
|
1131
1131
|
className: "text-2xl font-bold",
|
|
1132
1132
|
children: "SLA Monitoring"
|
|
1133
|
-
}
|
|
1134
|
-
/* @__PURE__ */
|
|
1133
|
+
}),
|
|
1134
|
+
/* @__PURE__ */ jsxs6("p", {
|
|
1135
1135
|
children: [
|
|
1136
1136
|
"Use the ",
|
|
1137
|
-
/* @__PURE__ */
|
|
1137
|
+
/* @__PURE__ */ jsx6("code", {
|
|
1138
1138
|
children: "SLAMonitor"
|
|
1139
|
-
}
|
|
1139
|
+
}),
|
|
1140
1140
|
" to detect when workflows or individual steps exceed their budgeted duration."
|
|
1141
1141
|
]
|
|
1142
|
-
}
|
|
1143
|
-
/* @__PURE__ */
|
|
1142
|
+
}),
|
|
1143
|
+
/* @__PURE__ */ jsx6("pre", {
|
|
1144
1144
|
className: "bg-muted rounded-lg border p-4 text-sm",
|
|
1145
1145
|
children: `import { SLAMonitor } from '@contractspec/lib.contracts-spec/workflow/sla-monitor';
|
|
1146
1146
|
|
|
@@ -1153,62 +1153,62 @@ const monitor = new SLAMonitor((event, payload) => {
|
|
|
1153
1153
|
|
|
1154
1154
|
// Check periodically
|
|
1155
1155
|
monitor.check(currentState, workflowSpec);`
|
|
1156
|
-
}
|
|
1156
|
+
})
|
|
1157
1157
|
]
|
|
1158
|
-
}
|
|
1159
|
-
/* @__PURE__ */
|
|
1158
|
+
}),
|
|
1159
|
+
/* @__PURE__ */ jsxs6("div", {
|
|
1160
1160
|
className: "space-y-4",
|
|
1161
1161
|
children: [
|
|
1162
|
-
/* @__PURE__ */
|
|
1162
|
+
/* @__PURE__ */ jsx6("h2", {
|
|
1163
1163
|
className: "text-2xl font-bold",
|
|
1164
1164
|
children: "Telemetry & Tracing"
|
|
1165
|
-
}
|
|
1166
|
-
/* @__PURE__ */
|
|
1165
|
+
}),
|
|
1166
|
+
/* @__PURE__ */ jsx6("p", {
|
|
1167
1167
|
children: "Workflows automatically generate OpenTelemetry spans for:"
|
|
1168
|
-
}
|
|
1169
|
-
/* @__PURE__ */
|
|
1168
|
+
}),
|
|
1169
|
+
/* @__PURE__ */ jsxs6("ul", {
|
|
1170
1170
|
className: "list-disc space-y-2 pl-6",
|
|
1171
1171
|
children: [
|
|
1172
|
-
/* @__PURE__ */
|
|
1172
|
+
/* @__PURE__ */ jsx6("li", {
|
|
1173
1173
|
children: "Overall workflow execution"
|
|
1174
|
-
}
|
|
1175
|
-
/* @__PURE__ */
|
|
1174
|
+
}),
|
|
1175
|
+
/* @__PURE__ */ jsx6("li", {
|
|
1176
1176
|
children: "Individual steps"
|
|
1177
|
-
}
|
|
1178
|
-
/* @__PURE__ */
|
|
1177
|
+
}),
|
|
1178
|
+
/* @__PURE__ */ jsx6("li", {
|
|
1179
1179
|
children: "Retries and compensation"
|
|
1180
|
-
}
|
|
1180
|
+
})
|
|
1181
1181
|
]
|
|
1182
|
-
}
|
|
1183
|
-
/* @__PURE__ */
|
|
1182
|
+
}),
|
|
1183
|
+
/* @__PURE__ */ jsx6("p", {
|
|
1184
1184
|
children: "Configure your OpenTelemetry exporter to send traces to Jaeger, Datadog, or Honeycomb."
|
|
1185
|
-
}
|
|
1185
|
+
})
|
|
1186
1186
|
]
|
|
1187
|
-
}
|
|
1188
|
-
/* @__PURE__ */
|
|
1187
|
+
}),
|
|
1188
|
+
/* @__PURE__ */ jsxs6("div", {
|
|
1189
1189
|
className: "space-y-4",
|
|
1190
1190
|
children: [
|
|
1191
|
-
/* @__PURE__ */
|
|
1191
|
+
/* @__PURE__ */ jsx6("h2", {
|
|
1192
1192
|
className: "text-2xl font-bold",
|
|
1193
1193
|
children: "Dashboarding"
|
|
1194
|
-
}
|
|
1195
|
-
/* @__PURE__ */
|
|
1194
|
+
}),
|
|
1195
|
+
/* @__PURE__ */ jsxs6("p", {
|
|
1196
1196
|
children: [
|
|
1197
1197
|
"You can build a custom dashboard using ",
|
|
1198
|
-
/* @__PURE__ */
|
|
1198
|
+
/* @__PURE__ */ jsx6("code", {
|
|
1199
1199
|
children: "DataViews"
|
|
1200
|
-
}
|
|
1200
|
+
}),
|
|
1201
1201
|
" over your workflow state database. See the DataViews tutorial for how to visualize ",
|
|
1202
|
-
/* @__PURE__ */
|
|
1202
|
+
/* @__PURE__ */ jsx6("code", {
|
|
1203
1203
|
children: "WorkflowState"
|
|
1204
|
-
}
|
|
1204
|
+
}),
|
|
1205
1205
|
" records."
|
|
1206
1206
|
]
|
|
1207
|
-
}
|
|
1207
|
+
})
|
|
1208
1208
|
]
|
|
1209
|
-
}
|
|
1209
|
+
})
|
|
1210
1210
|
]
|
|
1211
|
-
}
|
|
1211
|
+
});
|
|
1212
1212
|
}
|
|
1213
1213
|
export {
|
|
1214
1214
|
AdvancedWorkflowMonitoringPage,
|