@contractspec/bundle.library 1.11.1 → 1.13.0
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 +571 -1050
- package/.turbo/turbo-prebuild.log +1 -0
- package/CHANGELOG.md +47 -0
- package/dist/__tests__/env-setup.d.ts +2 -0
- package/dist/__tests__/env-setup.d.ts.map +1 -0
- package/dist/__tests__/mocks/prisma.d.ts +16 -0
- package/dist/__tests__/mocks/prisma.d.ts.map +1 -0
- package/dist/__tests__/setup.d.ts +2 -0
- package/dist/__tests__/setup.d.ts.map +1 -0
- package/dist/application/index.d.ts +2 -4
- package/dist/application/index.d.ts.map +1 -0
- package/dist/application/index.js +696 -5
- package/dist/application/mcp/cliMcp.d.ts +79 -85
- package/dist/application/mcp/cliMcp.d.ts.map +1 -1
- package/dist/application/mcp/cliMcp.js +329 -218
- package/dist/application/mcp/common.d.ts +90 -103
- package/dist/application/mcp/common.d.ts.map +1 -1
- package/dist/application/mcp/common.js +73 -61
- package/dist/application/mcp/docsMcp.d.ts +79 -85
- package/dist/application/mcp/docsMcp.d.ts.map +1 -1
- package/dist/application/mcp/docsMcp.js +259 -136
- package/dist/application/mcp/index.d.ts +4 -4
- package/dist/application/mcp/index.d.ts.map +1 -0
- package/dist/application/mcp/index.js +696 -4
- package/dist/application/mcp/internalMcp.d.ts +79 -85
- package/dist/application/mcp/internalMcp.d.ts.map +1 -1
- package/dist/application/mcp/internalMcp.js +285 -172
- package/dist/components/docs/DocsIndexPage.d.ts +1 -6
- package/dist/components/docs/DocsIndexPage.d.ts.map +1 -1
- package/dist/components/docs/DocsIndexPage.js +259 -211
- package/dist/components/docs/advanced/AdvancedMCPPage.d.ts +1 -6
- package/dist/components/docs/advanced/AdvancedMCPPage.d.ts.map +1 -1
- package/dist/components/docs/advanced/AdvancedMCPPage.js +269 -212
- package/dist/components/docs/advanced/AdvancedOverlayEditorPage.d.ts +1 -6
- package/dist/components/docs/advanced/AdvancedOverlayEditorPage.d.ts.map +1 -1
- package/dist/components/docs/advanced/AdvancedOverlayEditorPage.js +105 -74
- package/dist/components/docs/advanced/AdvancedRenderersPage.d.ts +1 -6
- package/dist/components/docs/advanced/AdvancedRenderersPage.d.ts.map +1 -1
- package/dist/components/docs/advanced/AdvancedRenderersPage.js +116 -86
- package/dist/components/docs/advanced/AdvancedSpecExperimentsPage.d.ts +1 -6
- package/dist/components/docs/advanced/AdvancedSpecExperimentsPage.d.ts.map +1 -1
- package/dist/components/docs/advanced/AdvancedSpecExperimentsPage.js +88 -71
- package/dist/components/docs/advanced/AdvancedTelemetryPage.d.ts +1 -6
- package/dist/components/docs/advanced/AdvancedTelemetryPage.d.ts.map +1 -1
- package/dist/components/docs/advanced/AdvancedTelemetryPage.js +371 -203
- package/dist/components/docs/advanced/AdvancedWorkflowMonitoringPage.d.ts +1 -6
- package/dist/components/docs/advanced/AdvancedWorkflowMonitoringPage.d.ts.map +1 -1
- package/dist/components/docs/advanced/AdvancedWorkflowMonitoringPage.js +97 -72
- package/dist/components/docs/advanced/index.d.ts +7 -7
- package/dist/components/docs/advanced/index.d.ts.map +1 -0
- package/dist/components/docs/advanced/index.js +1221 -8
- package/dist/components/docs/architecture/ArchitectureAppConfigPage.d.ts +1 -6
- package/dist/components/docs/architecture/ArchitectureAppConfigPage.d.ts.map +1 -1
- package/dist/components/docs/architecture/ArchitectureAppConfigPage.js +235 -171
- package/dist/components/docs/architecture/ArchitectureIntegrationBindingPage.d.ts +1 -6
- package/dist/components/docs/architecture/ArchitectureIntegrationBindingPage.d.ts.map +1 -1
- package/dist/components/docs/architecture/ArchitectureIntegrationBindingPage.js +251 -180
- package/dist/components/docs/architecture/ArchitectureKnowledgeBindingPage.d.ts +1 -6
- package/dist/components/docs/architecture/ArchitectureKnowledgeBindingPage.d.ts.map +1 -1
- package/dist/components/docs/architecture/ArchitectureKnowledgeBindingPage.js +366 -282
- package/dist/components/docs/architecture/ArchitectureMultiTenancyPage.d.ts +1 -6
- package/dist/components/docs/architecture/ArchitectureMultiTenancyPage.d.ts.map +1 -1
- package/dist/components/docs/architecture/ArchitectureMultiTenancyPage.js +162 -113
- package/dist/components/docs/architecture/ArchitectureOverviewPage.d.ts +1 -6
- package/dist/components/docs/architecture/ArchitectureOverviewPage.d.ts.map +1 -1
- package/dist/components/docs/architecture/ArchitectureOverviewPage.js +446 -321
- package/dist/components/docs/architecture/index.d.ts +6 -6
- package/dist/components/docs/architecture/index.d.ts.map +1 -0
- package/dist/components/docs/architecture/index.js +1913 -6
- package/dist/components/docs/comparison/ComparisonAutomationPlatformsPage.d.ts +1 -6
- package/dist/components/docs/comparison/ComparisonAutomationPlatformsPage.d.ts.map +1 -1
- package/dist/components/docs/comparison/ComparisonAutomationPlatformsPage.js +244 -198
- package/dist/components/docs/comparison/ComparisonEnterprisePlatformsPage.d.ts +1 -6
- package/dist/components/docs/comparison/ComparisonEnterprisePlatformsPage.d.ts.map +1 -1
- package/dist/components/docs/comparison/ComparisonEnterprisePlatformsPage.js +228 -168
- package/dist/components/docs/comparison/ComparisonInternalToolBuildersPage.d.ts +1 -6
- package/dist/components/docs/comparison/ComparisonInternalToolBuildersPage.d.ts.map +1 -1
- package/dist/components/docs/comparison/ComparisonInternalToolBuildersPage.js +244 -198
- package/dist/components/docs/comparison/ComparisonOverviewPage.d.ts +1 -6
- package/dist/components/docs/comparison/ComparisonOverviewPage.d.ts.map +1 -1
- package/dist/components/docs/comparison/ComparisonOverviewPage.js +201 -166
- package/dist/components/docs/comparison/ComparisonWindmillPage.d.ts +1 -6
- package/dist/components/docs/comparison/ComparisonWindmillPage.d.ts.map +1 -1
- package/dist/components/docs/comparison/ComparisonWindmillPage.js +253 -175
- package/dist/components/docs/comparison/ComparisonWorkflowEnginesPage.d.ts +1 -6
- package/dist/components/docs/comparison/ComparisonWorkflowEnginesPage.d.ts.map +1 -1
- package/dist/components/docs/comparison/ComparisonWorkflowEnginesPage.js +338 -274
- package/dist/components/docs/comparison/index.d.ts +7 -7
- package/dist/components/docs/comparison/index.d.ts.map +1 -0
- package/dist/components/docs/comparison/index.js +1511 -8
- package/dist/components/docs/ecosystem/IntegrationsPage.d.ts +1 -6
- package/dist/components/docs/ecosystem/IntegrationsPage.d.ts.map +1 -1
- package/dist/components/docs/ecosystem/IntegrationsPage.js +96 -76
- package/dist/components/docs/ecosystem/PluginsPage.d.ts +1 -6
- package/dist/components/docs/ecosystem/PluginsPage.d.ts.map +1 -1
- package/dist/components/docs/ecosystem/PluginsPage.js +139 -114
- package/dist/components/docs/ecosystem/RegistryPage.d.ts +1 -6
- package/dist/components/docs/ecosystem/RegistryPage.d.ts.map +1 -1
- package/dist/components/docs/ecosystem/RegistryPage.js +81 -71
- package/dist/components/docs/ecosystem/TemplatesPage.d.ts +1 -6
- package/dist/components/docs/ecosystem/TemplatesPage.d.ts.map +1 -1
- package/dist/components/docs/ecosystem/TemplatesPage.js +136 -84
- package/dist/components/docs/ecosystem/ecosystem.docblocks.d.ts +2 -1
- package/dist/components/docs/ecosystem/ecosystem.docblocks.d.ts.map +1 -0
- package/dist/components/docs/ecosystem/ecosystem.docblocks.js +45 -51
- package/dist/components/docs/ecosystem/index.d.ts +6 -5
- package/dist/components/docs/ecosystem/index.d.ts.map +1 -0
- package/dist/components/docs/ecosystem/index.js +614 -6
- package/dist/components/docs/examples/DocsExamplesPage.d.ts +1 -6
- package/dist/components/docs/examples/DocsExamplesPage.d.ts.map +1 -1
- package/dist/components/docs/examples/DocsExamplesPage.js +79 -65
- package/dist/components/docs/examples/index.d.ts +2 -2
- package/dist/components/docs/examples/index.d.ts.map +1 -0
- package/dist/components/docs/examples/index.js +85 -3
- package/dist/components/docs/generated/docs-index.generated.d.ts +24 -27
- package/dist/components/docs/generated/docs-index.generated.d.ts.map +1 -1
- package/dist/components/docs/generated/docs-index.generated.js +6 -6
- package/dist/components/docs/generated/index.d.ts +3 -3
- package/dist/components/docs/generated/index.d.ts.map +1 -0
- package/dist/components/docs/generated/index.js +74 -2
- package/dist/components/docs/generated/loader.d.ts +6 -10
- package/dist/components/docs/generated/loader.d.ts.map +1 -1
- package/dist/components/docs/generated/loader.js +60 -48
- package/dist/components/docs/getting-started/CLIPage.d.ts +1 -6
- package/dist/components/docs/getting-started/CLIPage.d.ts.map +1 -1
- package/dist/components/docs/getting-started/CLIPage.js +265 -231
- package/dist/components/docs/getting-started/CompatibilityPage.d.ts +1 -6
- package/dist/components/docs/getting-started/CompatibilityPage.d.ts.map +1 -1
- package/dist/components/docs/getting-started/CompatibilityPage.js +171 -115
- package/dist/components/docs/getting-started/DataViewTutorialPage.d.ts +1 -6
- package/dist/components/docs/getting-started/DataViewTutorialPage.d.ts.map +1 -1
- package/dist/components/docs/getting-started/DataViewTutorialPage.js +128 -105
- package/dist/components/docs/getting-started/DeveloperToolsPage.d.ts +1 -6
- package/dist/components/docs/getting-started/DeveloperToolsPage.d.ts.map +1 -1
- package/dist/components/docs/getting-started/DeveloperToolsPage.js +191 -151
- package/dist/components/docs/getting-started/HelloWorldPage.d.ts +1 -6
- package/dist/components/docs/getting-started/HelloWorldPage.d.ts.map +1 -1
- package/dist/components/docs/getting-started/HelloWorldPage.js +176 -138
- package/dist/components/docs/getting-started/InstallationPage.d.ts +1 -6
- package/dist/components/docs/getting-started/InstallationPage.d.ts.map +1 -1
- package/dist/components/docs/getting-started/InstallationPage.js +149 -115
- package/dist/components/docs/getting-started/StartHerePage.d.ts +1 -6
- package/dist/components/docs/getting-started/StartHerePage.d.ts.map +1 -1
- package/dist/components/docs/getting-started/StartHerePage.js +125 -98
- package/dist/components/docs/getting-started/TroubleshootingPage.d.ts +1 -6
- package/dist/components/docs/getting-started/TroubleshootingPage.d.ts.map +1 -1
- package/dist/components/docs/getting-started/TroubleshootingPage.js +164 -111
- package/dist/components/docs/getting-started/VSCodeExtensionPage.d.ts +1 -6
- package/dist/components/docs/getting-started/VSCodeExtensionPage.d.ts.map +1 -1
- package/dist/components/docs/getting-started/VSCodeExtensionPage.js +429 -353
- package/dist/components/docs/getting-started/getting-started.docblocks.d.ts +2 -6
- package/dist/components/docs/getting-started/getting-started.docblocks.d.ts.map +1 -1
- package/dist/components/docs/getting-started/getting-started.docblocks.js +36 -37
- package/dist/components/docs/getting-started/index.d.ts +11 -11
- package/dist/components/docs/getting-started/index.d.ts.map +1 -0
- package/dist/components/docs/getting-started/index.js +2184 -12
- package/dist/components/docs/guides/GuideCIDiffGatingPage.d.ts +1 -6
- package/dist/components/docs/guides/GuideCIDiffGatingPage.d.ts.map +1 -1
- package/dist/components/docs/guides/GuideCIDiffGatingPage.js +192 -143
- package/dist/components/docs/guides/GuideContractTypesPage.d.ts +1 -6
- package/dist/components/docs/guides/GuideContractTypesPage.d.ts.map +1 -1
- package/dist/components/docs/guides/GuideContractTypesPage.js +532 -440
- package/dist/components/docs/guides/GuideDocsPipelinePage.d.ts +1 -6
- package/dist/components/docs/guides/GuideDocsPipelinePage.d.ts.map +1 -1
- package/dist/components/docs/guides/GuideDocsPipelinePage.js +202 -142
- package/dist/components/docs/guides/GuideGenerateDocsClientsSchemasPage.d.ts +1 -6
- package/dist/components/docs/guides/GuideGenerateDocsClientsSchemasPage.d.ts.map +1 -1
- package/dist/components/docs/guides/GuideGenerateDocsClientsSchemasPage.js +205 -152
- package/dist/components/docs/guides/GuideImportExistingCodebasesPage.d.ts +1 -6
- package/dist/components/docs/guides/GuideImportExistingCodebasesPage.d.ts.map +1 -1
- package/dist/components/docs/guides/GuideImportExistingCodebasesPage.js +743 -543
- package/dist/components/docs/guides/GuideNextjsOneEndpointPage.d.ts +1 -6
- package/dist/components/docs/guides/GuideNextjsOneEndpointPage.d.ts.map +1 -1
- package/dist/components/docs/guides/GuideNextjsOneEndpointPage.js +260 -199
- package/dist/components/docs/guides/GuideSpecValidationTypingPage.d.ts +1 -6
- package/dist/components/docs/guides/GuideSpecValidationTypingPage.d.ts.map +1 -1
- package/dist/components/docs/guides/GuideSpecValidationTypingPage.js +190 -139
- package/dist/components/docs/guides/GuidesIndexPage.d.ts +1 -6
- package/dist/components/docs/guides/GuidesIndexPage.d.ts.map +1 -1
- package/dist/components/docs/guides/GuidesIndexPage.js +141 -115
- package/dist/components/docs/guides/guides.docblocks.d.ts +2 -1
- package/dist/components/docs/guides/guides.docblocks.d.ts.map +1 -0
- package/dist/components/docs/guides/guides.docblocks.js +65 -87
- package/dist/components/docs/guides/index.d.ts +10 -9
- package/dist/components/docs/guides/index.d.ts.map +1 -0
- package/dist/components/docs/guides/index.js +2903 -11
- package/dist/components/docs/index.d.ts +20 -135
- package/dist/components/docs/index.d.ts.map +1 -0
- package/dist/components/docs/index.js +28182 -136
- package/dist/components/docs/integrations/IntegrationsCircuitBreakersPage.d.ts +1 -6
- package/dist/components/docs/integrations/IntegrationsCircuitBreakersPage.d.ts.map +1 -1
- package/dist/components/docs/integrations/IntegrationsCircuitBreakersPage.js +40 -33
- package/dist/components/docs/integrations/IntegrationsElevenLabsPage.d.ts +1 -6
- package/dist/components/docs/integrations/IntegrationsElevenLabsPage.d.ts.map +1 -1
- package/dist/components/docs/integrations/IntegrationsElevenLabsPage.js +103 -72
- package/dist/components/docs/integrations/IntegrationsGmailPage.d.ts +1 -6
- package/dist/components/docs/integrations/IntegrationsGmailPage.d.ts.map +1 -1
- package/dist/components/docs/integrations/IntegrationsGmailPage.js +107 -79
- package/dist/components/docs/integrations/IntegrationsGoogleCalendarPage.d.ts +1 -6
- package/dist/components/docs/integrations/IntegrationsGoogleCalendarPage.d.ts.map +1 -1
- package/dist/components/docs/integrations/IntegrationsGoogleCalendarPage.js +77 -57
- package/dist/components/docs/integrations/IntegrationsOpenAIPage.d.ts +1 -6
- package/dist/components/docs/integrations/IntegrationsOpenAIPage.d.ts.map +1 -1
- package/dist/components/docs/integrations/IntegrationsOpenAIPage.js +138 -95
- package/dist/components/docs/integrations/IntegrationsOverviewPage.d.ts +1 -6
- package/dist/components/docs/integrations/IntegrationsOverviewPage.d.ts.map +1 -1
- package/dist/components/docs/integrations/IntegrationsOverviewPage.js +598 -481
- package/dist/components/docs/integrations/IntegrationsPostmarkPage.d.ts +1 -6
- package/dist/components/docs/integrations/IntegrationsPostmarkPage.d.ts.map +1 -1
- package/dist/components/docs/integrations/IntegrationsPostmarkPage.js +217 -146
- package/dist/components/docs/integrations/IntegrationsPowensPage.d.ts +1 -6
- package/dist/components/docs/integrations/IntegrationsPowensPage.d.ts.map +1 -1
- package/dist/components/docs/integrations/IntegrationsPowensPage.js +298 -243
- package/dist/components/docs/integrations/IntegrationsQdrantPage.d.ts +1 -6
- package/dist/components/docs/integrations/IntegrationsQdrantPage.d.ts.map +1 -1
- package/dist/components/docs/integrations/IntegrationsQdrantPage.js +112 -82
- package/dist/components/docs/integrations/IntegrationsResendPage.d.ts +1 -6
- package/dist/components/docs/integrations/IntegrationsResendPage.d.ts.map +1 -1
- package/dist/components/docs/integrations/IntegrationsResendPage.js +100 -71
- package/dist/components/docs/integrations/IntegrationsS3Page.d.ts +1 -6
- package/dist/components/docs/integrations/IntegrationsS3Page.d.ts.map +1 -1
- package/dist/components/docs/integrations/IntegrationsS3Page.js +122 -84
- package/dist/components/docs/integrations/IntegrationsSpecModelPage.d.ts +1 -6
- package/dist/components/docs/integrations/IntegrationsSpecModelPage.d.ts.map +1 -1
- package/dist/components/docs/integrations/IntegrationsSpecModelPage.js +248 -167
- package/dist/components/docs/integrations/IntegrationsStripePage.d.ts +1 -6
- package/dist/components/docs/integrations/IntegrationsStripePage.d.ts.map +1 -1
- package/dist/components/docs/integrations/IntegrationsStripePage.js +332 -255
- package/dist/components/docs/integrations/IntegrationsTwilioPage.d.ts +1 -6
- package/dist/components/docs/integrations/IntegrationsTwilioPage.d.ts.map +1 -1
- package/dist/components/docs/integrations/IntegrationsTwilioPage.js +126 -87
- package/dist/components/docs/integrations/index.d.ts +15 -15
- package/dist/components/docs/integrations/index.d.ts.map +1 -0
- package/dist/components/docs/integrations/index.js +3312 -16
- package/dist/components/docs/intent/ContractFirstApiPage.d.ts +3 -8
- package/dist/components/docs/intent/ContractFirstApiPage.d.ts.map +1 -1
- package/dist/components/docs/intent/ContractFirstApiPage.js +120 -96
- package/dist/components/docs/intent/DeterministicCodegenPage.d.ts +3 -8
- package/dist/components/docs/intent/DeterministicCodegenPage.d.ts.map +1 -1
- package/dist/components/docs/intent/DeterministicCodegenPage.js +138 -117
- package/dist/components/docs/intent/GenerateClientFromSchemaPage.d.ts +3 -8
- package/dist/components/docs/intent/GenerateClientFromSchemaPage.d.ts.map +1 -1
- package/dist/components/docs/intent/GenerateClientFromSchemaPage.js +198 -168
- package/dist/components/docs/intent/OpenapiAlternativePage.d.ts +3 -8
- package/dist/components/docs/intent/OpenapiAlternativePage.d.ts.map +1 -1
- package/dist/components/docs/intent/OpenapiAlternativePage.js +196 -146
- package/dist/components/docs/intent/SchemaValidationTypescriptPage.d.ts +3 -8
- package/dist/components/docs/intent/SchemaValidationTypescriptPage.d.ts.map +1 -1
- package/dist/components/docs/intent/SchemaValidationTypescriptPage.js +138 -117
- package/dist/components/docs/intent/SpecDrivenDevelopmentPage.d.ts +3 -8
- package/dist/components/docs/intent/SpecDrivenDevelopmentPage.d.ts.map +1 -1
- package/dist/components/docs/intent/SpecDrivenDevelopmentPage.js +120 -96
- package/dist/components/docs/intent/index.d.ts +8 -7
- package/dist/components/docs/intent/index.d.ts.map +1 -0
- package/dist/components/docs/intent/index.js +1595 -8
- package/dist/components/docs/intent/intent-pages.docblocks.d.ts +7 -11
- package/dist/components/docs/intent/intent-pages.docblocks.d.ts.map +1 -1
- package/dist/components/docs/intent/intent-pages.docblocks.js +196 -173
- package/dist/components/docs/knowledge/KnowledgeCategoriesPage.d.ts +1 -6
- package/dist/components/docs/knowledge/KnowledgeCategoriesPage.d.ts.map +1 -1
- package/dist/components/docs/knowledge/KnowledgeCategoriesPage.js +748 -447
- package/dist/components/docs/knowledge/KnowledgeExamplesPage.d.ts +1 -6
- package/dist/components/docs/knowledge/KnowledgeExamplesPage.d.ts.map +1 -1
- package/dist/components/docs/knowledge/KnowledgeExamplesPage.js +189 -125
- package/dist/components/docs/knowledge/KnowledgeOverviewPage.d.ts +1 -6
- package/dist/components/docs/knowledge/KnowledgeOverviewPage.d.ts.map +1 -1
- package/dist/components/docs/knowledge/KnowledgeOverviewPage.js +405 -294
- package/dist/components/docs/knowledge/KnowledgeSourcesPage.d.ts +1 -6
- package/dist/components/docs/knowledge/KnowledgeSourcesPage.d.ts.map +1 -1
- package/dist/components/docs/knowledge/KnowledgeSourcesPage.js +389 -288
- package/dist/components/docs/knowledge/KnowledgeSpacesPage.d.ts +1 -6
- package/dist/components/docs/knowledge/KnowledgeSpacesPage.d.ts.map +1 -1
- package/dist/components/docs/knowledge/KnowledgeSpacesPage.js +300 -227
- package/dist/components/docs/knowledge/index.d.ts +6 -6
- package/dist/components/docs/knowledge/index.d.ts.map +1 -0
- package/dist/components/docs/knowledge/index.js +2444 -6
- package/dist/components/docs/libraries/LibrariesAccessibilityPage.d.ts +1 -6
- package/dist/components/docs/libraries/LibrariesAccessibilityPage.d.ts.map +1 -1
- package/dist/components/docs/libraries/LibrariesAccessibilityPage.js +193 -132
- package/dist/components/docs/libraries/LibrariesAiAgentPage.d.ts +1 -6
- package/dist/components/docs/libraries/LibrariesAiAgentPage.d.ts.map +1 -1
- package/dist/components/docs/libraries/LibrariesAiAgentPage.js +141 -89
- package/dist/components/docs/libraries/LibrariesAnalyticsPage.d.ts +1 -6
- package/dist/components/docs/libraries/LibrariesAnalyticsPage.d.ts.map +1 -1
- package/dist/components/docs/libraries/LibrariesAnalyticsPage.js +75 -59
- package/dist/components/docs/libraries/LibrariesContentGenPage.d.ts +1 -6
- package/dist/components/docs/libraries/LibrariesContentGenPage.d.ts.map +1 -1
- package/dist/components/docs/libraries/LibrariesContentGenPage.js +96 -67
- package/dist/components/docs/libraries/LibrariesContractsPage.d.ts +1 -6
- package/dist/components/docs/libraries/LibrariesContractsPage.d.ts.map +1 -1
- package/dist/components/docs/libraries/LibrariesContractsPage.js +277 -140
- package/dist/components/docs/libraries/LibrariesCostTrackingPage.d.ts +1 -6
- package/dist/components/docs/libraries/LibrariesCostTrackingPage.d.ts.map +1 -1
- package/dist/components/docs/libraries/LibrariesCostTrackingPage.js +107 -76
- package/dist/components/docs/libraries/LibrariesDataBackendPage.d.ts +1 -6
- package/dist/components/docs/libraries/LibrariesDataBackendPage.d.ts.map +1 -1
- package/dist/components/docs/libraries/LibrariesDataBackendPage.js +162 -106
- package/dist/components/docs/libraries/LibrariesDataViewsPage.d.ts +1 -6
- package/dist/components/docs/libraries/LibrariesDataViewsPage.d.ts.map +1 -1
- package/dist/components/docs/libraries/LibrariesDataViewsPage.js +181 -112
- package/dist/components/docs/libraries/LibrariesDesignSystemPage.d.ts +1 -6
- package/dist/components/docs/libraries/LibrariesDesignSystemPage.d.ts.map +1 -1
- package/dist/components/docs/libraries/LibrariesDesignSystemPage.js +273 -158
- package/dist/components/docs/libraries/LibrariesEvolutionPage.d.ts +1 -6
- package/dist/components/docs/libraries/LibrariesEvolutionPage.d.ts.map +1 -1
- package/dist/components/docs/libraries/LibrariesEvolutionPage.js +121 -91
- package/dist/components/docs/libraries/LibrariesGraphQLPage.d.ts +1 -6
- package/dist/components/docs/libraries/LibrariesGraphQLPage.d.ts.map +1 -1
- package/dist/components/docs/libraries/LibrariesGraphQLPage.js +169 -118
- package/dist/components/docs/libraries/LibrariesGrowthPage.d.ts +1 -6
- package/dist/components/docs/libraries/LibrariesGrowthPage.d.ts.map +1 -1
- package/dist/components/docs/libraries/LibrariesGrowthPage.js +83 -62
- package/dist/components/docs/libraries/LibrariesMultiTenancyPage.d.ts +1 -6
- package/dist/components/docs/libraries/LibrariesMultiTenancyPage.d.ts.map +1 -1
- package/dist/components/docs/libraries/LibrariesMultiTenancyPage.js +103 -84
- package/dist/components/docs/libraries/LibrariesObservabilityPage.d.ts +1 -6
- package/dist/components/docs/libraries/LibrariesObservabilityPage.d.ts.map +1 -1
- package/dist/components/docs/libraries/LibrariesObservabilityPage.js +123 -100
- package/dist/components/docs/libraries/LibrariesOverlayEnginePage.d.ts +1 -6
- package/dist/components/docs/libraries/LibrariesOverlayEnginePage.d.ts.map +1 -1
- package/dist/components/docs/libraries/LibrariesOverlayEnginePage.js +104 -86
- package/dist/components/docs/libraries/LibrariesOverviewPage.d.ts +1 -6
- package/dist/components/docs/libraries/LibrariesOverviewPage.d.ts.map +1 -1
- package/dist/components/docs/libraries/LibrariesOverviewPage.js +481 -356
- package/dist/components/docs/libraries/LibrariesPersonalizationPage.d.ts +1 -6
- package/dist/components/docs/libraries/LibrariesPersonalizationPage.d.ts.map +1 -1
- package/dist/components/docs/libraries/LibrariesPersonalizationPage.js +108 -93
- package/dist/components/docs/libraries/LibrariesProgressiveDeliveryPage.d.ts +1 -6
- package/dist/components/docs/libraries/LibrariesProgressiveDeliveryPage.d.ts.map +1 -1
- package/dist/components/docs/libraries/LibrariesProgressiveDeliveryPage.js +127 -96
- package/dist/components/docs/libraries/LibrariesResiliencePage.d.ts +1 -6
- package/dist/components/docs/libraries/LibrariesResiliencePage.d.ts.map +1 -1
- package/dist/components/docs/libraries/LibrariesResiliencePage.js +114 -97
- package/dist/components/docs/libraries/LibrariesRuntimePage.d.ts +1 -6
- package/dist/components/docs/libraries/LibrariesRuntimePage.d.ts.map +1 -1
- package/dist/components/docs/libraries/LibrariesRuntimePage.js +196 -116
- package/dist/components/docs/libraries/LibrariesSLOPage.d.ts +1 -6
- package/dist/components/docs/libraries/LibrariesSLOPage.d.ts.map +1 -1
- package/dist/components/docs/libraries/LibrariesSLOPage.js +111 -83
- package/dist/components/docs/libraries/LibrariesSchemaPage.d.ts +1 -6
- package/dist/components/docs/libraries/LibrariesSchemaPage.d.ts.map +1 -1
- package/dist/components/docs/libraries/LibrariesSchemaPage.js +268 -151
- package/dist/components/docs/libraries/LibrariesSupportBotPage.d.ts +1 -6
- package/dist/components/docs/libraries/LibrariesSupportBotPage.d.ts.map +1 -1
- package/dist/components/docs/libraries/LibrariesSupportBotPage.js +129 -77
- package/dist/components/docs/libraries/LibrariesTestingPage.d.ts +1 -6
- package/dist/components/docs/libraries/LibrariesTestingPage.d.ts.map +1 -1
- package/dist/components/docs/libraries/LibrariesTestingPage.js +121 -91
- package/dist/components/docs/libraries/LibrariesUIKitPage.d.ts +1 -6
- package/dist/components/docs/libraries/LibrariesUIKitPage.d.ts.map +1 -1
- package/dist/components/docs/libraries/LibrariesUIKitPage.js +226 -136
- package/dist/components/docs/libraries/LibrariesWorkflowComposerPage.d.ts +1 -6
- package/dist/components/docs/libraries/LibrariesWorkflowComposerPage.d.ts.map +1 -1
- package/dist/components/docs/libraries/LibrariesWorkflowComposerPage.js +83 -62
- package/dist/components/docs/libraries/LibrariesWorkflowsPage.d.ts +1 -6
- package/dist/components/docs/libraries/LibrariesWorkflowsPage.d.ts.map +1 -1
- package/dist/components/docs/libraries/LibrariesWorkflowsPage.js +177 -111
- package/dist/components/docs/libraries/index.d.ts +28 -28
- package/dist/components/docs/libraries/index.d.ts.map +1 -0
- package/dist/components/docs/libraries/index.js +5005 -29
- package/dist/components/docs/manifesto/ManifestoPage.d.ts +1 -6
- package/dist/components/docs/manifesto/ManifestoPage.d.ts.map +1 -1
- package/dist/components/docs/manifesto/ManifestoPage.js +190 -183
- package/dist/components/docs/ops/AutoEvolutionOpsPage.d.ts +1 -6
- package/dist/components/docs/ops/AutoEvolutionOpsPage.d.ts.map +1 -1
- package/dist/components/docs/ops/AutoEvolutionOpsPage.js +130 -92
- package/dist/components/docs/ops/DistributedTracingOpsPage.d.ts +1 -6
- package/dist/components/docs/ops/DistributedTracingOpsPage.d.ts.map +1 -1
- package/dist/components/docs/ops/DistributedTracingOpsPage.js +69 -55
- package/dist/components/docs/ops/index.d.ts +3 -3
- package/dist/components/docs/ops/index.d.ts.map +1 -0
- package/dist/components/docs/ops/index.js +213 -3
- package/dist/components/docs/ops/ops-lifecycle.docblocks.d.ts +2 -6
- package/dist/components/docs/ops/ops-lifecycle.docblocks.d.ts.map +1 -1
- package/dist/components/docs/ops/ops-lifecycle.docblocks.js +38 -38
- package/dist/components/docs/ops/ops-runbooks-a.docblocks.d.ts +2 -6
- package/dist/components/docs/ops/ops-runbooks-a.docblocks.d.ts.map +1 -1
- package/dist/components/docs/ops/ops-runbooks-a.docblocks.js +68 -68
- package/dist/components/docs/ops/ops-runbooks-b.docblocks.d.ts +2 -6
- package/dist/components/docs/ops/ops-runbooks-b.docblocks.d.ts.map +1 -1
- package/dist/components/docs/ops/ops-runbooks-b.docblocks.js +69 -69
- package/dist/components/docs/ops/ops-slo-tenant.docblocks.d.ts +2 -6
- package/dist/components/docs/ops/ops-slo-tenant.docblocks.d.ts.map +1 -1
- package/dist/components/docs/ops/ops-slo-tenant.docblocks.js +69 -69
- package/dist/components/docs/ops/ops-top.docs.d.ts +2 -6
- package/dist/components/docs/ops/ops-top.docs.d.ts.map +1 -1
- package/dist/components/docs/ops/ops-top.docs.js +17 -15
- package/dist/components/docs/ops/ops.docs.d.ts +2 -6
- package/dist/components/docs/ops/ops.docs.d.ts.map +1 -1
- package/dist/components/docs/ops/ops.docs.js +579 -16
- package/dist/components/docs/product/product.docblocks.d.ts +2 -6
- package/dist/components/docs/product/product.docblocks.d.ts.map +1 -1
- package/dist/components/docs/product/product.docblocks.js +66 -67
- package/dist/components/docs/reference/DocsMarkdownContent.d.ts +3 -10
- package/dist/components/docs/reference/DocsMarkdownContent.d.ts.map +1 -1
- package/dist/components/docs/reference/DocsMarkdownContent.js +188 -64
- package/dist/components/docs/reference/DocsReferenceContent.d.ts +5 -12
- package/dist/components/docs/reference/DocsReferenceContent.d.ts.map +1 -1
- package/dist/components/docs/reference/DocsReferenceContent.js +251 -45
- package/dist/components/docs/reference/DocsReferenceIndexClient.d.ts +4 -10
- package/dist/components/docs/reference/DocsReferenceIndexClient.d.ts.map +1 -1
- package/dist/components/docs/reference/DocsReferenceIndexClient.js +120 -98
- package/dist/components/docs/reference/DocsReferenceIndexPage.d.ts +1 -6
- package/dist/components/docs/reference/DocsReferenceIndexPage.d.ts.map +1 -1
- package/dist/components/docs/reference/DocsReferenceIndexPage.js +205 -9
- package/dist/components/docs/reference/DocsReferencePage.d.ts +5 -12
- package/dist/components/docs/reference/DocsReferencePage.d.ts.map +1 -1
- package/dist/components/docs/reference/DocsReferencePage.js +264 -11
- package/dist/components/docs/reference/docsMarkdownParser.d.ts +15 -18
- package/dist/components/docs/reference/docsMarkdownParser.d.ts.map +1 -1
- package/dist/components/docs/reference/docsMarkdownParser.js +87 -90
- package/dist/components/docs/reference/index.d.ts +3 -3
- package/dist/components/docs/reference/index.d.ts.map +1 -0
- package/dist/components/docs/reference/index.js +472 -3
- package/dist/components/docs/safety/SafetyAuditingPage.d.ts +1 -6
- package/dist/components/docs/safety/SafetyAuditingPage.d.ts.map +1 -1
- package/dist/components/docs/safety/SafetyAuditingPage.js +348 -210
- package/dist/components/docs/safety/SafetyMigrationsPage.d.ts +1 -6
- package/dist/components/docs/safety/SafetyMigrationsPage.d.ts.map +1 -1
- package/dist/components/docs/safety/SafetyMigrationsPage.js +357 -220
- package/dist/components/docs/safety/SafetyOverviewPage.d.ts +1 -6
- package/dist/components/docs/safety/SafetyOverviewPage.d.ts.map +1 -1
- package/dist/components/docs/safety/SafetyOverviewPage.js +236 -194
- package/dist/components/docs/safety/SafetyPDPPage.d.ts +1 -6
- package/dist/components/docs/safety/SafetyPDPPage.d.ts.map +1 -1
- package/dist/components/docs/safety/SafetyPDPPage.js +299 -201
- package/dist/components/docs/safety/SafetySecurityTrustPage.d.ts +1 -6
- package/dist/components/docs/safety/SafetySecurityTrustPage.d.ts.map +1 -1
- package/dist/components/docs/safety/SafetySecurityTrustPage.js +204 -154
- package/dist/components/docs/safety/SafetySigningPage.d.ts +1 -6
- package/dist/components/docs/safety/SafetySigningPage.d.ts.map +1 -1
- package/dist/components/docs/safety/SafetySigningPage.js +89 -66
- package/dist/components/docs/safety/SafetyTenantIsolationPage.d.ts +1 -6
- package/dist/components/docs/safety/SafetyTenantIsolationPage.d.ts.map +1 -1
- package/dist/components/docs/safety/SafetyTenantIsolationPage.js +77 -59
- package/dist/components/docs/safety/index.d.ts +8 -8
- package/dist/components/docs/safety/index.d.ts.map +1 -0
- package/dist/components/docs/safety/index.js +1698 -9
- package/dist/components/docs/shared/StudioPrompt.d.ts +6 -15
- package/dist/components/docs/shared/StudioPrompt.d.ts.map +1 -1
- package/dist/components/docs/shared/StudioPrompt.js +30 -26
- package/dist/components/docs/specs/SpecsCapabilitiesPage.d.ts +1 -6
- package/dist/components/docs/specs/SpecsCapabilitiesPage.d.ts.map +1 -1
- package/dist/components/docs/specs/SpecsCapabilitiesPage.js +156 -126
- package/dist/components/docs/specs/SpecsDataViewsPage.d.ts +1 -6
- package/dist/components/docs/specs/SpecsDataViewsPage.d.ts.map +1 -1
- package/dist/components/docs/specs/SpecsDataViewsPage.js +258 -168
- package/dist/components/docs/specs/SpecsOverlaysPage.d.ts +1 -6
- package/dist/components/docs/specs/SpecsOverlaysPage.d.ts.map +1 -1
- package/dist/components/docs/specs/SpecsOverlaysPage.js +370 -205
- package/dist/components/docs/specs/SpecsOverviewPage.d.ts +1 -6
- package/dist/components/docs/specs/SpecsOverviewPage.d.ts.map +1 -1
- package/dist/components/docs/specs/SpecsOverviewPage.js +346 -277
- package/dist/components/docs/specs/SpecsPolicyPage.d.ts +1 -6
- package/dist/components/docs/specs/SpecsPolicyPage.d.ts.map +1 -1
- package/dist/components/docs/specs/SpecsPolicyPage.js +418 -311
- package/dist/components/docs/specs/SpecsWorkflowsPage.d.ts +1 -6
- package/dist/components/docs/specs/SpecsWorkflowsPage.d.ts.map +1 -1
- package/dist/components/docs/specs/SpecsWorkflowsPage.js +310 -205
- package/dist/components/docs/specs/index.d.ts +7 -7
- package/dist/components/docs/specs/index.d.ts.map +1 -0
- package/dist/components/docs/specs/index.js +2082 -8
- package/dist/components/docs/studio/StudioBYOKPage.d.ts +1 -6
- package/dist/components/docs/studio/StudioBYOKPage.d.ts.map +1 -1
- package/dist/components/docs/studio/StudioBYOKPage.js +78 -76
- package/dist/components/docs/studio/StudioDeploymentsPage.d.ts +1 -6
- package/dist/components/docs/studio/StudioDeploymentsPage.d.ts.map +1 -1
- package/dist/components/docs/studio/StudioDeploymentsPage.js +99 -81
- package/dist/components/docs/studio/StudioGettingStartedPage.d.ts +1 -6
- package/dist/components/docs/studio/StudioGettingStartedPage.d.ts.map +1 -1
- package/dist/components/docs/studio/StudioGettingStartedPage.js +82 -80
- package/dist/components/docs/studio/StudioIntegrationsPage.d.ts +1 -6
- package/dist/components/docs/studio/StudioIntegrationsPage.d.ts.map +1 -1
- package/dist/components/docs/studio/StudioIntegrationsPage.js +70 -65
- package/dist/components/docs/studio/StudioOverviewPage.d.ts +1 -6
- package/dist/components/docs/studio/StudioOverviewPage.d.ts.map +1 -1
- package/dist/components/docs/studio/StudioOverviewPage.js +71 -66
- package/dist/components/docs/studio/StudioVisualBuilderPage.d.ts +1 -6
- package/dist/components/docs/studio/StudioVisualBuilderPage.d.ts.map +1 -1
- package/dist/components/docs/studio/StudioVisualBuilderPage.js +118 -99
- package/dist/components/docs/studio/index.d.ts +7 -7
- package/dist/components/docs/studio/index.d.ts.map +1 -0
- package/dist/components/docs/studio/index.js +538 -8
- package/dist/components/docs/tech/contracts/tech-docs.docblocks.d.ts +2 -6
- package/dist/components/docs/tech/contracts/tech-docs.docblocks.d.ts.map +1 -1
- package/dist/components/docs/tech/contracts/tech-docs.docblocks.js +17 -16
- package/dist/components/integrations/index.d.ts +5 -5
- package/dist/components/integrations/index.d.ts.map +1 -0
- package/dist/components/integrations/index.js +601 -5
- package/dist/components/integrations/molecules/IntegrationCard.d.ts +11 -26
- package/dist/components/integrations/molecules/IntegrationCard.d.ts.map +1 -1
- package/dist/components/integrations/molecules/IntegrationCard.js +98 -60
- package/dist/components/integrations/organisms/IntegrationMarketplace.d.ts +13 -22
- package/dist/components/integrations/organisms/IntegrationMarketplace.d.ts.map +1 -1
- package/dist/components/integrations/organisms/IntegrationMarketplace.js +211 -77
- package/dist/components/integrations/organisms/IntegrationSettings.d.ts +15 -27
- package/dist/components/integrations/organisms/IntegrationSettings.d.ts.map +1 -1
- package/dist/components/integrations/organisms/IntegrationSettings.js +281 -189
- package/dist/components/integrations/organisms/KnowledgeSourceList.d.ts +12 -22
- package/dist/components/integrations/organisms/KnowledgeSourceList.d.ts.map +1 -1
- package/dist/components/integrations/organisms/KnowledgeSourceList.js +102 -65
- package/dist/components/legal/PrivacyTemplate.d.ts +3 -8
- package/dist/components/legal/PrivacyTemplate.d.ts.map +1 -1
- package/dist/components/legal/PrivacyTemplate.js +1023 -842
- package/dist/components/legal/TermsTemplate.d.ts +3 -8
- package/dist/components/legal/TermsTemplate.d.ts.map +1 -1
- package/dist/components/legal/TermsTemplate.js +939 -780
- package/dist/components/legal/index.d.ts +3 -3
- package/dist/components/legal/index.d.ts.map +1 -0
- package/dist/components/legal/index.js +1963 -3
- package/dist/components/shared/FeatureGateNotice.d.ts +6 -16
- package/dist/components/shared/FeatureGateNotice.d.ts.map +1 -1
- package/dist/components/shared/FeatureGateNotice.js +37 -32
- package/dist/components/shared/index.d.ts +2 -2
- package/dist/components/shared/index.d.ts.map +1 -0
- package/dist/components/shared/index.js +39 -3
- package/dist/components/shell/WorkspaceHeader.d.ts +19 -32
- package/dist/components/shell/WorkspaceHeader.d.ts.map +1 -1
- package/dist/components/shell/WorkspaceHeader.js +97 -59
- package/dist/components/shell/WorkspaceProjectShellLayout.d.ts +9 -28
- package/dist/components/shell/WorkspaceProjectShellLayout.d.ts.map +1 -1
- package/dist/components/shell/WorkspaceProjectShellLayout.js +220 -35
- package/dist/components/shell/WorkspaceSidebar.d.ts +12 -22
- package/dist/components/shell/WorkspaceSidebar.d.ts.map +1 -1
- package/dist/components/shell/WorkspaceSidebar.js +67 -31
- package/dist/components/shell/index.d.ts +4 -4
- package/dist/components/shell/index.d.ts.map +1 -0
- package/dist/components/shell/index.js +224 -4
- package/dist/components/templates/engine/index.d.ts +18 -12
- package/dist/components/templates/engine/index.d.ts.map +1 -1
- package/dist/components/templates/engine/index.js +28 -41
- package/dist/components/templates/index.d.ts +4 -16
- package/dist/components/templates/index.d.ts.map +1 -0
- package/dist/components/templates/index.js +1067 -17
- package/dist/components/templates/messaging/ConversationList.d.ts +4 -12
- package/dist/components/templates/messaging/ConversationList.d.ts.map +1 -1
- package/dist/components/templates/messaging/ConversationList.js +79 -52
- package/dist/components/templates/messaging/MessageComposer.d.ts +5 -14
- package/dist/components/templates/messaging/MessageComposer.d.ts.map +1 -1
- package/dist/components/templates/messaging/MessageComposer.js +159 -52
- package/dist/components/templates/messaging/MessageThread.d.ts +5 -14
- package/dist/components/templates/messaging/MessageThread.d.ts.map +1 -1
- package/dist/components/templates/messaging/MessageThread.js +78 -75
- package/dist/components/templates/messaging/MessagingWorkspace.d.ts +1 -6
- package/dist/components/templates/messaging/MessagingWorkspace.d.ts.map +1 -1
- package/dist/components/templates/messaging/MessagingWorkspace.js +290 -25
- package/dist/components/templates/messaging/index.d.ts +5 -5
- package/dist/components/templates/messaging/index.d.ts.map +1 -0
- package/dist/components/templates/messaging/index.js +300 -5
- package/dist/components/templates/messaging/types.d.ts +20 -23
- package/dist/components/templates/messaging/types.d.ts.map +1 -1
- package/dist/components/templates/messaging/types.js +1 -0
- package/dist/components/templates/recipes/LanguageSwitcher.d.ts +4 -12
- package/dist/components/templates/recipes/LanguageSwitcher.d.ts.map +1 -1
- package/dist/components/templates/recipes/LanguageSwitcher.js +15 -16
- package/dist/components/templates/recipes/RecipeCard.d.ts +6 -15
- package/dist/components/templates/recipes/RecipeCard.d.ts.map +1 -1
- package/dist/components/templates/recipes/RecipeCard.js +79 -57
- package/dist/components/templates/recipes/RecipeDetail.d.ts +4 -11
- package/dist/components/templates/recipes/RecipeDetail.d.ts.map +1 -1
- package/dist/components/templates/recipes/RecipeDetail.js +72 -47
- package/dist/components/templates/recipes/RecipeList.d.ts +1 -6
- package/dist/components/templates/recipes/RecipeList.d.ts.map +1 -1
- package/dist/components/templates/recipes/RecipeList.js +236 -72
- package/dist/components/templates/recipes/index.d.ts +5 -5
- package/dist/components/templates/recipes/index.d.ts.map +1 -0
- package/dist/components/templates/recipes/index.js +282 -5
- package/dist/components/templates/recipes/types.d.ts +23 -26
- package/dist/components/templates/recipes/types.d.ts.map +1 -1
- package/dist/components/templates/recipes/types.js +1 -0
- package/dist/components/templates/todos/FilterBar.d.ts +11 -20
- package/dist/components/templates/todos/FilterBar.d.ts.map +1 -1
- package/dist/components/templates/todos/FilterBar.js +106 -95
- package/dist/components/templates/todos/TaskForm.d.ts +4 -11
- package/dist/components/templates/todos/TaskForm.d.ts.map +1 -1
- package/dist/components/templates/todos/TaskForm.js +150 -127
- package/dist/components/templates/todos/TaskItem.d.ts +6 -15
- package/dist/components/templates/todos/TaskItem.d.ts.map +1 -1
- package/dist/components/templates/todos/TaskItem.js +75 -64
- package/dist/components/templates/todos/TaskList.d.ts +1 -6
- package/dist/components/templates/todos/TaskList.d.ts.map +1 -1
- package/dist/components/templates/todos/TaskList.js +446 -102
- package/dist/components/templates/todos/index.d.ts +5 -5
- package/dist/components/templates/todos/index.d.ts.map +1 -0
- package/dist/components/templates/todos/index.js +488 -5
- package/dist/components/templates/todos/types.d.ts +14 -17
- package/dist/components/templates/todos/types.d.ts.map +1 -1
- package/dist/components/templates/todos/types.js +1 -0
- package/dist/config/contractspec-blueprint.d.ts +2 -7
- package/dist/config/contractspec-blueprint.d.ts.map +1 -1
- package/dist/config/contractspec-blueprint.js +122 -70
- package/dist/config/contractspec-branding.d.ts +3 -8
- package/dist/config/contractspec-branding.d.ts.map +1 -1
- package/dist/config/contractspec-branding.js +43 -66
- package/dist/config/contractspec-routes.d.ts +2 -7
- package/dist/config/contractspec-routes.d.ts.map +1 -1
- package/dist/config/contractspec-routes.js +24 -68
- package/dist/config/index.d.ts +5 -5
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +126 -4
- package/dist/features/contracts-registry.d.ts +39 -37
- package/dist/features/contracts-registry.d.ts.map +1 -1
- package/dist/features/contracts-registry.js +122 -85
- package/dist/features/docs/docs.contracts.d.ts +2 -2
- package/dist/features/docs/docs.contracts.d.ts.map +1 -0
- package/dist/features/docs/docs.contracts.js +18 -3
- package/dist/features/docs/index.d.ts +2 -2
- package/dist/features/docs/index.d.ts.map +1 -0
- package/dist/features/docs/index.js +18 -3
- package/dist/features/docs.feature.d.ts +2 -7
- package/dist/features/docs.feature.d.ts.map +1 -1
- package/dist/features/docs.feature.js +33 -59
- package/dist/features/index.d.ts +10 -9
- package/dist/features/index.d.ts.map +1 -0
- package/dist/features/index.js +310 -8
- package/dist/features/mcp.feature.d.ts +2 -7
- package/dist/features/mcp.feature.d.ts.map +1 -1
- package/dist/features/mcp.feature.js +30 -56
- package/dist/features/presentations.feature.d.ts +2 -7
- package/dist/features/presentations.feature.d.ts.map +1 -1
- package/dist/features/presentations.feature.js +33 -60
- package/dist/features/registry.d.ts +4 -9
- package/dist/features/registry.d.ts.map +1 -1
- package/dist/features/registry.js +109 -31
- package/dist/index.d.ts +9 -158
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +32497 -158
- package/dist/infrastructure/elysia/index.d.ts +2 -2
- package/dist/infrastructure/elysia/index.d.ts.map +1 -0
- package/dist/infrastructure/elysia/index.js +36 -3
- package/dist/infrastructure/elysia/logger.d.ts +6 -9
- package/dist/infrastructure/elysia/logger.d.ts.map +1 -1
- package/dist/infrastructure/elysia/logger.js +33 -29
- package/dist/infrastructure/index.d.ts +2 -3
- package/dist/infrastructure/index.d.ts.map +1 -0
- package/dist/infrastructure/index.js +36 -4
- package/dist/libs/email/client.d.ts +9 -12
- package/dist/libs/email/client.d.ts.map +1 -1
- package/dist/libs/email/client.js +107 -105
- package/dist/libs/email/client.test.d.ts +2 -0
- package/dist/libs/email/client.test.d.ts.map +1 -0
- package/dist/libs/email/contact.d.ts +2 -6
- package/dist/libs/email/contact.d.ts.map +1 -1
- package/dist/libs/email/contact.js +153 -41
- package/dist/libs/email/newsletter.d.ts +2 -6
- package/dist/libs/email/newsletter.d.ts.map +1 -1
- package/dist/libs/email/newsletter.js +167 -54
- package/dist/libs/email/types.d.ts +48 -52
- package/dist/libs/email/types.d.ts.map +1 -1
- package/dist/libs/email/types.js +3 -1
- package/dist/libs/email/utils.d.ts +2 -5
- package/dist/libs/email/utils.d.ts.map +1 -1
- package/dist/libs/email/utils.js +9 -7
- package/dist/libs/email/waitlist-application.d.ts +2 -6
- package/dist/libs/email/waitlist-application.d.ts.map +1 -1
- package/dist/libs/email/waitlist-application.js +187 -69
- package/dist/libs/email/waitlist.d.ts +2 -6
- package/dist/libs/email/waitlist.d.ts.map +1 -1
- package/dist/libs/email/waitlist.js +169 -56
- package/dist/libs/email.d.ts +6 -6
- package/dist/libs/email.d.ts.map +1 -0
- package/dist/libs/email.js +541 -6
- package/dist/libs/posthog/client.d.ts +15 -17
- package/dist/libs/posthog/client.d.ts.map +1 -1
- package/dist/libs/posthog/client.js +56 -44
- package/dist/libs/posthog/native.d.ts +6 -9
- package/dist/libs/posthog/native.d.ts.map +1 -1
- package/dist/libs/posthog/native.js +21 -16
- package/dist/libs/posthog/server.d.ts +3 -6
- package/dist/libs/posthog/server.d.ts.map +1 -1
- package/dist/libs/posthog/server.js +11 -12
- package/dist/libs/pricing-examples.d.ts +13 -16
- package/dist/libs/pricing-examples.d.ts.map +1 -1
- package/dist/libs/pricing-examples.js +18 -20
- package/dist/node/application/index.js +696 -0
- package/dist/node/application/mcp/cliMcp.js +341 -0
- package/dist/node/application/mcp/common.js +77 -0
- package/dist/node/application/mcp/docsMcp.js +267 -0
- package/dist/node/application/mcp/index.js +696 -0
- package/dist/node/application/mcp/internalMcp.js +294 -0
- package/dist/node/components/docs/DocsIndexPage.js +270 -0
- package/dist/node/components/docs/advanced/AdvancedMCPPage.js +337 -0
- package/dist/node/components/docs/advanced/AdvancedOverlayEditorPage.js +107 -0
- package/dist/node/components/docs/advanced/AdvancedRenderersPage.js +132 -0
- package/dist/node/components/docs/advanced/AdvancedSpecExperimentsPage.js +124 -0
- package/dist/node/components/docs/advanced/AdvancedTelemetryPage.js +417 -0
- package/dist/node/components/docs/advanced/AdvancedWorkflowMonitoringPage.js +108 -0
- package/dist/node/components/docs/advanced/index.js +1220 -0
- package/dist/node/components/docs/architecture/ArchitectureAppConfigPage.js +383 -0
- package/dist/node/components/docs/architecture/ArchitectureIntegrationBindingPage.js +386 -0
- package/dist/node/components/docs/architecture/ArchitectureKnowledgeBindingPage.js +528 -0
- package/dist/node/components/docs/architecture/ArchitectureMultiTenancyPage.js +172 -0
- package/dist/node/components/docs/architecture/ArchitectureOverviewPage.js +448 -0
- package/dist/node/components/docs/architecture/index.js +1913 -0
- package/dist/node/components/docs/comparison/ComparisonAutomationPlatformsPage.js +245 -0
- package/dist/node/components/docs/comparison/ComparisonEnterprisePlatformsPage.js +230 -0
- package/dist/node/components/docs/comparison/ComparisonInternalToolBuildersPage.js +245 -0
- package/dist/node/components/docs/comparison/ComparisonOverviewPage.js +202 -0
- package/dist/node/components/docs/comparison/ComparisonWindmillPage.js +254 -0
- package/dist/node/components/docs/comparison/ComparisonWorkflowEnginesPage.js +339 -0
- package/dist/node/components/docs/comparison/index.js +1510 -0
- package/dist/node/components/docs/ecosystem/IntegrationsPage.js +102 -0
- package/dist/node/components/docs/ecosystem/PluginsPage.js +200 -0
- package/dist/node/components/docs/ecosystem/RegistryPage.js +119 -0
- package/dist/node/components/docs/ecosystem/TemplatesPage.js +146 -0
- package/dist/node/components/docs/ecosystem/ecosystem.docblocks.js +49 -0
- package/dist/node/components/docs/ecosystem/index.js +614 -0
- package/dist/node/components/docs/examples/DocsExamplesPage.js +84 -0
- package/dist/node/components/docs/examples/index.js +84 -0
- package/dist/node/components/docs/generated/docs-index.generated.js +5 -0
- package/dist/node/components/docs/generated/index.js +74 -0
- package/dist/node/components/docs/generated/loader.js +74 -0
- package/dist/node/components/docs/getting-started/CLIPage.js +292 -0
- package/dist/node/components/docs/getting-started/CompatibilityPage.js +173 -0
- package/dist/node/components/docs/getting-started/DataViewTutorialPage.js +238 -0
- package/dist/node/components/docs/getting-started/DeveloperToolsPage.js +194 -0
- package/dist/node/components/docs/getting-started/HelloWorldPage.js +273 -0
- package/dist/node/components/docs/getting-started/InstallationPage.js +156 -0
- package/dist/node/components/docs/getting-started/StartHerePage.js +129 -0
- package/dist/node/components/docs/getting-started/TroubleshootingPage.js +169 -0
- package/dist/node/components/docs/getting-started/VSCodeExtensionPage.js +432 -0
- package/dist/node/components/docs/getting-started/getting-started.docblocks.js +137 -0
- package/dist/node/components/docs/getting-started/index.js +2183 -0
- package/dist/node/components/docs/guides/GuideCIDiffGatingPage.js +197 -0
- package/dist/node/components/docs/guides/GuideContractTypesPage.js +738 -0
- package/dist/node/components/docs/guides/GuideDocsPipelinePage.js +225 -0
- package/dist/node/components/docs/guides/GuideGenerateDocsClientsSchemasPage.js +211 -0
- package/dist/node/components/docs/guides/GuideImportExistingCodebasesPage.js +878 -0
- package/dist/node/components/docs/guides/GuideNextjsOneEndpointPage.js +318 -0
- package/dist/node/components/docs/guides/GuideSpecValidationTypingPage.js +255 -0
- package/dist/node/components/docs/guides/GuidesIndexPage.js +149 -0
- package/dist/node/components/docs/guides/guides.docblocks.js +111 -0
- package/dist/node/components/docs/guides/index.js +2902 -0
- package/dist/node/components/docs/index.js +28181 -0
- package/dist/node/components/docs/integrations/IntegrationsCircuitBreakersPage.js +51 -0
- package/dist/node/components/docs/integrations/IntegrationsElevenLabsPage.js +123 -0
- package/dist/node/components/docs/integrations/IntegrationsGmailPage.js +131 -0
- package/dist/node/components/docs/integrations/IntegrationsGoogleCalendarPage.js +104 -0
- package/dist/node/components/docs/integrations/IntegrationsOpenAIPage.js +195 -0
- package/dist/node/components/docs/integrations/IntegrationsOverviewPage.js +650 -0
- package/dist/node/components/docs/integrations/IntegrationsPostmarkPage.js +261 -0
- package/dist/node/components/docs/integrations/IntegrationsPowensPage.js +352 -0
- package/dist/node/components/docs/integrations/IntegrationsQdrantPage.js +178 -0
- package/dist/node/components/docs/integrations/IntegrationsResendPage.js +123 -0
- package/dist/node/components/docs/integrations/IntegrationsS3Page.js +163 -0
- package/dist/node/components/docs/integrations/IntegrationsSpecModelPage.js +422 -0
- package/dist/node/components/docs/integrations/IntegrationsStripePage.js +425 -0
- package/dist/node/components/docs/integrations/IntegrationsTwilioPage.js +146 -0
- package/dist/node/components/docs/integrations/index.js +3311 -0
- package/dist/node/components/docs/intent/ContractFirstApiPage.js +159 -0
- package/dist/node/components/docs/intent/DeterministicCodegenPage.js +184 -0
- package/dist/node/components/docs/intent/GenerateClientFromSchemaPage.js +398 -0
- package/dist/node/components/docs/intent/OpenapiAlternativePage.js +237 -0
- package/dist/node/components/docs/intent/SchemaValidationTypescriptPage.js +236 -0
- package/dist/node/components/docs/intent/SpecDrivenDevelopmentPage.js +197 -0
- package/dist/node/components/docs/intent/index.js +1594 -0
- package/dist/node/components/docs/intent/intent-pages.docblocks.js +201 -0
- package/dist/node/components/docs/knowledge/KnowledgeCategoriesPage.js +829 -0
- package/dist/node/components/docs/knowledge/KnowledgeExamplesPage.js +340 -0
- package/dist/node/components/docs/knowledge/KnowledgeOverviewPage.js +464 -0
- package/dist/node/components/docs/knowledge/KnowledgeSourcesPage.js +454 -0
- package/dist/node/components/docs/knowledge/KnowledgeSpacesPage.js +361 -0
- package/dist/node/components/docs/knowledge/index.js +2444 -0
- package/dist/node/components/docs/libraries/LibrariesAccessibilityPage.js +227 -0
- package/dist/node/components/docs/libraries/LibrariesAiAgentPage.js +168 -0
- package/dist/node/components/docs/libraries/LibrariesAnalyticsPage.js +96 -0
- package/dist/node/components/docs/libraries/LibrariesContentGenPage.js +119 -0
- package/dist/node/components/docs/libraries/LibrariesContractsPage.js +302 -0
- package/dist/node/components/docs/libraries/LibrariesCostTrackingPage.js +123 -0
- package/dist/node/components/docs/libraries/LibrariesDataBackendPage.js +183 -0
- package/dist/node/components/docs/libraries/LibrariesDataViewsPage.js +204 -0
- package/dist/node/components/docs/libraries/LibrariesDesignSystemPage.js +312 -0
- package/dist/node/components/docs/libraries/LibrariesEvolutionPage.js +164 -0
- package/dist/node/components/docs/libraries/LibrariesGraphQLPage.js +186 -0
- package/dist/node/components/docs/libraries/LibrariesGrowthPage.js +116 -0
- package/dist/node/components/docs/libraries/LibrariesMultiTenancyPage.js +118 -0
- package/dist/node/components/docs/libraries/LibrariesObservabilityPage.js +149 -0
- package/dist/node/components/docs/libraries/LibrariesOverlayEnginePage.js +135 -0
- package/dist/node/components/docs/libraries/LibrariesOverviewPage.js +483 -0
- package/dist/node/components/docs/libraries/LibrariesPersonalizationPage.js +129 -0
- package/dist/node/components/docs/libraries/LibrariesProgressiveDeliveryPage.js +151 -0
- package/dist/node/components/docs/libraries/LibrariesResiliencePage.js +138 -0
- package/dist/node/components/docs/libraries/LibrariesRuntimePage.js +239 -0
- package/dist/node/components/docs/libraries/LibrariesSLOPage.js +126 -0
- package/dist/node/components/docs/libraries/LibrariesSchemaPage.js +304 -0
- package/dist/node/components/docs/libraries/LibrariesSupportBotPage.js +144 -0
- package/dist/node/components/docs/libraries/LibrariesTestingPage.js +159 -0
- package/dist/node/components/docs/libraries/LibrariesUIKitPage.js +247 -0
- package/dist/node/components/docs/libraries/LibrariesWorkflowComposerPage.js +108 -0
- package/dist/node/components/docs/libraries/LibrariesWorkflowsPage.js +200 -0
- package/dist/node/components/docs/libraries/index.js +5004 -0
- package/dist/node/components/docs/manifesto/ManifestoPage.js +191 -0
- package/dist/node/components/docs/ops/AutoEvolutionOpsPage.js +141 -0
- package/dist/node/components/docs/ops/DistributedTracingOpsPage.js +73 -0
- package/dist/node/components/docs/ops/index.js +213 -0
- package/dist/node/components/docs/ops/ops-lifecycle.docblocks.js +151 -0
- package/dist/node/components/docs/ops/ops-runbooks-a.docblocks.js +123 -0
- package/dist/node/components/docs/ops/ops-runbooks-b.docblocks.js +134 -0
- package/dist/node/components/docs/ops/ops-slo-tenant.docblocks.js +146 -0
- package/dist/node/components/docs/ops/ops-top.docs.js +25 -0
- package/dist/node/components/docs/ops/ops.docs.js +580 -0
- package/dist/node/components/docs/product/product.docblocks.js +78 -0
- package/dist/node/components/docs/reference/DocsMarkdownContent.js +196 -0
- package/dist/node/components/docs/reference/DocsReferenceContent.js +257 -0
- package/dist/node/components/docs/reference/DocsReferenceIndexClient.js +128 -0
- package/dist/node/components/docs/reference/DocsReferenceIndexPage.js +207 -0
- package/dist/node/components/docs/reference/DocsReferencePage.js +266 -0
- package/dist/node/components/docs/reference/docsMarkdownParser.js +92 -0
- package/dist/node/components/docs/reference/index.js +472 -0
- package/dist/node/components/docs/safety/SafetyAuditingPage.js +380 -0
- package/dist/node/components/docs/safety/SafetyMigrationsPage.js +381 -0
- package/dist/node/components/docs/safety/SafetyOverviewPage.js +238 -0
- package/dist/node/components/docs/safety/SafetyPDPPage.js +318 -0
- package/dist/node/components/docs/safety/SafetySecurityTrustPage.js +206 -0
- package/dist/node/components/docs/safety/SafetySigningPage.js +92 -0
- package/dist/node/components/docs/safety/SafetyTenantIsolationPage.js +88 -0
- package/dist/node/components/docs/safety/index.js +1697 -0
- package/dist/node/components/docs/shared/StudioPrompt.js +31 -0
- package/dist/node/components/docs/specs/SpecsCapabilitiesPage.js +195 -0
- package/dist/node/components/docs/specs/SpecsDataViewsPage.js +299 -0
- package/dist/node/components/docs/specs/SpecsOverlaysPage.js +408 -0
- package/dist/node/components/docs/specs/SpecsOverviewPage.js +348 -0
- package/dist/node/components/docs/specs/SpecsPolicyPage.js +473 -0
- package/dist/node/components/docs/specs/SpecsWorkflowsPage.js +363 -0
- package/dist/node/components/docs/specs/index.js +2081 -0
- package/dist/node/components/docs/studio/StudioBYOKPage.js +80 -0
- package/dist/node/components/docs/studio/StudioDeploymentsPage.js +101 -0
- package/dist/node/components/docs/studio/StudioGettingStartedPage.js +94 -0
- package/dist/node/components/docs/studio/StudioIntegrationsPage.js +72 -0
- package/dist/node/components/docs/studio/StudioOverviewPage.js +74 -0
- package/dist/node/components/docs/studio/StudioVisualBuilderPage.js +121 -0
- package/dist/node/components/docs/studio/index.js +537 -0
- package/dist/node/components/docs/tech/contracts/tech-docs.docblocks.js +20 -0
- package/dist/node/components/integrations/index.js +601 -0
- package/dist/node/components/integrations/molecules/IntegrationCard.js +100 -0
- package/dist/node/components/integrations/organisms/IntegrationMarketplace.js +214 -0
- package/dist/node/components/integrations/organisms/IntegrationSettings.js +285 -0
- package/dist/node/components/integrations/organisms/KnowledgeSourceList.js +103 -0
- package/dist/node/components/legal/PrivacyTemplate.js +1025 -0
- package/dist/node/components/legal/TermsTemplate.js +941 -0
- package/dist/node/components/legal/index.js +1963 -0
- package/dist/node/components/shared/FeatureGateNotice.js +38 -0
- package/dist/node/components/shared/index.js +38 -0
- package/dist/node/components/shell/WorkspaceHeader.js +100 -0
- package/dist/node/components/shell/WorkspaceProjectShellLayout.js +222 -0
- package/dist/node/components/shell/WorkspaceSidebar.js +68 -0
- package/dist/node/components/shell/index.js +224 -0
- package/dist/node/components/templates/engine/index.js +39 -0
- package/dist/node/components/templates/index.js +1066 -0
- package/dist/node/components/templates/messaging/ConversationList.js +96 -0
- package/dist/node/components/templates/messaging/MessageComposer.js +168 -0
- package/dist/node/components/templates/messaging/MessageThread.js +96 -0
- package/dist/node/components/templates/messaging/MessagingWorkspace.js +296 -0
- package/dist/node/components/templates/messaging/index.js +300 -0
- package/dist/node/components/templates/messaging/types.js +0 -0
- package/dist/node/components/templates/recipes/LanguageSwitcher.js +16 -0
- package/dist/node/components/templates/recipes/RecipeCard.js +80 -0
- package/dist/node/components/templates/recipes/RecipeDetail.js +74 -0
- package/dist/node/components/templates/recipes/RecipeList.js +279 -0
- package/dist/node/components/templates/recipes/index.js +282 -0
- package/dist/node/components/templates/recipes/types.js +0 -0
- package/dist/node/components/templates/todos/FilterBar.js +107 -0
- package/dist/node/components/templates/todos/TaskForm.js +164 -0
- package/dist/node/components/templates/todos/TaskItem.js +77 -0
- package/dist/node/components/templates/todos/TaskList.js +485 -0
- package/dist/node/components/templates/todos/index.js +488 -0
- package/dist/node/components/templates/todos/types.js +0 -0
- package/dist/node/config/contractspec-blueprint.js +123 -0
- package/dist/node/config/contractspec-branding.js +44 -0
- package/dist/node/config/contractspec-routes.js +24 -0
- package/dist/node/config/index.js +126 -0
- package/dist/node/features/contracts-registry.js +174 -0
- package/dist/node/features/docs/docs.contracts.js +17 -0
- package/dist/node/features/docs/index.js +17 -0
- package/dist/node/features/docs.feature.js +33 -0
- package/dist/node/features/index.js +311 -0
- package/dist/node/features/mcp.feature.js +30 -0
- package/dist/node/features/presentations.feature.js +33 -0
- package/dist/node/features/registry.js +116 -0
- package/dist/node/index.js +32496 -0
- package/dist/node/infrastructure/elysia/index.js +35 -0
- package/dist/node/infrastructure/elysia/logger.js +35 -0
- package/dist/node/infrastructure/index.js +35 -0
- package/dist/node/libs/email/client.js +114 -0
- package/dist/node/libs/email/contact.js +182 -0
- package/dist/node/libs/email/newsletter.js +207 -0
- package/dist/node/libs/email/types.js +2 -0
- package/dist/node/libs/email/utils.js +8 -0
- package/dist/node/libs/email/waitlist-application.js +281 -0
- package/dist/node/libs/email/waitlist.js +217 -0
- package/dist/node/libs/email.js +542 -0
- package/dist/node/libs/posthog/client.js +63 -0
- package/dist/node/libs/posthog/native.js +23 -0
- package/dist/node/libs/posthog/server.js +13 -0
- package/dist/node/libs/pricing-examples.js +18 -0
- package/dist/node/presentation/features/atoms/FeatureIcon/FeatureIcon.js +97 -0
- package/dist/node/presentation/features/atoms/FeatureIcon/index.js +97 -0
- package/dist/node/presentation/features/atoms/index.js +97 -0
- package/dist/node/presentation/features/hooks/index.js +393 -0
- package/dist/node/presentation/features/hooks/useContractsRegistry.js +285 -0
- package/dist/node/presentation/features/hooks/useFeatureFilters.js +75 -0
- package/dist/node/presentation/features/hooks/useFeatureRegistry.js +147 -0
- package/dist/node/presentation/features/hooks/useRelatedDocs.js +28 -0
- package/dist/node/presentation/features/index.js +3059 -0
- package/dist/node/presentation/features/molecules/FeatureCard/FeatureCard.js +366 -0
- package/dist/node/presentation/features/molecules/FeatureCard/index.js +366 -0
- package/dist/node/presentation/features/molecules/FeatureCard/types.js +0 -0
- package/dist/node/presentation/features/molecules/FeatureCategoryHeader/FeatureCategoryHeader.js +50 -0
- package/dist/node/presentation/features/molecules/FeatureCategoryHeader/index.js +50 -0
- package/dist/node/presentation/features/molecules/FeatureFilters/FeatureFilters.js +92 -0
- package/dist/node/presentation/features/molecules/FeatureFilters/index.js +92 -0
- package/dist/node/presentation/features/molecules/FeatureFilters/types.js +0 -0
- package/dist/node/presentation/features/molecules/FeatureHoverPreview/FeatureHoverPreview.js +176 -0
- package/dist/node/presentation/features/molecules/FeatureHoverPreview/index.js +176 -0
- package/dist/node/presentation/features/molecules/index.js +505 -0
- package/dist/node/presentation/features/organisms/FeatureDataViewsList.js +300 -0
- package/dist/node/presentation/features/organisms/FeatureDetail/FeatureDetail.js +154 -0
- package/dist/node/presentation/features/organisms/FeatureDetail/index.js +154 -0
- package/dist/node/presentation/features/organisms/FeatureDetail/types.js +0 -0
- package/dist/node/presentation/features/organisms/FeatureDiscovery/FeatureDiscovery.js +909 -0
- package/dist/node/presentation/features/organisms/FeatureDiscovery/index.js +909 -0
- package/dist/node/presentation/features/organisms/FeatureDiscovery/types.js +0 -0
- package/dist/node/presentation/features/organisms/FeatureEventsList.js +298 -0
- package/dist/node/presentation/features/organisms/FeatureFormsList.js +298 -0
- package/dist/node/presentation/features/organisms/FeatureOperationsList.js +176 -0
- package/dist/node/presentation/features/organisms/FeaturePresentationsList.js +300 -0
- package/dist/node/presentation/features/organisms/index.js +1355 -0
- package/dist/node/presentation/features/templates/FeatureDataViewDetailTemplate/FeatureDataViewDetailTemplate.js +332 -0
- package/dist/node/presentation/features/templates/FeatureDataViewDetailTemplate/index.js +332 -0
- package/dist/node/presentation/features/templates/FeatureDataViewDetailTemplate/types.js +0 -0
- package/dist/node/presentation/features/templates/FeatureDataViewsTemplate/FeatureDataViewsTemplate.js +338 -0
- package/dist/node/presentation/features/templates/FeatureDataViewsTemplate/index.js +338 -0
- package/dist/node/presentation/features/templates/FeatureEventDetailTemplate/FeatureEventDetailTemplate.js +303 -0
- package/dist/node/presentation/features/templates/FeatureEventDetailTemplate/index.js +303 -0
- package/dist/node/presentation/features/templates/FeatureEventDetailTemplate/types.js +0 -0
- package/dist/node/presentation/features/templates/FeatureEventsTemplate/FeatureEventsTemplate.js +336 -0
- package/dist/node/presentation/features/templates/FeatureEventsTemplate/index.js +336 -0
- package/dist/node/presentation/features/templates/FeatureFormDetailTemplate/FeatureFormDetailTemplate.js +329 -0
- package/dist/node/presentation/features/templates/FeatureFormDetailTemplate/index.js +329 -0
- package/dist/node/presentation/features/templates/FeatureFormDetailTemplate/types.js +0 -0
- package/dist/node/presentation/features/templates/FeatureFormsTemplate/FeatureFormsTemplate.js +336 -0
- package/dist/node/presentation/features/templates/FeatureFormsTemplate/index.js +336 -0
- package/dist/node/presentation/features/templates/FeatureOperationDetailTemplate/FeatureOperationDetailTemplate.js +302 -0
- package/dist/node/presentation/features/templates/FeatureOperationDetailTemplate/index.js +302 -0
- package/dist/node/presentation/features/templates/FeatureOperationDetailTemplate/types.js +0 -0
- package/dist/node/presentation/features/templates/FeatureOperationsTemplate/FeatureOperationsTemplate.js +214 -0
- package/dist/node/presentation/features/templates/FeatureOperationsTemplate/index.js +214 -0
- package/dist/node/presentation/features/templates/FeatureOverviewTemplate/FeatureOverviewTemplate.js +187 -0
- package/dist/node/presentation/features/templates/FeatureOverviewTemplate/index.js +187 -0
- package/dist/node/presentation/features/templates/FeaturePresentationDetailTemplate/FeaturePresentationDetailTemplate.js +306 -0
- package/dist/node/presentation/features/templates/FeaturePresentationDetailTemplate/index.js +306 -0
- package/dist/node/presentation/features/templates/FeaturePresentationDetailTemplate/types.js +0 -0
- package/dist/node/presentation/features/templates/FeaturePresentationsTemplate/FeaturePresentationsTemplate.js +338 -0
- package/dist/node/presentation/features/templates/FeaturePresentationsTemplate/index.js +338 -0
- package/dist/node/presentation/features/templates/types.js +0 -0
- package/dist/presentation/features/atoms/FeatureIcon/FeatureIcon.d.ts +16 -28
- package/dist/presentation/features/atoms/FeatureIcon/FeatureIcon.d.ts.map +1 -1
- package/dist/presentation/features/atoms/FeatureIcon/FeatureIcon.js +89 -78
- package/dist/presentation/features/atoms/FeatureIcon/index.d.ts +2 -2
- package/dist/presentation/features/atoms/FeatureIcon/index.d.ts.map +1 -0
- package/dist/presentation/features/atoms/FeatureIcon/index.js +98 -3
- package/dist/presentation/features/atoms/index.d.ts +2 -3
- package/dist/presentation/features/atoms/index.d.ts.map +1 -0
- package/dist/presentation/features/atoms/index.js +98 -4
- package/dist/presentation/features/hooks/index.d.ts +4 -4
- package/dist/presentation/features/hooks/index.d.ts.map +1 -0
- package/dist/presentation/features/hooks/index.js +393 -4
- package/dist/presentation/features/hooks/useContractsRegistry.d.ts +10 -14
- package/dist/presentation/features/hooks/useContractsRegistry.d.ts.map +1 -1
- package/dist/presentation/features/hooks/useContractsRegistry.js +282 -19
- package/dist/presentation/features/hooks/useFeatureFilters.d.ts +24 -28
- package/dist/presentation/features/hooks/useFeatureFilters.d.ts.map +1 -1
- package/dist/presentation/features/hooks/useFeatureFilters.js +73 -74
- package/dist/presentation/features/hooks/useFeatureRegistry.d.ts +17 -21
- package/dist/presentation/features/hooks/useFeatureRegistry.d.ts.map +1 -1
- package/dist/presentation/features/hooks/useFeatureRegistry.js +144 -33
- package/dist/presentation/features/hooks/useRelatedDocs.d.ts +5 -8
- package/dist/presentation/features/hooks/useRelatedDocs.d.ts.map +1 -1
- package/dist/presentation/features/hooks/useRelatedDocs.js +25 -28
- package/dist/presentation/features/index.d.ts +27 -57
- package/dist/presentation/features/index.d.ts.map +1 -0
- package/dist/presentation/features/index.js +3060 -48
- package/dist/presentation/features/molecules/FeatureCard/FeatureCard.d.ts +2 -12
- package/dist/presentation/features/molecules/FeatureCard/FeatureCard.d.ts.map +1 -1
- package/dist/presentation/features/molecules/FeatureCard/FeatureCard.js +364 -80
- package/dist/presentation/features/molecules/FeatureCard/index.d.ts +3 -3
- package/dist/presentation/features/molecules/FeatureCard/index.d.ts.map +1 -0
- package/dist/presentation/features/molecules/FeatureCard/index.js +367 -3
- package/dist/presentation/features/molecules/FeatureCard/types.d.ts +8 -12
- package/dist/presentation/features/molecules/FeatureCard/types.d.ts.map +1 -1
- package/dist/presentation/features/molecules/FeatureCard/types.js +1 -0
- package/dist/presentation/features/molecules/FeatureCategoryHeader/FeatureCategoryHeader.d.ts +15 -27
- package/dist/presentation/features/molecules/FeatureCategoryHeader/FeatureCategoryHeader.d.ts.map +1 -1
- package/dist/presentation/features/molecules/FeatureCategoryHeader/FeatureCategoryHeader.js +48 -40
- package/dist/presentation/features/molecules/FeatureCategoryHeader/index.d.ts +2 -2
- package/dist/presentation/features/molecules/FeatureCategoryHeader/index.d.ts.map +1 -0
- package/dist/presentation/features/molecules/FeatureCategoryHeader/index.js +51 -3
- package/dist/presentation/features/molecules/FeatureFilters/FeatureFilters.d.ts +2 -18
- package/dist/presentation/features/molecules/FeatureFilters/FeatureFilters.d.ts.map +1 -1
- package/dist/presentation/features/molecules/FeatureFilters/FeatureFilters.js +90 -77
- package/dist/presentation/features/molecules/FeatureFilters/index.d.ts +3 -3
- package/dist/presentation/features/molecules/FeatureFilters/index.d.ts.map +1 -0
- package/dist/presentation/features/molecules/FeatureFilters/index.js +93 -3
- package/dist/presentation/features/molecules/FeatureFilters/types.d.ts +20 -24
- package/dist/presentation/features/molecules/FeatureFilters/types.d.ts.map +1 -1
- package/dist/presentation/features/molecules/FeatureFilters/types.js +1 -0
- package/dist/presentation/features/molecules/FeatureHoverPreview/FeatureHoverPreview.d.ts +5 -12
- package/dist/presentation/features/molecules/FeatureHoverPreview/FeatureHoverPreview.d.ts.map +1 -1
- package/dist/presentation/features/molecules/FeatureHoverPreview/FeatureHoverPreview.js +173 -136
- package/dist/presentation/features/molecules/FeatureHoverPreview/index.d.ts +2 -2
- package/dist/presentation/features/molecules/FeatureHoverPreview/index.d.ts.map +1 -0
- package/dist/presentation/features/molecules/FeatureHoverPreview/index.js +177 -3
- package/dist/presentation/features/molecules/index.d.ts +5 -11
- package/dist/presentation/features/molecules/index.d.ts.map +1 -0
- package/dist/presentation/features/molecules/index.js +506 -10
- package/dist/presentation/features/organisms/FeatureDataViewsList.d.ts +4 -11
- package/dist/presentation/features/organisms/FeatureDataViewsList.d.ts.map +1 -1
- package/dist/presentation/features/organisms/FeatureDataViewsList.js +297 -25
- package/dist/presentation/features/organisms/FeatureDetail/FeatureDetail.d.ts +2 -11
- package/dist/presentation/features/organisms/FeatureDetail/FeatureDetail.d.ts.map +1 -1
- package/dist/presentation/features/organisms/FeatureDetail/FeatureDetail.js +150 -138
- package/dist/presentation/features/organisms/FeatureDetail/index.d.ts +3 -3
- package/dist/presentation/features/organisms/FeatureDetail/index.d.ts.map +1 -0
- package/dist/presentation/features/organisms/FeatureDetail/index.js +155 -3
- package/dist/presentation/features/organisms/FeatureDetail/types.d.ts +6 -10
- package/dist/presentation/features/organisms/FeatureDetail/types.d.ts.map +1 -1
- package/dist/presentation/features/organisms/FeatureDetail/types.js +1 -0
- package/dist/presentation/features/organisms/FeatureDiscovery/FeatureDiscovery.d.ts +2 -14
- package/dist/presentation/features/organisms/FeatureDiscovery/FeatureDiscovery.d.ts.map +1 -1
- package/dist/presentation/features/organisms/FeatureDiscovery/FeatureDiscovery.js +901 -154
- package/dist/presentation/features/organisms/FeatureDiscovery/index.d.ts +3 -3
- package/dist/presentation/features/organisms/FeatureDiscovery/index.d.ts.map +1 -0
- package/dist/presentation/features/organisms/FeatureDiscovery/index.js +909 -2
- package/dist/presentation/features/organisms/FeatureDiscovery/types.d.ts +14 -18
- package/dist/presentation/features/organisms/FeatureDiscovery/types.d.ts.map +1 -1
- package/dist/presentation/features/organisms/FeatureDiscovery/types.js +1 -0
- package/dist/presentation/features/organisms/FeatureEventsList.d.ts +4 -11
- package/dist/presentation/features/organisms/FeatureEventsList.d.ts.map +1 -1
- package/dist/presentation/features/organisms/FeatureEventsList.js +295 -25
- package/dist/presentation/features/organisms/FeatureFormsList.d.ts +4 -11
- package/dist/presentation/features/organisms/FeatureFormsList.d.ts.map +1 -1
- package/dist/presentation/features/organisms/FeatureFormsList.js +295 -25
- package/dist/presentation/features/organisms/FeatureOperationsList.d.ts +4 -11
- package/dist/presentation/features/organisms/FeatureOperationsList.d.ts.map +1 -1
- package/dist/presentation/features/organisms/FeatureOperationsList.js +174 -25
- package/dist/presentation/features/organisms/FeaturePresentationsList.d.ts +4 -11
- package/dist/presentation/features/organisms/FeaturePresentationsList.d.ts.map +1 -1
- package/dist/presentation/features/organisms/FeaturePresentationsList.js +297 -25
- package/dist/presentation/features/organisms/index.d.ts +8 -12
- package/dist/presentation/features/organisms/index.d.ts.map +1 -0
- package/dist/presentation/features/organisms/index.js +1356 -11
- package/dist/presentation/features/templates/FeatureDataViewDetailTemplate/FeatureDataViewDetailTemplate.d.ts +2 -13
- package/dist/presentation/features/templates/FeatureDataViewDetailTemplate/FeatureDataViewDetailTemplate.d.ts.map +1 -1
- package/dist/presentation/features/templates/FeatureDataViewDetailTemplate/FeatureDataViewDetailTemplate.js +329 -231
- package/dist/presentation/features/templates/FeatureDataViewDetailTemplate/index.d.ts +3 -3
- package/dist/presentation/features/templates/FeatureDataViewDetailTemplate/index.d.ts.map +1 -0
- package/dist/presentation/features/templates/FeatureDataViewDetailTemplate/index.js +332 -2
- package/dist/presentation/features/templates/FeatureDataViewDetailTemplate/types.d.ts +8 -12
- package/dist/presentation/features/templates/FeatureDataViewDetailTemplate/types.d.ts.map +1 -1
- package/dist/presentation/features/templates/FeatureDataViewDetailTemplate/types.js +1 -0
- package/dist/presentation/features/templates/FeatureDataViewsTemplate/FeatureDataViewsTemplate.d.ts +2 -10
- package/dist/presentation/features/templates/FeatureDataViewsTemplate/FeatureDataViewsTemplate.d.ts.map +1 -1
- package/dist/presentation/features/templates/FeatureDataViewsTemplate/FeatureDataViewsTemplate.js +335 -30
- package/dist/presentation/features/templates/FeatureDataViewsTemplate/index.d.ts +2 -2
- package/dist/presentation/features/templates/FeatureDataViewsTemplate/index.d.ts.map +1 -0
- package/dist/presentation/features/templates/FeatureDataViewsTemplate/index.js +338 -2
- package/dist/presentation/features/templates/FeatureEventDetailTemplate/FeatureEventDetailTemplate.d.ts +2 -13
- package/dist/presentation/features/templates/FeatureEventDetailTemplate/FeatureEventDetailTemplate.d.ts.map +1 -1
- package/dist/presentation/features/templates/FeatureEventDetailTemplate/FeatureEventDetailTemplate.js +300 -210
- package/dist/presentation/features/templates/FeatureEventDetailTemplate/index.d.ts +3 -3
- package/dist/presentation/features/templates/FeatureEventDetailTemplate/index.d.ts.map +1 -0
- package/dist/presentation/features/templates/FeatureEventDetailTemplate/index.js +303 -2
- package/dist/presentation/features/templates/FeatureEventDetailTemplate/types.d.ts +8 -12
- package/dist/presentation/features/templates/FeatureEventDetailTemplate/types.d.ts.map +1 -1
- package/dist/presentation/features/templates/FeatureEventDetailTemplate/types.js +1 -0
- package/dist/presentation/features/templates/FeatureEventsTemplate/FeatureEventsTemplate.d.ts +2 -10
- package/dist/presentation/features/templates/FeatureEventsTemplate/FeatureEventsTemplate.d.ts.map +1 -1
- package/dist/presentation/features/templates/FeatureEventsTemplate/FeatureEventsTemplate.js +333 -30
- package/dist/presentation/features/templates/FeatureEventsTemplate/index.d.ts +2 -2
- package/dist/presentation/features/templates/FeatureEventsTemplate/index.d.ts.map +1 -0
- package/dist/presentation/features/templates/FeatureEventsTemplate/index.js +336 -2
- package/dist/presentation/features/templates/FeatureFormDetailTemplate/FeatureFormDetailTemplate.d.ts +2 -13
- package/dist/presentation/features/templates/FeatureFormDetailTemplate/FeatureFormDetailTemplate.d.ts.map +1 -1
- package/dist/presentation/features/templates/FeatureFormDetailTemplate/FeatureFormDetailTemplate.js +326 -231
- package/dist/presentation/features/templates/FeatureFormDetailTemplate/index.d.ts +3 -3
- package/dist/presentation/features/templates/FeatureFormDetailTemplate/index.d.ts.map +1 -0
- package/dist/presentation/features/templates/FeatureFormDetailTemplate/index.js +329 -2
- package/dist/presentation/features/templates/FeatureFormDetailTemplate/types.d.ts +8 -12
- package/dist/presentation/features/templates/FeatureFormDetailTemplate/types.d.ts.map +1 -1
- package/dist/presentation/features/templates/FeatureFormDetailTemplate/types.js +1 -0
- package/dist/presentation/features/templates/FeatureFormsTemplate/FeatureFormsTemplate.d.ts +2 -10
- package/dist/presentation/features/templates/FeatureFormsTemplate/FeatureFormsTemplate.d.ts.map +1 -1
- package/dist/presentation/features/templates/FeatureFormsTemplate/FeatureFormsTemplate.js +333 -30
- package/dist/presentation/features/templates/FeatureFormsTemplate/index.d.ts +2 -2
- package/dist/presentation/features/templates/FeatureFormsTemplate/index.d.ts.map +1 -0
- package/dist/presentation/features/templates/FeatureFormsTemplate/index.js +336 -2
- package/dist/presentation/features/templates/FeatureOperationDetailTemplate/FeatureOperationDetailTemplate.d.ts +2 -13
- package/dist/presentation/features/templates/FeatureOperationDetailTemplate/FeatureOperationDetailTemplate.d.ts.map +1 -1
- package/dist/presentation/features/templates/FeatureOperationDetailTemplate/FeatureOperationDetailTemplate.js +300 -205
- package/dist/presentation/features/templates/FeatureOperationDetailTemplate/index.d.ts +3 -3
- package/dist/presentation/features/templates/FeatureOperationDetailTemplate/index.d.ts.map +1 -0
- package/dist/presentation/features/templates/FeatureOperationDetailTemplate/index.js +302 -2
- package/dist/presentation/features/templates/FeatureOperationDetailTemplate/types.d.ts +8 -12
- package/dist/presentation/features/templates/FeatureOperationDetailTemplate/types.d.ts.map +1 -1
- package/dist/presentation/features/templates/FeatureOperationDetailTemplate/types.js +1 -0
- package/dist/presentation/features/templates/FeatureOperationsTemplate/FeatureOperationsTemplate.d.ts +2 -10
- package/dist/presentation/features/templates/FeatureOperationsTemplate/FeatureOperationsTemplate.d.ts.map +1 -1
- package/dist/presentation/features/templates/FeatureOperationsTemplate/FeatureOperationsTemplate.js +212 -31
- package/dist/presentation/features/templates/FeatureOperationsTemplate/index.d.ts +2 -2
- package/dist/presentation/features/templates/FeatureOperationsTemplate/index.d.ts.map +1 -0
- package/dist/presentation/features/templates/FeatureOperationsTemplate/index.js +214 -2
- package/dist/presentation/features/templates/FeatureOverviewTemplate/FeatureOverviewTemplate.d.ts +5 -13
- package/dist/presentation/features/templates/FeatureOverviewTemplate/FeatureOverviewTemplate.d.ts.map +1 -1
- package/dist/presentation/features/templates/FeatureOverviewTemplate/FeatureOverviewTemplate.js +186 -26
- package/dist/presentation/features/templates/FeatureOverviewTemplate/index.d.ts +2 -2
- package/dist/presentation/features/templates/FeatureOverviewTemplate/index.d.ts.map +1 -0
- package/dist/presentation/features/templates/FeatureOverviewTemplate/index.js +188 -3
- package/dist/presentation/features/templates/FeaturePresentationDetailTemplate/FeaturePresentationDetailTemplate.d.ts +2 -13
- package/dist/presentation/features/templates/FeaturePresentationDetailTemplate/FeaturePresentationDetailTemplate.d.ts.map +1 -1
- package/dist/presentation/features/templates/FeaturePresentationDetailTemplate/FeaturePresentationDetailTemplate.js +303 -210
- package/dist/presentation/features/templates/FeaturePresentationDetailTemplate/index.d.ts +3 -3
- package/dist/presentation/features/templates/FeaturePresentationDetailTemplate/index.d.ts.map +1 -0
- package/dist/presentation/features/templates/FeaturePresentationDetailTemplate/index.js +306 -2
- package/dist/presentation/features/templates/FeaturePresentationDetailTemplate/types.d.ts +9 -13
- package/dist/presentation/features/templates/FeaturePresentationDetailTemplate/types.d.ts.map +1 -1
- package/dist/presentation/features/templates/FeaturePresentationDetailTemplate/types.js +1 -0
- package/dist/presentation/features/templates/FeaturePresentationsTemplate/FeaturePresentationsTemplate.d.ts +2 -10
- package/dist/presentation/features/templates/FeaturePresentationsTemplate/FeaturePresentationsTemplate.d.ts.map +1 -1
- package/dist/presentation/features/templates/FeaturePresentationsTemplate/FeaturePresentationsTemplate.js +335 -30
- package/dist/presentation/features/templates/FeaturePresentationsTemplate/index.d.ts +2 -2
- package/dist/presentation/features/templates/FeaturePresentationsTemplate/index.d.ts.map +1 -0
- package/dist/presentation/features/templates/FeaturePresentationsTemplate/index.js +338 -2
- package/dist/presentation/features/templates/types.d.ts +4 -8
- package/dist/presentation/features/templates/types.d.ts.map +1 -1
- package/dist/presentation/features/templates/types.js +1 -0
- package/package.json +2113 -309
- package/src/components/docs/generated/docs-index._common.json +18 -18
- package/src/components/docs/generated/docs-index.agent-console.json +47 -47
- package/src/components/docs/generated/docs-index.ai-chat.json +13 -13
- package/src/components/docs/generated/docs-index.analytics-dashboard.json +21 -21
- package/src/components/docs/generated/docs-index.app-config.json +17 -17
- package/src/components/docs/generated/docs-index.audit-trail.json +6 -6
- package/src/components/docs/generated/docs-index.crm-pipeline.json +20 -20
- package/src/components/docs/generated/docs-index.feature-flags.json +27 -27
- package/src/components/docs/generated/docs-index.files.json +22 -22
- package/src/components/docs/generated/docs-index.identity-rbac.json +39 -39
- package/src/components/docs/generated/docs-index.integration-hub.json +33 -33
- package/src/components/docs/generated/docs-index.jobs.json +17 -17
- package/src/components/docs/generated/docs-index.kb-update-pipeline.json +16 -16
- package/src/components/docs/generated/docs-index.learning-journey-crm-onboarding.json +6 -6
- package/src/components/docs/generated/docs-index.learning-journey-platform-tour.json +6 -6
- package/src/components/docs/generated/docs-index.learning-journey-registry.json +4 -4
- package/src/components/docs/generated/docs-index.learning-journey-studio-onboarding.json +6 -6
- package/src/components/docs/generated/docs-index.learning-journey.json +27 -27
- package/src/components/docs/generated/docs-index.locale-jurisdiction-gate.json +6 -6
- package/src/components/docs/generated/docs-index.manifest.json +8 -3
- package/src/components/docs/generated/docs-index.marketplace.json +42 -42
- package/src/components/docs/generated/docs-index.meeting-recorder.json +50 -0
- package/src/components/docs/generated/docs-index.metrics.json +24 -24
- package/src/components/docs/generated/docs-index.notifications.json +8 -8
- package/src/components/docs/generated/docs-index.openbanking.json +8 -8
- package/src/components/docs/generated/docs-index.platform-integrations.json +113 -17
- package/src/components/docs/generated/docs-index.platform-knowledge.json +7 -7
- package/src/components/docs/generated/docs-index.pocket-family-office.json +15 -15
- package/src/components/docs/generated/docs-index.policy-safe-knowledge-assistant.json +1 -1
- package/src/components/docs/generated/docs-index.saas-boilerplate.json +26 -26
- package/src/components/docs/generated/docs-index.service-business-os.json +24 -24
- package/src/components/docs/generated/docs-index.team-hub.json +23 -23
- package/src/components/docs/generated/docs-index.versioned-knowledge-base.json +10 -10
- package/src/components/docs/generated/docs-index.wealth-snapshot.json +19 -19
- package/src/components/docs/generated/docs-index.workflow-system.json +54 -54
- package/src/components/docs/generated/docs-index.workspace-cli.json +1 -1
- package/tsdown.config.js +1 -2
- package/.turbo/turbo-build$colon$bundle.log +0 -1052
- package/dist/application/mcp/cliMcp.js.map +0 -1
- package/dist/application/mcp/common.js.map +0 -1
- package/dist/application/mcp/docsMcp.js.map +0 -1
- package/dist/application/mcp/internalMcp.js.map +0 -1
- package/dist/components/docs/DocsIndexPage.js.map +0 -1
- package/dist/components/docs/advanced/AdvancedMCPPage.js.map +0 -1
- package/dist/components/docs/advanced/AdvancedOverlayEditorPage.js.map +0 -1
- package/dist/components/docs/advanced/AdvancedRenderersPage.js.map +0 -1
- package/dist/components/docs/advanced/AdvancedSpecExperimentsPage.js.map +0 -1
- package/dist/components/docs/advanced/AdvancedTelemetryPage.js.map +0 -1
- package/dist/components/docs/advanced/AdvancedWorkflowMonitoringPage.js.map +0 -1
- package/dist/components/docs/architecture/ArchitectureAppConfigPage.js.map +0 -1
- package/dist/components/docs/architecture/ArchitectureIntegrationBindingPage.js.map +0 -1
- package/dist/components/docs/architecture/ArchitectureKnowledgeBindingPage.js.map +0 -1
- package/dist/components/docs/architecture/ArchitectureMultiTenancyPage.js.map +0 -1
- package/dist/components/docs/architecture/ArchitectureOverviewPage.js.map +0 -1
- package/dist/components/docs/comparison/ComparisonAutomationPlatformsPage.js.map +0 -1
- package/dist/components/docs/comparison/ComparisonEnterprisePlatformsPage.js.map +0 -1
- package/dist/components/docs/comparison/ComparisonInternalToolBuildersPage.js.map +0 -1
- package/dist/components/docs/comparison/ComparisonOverviewPage.js.map +0 -1
- package/dist/components/docs/comparison/ComparisonWindmillPage.js.map +0 -1
- package/dist/components/docs/comparison/ComparisonWorkflowEnginesPage.js.map +0 -1
- package/dist/components/docs/ecosystem/IntegrationsPage.js.map +0 -1
- package/dist/components/docs/ecosystem/PluginsPage.js.map +0 -1
- package/dist/components/docs/ecosystem/RegistryPage.js.map +0 -1
- package/dist/components/docs/ecosystem/TemplatesPage.js.map +0 -1
- package/dist/components/docs/ecosystem/ecosystem.docblocks.js.map +0 -1
- package/dist/components/docs/examples/DocsExamplesPage.js.map +0 -1
- package/dist/components/docs/generated/docs-index.generated.js.map +0 -1
- package/dist/components/docs/generated/loader.js.map +0 -1
- package/dist/components/docs/getting-started/CLIPage.js.map +0 -1
- package/dist/components/docs/getting-started/CompatibilityPage.js.map +0 -1
- package/dist/components/docs/getting-started/DataViewTutorialPage.js.map +0 -1
- package/dist/components/docs/getting-started/DeveloperToolsPage.js.map +0 -1
- package/dist/components/docs/getting-started/HelloWorldPage.js.map +0 -1
- package/dist/components/docs/getting-started/InstallationPage.js.map +0 -1
- package/dist/components/docs/getting-started/StartHerePage.js.map +0 -1
- package/dist/components/docs/getting-started/TroubleshootingPage.js.map +0 -1
- package/dist/components/docs/getting-started/VSCodeExtensionPage.js.map +0 -1
- package/dist/components/docs/getting-started/getting-started.docblocks.js.map +0 -1
- package/dist/components/docs/guides/GuideCIDiffGatingPage.js.map +0 -1
- package/dist/components/docs/guides/GuideContractTypesPage.js.map +0 -1
- package/dist/components/docs/guides/GuideDocsPipelinePage.js.map +0 -1
- package/dist/components/docs/guides/GuideGenerateDocsClientsSchemasPage.js.map +0 -1
- package/dist/components/docs/guides/GuideImportExistingCodebasesPage.js.map +0 -1
- package/dist/components/docs/guides/GuideNextjsOneEndpointPage.js.map +0 -1
- package/dist/components/docs/guides/GuideSpecValidationTypingPage.js.map +0 -1
- package/dist/components/docs/guides/GuidesIndexPage.js.map +0 -1
- package/dist/components/docs/guides/guides.docblocks.js.map +0 -1
- package/dist/components/docs/integrations/IntegrationsCircuitBreakersPage.js.map +0 -1
- package/dist/components/docs/integrations/IntegrationsElevenLabsPage.js.map +0 -1
- package/dist/components/docs/integrations/IntegrationsGmailPage.js.map +0 -1
- package/dist/components/docs/integrations/IntegrationsGoogleCalendarPage.js.map +0 -1
- package/dist/components/docs/integrations/IntegrationsOpenAIPage.js.map +0 -1
- package/dist/components/docs/integrations/IntegrationsOverviewPage.js.map +0 -1
- package/dist/components/docs/integrations/IntegrationsPostmarkPage.js.map +0 -1
- package/dist/components/docs/integrations/IntegrationsPowensPage.js.map +0 -1
- package/dist/components/docs/integrations/IntegrationsQdrantPage.js.map +0 -1
- package/dist/components/docs/integrations/IntegrationsResendPage.js.map +0 -1
- package/dist/components/docs/integrations/IntegrationsS3Page.js.map +0 -1
- package/dist/components/docs/integrations/IntegrationsSpecModelPage.js.map +0 -1
- package/dist/components/docs/integrations/IntegrationsStripePage.js.map +0 -1
- package/dist/components/docs/integrations/IntegrationsTwilioPage.js.map +0 -1
- package/dist/components/docs/intent/ContractFirstApiPage.js.map +0 -1
- package/dist/components/docs/intent/DeterministicCodegenPage.js.map +0 -1
- package/dist/components/docs/intent/GenerateClientFromSchemaPage.js.map +0 -1
- package/dist/components/docs/intent/OpenapiAlternativePage.js.map +0 -1
- package/dist/components/docs/intent/SchemaValidationTypescriptPage.js.map +0 -1
- package/dist/components/docs/intent/SpecDrivenDevelopmentPage.js.map +0 -1
- package/dist/components/docs/intent/intent-pages.docblocks.js.map +0 -1
- package/dist/components/docs/knowledge/KnowledgeCategoriesPage.js.map +0 -1
- package/dist/components/docs/knowledge/KnowledgeExamplesPage.js.map +0 -1
- package/dist/components/docs/knowledge/KnowledgeOverviewPage.js.map +0 -1
- package/dist/components/docs/knowledge/KnowledgeSourcesPage.js.map +0 -1
- package/dist/components/docs/knowledge/KnowledgeSpacesPage.js.map +0 -1
- package/dist/components/docs/libraries/LibrariesAccessibilityPage.js.map +0 -1
- package/dist/components/docs/libraries/LibrariesAiAgentPage.js.map +0 -1
- package/dist/components/docs/libraries/LibrariesAnalyticsPage.js.map +0 -1
- package/dist/components/docs/libraries/LibrariesContentGenPage.js.map +0 -1
- package/dist/components/docs/libraries/LibrariesContractsPage.js.map +0 -1
- package/dist/components/docs/libraries/LibrariesCostTrackingPage.js.map +0 -1
- package/dist/components/docs/libraries/LibrariesDataBackendPage.js.map +0 -1
- package/dist/components/docs/libraries/LibrariesDataViewsPage.js.map +0 -1
- package/dist/components/docs/libraries/LibrariesDesignSystemPage.js.map +0 -1
- package/dist/components/docs/libraries/LibrariesEvolutionPage.js.map +0 -1
- package/dist/components/docs/libraries/LibrariesGraphQLPage.js.map +0 -1
- package/dist/components/docs/libraries/LibrariesGrowthPage.js.map +0 -1
- package/dist/components/docs/libraries/LibrariesMultiTenancyPage.js.map +0 -1
- package/dist/components/docs/libraries/LibrariesObservabilityPage.js.map +0 -1
- package/dist/components/docs/libraries/LibrariesOverlayEnginePage.js.map +0 -1
- package/dist/components/docs/libraries/LibrariesOverviewPage.js.map +0 -1
- package/dist/components/docs/libraries/LibrariesPersonalizationPage.js.map +0 -1
- package/dist/components/docs/libraries/LibrariesProgressiveDeliveryPage.js.map +0 -1
- package/dist/components/docs/libraries/LibrariesResiliencePage.js.map +0 -1
- package/dist/components/docs/libraries/LibrariesRuntimePage.js.map +0 -1
- package/dist/components/docs/libraries/LibrariesSLOPage.js.map +0 -1
- package/dist/components/docs/libraries/LibrariesSchemaPage.js.map +0 -1
- package/dist/components/docs/libraries/LibrariesSupportBotPage.js.map +0 -1
- package/dist/components/docs/libraries/LibrariesTestingPage.js.map +0 -1
- package/dist/components/docs/libraries/LibrariesUIKitPage.js.map +0 -1
- package/dist/components/docs/libraries/LibrariesWorkflowComposerPage.js.map +0 -1
- package/dist/components/docs/libraries/LibrariesWorkflowsPage.js.map +0 -1
- package/dist/components/docs/manifesto/ManifestoPage.js.map +0 -1
- package/dist/components/docs/ops/AutoEvolutionOpsPage.js.map +0 -1
- package/dist/components/docs/ops/DistributedTracingOpsPage.js.map +0 -1
- package/dist/components/docs/ops/ops-lifecycle.docblocks.js.map +0 -1
- package/dist/components/docs/ops/ops-runbooks-a.docblocks.js.map +0 -1
- package/dist/components/docs/ops/ops-runbooks-b.docblocks.js.map +0 -1
- package/dist/components/docs/ops/ops-slo-tenant.docblocks.js.map +0 -1
- package/dist/components/docs/ops/ops-top.docs.js.map +0 -1
- package/dist/components/docs/ops/ops.docs.js.map +0 -1
- package/dist/components/docs/product/product.docblocks.js.map +0 -1
- package/dist/components/docs/reference/DocsMarkdownContent.js.map +0 -1
- package/dist/components/docs/reference/DocsReferenceContent.js.map +0 -1
- package/dist/components/docs/reference/DocsReferenceIndexClient.js.map +0 -1
- package/dist/components/docs/reference/DocsReferenceIndexPage.js.map +0 -1
- package/dist/components/docs/reference/DocsReferencePage.js.map +0 -1
- package/dist/components/docs/reference/docsMarkdownParser.js.map +0 -1
- package/dist/components/docs/safety/SafetyAuditingPage.js.map +0 -1
- package/dist/components/docs/safety/SafetyMigrationsPage.js.map +0 -1
- package/dist/components/docs/safety/SafetyOverviewPage.js.map +0 -1
- package/dist/components/docs/safety/SafetyPDPPage.js.map +0 -1
- package/dist/components/docs/safety/SafetySecurityTrustPage.js.map +0 -1
- package/dist/components/docs/safety/SafetySigningPage.js.map +0 -1
- package/dist/components/docs/safety/SafetyTenantIsolationPage.js.map +0 -1
- package/dist/components/docs/shared/StudioPrompt.js.map +0 -1
- package/dist/components/docs/specs/SpecsCapabilitiesPage.js.map +0 -1
- package/dist/components/docs/specs/SpecsDataViewsPage.js.map +0 -1
- package/dist/components/docs/specs/SpecsOverlaysPage.js.map +0 -1
- package/dist/components/docs/specs/SpecsOverviewPage.js.map +0 -1
- package/dist/components/docs/specs/SpecsPolicyPage.js.map +0 -1
- package/dist/components/docs/specs/SpecsWorkflowsPage.js.map +0 -1
- package/dist/components/docs/studio/StudioBYOKPage.js.map +0 -1
- package/dist/components/docs/studio/StudioDeploymentsPage.js.map +0 -1
- package/dist/components/docs/studio/StudioGettingStartedPage.js.map +0 -1
- package/dist/components/docs/studio/StudioIntegrationsPage.js.map +0 -1
- package/dist/components/docs/studio/StudioOverviewPage.js.map +0 -1
- package/dist/components/docs/studio/StudioVisualBuilderPage.js.map +0 -1
- package/dist/components/docs/tech/contracts/tech-docs.docblocks.js.map +0 -1
- package/dist/components/integrations/molecules/IntegrationCard.js.map +0 -1
- package/dist/components/integrations/organisms/IntegrationMarketplace.js.map +0 -1
- package/dist/components/integrations/organisms/IntegrationSettings.js.map +0 -1
- package/dist/components/integrations/organisms/KnowledgeSourceList.js.map +0 -1
- package/dist/components/legal/PrivacyTemplate.js.map +0 -1
- package/dist/components/legal/TermsTemplate.js.map +0 -1
- package/dist/components/shared/FeatureGateNotice.js.map +0 -1
- package/dist/components/shell/WorkspaceHeader.js.map +0 -1
- package/dist/components/shell/WorkspaceProjectShellLayout.js.map +0 -1
- package/dist/components/shell/WorkspaceSidebar.js.map +0 -1
- package/dist/components/templates/engine/index.js.map +0 -1
- package/dist/components/templates/messaging/ConversationList.js.map +0 -1
- package/dist/components/templates/messaging/MessageComposer.js.map +0 -1
- package/dist/components/templates/messaging/MessageThread.js.map +0 -1
- package/dist/components/templates/messaging/MessagingWorkspace.js.map +0 -1
- package/dist/components/templates/recipes/LanguageSwitcher.js.map +0 -1
- package/dist/components/templates/recipes/RecipeCard.js.map +0 -1
- package/dist/components/templates/recipes/RecipeDetail.js.map +0 -1
- package/dist/components/templates/recipes/RecipeList.js.map +0 -1
- package/dist/components/templates/todos/FilterBar.js.map +0 -1
- package/dist/components/templates/todos/TaskForm.js.map +0 -1
- package/dist/components/templates/todos/TaskItem.js.map +0 -1
- package/dist/components/templates/todos/TaskList.js.map +0 -1
- package/dist/config/contractspec-blueprint.js.map +0 -1
- package/dist/config/contractspec-branding.js.map +0 -1
- package/dist/config/contractspec-routes.js.map +0 -1
- package/dist/features/contracts-registry.js.map +0 -1
- package/dist/features/docs.feature.js.map +0 -1
- package/dist/features/mcp.feature.js.map +0 -1
- package/dist/features/presentations.feature.js.map +0 -1
- package/dist/features/registry.js.map +0 -1
- package/dist/infrastructure/elysia/logger.js.map +0 -1
- package/dist/libs/content-gen/dist/seo/optimizer.js +0 -49
- package/dist/libs/content-gen/dist/seo/optimizer.js.map +0 -1
- package/dist/libs/email/client.js.map +0 -1
- package/dist/libs/email/contact.js.map +0 -1
- package/dist/libs/email/newsletter.js.map +0 -1
- package/dist/libs/email/utils.js.map +0 -1
- package/dist/libs/email/waitlist-application.js.map +0 -1
- package/dist/libs/email/waitlist.js.map +0 -1
- package/dist/libs/posthog/client.js.map +0 -1
- package/dist/libs/posthog/native.js.map +0 -1
- package/dist/libs/posthog/server.js.map +0 -1
- package/dist/libs/pricing-examples.js.map +0 -1
- package/dist/presentation/features/atoms/FeatureIcon/FeatureIcon.js.map +0 -1
- package/dist/presentation/features/hooks/useContractsRegistry.js.map +0 -1
- package/dist/presentation/features/hooks/useFeatureFilters.js.map +0 -1
- package/dist/presentation/features/hooks/useFeatureRegistry.js.map +0 -1
- package/dist/presentation/features/hooks/useRelatedDocs.js.map +0 -1
- package/dist/presentation/features/molecules/FeatureCard/FeatureCard.js.map +0 -1
- package/dist/presentation/features/molecules/FeatureCategoryHeader/FeatureCategoryHeader.js.map +0 -1
- package/dist/presentation/features/molecules/FeatureFilters/FeatureFilters.js.map +0 -1
- package/dist/presentation/features/molecules/FeatureHoverPreview/FeatureHoverPreview.js.map +0 -1
- package/dist/presentation/features/organisms/FeatureDataViewsList.js.map +0 -1
- package/dist/presentation/features/organisms/FeatureDetail/FeatureDetail.js.map +0 -1
- package/dist/presentation/features/organisms/FeatureDiscovery/FeatureDiscovery.js.map +0 -1
- package/dist/presentation/features/organisms/FeatureEventsList.js.map +0 -1
- package/dist/presentation/features/organisms/FeatureFormsList.js.map +0 -1
- package/dist/presentation/features/organisms/FeatureOperationsList.js.map +0 -1
- package/dist/presentation/features/organisms/FeaturePresentationsList.js.map +0 -1
- package/dist/presentation/features/templates/FeatureDataViewDetailTemplate/FeatureDataViewDetailTemplate.js.map +0 -1
- package/dist/presentation/features/templates/FeatureDataViewsTemplate/FeatureDataViewsTemplate.js.map +0 -1
- package/dist/presentation/features/templates/FeatureEventDetailTemplate/FeatureEventDetailTemplate.js.map +0 -1
- package/dist/presentation/features/templates/FeatureEventsTemplate/FeatureEventsTemplate.js.map +0 -1
- package/dist/presentation/features/templates/FeatureFormDetailTemplate/FeatureFormDetailTemplate.js.map +0 -1
- package/dist/presentation/features/templates/FeatureFormsTemplate/FeatureFormsTemplate.js.map +0 -1
- package/dist/presentation/features/templates/FeatureOperationDetailTemplate/FeatureOperationDetailTemplate.js.map +0 -1
- package/dist/presentation/features/templates/FeatureOperationsTemplate/FeatureOperationsTemplate.js.map +0 -1
- package/dist/presentation/features/templates/FeatureOverviewTemplate/FeatureOverviewTemplate.js.map +0 -1
- package/dist/presentation/features/templates/FeaturePresentationDetailTemplate/FeaturePresentationDetailTemplate.js.map +0 -1
- package/dist/presentation/features/templates/FeaturePresentationsTemplate/FeaturePresentationsTemplate.js.map +0 -1
- package/tsconfig.tsbuildinfo +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"LibrariesWorkflowsPage.js","names":[],"sources":["../../../../src/components/docs/libraries/LibrariesWorkflowsPage.tsx"],"sourcesContent":["import { CodeBlock, InstallCommand } from '@contractspec/lib.design-system';\nimport Link from '@contractspec/lib.ui-link';\nimport { ChevronRight } from 'lucide-react';\n\nexport function LibrariesWorkflowsPage() {\n return (\n <div className=\"space-y-8\">\n <div className=\"space-y-4\">\n <h1 className=\"text-4xl font-bold\">Workflow Runtime Library</h1>\n <p className=\"text-muted-foreground text-lg\">\n The <code>@contractspec/lib.contracts/workflow</code> library provides\n the core <code>WorkflowRunner</code> for executing stateful, durable\n workflows.\n </p>\n </div>\n\n <div className=\"space-y-4\">\n <h2 className=\"text-2xl font-bold\">Installation</h2>\n <InstallCommand package=\"@contractspec/lib.contracts\" />\n </div>\n\n <div className=\"space-y-4\">\n <h2 className=\"text-2xl font-bold\">WorkflowRunner</h2>\n <p className=\"text-muted-foreground\">\n The runner manages execution state, step transitions, retries, and\n compensation.\n </p>\n\n <CodeBlock\n language=\"typescript\"\n code={`import { WorkflowRunner } from '@contractspec/lib.contracts/workflow/runner';\nimport { InMemoryStateStore } from '@contractspec/lib.contracts/workflow/adapters/memory-store';\nimport { WorkflowRegistry } from '@contractspec/lib.contracts/workflow/spec';\n\nconst registry = new WorkflowRegistry();\nregistry.register(MyWorkflow);\n\nconst runner = new WorkflowRunner({\n registry,\n stateStore: new InMemoryStateStore(),\n opExecutor: async (op, input, ctx) => {\n // Execute operation using your adapter (REST, GraphQL, etc.)\n return await myAdapter.execute(op, input);\n },\n});\n\n// Start a workflow\nconst workflowId = await runner.start('my.workflow', 1, { userId: '123' });\n\n// Execute next step (usually called by a worker or queue consumer)\nawait runner.executeStep(workflowId);`}\n />\n </div>\n\n <div className=\"space-y-4\">\n <h2 className=\"text-2xl font-bold\">State Persistence</h2>\n <p className=\"text-muted-foreground\">\n The runner relies on a <code>StateStore</code> to persist workflow\n execution history. ContractSpec ships with:\n </p>\n <ul className=\"text-muted-foreground list-disc space-y-2 pl-6\">\n <li>\n <code>InMemoryStateStore</code> - for testing and development.\n </li>\n <li>\n <code>PrismaStateStore</code> - for production using Prisma ORM.\n </li>\n </ul>\n </div>\n\n <div className=\"space-y-4\">\n <h2 className=\"text-2xl font-bold\">Events</h2>\n <p className=\"text-muted-foreground\">\n The runner emits events that you can subscribe to for monitoring:\n </p>\n <ul className=\"text-muted-foreground list-disc space-y-2 pl-6\">\n <li>\n <code>workflow.started</code>\n </li>\n <li>\n <code>workflow.step_completed</code>\n </li>\n <li>\n <code>workflow.step_failed</code>\n </li>\n <li>\n <code>workflow.step_retrying</code>\n </li>\n <li>\n <code>workflow.completed</code>\n </li>\n <li>\n <code>workflow.cancelled</code>\n </li>\n <li>\n <code>workflow.compensation_step_completed</code>\n </li>\n </ul>\n </div>\n\n <div className=\"flex items-center gap-4 pt-4\">\n <Link href=\"/docs/libraries\" className=\"btn-ghost\">\n Back to Libraries\n </Link>\n <Link href=\"/docs/libraries/data-views\" className=\"btn-primary\">\n Next: Data Views <ChevronRight size={16} />\n </Link>\n </div>\n </div>\n );\n}\n"],"mappings":";;;;;;AAIA,SAAgB,yBAAyB;AACvC,QACE,qBAAC;EAAI,WAAU;;GACb,qBAAC;IAAI,WAAU;eACb,oBAAC;KAAG,WAAU;eAAqB;MAA6B,EAChE,qBAAC;KAAE,WAAU;;MAAgC;MACvC,oBAAC,oBAAK,yCAA2C;;MAC5C,oBAAC,oBAAK,mBAAqB;;;MAElC;KACA;GAEN,qBAAC;IAAI,WAAU;eACb,oBAAC;KAAG,WAAU;eAAqB;MAAiB,EACpD,oBAAC,kBAAe,SAAQ,gCAAgC;KACpD;GAEN,qBAAC;IAAI,WAAU;;KACb,oBAAC;MAAG,WAAU;gBAAqB;OAAmB;KACtD,oBAAC;MAAE,WAAU;gBAAwB;OAGjC;KAEJ,oBAAC;MACC,UAAS;MACT,MAAM;;;;;;;;;;;;;;;;;;;;;OAqBN;;KACE;GAEN,qBAAC;IAAI,WAAU;;KACb,oBAAC;MAAG,WAAU;gBAAqB;OAAsB;KACzD,qBAAC;MAAE,WAAU;;OAAwB;OACZ,oBAAC,oBAAK,eAAiB;;;OAE5C;KACJ,qBAAC;MAAG,WAAU;iBACZ,qBAAC,mBACC,oBAAC,oBAAK,uBAAyB,uCAC5B,EACL,qBAAC,mBACC,oBAAC,oBAAK,qBAAuB,2CAC1B;OACF;;KACD;GAEN,qBAAC;IAAI,WAAU;;KACb,oBAAC;MAAG,WAAU;gBAAqB;OAAW;KAC9C,oBAAC;MAAE,WAAU;gBAAwB;OAEjC;KACJ,qBAAC;MAAG,WAAU;;OACZ,oBAAC,kBACC,oBAAC,oBAAK,qBAAuB,GAC1B;OACL,oBAAC,kBACC,oBAAC,oBAAK,4BAA8B,GACjC;OACL,oBAAC,kBACC,oBAAC,oBAAK,yBAA2B,GAC9B;OACL,oBAAC,kBACC,oBAAC,oBAAK,2BAA6B,GAChC;OACL,oBAAC,kBACC,oBAAC,oBAAK,uBAAyB,GAC5B;OACL,oBAAC,kBACC,oBAAC,oBAAK,uBAAyB,GAC5B;OACL,oBAAC,kBACC,oBAAC,oBAAK,yCAA2C,GAC9C;;OACF;;KACD;GAEN,qBAAC;IAAI,WAAU;eACb,oBAAC;KAAK,MAAK;KAAkB,WAAU;eAAY;MAE5C,EACP,qBAAC;KAAK,MAAK;KAA6B,WAAU;gBAAc,qBAC7C,oBAAC,gBAAa,MAAM,KAAM;MACtC;KACH;;GACF"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ManifestoPage.js","names":[],"sources":["../../../../src/components/docs/manifesto/ManifestoPage.tsx"],"sourcesContent":["// export const metadata = {\n// title: 'Manifesto: ContractSpec',\n// description:\n// 'Our philosophy: compiler not prison, no lock-in, standard tech, incremental adoption, AI governance.',\n// };\n\nexport function ManifestoPage() {\n return (\n <div className=\"space-y-8\">\n <div className=\"space-y-4\">\n <h1 className=\"text-4xl font-bold\">Manifesto</h1>\n <p className=\"text-muted-foreground text-lg\">\n ContractSpec is the deterministic, spec-first compiler that keeps\n AI-written software coherent, safe, and regenerable. We're building\n the safety layer for AI-coded systems.\n </p>\n </div>\n\n <div className=\"space-y-6\">\n <div className=\"space-y-3\">\n <h2 className=\"text-2xl font-bold\">Compiler, not prison</h2>\n <p className=\"text-muted-foreground\">\n ContractSpec is a tool in your toolchain, not a platform you're\n locked into. Like TypeScript compiles to JavaScript, ContractSpec\n compiles specs to standard code. The generated output is\n yours—readable, modifiable, and ejectable at any time.\n </p>\n <p className=\"text-muted-foreground\">\n We believe developers should own their code. There's no proprietary\n runtime, no vendor-specific abstractions, no magic that hides\n complexity. You can always see what ContractSpec generates,\n understand it, and take it with you if you leave.\n </p>\n </div>\n\n <div className=\"space-y-3\">\n <h2 className=\"text-2xl font-bold\">Standard tech, no magic</h2>\n <p className=\"text-muted-foreground\">\n Everything ContractSpec generates uses technology you already know:\n TypeScript, Zod, Prisma, GraphQL, REST, React. There's no new\n language to learn, no YAML configuration hell, no DSL that only\n works in our ecosystem.\n </p>\n <p className=\"text-muted-foreground\">\n Specs are just TypeScript. If you can write{' '}\n <code className=\"rounded bg-violet-500/10 px-1.5 py-0.5 text-sm\">\n z.object({'{'} name: z.string() {'}'})\n </code>\n , you can write a ContractSpec. Your existing skills transfer\n directly.\n </p>\n </div>\n\n <div className=\"space-y-3\">\n <h2 className=\"text-2xl font-bold\">Incremental adoption</h2>\n <p className=\"text-muted-foreground\">\n You don't rewrite your app to use ContractSpec. You stabilize one\n module at a time. Start with a single API endpoint, a single data\n model, a single contract. See the value. Expand gradually.\n </p>\n <p className=\"text-muted-foreground\">\n This isn't a big-bang migration. It's a safety layer you add\n incrementally to existing AI-generated chaos. No pressure. No\n deadlines. Your pace.\n </p>\n </div>\n\n <div className=\"space-y-3\">\n <h2 className=\"text-2xl font-bold\">AI governance</h2>\n <p className=\"text-muted-foreground\">\n In 2025, AI agents generate enormous amounts of code. But they can't\n enforce invariants, they break multi-surface consistency, and they\n hallucinate refactors. The result is code that's hard to maintain\n and dangerous to trust.\n </p>\n <p className=\"text-muted-foreground\">\n ContractSpec provides the governance layer. Contracts define what\n the system <em>should</em> do. AI agents read specs, not\n implementations. Code that violates contracts gets flagged and\n rejected before it can cause damage.\n </p>\n </div>\n\n <div className=\"space-y-3\">\n <h2 className=\"text-2xl font-bold\">Multi-surface consistency</h2>\n <p className=\"text-muted-foreground\">\n One spec generates API endpoints, database schemas, UI types, event\n definitions, and MCP tools. All surfaces stay in sync because they\n share the same source of truth.\n </p>\n <p className=\"text-muted-foreground\">\n No more chasing drift between your API and your database. No more\n frontend types that don't match backend contracts. One change to the\n spec, all surfaces update consistently.\n </p>\n </div>\n\n <div className=\"space-y-3\">\n <h2 className=\"text-2xl font-bold\">Safe regeneration</h2>\n <p className=\"text-muted-foreground\">\n You can regenerate code at any time without fear. Specs enforce\n invariants. Breaking changes are caught at compile time, not in\n production. Roll back to any previous version with confidence.\n </p>\n <p className=\"text-muted-foreground\">\n This is the promise of spec-first development: the code is derived\n from the spec, so regenerating it is always safe. No more \"don't\n touch that file\" warnings. No more fear of AI-generated spaghetti.\n </p>\n </div>\n </div>\n\n <div className=\"space-y-4\">\n <h2 className=\"text-2xl font-bold\">Join us</h2>\n <p className=\"text-muted-foreground\">\n We're building the safety layer for AI-coded systems. If you believe\n developers should own their code, that AI needs governance, and that\n standard tech beats proprietary magic—we'd love to have you.\n </p>\n <p className=\"text-muted-foreground\">\n You keep your app. We stabilize it, one module at a time. You own the\n code. It's standard tech.{' '}\n <span className=\"font-semibold text-violet-400\">\n We're the compiler, not the prison.\n </span>\n </p>\n <div className=\"flex flex-wrap gap-4 pt-4\">\n <a href=\"/install\" className=\"btn-primary\">\n Install OSS Core\n </a>\n <a href=\"/contact#waitlist\" className=\"btn-ghost\">\n Join Studio Waitlist\n </a>\n </div>\n </div>\n </div>\n );\n}\n"],"mappings":";;;AAMA,SAAgB,gBAAgB;AAC9B,QACE,qBAAC;EAAI,WAAU;;GACb,qBAAC;IAAI,WAAU;eACb,oBAAC;KAAG,WAAU;eAAqB;MAAc,EACjD,oBAAC;KAAE,WAAU;eAAgC;MAIzC;KACA;GAEN,qBAAC;IAAI,WAAU;;KACb,qBAAC;MAAI,WAAU;;OACb,oBAAC;QAAG,WAAU;kBAAqB;SAAyB;OAC5D,oBAAC;QAAE,WAAU;kBAAwB;SAKjC;OACJ,oBAAC;QAAE,WAAU;kBAAwB;SAKjC;;OACA;KAEN,qBAAC;MAAI,WAAU;;OACb,oBAAC;QAAG,WAAU;kBAAqB;SAA4B;OAC/D,oBAAC;QAAE,WAAU;kBAAwB;SAKjC;OACJ,qBAAC;QAAE,WAAU;;SAAwB;SACS;SAC5C,qBAAC;UAAK,WAAU;;WAAiD;WACrD;WAAI;WAAmB;WAAI;;WAChC;;;SAGL;;OACA;KAEN,qBAAC;MAAI,WAAU;;OACb,oBAAC;QAAG,WAAU;kBAAqB;SAAyB;OAC5D,oBAAC;QAAE,WAAU;kBAAwB;SAIjC;OACJ,oBAAC;QAAE,WAAU;kBAAwB;SAIjC;;OACA;KAEN,qBAAC;MAAI,WAAU;;OACb,oBAAC;QAAG,WAAU;kBAAqB;SAAkB;OACrD,oBAAC;QAAE,WAAU;kBAAwB;SAKjC;OACJ,qBAAC;QAAE,WAAU;;SAAwB;SAExB,oBAAC,kBAAG,WAAW;;;SAGxB;;OACA;KAEN,qBAAC;MAAI,WAAU;;OACb,oBAAC;QAAG,WAAU;kBAAqB;SAA8B;OACjE,oBAAC;QAAE,WAAU;kBAAwB;SAIjC;OACJ,oBAAC;QAAE,WAAU;kBAAwB;SAIjC;;OACA;KAEN,qBAAC;MAAI,WAAU;;OACb,oBAAC;QAAG,WAAU;kBAAqB;SAAsB;OACzD,oBAAC;QAAE,WAAU;kBAAwB;SAIjC;OACJ,oBAAC;QAAE,WAAU;kBAAwB;SAIjC;;OACA;;KACF;GAEN,qBAAC;IAAI,WAAU;;KACb,oBAAC;MAAG,WAAU;gBAAqB;OAAY;KAC/C,oBAAC;MAAE,WAAU;gBAAwB;OAIjC;KACJ,qBAAC;MAAE,WAAU;;OAAwB;OAET;OAC1B,oBAAC;QAAK,WAAU;kBAAgC;SAEzC;;OACL;KACJ,qBAAC;MAAI,WAAU;iBACb,oBAAC;OAAE,MAAK;OAAW,WAAU;iBAAc;QAEvC,EACJ,oBAAC;OAAE,MAAK;OAAoB,WAAU;iBAAY;QAE9C;OACA;;KACF;;GACF"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"AutoEvolutionOpsPage.js","names":[],"sources":["../../../../src/components/docs/ops/AutoEvolutionOpsPage.tsx"],"sourcesContent":["// export const metadata: Metadata = {\n// title: 'Auto-Evolution Runbook | ContractSpec',\n// description:\n// 'Operate the telemetry → intent → spec pipeline with guardrails and approvals.',\n// };\n\nexport function OpsAutoEvolutionPage() {\n return (\n <div className=\"space-y-8\">\n <div className=\"space-y-4\">\n <h1 className=\"text-4xl font-bold\">Auto-Evolution Runbook</h1>\n <p className=\"text-muted-foreground text-lg\">\n Configure sampling, approvals, experiments, and golden tests so your\n app keeps improving without regressions.\n </p>\n </div>\n\n <div className=\"space-y-3\">\n <h2 className=\"text-2xl font-bold\">Pipeline overview</h2>\n <ol className=\"text-muted-foreground list-decimal space-y-2 pl-6 text-sm\">\n <li>\n Tracing middleware emits telemetry samples with tenant/user context.\n </li>\n <li>IntentAggregator batches samples (15m window, configurable).</li>\n <li>IntentDetector raises error/latency/throughput signals.</li>\n <li>SpecGenerator produces proposals with confidence scores.</li>\n <li>ApprovalWorkflow routes low-confidence suggestions to humans.</li>\n <li>\n SpecExperimentRegistry rolls out approved variants using guardrails.\n </li>\n <li>\n TrafficRecorder captures new traffic and GoldenTestGenerator outputs\n suites.\n </li>\n </ol>\n </div>\n\n <div className=\"space-y-3\">\n <h2 className=\"text-2xl font-bold\">Key environment variables</h2>\n <pre className=\"bg-muted rounded-lg border p-4 text-sm\">\n {`# Telemetry sampling\nAUTO_EVOLUTION_SAMPLE_RATE=0.02\nAUTO_EVOLUTION_WINDOW_MS=900000\n\n# Suggestion thresholds\nAUTO_EVOLUTION_MIN_CONFIDENCE=0.55\nAUTO_EVOLUTION_AUTO_APPROVE=0.2\n\n# Guardrails (fallback defaults)\nAUTO_EVOLUTION_MAX_ERROR_RATE=0.02\nAUTO_EVOLUTION_MAX_P99_MS=500`}\n </pre>\n </div>\n\n <div className=\"space-y-3\">\n <h2 className=\"text-2xl font-bold\">Operations checklist</h2>\n <ul className=\"text-muted-foreground list-disc space-y-2 pl-6 text-sm\">\n <li>\n Review new `SpecSuggestion` records every morning (UI coming soon;\n Prisma view today).\n </li>\n <li>Keep at least one reviewer per domain on-call for approvals.</li>\n <li>\n Attach `SpecExperimentAdapter.trackOutcome` to every runtime\n adapter.\n </li>\n <li>\n Schedule `contractspec test generate` nightly (or on deploy) to\n refresh golden suites.\n </li>\n <li>\n Feed `runGoldenTests` into CI to gate merges touching evolved specs.\n </li>\n </ul>\n </div>\n\n <div className=\"grid gap-4 md:grid-cols-3\">\n {[\n {\n title: 'Sampling',\n description:\n 'Start at 1–2% of traffic. Increase only after sanitization is verified.',\n },\n {\n title: 'Approvals',\n description:\n 'High-risk ops (money, compliance) should never auto-approve. Use ApprovalWorkflow notes for audit.',\n },\n {\n title: 'On-call alerts',\n description:\n 'Tie SpecExperimentController rollbacks into PagerDuty/Slack so engineers see guardrail trips immediately.',\n },\n ].map((card) => (\n <div key={card.title} className=\"card-subtle space-y-2 p-4\">\n <h3 className=\"text-lg font-semibold\">{card.title}</h3>\n <p className=\"text-muted-foreground text-sm\">{card.description}</p>\n </div>\n ))}\n </div>\n </div>\n );\n}\n"],"mappings":";;;AAMA,SAAgB,uBAAuB;AACrC,QACE,qBAAC;EAAI,WAAU;;GACb,qBAAC;IAAI,WAAU;eACb,oBAAC;KAAG,WAAU;eAAqB;MAA2B,EAC9D,oBAAC;KAAE,WAAU;eAAgC;MAGzC;KACA;GAEN,qBAAC;IAAI,WAAU;eACb,oBAAC;KAAG,WAAU;eAAqB;MAAsB,EACzD,qBAAC;KAAG,WAAU;;MACZ,oBAAC,kBAAG,yEAEC;MACL,oBAAC,kBAAG,iEAAiE;MACrE,oBAAC,kBAAG,4DAA4D;MAChE,oBAAC,kBAAG,6DAA6D;MACjE,oBAAC,kBAAG,kEAAkE;MACtE,oBAAC,kBAAG,yEAEC;MACL,oBAAC,kBAAG,iFAGC;;MACF;KACD;GAEN,qBAAC;IAAI,WAAU;eACb,oBAAC;KAAG,WAAU;eAAqB;MAA8B,EACjE,oBAAC;KAAI,WAAU;eACZ;;;;;;;;;;;MAWG;KACF;GAEN,qBAAC;IAAI,WAAU;eACb,oBAAC;KAAG,WAAU;eAAqB;MAAyB,EAC5D,qBAAC;KAAG,WAAU;;MACZ,oBAAC,kBAAG,2FAGC;MACL,oBAAC,kBAAG,iEAAiE;MACrE,oBAAC,kBAAG,0EAGC;MACL,oBAAC,kBAAG,2FAGC;MACL,oBAAC,kBAAG,yEAEC;;MACF;KACD;GAEN,oBAAC;IAAI,WAAU;cACZ;KACC;MACE,OAAO;MACP,aACE;MACH;KACD;MACE,OAAO;MACP,aACE;MACH;KACD;MACE,OAAO;MACP,aACE;MACH;KACF,CAAC,KAAK,SACL,qBAAC;KAAqB,WAAU;gBAC9B,oBAAC;MAAG,WAAU;gBAAyB,KAAK;OAAW,EACvD,oBAAC;MAAE,WAAU;gBAAiC,KAAK;OAAgB;OAF3D,KAAK,MAGT,CACN;KACE;;GACF"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"DistributedTracingOpsPage.js","names":[],"sources":["../../../../src/components/docs/ops/DistributedTracingOpsPage.tsx"],"sourcesContent":["// export const metadata: Metadata = {\n// title: 'Distributed Tracing Operations | ContractSpec',\n// description: 'Running and configuring distributed tracing in production.',\n// };\n\nexport function OpsDistributedTracingPage() {\n return (\n <div className=\"space-y-8\">\n <div className=\"space-y-4\">\n <h1 className=\"text-4xl font-bold\">Distributed Tracing</h1>\n <p className=\"text-muted-foreground text-lg\">\n ContractSpec uses OpenTelemetry (OTel) for distributed tracing. This\n guide explains how to configure exporters and collectors.\n </p>\n </div>\n\n <div className=\"space-y-4\">\n <h2 className=\"text-2xl font-bold\">Configuration</h2>\n <p>Configure the OTel SDK via environment variables:</p>\n <pre className=\"bg-muted rounded-lg border p-4 text-sm\">\n {`OTEL_SERVICE_NAME=my-service\nOTEL_EXPORTER_OTLP_ENDPOINT=http://otel-collector:4318\nOTEL_TRACES_SAMPLER=parentbased_traceidratio\nOTEL_TRACES_SAMPLER_ARG=0.1`}\n </pre>\n </div>\n\n <div className=\"space-y-4\">\n <h2 className=\"text-2xl font-bold\">Exporters</h2>\n <p>By default, the OTLP exporter is used. You can point it to:</p>\n <ul className=\"list-disc space-y-2 pl-6\">\n <li>Jaeger</li>\n <li>Tempo (Grafana)</li>\n <li>Honeycomb</li>\n <li>Datadog (via OTel Collector)</li>\n </ul>\n </div>\n </div>\n );\n}\n"],"mappings":";;;AAKA,SAAgB,4BAA4B;AAC1C,QACE,qBAAC;EAAI,WAAU;;GACb,qBAAC;IAAI,WAAU;eACb,oBAAC;KAAG,WAAU;eAAqB;MAAwB,EAC3D,oBAAC;KAAE,WAAU;eAAgC;MAGzC;KACA;GAEN,qBAAC;IAAI,WAAU;;KACb,oBAAC;MAAG,WAAU;gBAAqB;OAAkB;KACrD,oBAAC,iBAAE,sDAAqD;KACxD,oBAAC;MAAI,WAAU;gBACZ;;;;OAIG;;KACF;GAEN,qBAAC;IAAI,WAAU;;KACb,oBAAC;MAAG,WAAU;gBAAqB;OAAc;KACjD,oBAAC,iBAAE,gEAA+D;KAClE,qBAAC;MAAG,WAAU;;OACZ,oBAAC,kBAAG,WAAW;OACf,oBAAC,kBAAG,oBAAoB;OACxB,oBAAC,kBAAG,cAAc;OAClB,oBAAC,kBAAG,iCAAiC;;OAClC;;KACD;;GACF"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ops-lifecycle.docblocks.js","names":[],"sources":["../../../../src/components/docs/ops/ops-lifecycle.docblocks.ts"],"sourcesContent":["import type { DocBlock } from '@contractspec/lib.contracts/docs';\n\nexport const opsLifecycleDocs: DocBlock[] = [\n {\n id: 'docs.ops.lifecycle-operations.goal',\n title: 'Lifecycle operations goal',\n summary:\n 'Keep managed lifecycle assessments timely, auditable, and low-risk per tenant.',\n kind: 'goal',\n visibility: 'public',\n route: '/docs/ops/lifecycle-operations/goal',\n tags: ['ops', 'lifecycle'],\n body: 'Operate lifecycle assessments with predictable cadence, clear observability, and reversible customizations so tenants stay aligned to milestones without risking data access.',\n },\n {\n id: 'docs.ops.lifecycle-operations.usage',\n title: 'Lifecycle operations usage guide',\n summary: 'Quick checklist for running lifecycle managed ops.',\n kind: 'usage',\n visibility: 'public',\n route: '/docs/ops/lifecycle-operations/usage',\n tags: ['ops', 'lifecycle'],\n body: `- Run weekly auto-refresh per tenant; allow manual reruns behind \\`LIFECYCLE_DETECTION_ALPHA\\`.\n- Publish top 3 actions + milestone checklist to Studio UI; emit lifecycle events.\n- Monitor P95 < 500ms; alert on confidence < 0.5 or stage churn.\n- Version overrides (weights, milestones, playbooks); never edit compiled JS.\n- Log incidents for detection gaps or bad recommendations; gate ceremony output via flag if broken.`,\n },\n {\n id: 'docs.ops.lifecycle-operations.how',\n title: 'Lifecycle operations runbook',\n summary:\n 'Full runbook for lifecycle assessments, customization, and alerts.',\n kind: 'how',\n visibility: 'public',\n route: '/docs/ops/lifecycle-operations/how',\n tags: ['ops', 'lifecycle'],\n body: `## Lifecycle Operations Runbook (ContractSpec Managed)\n\nThis runbook guides ContractSpec operators who run the lifecycle managed service (bundle + Studio surfaces). It focuses on cadence, monitoring, customization, and escalation without touching tenant-specific databases.\n\n---\n\n### 1. Responsibilities\n\n1. **Assessment Cadence**\n - Default: weekly auto-refresh per tenant (using latest telemetry + questionnaires).\n - Manual rerun allowed any time via Studio admin (flag \\`LIFECYCLE_DETECTION_ALPHA\\` must be on).\n2. **Guidance Delivery**\n - Publish top 3 recommended actions + milestone checklist to Studio UI.\n - Trigger ceremony payload when stage changes (Stage N → N+1 or N-1).\n3. **Observability**\n - Ensure lifecycle events hit analytics pipeline (\\`lifecycle_assessment_run\\`, \\`lifecycle_stage_changed\\`, \\`lifecycle_guidance_consumed\\`).\n - Monitor error budget for orchestrator runtime (<500ms P95 on synthetic data).\n\n---\n\n### 2. Operational Flow\n\n1. **Collect Signals**\n - Kick \\`StageSignalCollector\\` with adapters:\n - Analytics adapter pulls synthetic/aggregated metrics (no raw tenant data).\n - Questionnaire adapter reads stored JSON answers (per customer).\n - Intent adapter listens to observability events (optional).\n2. **Score & Assess**\n - \\`LifecycleOrchestrator\\` returns \\`LifecycleAssessment\\` + confidence.\n - Persist assessment snapshot via Studio storage abstraction (file or KV).\n3. **Generate Guidance**\n - \\`LifecycleRecommendationEngine\\` + \\`LifecycleCeremonyDesigner\\`.\n - Queue AI advisor agent call if \\`LIFECYCLE_ADVISOR_ALPHA\\` enabled.\n4. **Publish**\n - Update Studio dashboard caches.\n - Emit lifecycle events.\n - Notify support (Slack/Webhook) when confidence < 0.5 or stage regresses.\n\n---\n\n### 3. Customization Guide\n\n| What | How | Notes |\n| --- | --- | --- |\n| Stage weights | Update \\`modules/lifecycle-core/configs/stage-weights.json\\` via bundle config layer | Keep doc changes in sync; re-run unit tests |\n| Milestones | Edit \\`milestones-catalog.json\\`, re-run CLI fixtures | Do not remove IDs used in history |\n| Playbooks / ceremonies | Update \\`modules/lifecycle-advisor/src/data/*.json\\` | Provide localized copy if required |\n| Feature flags | Toggle via progressive-delivery library (per tenant) | Document rationale and expiration date |\n\nAll overrides must be versioned; operators should never edit compiled JS.\n\n---\n\n### 4. Monitoring & Alerts\n\n- **Dashboards** (Grafana or equivalent):\n - Stage distribution (per tenant / aggregated)\n - Assessment latency (trigger → completion)\n - Adoption metrics (guidance consumed events)\n- **Alerts**:\n - \\`LifecycleAssessmentFailed\\` (error > 3 in 5m)\n - \\`LifecycleConfidenceLow\\` (confidence < 0.4 for 2 consecutive runs)\n - \\`LifecycleStageChurn\\` (stage oscillates >2 times in 7 days)\n\nAlert recipients: lifecycle ops squad + product owner.\n\n---\n\n### 5. Escalation Playbook\n\n1. **Detection gap** (signals missing):\n - Check analytics adapter health.\n - Fall back to questionnaire-only mode.\n - Log incident in lifecycle ops channel.\n2. **Inaccurate recommendation**:\n - Capture assessment payload + manual notes.\n - File issue referencing \\`LifecycleRecommendationEngine\\`.\n - Update playbook JSON + add regression test.\n3. **Ceremony assets broken**:\n - Disable \\`LifecycleCeremonyDesigner\\` output via feature flag.\n - Notify design systems to refresh assets.\n\n---\n\n### 6. Data Handling\n\n- Managed bundle uses Studio storage; no direct access to tenant DBs.\n- Retain last 10 assessments per tenant for comparison (configurable).\n- Delete assessments on tenant request (flag \\`lifecycle_data_retention_days\\`).\n- Questionnaire answers treated as customer data; store encrypted if possible.\n\n---\n\n### 7. Run / Maintenance Tasks\n\n| Task | Cadence | Owner |\n| --- | --- | --- |\n| Review staged weight adjustments | Monthly | Lifecycle PM + Ops |\n| Refresh milestone catalog with new learnings | Quarterly | Lifecycle strategist |\n| Validate CLI + dashboard examples still work | Release cycle | DevRel |\n| Audit analytics events coverage | Monthly | Data team |\n\n---\n\n### 8. Tooling References\n\n- \\`packages/bundles/lifecycle-managed/\\` for managed runtime code.\n- \\`packages/modules/lifecycle-core/\\` for detection logic.\n- \\`packages/modules/lifecycle-advisor/\\` for playbooks and ceremonies.\n- Progressive delivery config for lifecycle feature flags.\n\nMaintain this runbook alongside code changes; every bundle release must document operational impact and flag defaults.`,\n },\n];\n"],"mappings":";AAEA,MAAa,mBAA+B;CAC1C;EACE,IAAI;EACJ,OAAO;EACP,SACE;EACF,MAAM;EACN,YAAY;EACZ,OAAO;EACP,MAAM,CAAC,OAAO,YAAY;EAC1B,MAAM;EACP;CACD;EACE,IAAI;EACJ,OAAO;EACP,SAAS;EACT,MAAM;EACN,YAAY;EACZ,OAAO;EACP,MAAM,CAAC,OAAO,YAAY;EAC1B,MAAM;;;;;EAKP;CACD;EACE,IAAI;EACJ,OAAO;EACP,SACE;EACF,MAAM;EACN,YAAY;EACZ,OAAO;EACP,MAAM,CAAC,OAAO,YAAY;EAC1B,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAgHP;CACF"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ops-runbooks-a.docblocks.js","names":[],"sources":["../../../../src/components/docs/ops/ops-runbooks-a.docblocks.ts"],"sourcesContent":["import type { DocBlock } from '@contractspec/lib.contracts/docs';\n\nexport const opsRunbookDocsA: DocBlock[] = [\n {\n id: 'docs.ops.anomaly-detection.goal',\n title: 'Anomaly detection goal',\n summary: 'Why anomaly detection matters for ops stability.',\n kind: 'goal',\n visibility: 'public',\n route: '/docs/ops/anomaly-detection/goal',\n tags: ['ops', 'observability'],\n body: 'Ensure anomalies are detected early to protect latency, error rate, and throughput SLAs; keep rollback hooks ready and audits reproducible.',\n },\n {\n id: 'docs.ops.anomaly-detection.usage',\n title: 'Anomaly detection usage guide',\n summary: 'How to run and consume anomaly detection in operations.',\n kind: 'usage',\n visibility: 'public',\n route: '/docs/ops/anomaly-detection/usage',\n tags: ['ops', 'observability'],\n body: `- Enable tracing middleware; emit latency/error/throughput samples.\n- Configure thresholds per capability when bursty traffic exists.\n- Wire rollback hook in DeploymentCoordinator for error spikes.\n- Export anomaly JSON into incidents; update MetricBaseline post-fix.\n- Run chaos/load checks to validate signals within 30s.`,\n },\n {\n id: 'docs.ops.anomaly-detection.how',\n title: 'Anomaly detection runbook',\n summary: 'Step-by-step runbook for anomaly signals and rollback hooks.',\n kind: 'how',\n visibility: 'public',\n route: '/docs/ops/anomaly-detection/how',\n tags: ['ops', 'observability'],\n body: `# Anomaly Detection Runbook\n\n## 1. Pipeline Overview\n1. \\`createTracingMiddleware({ onSample })\\` emits metric points (latency, errors, throughput).\n2. Feed points into \\`AnomalyDetector.evaluate\\` after enriching with timestamps.\n3. On signal, run \\`RootCauseAnalyzer.analyze(signal, recentDeployments)\\`.\n4. Send deduplicated alerts via \\`AlertManager\\` (cooldown default 60s).\n\n## 2. Configuration\n- Baseline: exponential moving average with \\`alpha=0.2\\`, 10-sample warmup.\n- Thresholds (default):\n - Error rate delta 50%\n - Latency delta 35%\n - Throughput drop 40%\n- Override per capability when traffic is bursty (e.g., nightly batch jobs).\n\n## 3. Auto-Rollback Hook\n- When anomaly type = \\`error_rate_spike\\` AND \\`DeploymentCoordinator\\` is active, trigger rollback immediately.\n- Record an \\`AnomalyEvent\\` pointing to \\`deploymentId\\` for auditability.\n\n## 4. Postmortem Checklist\n- Export anomaly JSON (metrics + baseline) into the incident doc.\n- Verify \\`MetricBaseline\\` updated after fix; burn rate should fall < 2x.\n- Backfill \\`AnomalyEvent.notes\\` with RCA outcome for future training.\n\n## 5. Testing\n- Use load test harness to inject latency and verify detector emits signals within 30 seconds.\n- Chaos suite should simulate upstream outages to ensure throughput-drop detection fires.`,\n },\n {\n id: 'docs.ops.cost-optimization.goal',\n title: 'Cost optimization goal',\n summary: 'Keep spend predictable and actionable for ops and finance.',\n kind: 'goal',\n visibility: 'public',\n route: '/docs/ops/cost-optimization/goal',\n tags: ['ops', 'cost'],\n body: 'Align telemetry, budgets, and rollback levers so cost spikes are detected early, communicated clearly, and mitigated without breaking SLAs.',\n },\n {\n id: 'docs.ops.cost-optimization.usage',\n title: 'Cost optimization usage guide',\n summary: 'Quick checklist to run cost tracking and optimization.',\n kind: 'usage',\n visibility: 'public',\n route: '/docs/ops/cost-optimization/usage',\n tags: ['ops', 'cost'],\n body: `- Emit \\`CostSample\\` via wrapped DB/HTTP clients; include provider/invoice cost.\n- Batch into \\`OperationCost\\` every 5m; alert at 80% of monthlyLimit.\n- Nightly run \\`OptimizationRecommender.generate\\`; push tickets with evidence.\n- Use regional overrides for \\`defaultCostModel\\` when infra prices differ.\n- Send proactive alerts for ±20% deviations to enterprise tenants.`,\n },\n {\n id: 'docs.ops.cost-optimization.how',\n title: 'Cost optimization runbook',\n summary: 'Step-by-step cost tracking, alerting, and communication.',\n kind: 'how',\n visibility: 'public',\n route: '/docs/ops/cost-optimization/how',\n tags: ['ops', 'cost'],\n body: `# Cost Tracking & Optimization Runbook\n\n## 1. Instrumentation\n- Wrap DB client and HTTP adapters to emit \\`CostSample\\`s to \\`CostTracker.recordSample\\`.\n- For external APIs, attach provider name + actual invoice cost when available.\n- Persist aggregate rows into \\`OperationCost\\` (batch job every 5 minutes).\n\n## 2. Budgets\n- Insert/update \\`TenantBudget\\` per workspace.\n- Default alert threshold: 80% of \\`monthlyLimit\\`.\n- \\`BudgetAlertManager.track(summary)\\` emits Slack + email payloads including breakdown JSON.\n\n## 3. Optimization Suggestions\n- Nightly job reads \\`OperationCost\\` and creates \\`OptimizationSuggestion\\` records via \\`OptimizationRecommender.generate\\`.\n- Auto-file tickets or push to Growth Agent backlog with the evidence (avg reads, compute share, external spend).\n\n## 4. Forecasting\n- Cost model inputs live in \\`@contractspec/lib.cost-tracking\\` (\\`defaultCostModel\\`). Override per region if infra prices differ.\n- Keep a history of \\`OperationCost\\` to render spark lines in Ops Console; highlight slopes > 15% week-over-week.\n\n## 5. Customer Communication\n- For enterprise tenants offer proactive alerts when spend deviates ±20% from plan.\n- Connect \\`TenantBudget\\` alerts to CRM notes so Success teams see when automation saved costs.`,\n },\n];\n"],"mappings":";AAEA,MAAa,kBAA8B;CACzC;EACE,IAAI;EACJ,OAAO;EACP,SAAS;EACT,MAAM;EACN,YAAY;EACZ,OAAO;EACP,MAAM,CAAC,OAAO,gBAAgB;EAC9B,MAAM;EACP;CACD;EACE,IAAI;EACJ,OAAO;EACP,SAAS;EACT,MAAM;EACN,YAAY;EACZ,OAAO;EACP,MAAM,CAAC,OAAO,gBAAgB;EAC9B,MAAM;;;;;EAKP;CACD;EACE,IAAI;EACJ,OAAO;EACP,SAAS;EACT,MAAM;EACN,YAAY;EACZ,OAAO;EACP,MAAM,CAAC,OAAO,gBAAgB;EAC9B,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA4BP;CACD;EACE,IAAI;EACJ,OAAO;EACP,SAAS;EACT,MAAM;EACN,YAAY;EACZ,OAAO;EACP,MAAM,CAAC,OAAO,OAAO;EACrB,MAAM;EACP;CACD;EACE,IAAI;EACJ,OAAO;EACP,SAAS;EACT,MAAM;EACN,YAAY;EACZ,OAAO;EACP,MAAM,CAAC,OAAO,OAAO;EACrB,MAAM;;;;;EAKP;CACD;EACE,IAAI;EACJ,OAAO;EACP,SAAS;EACT,MAAM;EACN,YAAY;EACZ,OAAO;EACP,MAAM,CAAC,OAAO,OAAO;EACrB,MAAM;;;;;;;;;;;;;;;;;;;;;;;EAuBP;CACF"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ops-runbooks-b.docblocks.js","names":[],"sources":["../../../../src/components/docs/ops/ops-runbooks-b.docblocks.ts"],"sourcesContent":["import type { DocBlock } from '@contractspec/lib.contracts/docs';\n\nexport const opsRunbookDocsB: DocBlock[] = [\n {\n id: 'docs.ops.profile-settings.goal',\n title: 'Profile settings goal',\n summary: 'Keep identity/profile flows reliable and debuggable.',\n kind: 'goal',\n visibility: 'public',\n route: '/docs/ops/profile-settings/goal',\n tags: ['ops', 'auth'],\n body: 'Ensure profile linking/unlinking stays stable across FC+ and SMS flows, with clear monitoring and quick recovery steps.',\n },\n {\n id: 'docs.ops.profile-settings.usage',\n title: 'Profile settings usage guide',\n summary: 'Quick checklist for profile settings operations.',\n kind: 'usage',\n visibility: 'public',\n route: '/docs/ops/profile-settings/usage',\n tags: ['ops', 'auth'],\n body: `- Verify Better Auth config in \\`src/lib/auth.ts\\`; JWKS for FC+.\n- Monitor Sentry spans \\`profile.*\\`; PostHog events connection_linked/unlinked.\n- On unlink failures: check \\`/api/auth/connections/unlink\\` logs.\n- FC+ issues: validate discovery URL and partner redirects.\n- OTP throttling: confirm SMS service rate limiter is active.`,\n },\n {\n id: 'docs.ops.profile-settings.how',\n title: 'Profile settings runbook',\n summary: 'Detailed runbook for profile/settings operations.',\n kind: 'how',\n visibility: 'public',\n route: '/docs/ops/profile-settings/how',\n tags: ['ops', 'auth'],\n body: `## Runbook – Profile Settings\n\n### Feature flags / Env\n\n- Better Auth configured in \\`src/lib/auth.ts\\`\n- FC+ envs and JWKS exposed (see specs_france_connect_plus.md)\n\n### Monitoring\n\n- Sentry spans: profile.* ops\n- PostHog events: connection_linked / connection_unlinked\n\n### Troubleshooting\n\n- Unlink failures → check \\`/api/auth/connections/unlink\\` logs\n- FC+ link issues → verify discovery URL and partner console redirects\n- Phone OTP rate limit → server-side limiter in SMS service`,\n },\n {\n id: 'docs.ops.progressive-delivery.goal',\n title: 'Progressive delivery goal',\n summary: 'Roll out safely with fast rollback and clear guardrails.',\n kind: 'goal',\n visibility: 'public',\n route: '/docs/ops/progressive-delivery/goal',\n tags: ['ops', 'delivery'],\n body: 'Use canary/blue-green with metrics guardrails so deployments can be halted or rolled back before customer impact.',\n },\n {\n id: 'docs.ops.progressive-delivery.usage',\n title: 'Progressive delivery usage guide',\n summary: 'Quick checklist for canary/blue-green runs.',\n kind: 'usage',\n visibility: 'public',\n route: '/docs/ops/progressive-delivery/usage',\n tags: ['ops', 'delivery'],\n body: `- Register \\`DeploymentStrategy\\`; wire telemetry via observability middleware.\n- Define rollback actions (flag toggle/spec revert/infrastructure swap) in \\`RollbackManager\\`.\n- Use canary thresholds (err 1%, P99 500ms) or stricter per domain.\n- Pipe stage events to Ops Slack + Ops Console timeline.\n- For blue-green, run smoke tests before swap; freeze old env 24h post-swap.`,\n },\n {\n id: 'docs.ops.progressive-delivery.how',\n title: 'Progressive delivery runbook',\n summary: 'Step-by-step for canary and blue-green rollouts.',\n kind: 'how',\n visibility: 'public',\n route: '/docs/ops/progressive-delivery/how',\n tags: ['ops', 'delivery'],\n body: `# Progressive Delivery Runbook\n\n**Scope**: Contracts runtime deployments running on ContractSpec infrastructure.\n\n## 1. Prerequisites\n- Register a \\`DeploymentStrategy\\` via \\`@contractspec/lib.progressive-delivery\\`.\n- Ensure adapters emit telemetry through \\`@contractspec/lib.observability\\` (HTTP middleware + custom metrics).\n- Define rollback actions (feature flag toggle, spec revert, infrastructure switch) and wire them to \\`RollbackManager\\`.\n\n## 2. Standard Canary\n\\`\\`\\`ts\nconst strategy: DeploymentStrategy = {\n target: { name: 'billing.createInvoice', version: 7 },\n mode: 'canary',\n thresholds: {\n errorRate: 0.01,\n latencyP99: 500,\n latencyP95: 250,\n },\n};\n\\`\\`\\`\n\n1. Run \\`DeploymentCoordinator.run()\\` from CLI or CI job.\n2. Watch emitted events (\\`stage_started\\`, \\`stage_passed\\`, \\`stage_failed\\`). Pipe them to Ops Slack and the Ops Console timeline.\n3. On failure the coordinator triggers \\`RollbackManager.execute\\` automatically; the runbook owner only validates post-rollback metrics.\n\n## 3. Blue-Green Swap\n- Use mode \\`blue-green\\` with two stages: \\`0%\\` warmup and \\`100%\\` swap.\n- Attach smoke tests to \\`stage_started\\` events before sending any traffic.\n- After \\`blue_green_swapped\\`, freeze the old environment for 24h before decommissioning.\n\n## 4. Guardrails\n- Default thresholds: error rate 1%, P99 500ms, throughput drop 40%.\n- Add custom evaluator for domain-specific metrics:\n\\`\\`\\`ts\nthresholds: {\n errorRate: 0.005,\n customEvaluator: (metrics) => metrics.throughput > 200,\n}\n\\`\\`\\`\n\n## 5. Incident Hooks\n- \\`Deployment\\`, \\`DeploymentStage\\`, and \\`RollbackEvent\\` tables store the full history.\n- Tag rollbacks with incident ID to keep Ops Console synchronized.\n- Auto-resolve the incident once \\`status === 'completed'\\` and SLO burn rate returns < 2x.`,\n },\n];\n"],"mappings":";AAEA,MAAa,kBAA8B;CACzC;EACE,IAAI;EACJ,OAAO;EACP,SAAS;EACT,MAAM;EACN,YAAY;EACZ,OAAO;EACP,MAAM,CAAC,OAAO,OAAO;EACrB,MAAM;EACP;CACD;EACE,IAAI;EACJ,OAAO;EACP,SAAS;EACT,MAAM;EACN,YAAY;EACZ,OAAO;EACP,MAAM,CAAC,OAAO,OAAO;EACrB,MAAM;;;;;EAKP;CACD;EACE,IAAI;EACJ,OAAO;EACP,SAAS;EACT,MAAM;EACN,YAAY;EACZ,OAAO;EACP,MAAM,CAAC,OAAO,OAAO;EACrB,MAAM;;;;;;;;;;;;;;;;;EAiBP;CACD;EACE,IAAI;EACJ,OAAO;EACP,SAAS;EACT,MAAM;EACN,YAAY;EACZ,OAAO;EACP,MAAM,CAAC,OAAO,WAAW;EACzB,MAAM;EACP;CACD;EACE,IAAI;EACJ,OAAO;EACP,SAAS;EACT,MAAM;EACN,YAAY;EACZ,OAAO;EACP,MAAM,CAAC,OAAO,WAAW;EACzB,MAAM;;;;;EAKP;CACD;EACE,IAAI;EACJ,OAAO;EACP,SAAS;EACT,MAAM;EACN,YAAY;EACZ,OAAO;EACP,MAAM,CAAC,OAAO,WAAW;EACzB,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA6CP;CACF"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ops-slo-tenant.docblocks.js","names":[],"sources":["../../../../src/components/docs/ops/ops-slo-tenant.docblocks.ts"],"sourcesContent":["import type { DocBlock } from '@contractspec/lib.contracts/docs';\n\nexport const opsSloTenantDocs: DocBlock[] = [\n {\n id: 'docs.ops.slo-management.goal',\n title: 'SLO management goal',\n summary: 'Keep availability/latency SLOs observable and enforceable.',\n kind: 'goal',\n visibility: 'public',\n route: '/docs/ops/slo-management/goal',\n tags: ['ops', 'slo'],\n body: 'Ensure every capability has a versioned SLO with alerts, burn-rate workflows, and incident cross-links so rollbacks are justified and auditable.',\n },\n {\n id: 'docs.ops.slo-management.usage',\n title: 'SLO management usage guide',\n summary: 'Quick checklist for defining and operating SLOs.',\n kind: 'usage',\n visibility: 'public',\n route: '/docs/ops/slo-management/usage',\n tags: ['ops', 'slo'],\n body: `- Define \\`SLODefinition\\` per capability; tag tenant/tier for filtering.\n- Deploy \\`SLOMonitor\\`; pipe incidents to PagerDuty + Ops Slack.\n- Fast burn 14x -> page; slow burn 6x -> create ticket.\n- Use \\`SLOSnapshot\\` for dashboards; include deployment IDs in incidents.\n- Reset or advance error budgets after resolution when appropriate.`,\n },\n {\n id: 'docs.ops.slo-management.how',\n title: 'SLO management runbook',\n summary: 'Detailed runbook for SLO lifecycle and incident handling.',\n kind: 'how',\n visibility: 'public',\n route: '/docs/ops/slo-management/how',\n tags: ['ops', 'slo'],\n body: `# SLO Management Runbook\n\n## 1. Definition Lifecycle\n1. Create an entry in \\`SLODefinition\\` via migration or the Ops Console.\n2. Map capabilities to specs: e.g. \\`orders.create\\` availability 99.9%, P99 500ms.\n3. Store tags (\\`tenant:enterprise\\`, \\`tier:mission-critical\\`) for filtering dashboards.\n\n## 2. Monitoring\n- Deploy \\`SLOMonitor\\` alongside each critical service.\n- Pipe \\`IncidentManager.createIncident\\` into PagerDuty + Ops Slack.\n- Fast burn threshold (14x) -> page immediately; slow burn (6x) -> create ticket.\n\n\\`\\`\\`ts\nconst monitor = new SLOMonitor({\n definition,\n incidentManager,\n});\nmonitor.recordWindow({ good, bad, latencyP99, latencyP95 });\n\\`\\`\\`\n\n## 3. Error Budget Workflow\n- \\`ErrorBudget\\` rows track rolling windows (default 7d).\n- Add runbooks for \"burn > 50%\" (freeze deploys) and \"burn > 80%\" (roll back latest change).\n- Use \\`SLOSnapshot\\` to regenerate dashboards (no warehouse needed).\n\n## 4. Incident Triage\n- Every incident includes snapshot JSON (availability, latency, burn rate).\n- Attach deployment IDs from \\`Deployment\\` table to cross-link incidents & rollouts.\n- After resolution set \\`acknowledgedAt\\` and reset error budget (new period) if needed.\n\n## 5. Reporting\n- Weekly summary = AVG burn rate, # incidents, # auto-rollbacks triggered by SLO monitor.\n- Feed \\`SLOIncident\\` into Growth Agent for customer comms when SLAs impact tenants.`,\n },\n {\n id: 'docs.ops.tenant-customization.goal',\n title: 'Tenant customization goal',\n summary:\n 'Let tenants customize overlays/workflows safely with audit and rollback.',\n kind: 'goal',\n visibility: 'public',\n route: '/docs/ops/tenant-customization/goal',\n tags: ['ops', 'tenant'],\n body: 'Provide controlled overlays and workflow extensions per tenant with signed assets, versioning, and observability so UI/flow tweaks stay safe and reversible.',\n },\n {\n id: 'docs.ops.tenant-customization.usage',\n title: 'Tenant customization usage guide',\n summary: 'Quick steps for onboarding a tenant customization.',\n kind: 'usage',\n visibility: 'public',\n route: '/docs/ops/tenant-customization/usage',\n tags: ['ops', 'tenant'],\n body: `- Capture fields to hide/rename and workflow deviations.\n- Build overlay in overlay editor; sign JSON with tenant key.\n- Persist in \\`Overlay\\` table; register via \\`OverlayRegistry\\` or admin API.\n- Compose \\`WorkflowExtension\\`; store alongside overlay metadata.\n- Run sandbox smoke tests; ensure audit logs capture overlay events.`,\n },\n {\n id: 'docs.ops.tenant-customization.how',\n title: 'Tenant customization runbook',\n summary: 'Detailed runbook for overlays and workflow extensions.',\n kind: 'how',\n visibility: 'public',\n route: '/docs/ops/tenant-customization/how',\n tags: ['ops', 'tenant'],\n body: `# Tenant Customization Runbook\n\nPhase 4 introduces managed overlays and workflow extensions. Ops teams should follow this flow when onboarding a tenant that requests UI tweaks or workflow changes.\n\n1. **Collect requirements**\n - List fields to hide/show or rename.\n - Capture workflow deviations (extra approvals, reordered steps).\n2. **Create overlay**\n - Use the overlay editor app (\\`packages/apps/overlay-editor\\`) to draft the overlay.\n - Export JSON and sign with the tenant’s registered key (store keys in \\`OverlaySigningKey\\`).\n3. **Register overlay**\n - Persist the signed payload in the \\`Overlay\\` table via provisioning scripts.\n - Register with \\`OverlayRegistry\\` at boot or push via admin API.\n4. **Compose workflows**\n - Define a \\`WorkflowExtension\\` for the tenant (see \\`@contractspec/lib.workflow-composer\\` docs).\n - Store extension config alongside overlay metadata.\n5. **Verify**\n - Run smoke tests in the tenant sandbox.\n - Ensure audit logs capture overlay application events.\n6. **Monitor**\n - Use behavior tracking dashboards to confirm adoption or trigger cleanup when overlays become obsolete.\n\n---\n\n## Lifecycle customization\n\nManaged tenants can override lifecycle playbooks without touching database schemas:\n\n1. **Stage definitions**\n - Add overrides in \\`packages/modules/lifecycle-core/src/data/stage-weights.json\\`.\n - Keep the canonical doc (\\`docs/product/lifecycle-stages.md\\`) in sync with any new stage or axis.\n2. **Milestones**\n - Extend \\`milestones-catalog.json\\` with tenant-specific IDs. Prefix with the tenant or vertical slug (e.g., \\`tenant-acme-stage3-retention\\`).\n - Use feature flag \\`lifecycle_managed_service\\` to gate access while new milestones are validated.\n3. **Playbooks & ceremonies**\n - Customize \\`packages/modules/lifecycle-advisor/src/data/stage-playbooks.ts\\`.\n - Use Studio’s localization hooks to translate ceremony copy for low-tech flows.\n4. **Event routing**\n - Subscribe to \\`LifecycleKpiPipeline\\` events (see \\`@contractspec/bundle.lifecycle-managed\\`) to forward stage changes into tenant-specific analytics.\n\nAll lifecycle overrides must be versioned alongside the tenant’s overlay and workflow extensions so ops can rollback safely.`,\n },\n];\n"],"mappings":";AAEA,MAAa,mBAA+B;CAC1C;EACE,IAAI;EACJ,OAAO;EACP,SAAS;EACT,MAAM;EACN,YAAY;EACZ,OAAO;EACP,MAAM,CAAC,OAAO,MAAM;EACpB,MAAM;EACP;CACD;EACE,IAAI;EACJ,OAAO;EACP,SAAS;EACT,MAAM;EACN,YAAY;EACZ,OAAO;EACP,MAAM,CAAC,OAAO,MAAM;EACpB,MAAM;;;;;EAKP;CACD;EACE,IAAI;EACJ,OAAO;EACP,SAAS;EACT,MAAM;EACN,YAAY;EACZ,OAAO;EACP,MAAM,CAAC,OAAO,MAAM;EACpB,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAiCP;CACD;EACE,IAAI;EACJ,OAAO;EACP,SACE;EACF,MAAM;EACN,YAAY;EACZ,OAAO;EACP,MAAM,CAAC,OAAO,SAAS;EACvB,MAAM;EACP;CACD;EACE,IAAI;EACJ,OAAO;EACP,SAAS;EACT,MAAM;EACN,YAAY;EACZ,OAAO;EACP,MAAM,CAAC,OAAO,SAAS;EACvB,MAAM;;;;;EAKP;CACD;EACE,IAAI;EACJ,OAAO;EACP,SAAS;EACT,MAAM;EACN,YAAY;EACZ,OAAO;EACP,MAAM,CAAC,OAAO,SAAS;EACvB,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAyCP;CACF"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ops-top.docs.js","names":[],"sources":["../../../../src/components/docs/ops/ops-top.docs.ts"],"sourcesContent":["import type { DocBlock } from '@contractspec/lib.contracts/docs';\n\nexport const opsTopDocs: DocBlock[] = [\n {\n id: 'docs.ops.index',\n title: 'Operations docs index',\n summary: 'Entry point for operations runbooks and guides.',\n kind: 'goal',\n visibility: 'public',\n route: '/docs/ops',\n tags: ['ops'],\n body: `# Operations\n\nBrowse runbooks and guides for ops workflows:\n- Anomaly detection (goal/usage/how)\n- Cost optimization (goal/usage/how)\n- Lifecycle operations (goal/usage/how)\n- Profile settings (goal/usage/how)\n- Progressive delivery (goal/usage/how)\n- SLO management (goal/usage/how)\n- Tenant customization (goal/usage/how)`,\n },\n];\n"],"mappings":";AAEA,MAAa,aAAyB,CACpC;CACE,IAAI;CACJ,OAAO;CACP,SAAS;CACT,MAAM;CACN,YAAY;CACZ,OAAO;CACP,MAAM,CAAC,MAAM;CACb,MAAM;;;;;;;;;;CAUP,CACF"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ops.docs.js","names":[],"sources":["../../../../src/components/docs/ops/ops.docs.ts"],"sourcesContent":["import type { DocBlock } from '@contractspec/lib.contracts/docs';\nimport { opsRunbookDocsA } from './ops-runbooks-a.docblocks';\nimport { opsLifecycleDocs } from './ops-lifecycle.docblocks';\nimport { opsRunbookDocsB } from './ops-runbooks-b.docblocks';\nimport { opsSloTenantDocs } from './ops-slo-tenant.docblocks';\nimport { opsTopDocs } from './ops-top.docs';\n\nexport const opsDocBlocks: DocBlock[] = [\n ...opsTopDocs,\n ...opsRunbookDocsA,\n ...opsLifecycleDocs,\n ...opsRunbookDocsB,\n ...opsSloTenantDocs,\n];\n"],"mappings":";;;;;;;AAOA,MAAa,eAA2B;CACtC,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACJ"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"product.docblocks.js","names":[],"sources":["../../../../src/components/docs/product/product.docblocks.ts"],"sourcesContent":["import type { DocBlock } from '@contractspec/lib.contracts/docs';\nimport { registerDocBlocks } from '@contractspec/lib.contracts/docs';\n\nexport const productDocs: DocBlock[] = [\n {\n id: 'docs.product.lifecycle-stages.goal',\n title: 'Lifecycle stages goal',\n summary: 'Why lifecycle staging exists for ContractSpec products.',\n kind: 'goal',\n visibility: 'public',\n route: '/docs/product/lifecycle-stages/goal',\n tags: ['product', 'lifecycle'],\n body: 'Provide a clear, staged journey so teams can adopt ContractSpec incrementally with measurable milestones and ceremonies.',\n },\n {\n id: 'docs.product.lifecycle-stages.usage',\n title: 'Lifecycle stages usage',\n summary: 'How to use lifecycle stages across products.',\n kind: 'usage',\n visibility: 'public',\n route: '/docs/product/lifecycle-stages/usage',\n tags: ['product', 'lifecycle'],\n body: `- Map tenant or project to a lifecycle stage using assessment signals.\n- Use stage checklists to guide adoption; trigger ceremonies on stage change.\n- Keep stage definitions versioned and referenced by UI and ops docs.\n- Align product messaging to the current stage for clarity and expectation setting.`,\n },\n {\n id: 'docs.product.lifecycle-stages.how',\n title: 'Lifecycle stages reference',\n summary: 'Reference of lifecycle stages and guidance (from markdown).',\n kind: 'how',\n visibility: 'public',\n route: '/docs/product/lifecycle-stages/how',\n tags: ['product', 'lifecycle'],\n body: `# Lifecycle Stages\n\nRefer to lifecycle stages definition and guidance in product docs. Keep stage names, descriptions, and ceremonies aligned with implementation and ops runbooks.`,\n },\n {\n id: 'docs.product.lifecycle-user-guide.goal',\n title: 'Lifecycle user guide goal',\n summary: 'Why the lifecycle user guide exists.',\n kind: 'goal',\n visibility: 'public',\n route: '/docs/product/lifecycle-user-guide/goal',\n tags: ['product', 'lifecycle'],\n body: 'Help users navigate lifecycle assessments, recommendations, and ceremonies without requiring ops intervention.',\n },\n {\n id: 'docs.product.lifecycle-user-guide.usage',\n title: 'Lifecycle user guide usage',\n summary: 'How users should follow lifecycle guidance.',\n kind: 'usage',\n visibility: 'public',\n route: '/docs/product/lifecycle-user-guide/usage',\n tags: ['product', 'lifecycle'],\n body: `- Review recommended actions after each assessment.\n- Complete milestone checklists to progress stages.\n- Acknowledge stage regressions and follow suggested remediation.\n- Use the Studio UI to trigger reassessments when major changes occur.`,\n },\n {\n id: 'docs.product.lifecycle-user-guide.how',\n title: 'Lifecycle user guide reference',\n summary: 'Reference content for lifecycle user guide.',\n kind: 'how',\n visibility: 'public',\n route: '/docs/product/lifecycle-user-guide/how',\n tags: ['product', 'lifecycle'],\n body: `# Lifecycle User Guide\n\nUser-facing guide for navigating lifecycle assessments, recommendations, and ceremonies. Keep aligned with runtime logic and ops runbooks.`,\n },\n];\nregisterDocBlocks(productDocs);\n"],"mappings":";;;AAGA,MAAa,cAA0B;CACrC;EACE,IAAI;EACJ,OAAO;EACP,SAAS;EACT,MAAM;EACN,YAAY;EACZ,OAAO;EACP,MAAM,CAAC,WAAW,YAAY;EAC9B,MAAM;EACP;CACD;EACE,IAAI;EACJ,OAAO;EACP,SAAS;EACT,MAAM;EACN,YAAY;EACZ,OAAO;EACP,MAAM,CAAC,WAAW,YAAY;EAC9B,MAAM;;;;EAIP;CACD;EACE,IAAI;EACJ,OAAO;EACP,SAAS;EACT,MAAM;EACN,YAAY;EACZ,OAAO;EACP,MAAM,CAAC,WAAW,YAAY;EAC9B,MAAM;;;EAGP;CACD;EACE,IAAI;EACJ,OAAO;EACP,SAAS;EACT,MAAM;EACN,YAAY;EACZ,OAAO;EACP,MAAM,CAAC,WAAW,YAAY;EAC9B,MAAM;EACP;CACD;EACE,IAAI;EACJ,OAAO;EACP,SAAS;EACT,MAAM;EACN,YAAY;EACZ,OAAO;EACP,MAAM,CAAC,WAAW,YAAY;EAC9B,MAAM;;;;EAIP;CACD;EACE,IAAI;EACJ,OAAO;EACP,SAAS;EACT,MAAM;EACN,YAAY;EACZ,OAAO;EACP,MAAM,CAAC,WAAW,YAAY;EAC9B,MAAM;;;EAGP;CACF;AACD,kBAAkB,YAAY"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"DocsMarkdownContent.js","names":[],"sources":["../../../../src/components/docs/reference/DocsMarkdownContent.tsx"],"sourcesContent":["'use client';\n\nimport { CodeBlock, type CodeLanguage } from '@contractspec/lib.design-system';\nimport { VStack, HStack } from '@contractspec/lib.ui-kit-web/ui/stack';\nimport {\n BlockQuote,\n H2,\n H3,\n H4,\n Muted,\n P,\n} from '@contractspec/lib.ui-kit-web/ui/typography';\nimport { parseDocsMarkdown } from './docsMarkdownParser';\n\nconst CODE_LANGUAGES = new Set<CodeLanguage>([\n 'typescript',\n 'tsx',\n 'javascript',\n 'jsx',\n 'bash',\n 'shell',\n 'json',\n 'yaml',\n 'graphql',\n 'sql',\n 'python',\n 'go',\n 'rust',\n 'css',\n 'scss',\n 'html',\n 'markdown',\n 'text',\n]);\n\nfunction toCodeLanguage(language?: string): CodeLanguage {\n if (!language) return 'text';\n const normalized = language.toLowerCase() as CodeLanguage;\n return CODE_LANGUAGES.has(normalized) ? normalized : 'text';\n}\n\nfunction renderHeading(level: number, text: string) {\n if (level <= 2) return <H2>{text}</H2>;\n if (level === 3) return <H3>{text}</H3>;\n return <H4>{text}</H4>;\n}\n\nexport function DocsMarkdownContent({ content }: { content: string }) {\n const blocks = parseDocsMarkdown(content);\n\n if (!blocks.length) {\n return <Muted>No reference content available.</Muted>;\n }\n\n return (\n <VStack gap=\"md\">\n {blocks.map((block, index) => {\n switch (block.type) {\n case 'heading':\n return (\n <VStack key={index}>\n {renderHeading(block.level, block.text)}\n </VStack>\n );\n case 'paragraph':\n return <P key={index}>{block.text}</P>;\n case 'quote':\n return <BlockQuote key={index}>{block.text}</BlockQuote>;\n case 'code':\n return (\n <CodeBlock\n key={index}\n language={toCodeLanguage(block.language)}\n code={block.code}\n />\n );\n case 'list':\n return (\n <VStack key={index} gap=\"xs\">\n {block.items.map((item, itemIndex) => (\n <HStack key={itemIndex} gap=\"sm\" align=\"start\">\n <Muted>{block.ordered ? `${itemIndex + 1}.` : '•'}</Muted>\n <P className=\"leading-relaxed\">{item}</P>\n </HStack>\n ))}\n </VStack>\n );\n default:\n return null;\n }\n })}\n </VStack>\n );\n}\n"],"mappings":";;;;;;;;;AAcA,MAAM,iBAAiB,IAAI,IAAkB;CAC3C;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACD,CAAC;AAEF,SAAS,eAAe,UAAiC;AACvD,KAAI,CAAC,SAAU,QAAO;CACtB,MAAM,aAAa,SAAS,aAAa;AACzC,QAAO,eAAe,IAAI,WAAW,GAAG,aAAa;;AAGvD,SAAS,cAAc,OAAe,MAAc;AAClD,KAAI,SAAS,EAAG,QAAO,oBAAC,gBAAI,OAAU;AACtC,KAAI,UAAU,EAAG,QAAO,oBAAC,gBAAI,OAAU;AACvC,QAAO,oBAAC,gBAAI,OAAU;;AAGxB,SAAgB,oBAAoB,EAAE,WAAgC;CACpE,MAAM,SAAS,kBAAkB,QAAQ;AAEzC,KAAI,CAAC,OAAO,OACV,QAAO,oBAAC,mBAAM,oCAAuC;AAGvD,QACE,oBAAC;EAAO,KAAI;YACT,OAAO,KAAK,OAAO,UAAU;AAC5B,WAAQ,MAAM,MAAd;IACE,KAAK,UACH,QACE,oBAAC,oBACE,cAAc,MAAM,OAAO,MAAM,KAAK,IAD5B,MAEJ;IAEb,KAAK,YACH,QAAO,oBAAC,eAAe,MAAM,QAAd,MAAuB;IACxC,KAAK,QACH,QAAO,oBAAC,wBAAwB,MAAM,QAAd,MAAgC;IAC1D,KAAK,OACH,QACE,oBAAC;KAEC,UAAU,eAAe,MAAM,SAAS;KACxC,MAAM,MAAM;OAFP,MAGL;IAEN,KAAK,OACH,QACE,oBAAC;KAAmB,KAAI;eACrB,MAAM,MAAM,KAAK,MAAM,cACtB,qBAAC;MAAuB,KAAI;MAAK,OAAM;iBACrC,oBAAC,mBAAO,MAAM,UAAU,GAAG,YAAY,EAAE,KAAK,MAAY,EAC1D,oBAAC;OAAE,WAAU;iBAAmB;QAAS;QAF9B,UAGJ,CACT;OANS,MAOJ;IAEb,QACE,QAAO;;IAEX;GACK"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"DocsReferenceContent.js","names":[],"sources":["../../../../src/components/docs/reference/DocsReferenceContent.tsx"],"sourcesContent":["'use client';\n\nimport { DataViewRenderer } from '@contractspec/lib.design-system';\nimport { VStack } from '@contractspec/lib.ui-kit-web/ui/stack';\nimport { ContractReferenceDataView } from '@contractspec/lib.contracts/docs';\nimport type { DocsIndexEntry } from '../generated/docs-index.generated';\nimport { DocsMarkdownContent } from './DocsMarkdownContent';\n\ninterface DocsReferenceContentProps {\n entry: DocsIndexEntry;\n content: string;\n}\n\nfunction extractMeta(content: string, label: string) {\n const match = content.match(new RegExp(`- \\\\*\\\\*${label}\\\\*\\\\*: (.+)`, 'i'));\n return match?.[1]?.trim();\n}\n\nfunction cleanSummary(summary?: string) {\n if (!summary) return undefined;\n return summary\n .replace(/<!--.*?-->/g, '')\n .replace(/[ \\t]+/g, ' ')\n .replace(/\\n{3,}/g, '\\n\\n')\n .trim();\n}\n\nexport function DocsReferenceContent({\n entry,\n content,\n}: DocsReferenceContentProps) {\n const summary = cleanSummary(entry.summary);\n const type = extractMeta(content, 'Type');\n const version = extractMeta(content, 'Version') ?? entry.version;\n const tags = extractMeta(content, 'Tags')\n ?.split(',')\n .map((tag) => tag.trim())\n .filter(Boolean);\n const owners = extractMeta(content, 'Owners')\n ?.split(',')\n .map((owner) => owner.trim())\n .filter(Boolean);\n const stability = extractMeta(content, 'Stability') ?? entry.visibility;\n\n const referenceItem = {\n reference: {\n key: entry.title ?? entry.id,\n version,\n type,\n title: entry.title ?? entry.id,\n description: summary,\n tags: tags ?? entry.tags,\n owners: owners ?? entry.owners,\n stability,\n },\n };\n\n const detailSpec = {\n ...ContractReferenceDataView,\n meta: {\n ...ContractReferenceDataView.meta,\n title: entry.title ?? ContractReferenceDataView.meta.title,\n description: summary ?? ContractReferenceDataView.meta.description,\n },\n };\n\n return (\n <VStack gap=\"xl\">\n <DataViewRenderer spec={detailSpec} item={referenceItem} />\n <DocsMarkdownContent content={content} />\n </VStack>\n );\n}\n"],"mappings":";;;;;;;;;AAaA,SAAS,YAAY,SAAiB,OAAe;AAEnD,QADc,QAAQ,MAAM,IAAI,OAAO,WAAW,MAAM,eAAe,IAAI,CAAC,GAC7D,IAAI,MAAM;;AAG3B,SAAS,aAAa,SAAkB;AACtC,KAAI,CAAC,QAAS,QAAO;AACrB,QAAO,QACJ,QAAQ,eAAe,GAAG,CAC1B,QAAQ,WAAW,IAAI,CACvB,QAAQ,WAAW,OAAO,CAC1B,MAAM;;AAGX,SAAgB,qBAAqB,EACnC,OACA,WAC4B;CAC5B,MAAM,UAAU,aAAa,MAAM,QAAQ;CAC3C,MAAM,OAAO,YAAY,SAAS,OAAO;CACzC,MAAM,UAAU,YAAY,SAAS,UAAU,IAAI,MAAM;CACzD,MAAM,OAAO,YAAY,SAAS,OAAO,EACrC,MAAM,IAAI,CACX,KAAK,QAAQ,IAAI,MAAM,CAAC,CACxB,OAAO,QAAQ;CAClB,MAAM,SAAS,YAAY,SAAS,SAAS,EACzC,MAAM,IAAI,CACX,KAAK,UAAU,MAAM,MAAM,CAAC,CAC5B,OAAO,QAAQ;CAClB,MAAM,YAAY,YAAY,SAAS,YAAY,IAAI,MAAM;CAE7D,MAAM,gBAAgB,EACpB,WAAW;EACT,KAAK,MAAM,SAAS,MAAM;EAC1B;EACA;EACA,OAAO,MAAM,SAAS,MAAM;EAC5B,aAAa;EACb,MAAM,QAAQ,MAAM;EACpB,QAAQ,UAAU,MAAM;EACxB;EACD,EACF;AAWD,QACE,qBAAC;EAAO,KAAI;aACV,oBAAC;GAAiB,MAXH;IACjB,GAAG;IACH,MAAM;KACJ,GAAG,0BAA0B;KAC7B,OAAO,MAAM,SAAS,0BAA0B,KAAK;KACrD,aAAa,WAAW,0BAA0B,KAAK;KACxD;IACF;GAIuC,MAAM;IAAiB,EAC3D,oBAAC,uBAA6B,UAAW;GAClC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"DocsReferenceIndexClient.js","names":[],"sources":["../../../../src/components/docs/reference/DocsReferenceIndexClient.tsx"],"sourcesContent":["'use client';\n\nimport { useMemo, useState } from 'react';\nimport {\n DataViewList,\n formRenderer,\n StatusChip,\n} from '@contractspec/lib.design-system';\nimport { VStack, HStack } from '@contractspec/lib.ui-kit-web/ui/stack';\nimport { H1, Muted } from '@contractspec/lib.ui-kit-web/ui/typography';\nimport {\n DocsIndexDataView,\n DocsSearchForm,\n} from '@contractspec/lib.contracts/docs';\nimport type { DocsIndexEntry } from '../generated/docs-index.generated';\n\ninterface Filters {\n query?: string;\n visibility?: string;\n kind?: string;\n}\n\ninterface DocsReferenceIndexClientProps {\n entries: readonly DocsIndexEntry[];\n}\n\nfunction cleanSummary(summary?: string) {\n if (!summary) return undefined;\n return summary\n .replace(/<!--.*?-->/g, '')\n .replace(/[ \\t]+/g, ' ')\n .replace(/\\n{3,}/g, '\\n\\n')\n .trim();\n}\n\nfunction normalizeEntry(entry: DocsIndexEntry): DocsIndexEntry {\n const summary = cleanSummary(entry.summary);\n const kind =\n entry.kind ?? (entry.source === 'generated' ? 'reference' : undefined);\n const visibility =\n entry.visibility ?? (entry.source === 'generated' ? 'public' : undefined);\n\n return {\n ...entry,\n summary,\n kind,\n visibility,\n };\n}\n\nfunction matchesQuery(entry: DocsIndexEntry, query: string) {\n if (!query) return true;\n const haystack = [entry.title, entry.summary, entry.id, ...(entry.tags ?? [])]\n .filter(Boolean)\n .join(' ')\n .toLowerCase();\n return haystack.includes(query.toLowerCase());\n}\n\nexport function DocsReferenceIndexClient({\n entries,\n}: DocsReferenceIndexClientProps) {\n const [filters, setFilters] = useState<Filters>({});\n\n const normalizedEntries = useMemo(\n () => entries.map(normalizeEntry),\n [entries]\n );\n\n const filteredEntries = useMemo(() => {\n const query = filters.query?.trim() ?? '';\n return normalizedEntries.filter((entry) => {\n if (filters.kind && entry.kind !== filters.kind) return false;\n if (filters.visibility && entry.visibility !== filters.visibility)\n return false;\n return matchesQuery(entry, query);\n });\n }, [filters, normalizedEntries]);\n\n const searchForm = formRenderer.render(DocsSearchForm, {\n defaultValues: {\n query: filters.query ?? '',\n visibility: filters.visibility ?? '',\n kind: filters.kind ?? '',\n },\n overrides: {\n onSubmitOverride: (values: unknown) => {\n const submitted = values as Filters;\n setFilters({\n query: submitted.query ?? '',\n visibility: submitted.visibility ?? '',\n kind: submitted.kind ?? '',\n });\n },\n },\n });\n\n return (\n <VStack gap=\"xl\">\n <VStack gap=\"sm\">\n <H1>Contract Reference</H1>\n <Muted>\n Auto-generated reference docs for operations, events, forms, data\n views, and presentations.\n </Muted>\n </VStack>\n\n <VStack gap=\"sm\" className=\"max-w-2xl\">\n {searchForm}\n </VStack>\n\n <DataViewList\n spec={DocsIndexDataView}\n items={filteredEntries}\n emptyState={<Muted>No reference docs match your filters.</Muted>}\n onSelect={(entry) => {\n if (entry.route) {\n window.location.assign(entry.route);\n }\n }}\n renderActions={(entry) => {\n return (\n <HStack gap=\"xs\" justify=\"end\">\n {entry.kind ? <StatusChip size=\"sm\" label={entry.kind} /> : null}\n {entry.visibility ? (\n <StatusChip size=\"sm\" label={entry.visibility} />\n ) : null}\n {entry.version ? (\n <StatusChip size=\"sm\" label={`v${entry.version}`} />\n ) : null}\n </HStack>\n );\n }}\n />\n </VStack>\n );\n}\n"],"mappings":";;;;;;;;;;AA0BA,SAAS,aAAa,SAAkB;AACtC,KAAI,CAAC,QAAS,QAAO;AACrB,QAAO,QACJ,QAAQ,eAAe,GAAG,CAC1B,QAAQ,WAAW,IAAI,CACvB,QAAQ,WAAW,OAAO,CAC1B,MAAM;;AAGX,SAAS,eAAe,OAAuC;CAC7D,MAAM,UAAU,aAAa,MAAM,QAAQ;CAC3C,MAAM,OACJ,MAAM,SAAS,MAAM,WAAW,cAAc,cAAc;CAC9D,MAAM,aACJ,MAAM,eAAe,MAAM,WAAW,cAAc,WAAW;AAEjE,QAAO;EACL,GAAG;EACH;EACA;EACA;EACD;;AAGH,SAAS,aAAa,OAAuB,OAAe;AAC1D,KAAI,CAAC,MAAO,QAAO;AAKnB,QAJiB;EAAC,MAAM;EAAO,MAAM;EAAS,MAAM;EAAI,GAAI,MAAM,QAAQ,EAAE;EAAE,CAC3E,OAAO,QAAQ,CACf,KAAK,IAAI,CACT,aAAa,CACA,SAAS,MAAM,aAAa,CAAC;;AAG/C,SAAgB,yBAAyB,EACvC,WACgC;CAChC,MAAM,CAAC,SAAS,cAAc,SAAkB,EAAE,CAAC;CAEnD,MAAM,oBAAoB,cAClB,QAAQ,IAAI,eAAe,EACjC,CAAC,QAAQ,CACV;CAED,MAAM,kBAAkB,cAAc;EACpC,MAAM,QAAQ,QAAQ,OAAO,MAAM,IAAI;AACvC,SAAO,kBAAkB,QAAQ,UAAU;AACzC,OAAI,QAAQ,QAAQ,MAAM,SAAS,QAAQ,KAAM,QAAO;AACxD,OAAI,QAAQ,cAAc,MAAM,eAAe,QAAQ,WACrD,QAAO;AACT,UAAO,aAAa,OAAO,MAAM;IACjC;IACD,CAAC,SAAS,kBAAkB,CAAC;CAEhC,MAAM,aAAa,aAAa,OAAO,gBAAgB;EACrD,eAAe;GACb,OAAO,QAAQ,SAAS;GACxB,YAAY,QAAQ,cAAc;GAClC,MAAM,QAAQ,QAAQ;GACvB;EACD,WAAW,EACT,mBAAmB,WAAoB;GACrC,MAAM,YAAY;AAClB,cAAW;IACT,OAAO,UAAU,SAAS;IAC1B,YAAY,UAAU,cAAc;IACpC,MAAM,UAAU,QAAQ;IACzB,CAAC;KAEL;EACF,CAAC;AAEF,QACE,qBAAC;EAAO,KAAI;;GACV,qBAAC;IAAO,KAAI;eACV,oBAAC,gBAAG,uBAAuB,EAC3B,oBAAC,mBAAM,gGAGC;KACD;GAET,oBAAC;IAAO,KAAI;IAAK,WAAU;cACxB;KACM;GAET,oBAAC;IACC,MAAM;IACN,OAAO;IACP,YAAY,oBAAC,mBAAM,0CAA6C;IAChE,WAAW,UAAU;AACnB,SAAI,MAAM,MACR,QAAO,SAAS,OAAO,MAAM,MAAM;;IAGvC,gBAAgB,UAAU;AACxB,YACE,qBAAC;MAAO,KAAI;MAAK,SAAQ;;OACtB,MAAM,OAAO,oBAAC;QAAW,MAAK;QAAK,OAAO,MAAM;SAAQ,GAAG;OAC3D,MAAM,aACL,oBAAC;QAAW,MAAK;QAAK,OAAO,MAAM;SAAc,GAC/C;OACH,MAAM,UACL,oBAAC;QAAW,MAAK;QAAK,OAAO,IAAI,MAAM;SAAa,GAClD;;OACG;;KAGb;;GACK"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"DocsReferenceIndexPage.js","names":[],"sources":["../../../../src/components/docs/reference/DocsReferenceIndexPage.tsx"],"sourcesContent":["import { listGeneratedDocs } from '../generated/loader';\nimport { DocsReferenceIndexClient } from './DocsReferenceIndexClient';\n\nexport async function DocsReferenceIndexPage() {\n const entries = await listGeneratedDocs();\n return <DocsReferenceIndexClient entries={entries} />;\n}\n"],"mappings":";;;;;AAGA,eAAsB,yBAAyB;AAE7C,QAAO,oBAAC,4BAAyB,SADjB,MAAM,mBAAmB,GACY"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"DocsReferencePage.js","names":[],"sources":["../../../../src/components/docs/reference/DocsReferencePage.tsx"],"sourcesContent":["import type { DocsIndexEntry } from '../generated/docs-index.generated';\nimport { DocsReferenceContent } from './DocsReferenceContent';\n\ninterface DocsReferencePageProps {\n entry: DocsIndexEntry;\n content: string;\n}\n\nexport function DocsReferencePage({ entry, content }: DocsReferencePageProps) {\n return <DocsReferenceContent entry={entry} content={content} />;\n}\n"],"mappings":";;;;AAQA,SAAgB,kBAAkB,EAAE,OAAO,WAAmC;AAC5E,QAAO,oBAAC;EAA4B;EAAgB;GAAW"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"docsMarkdownParser.js","names":[],"sources":["../../../../src/components/docs/reference/docsMarkdownParser.ts"],"sourcesContent":["export type DocsMarkdownBlock =\n | { type: 'heading'; level: number; text: string }\n | { type: 'paragraph'; text: string }\n | { type: 'list'; ordered: boolean; items: string[] }\n | { type: 'code'; language?: string; code: string }\n | { type: 'quote'; text: string };\nconst METADATA_SECTION = /^##\\s+Metadata[\\s\\S]*?(?=^##\\s|^#\\s|Z)/m;\nfunction stripMetadata(content: string) {\n const withoutTitle = content.replace(/^#\\s+.*\\n+/m, '');\n return withoutTitle.replace(METADATA_SECTION, '');\n}\nfunction isBlockStart(line: string) {\n return (\n /^#{1,4}\\s+/.test(line) ||\n /^```/.test(line) ||\n /^\\s*[-*]\\s+/.test(line) ||\n /^\\s*\\d+\\.\\s+/.test(line) ||\n /^>\\s+/.test(line)\n );\n}\nexport function parseDocsMarkdown(content: string): DocsMarkdownBlock[] {\n const lines = stripMetadata(content).split(/\\r?\\n/);\n const blocks: DocsMarkdownBlock[] = [];\n let i = 0;\n while (i < lines.length) {\n const line = lines[i] ?? '';\n if (line.startsWith('<!-- @generated')) {\n i += 1;\n continue;\n }\n\n const trimmed = line.trim();\n if (!trimmed) {\n i += 1;\n continue;\n }\n if (trimmed.startsWith('```')) {\n const language = trimmed.slice(3).trim();\n const codeLines: string[] = [];\n i += 1;\n while (i < lines.length && !(lines[i] ?? '').trim().startsWith('```')) {\n codeLines.push(lines[i] ?? '');\n i += 1;\n }\n i += 1;\n blocks.push({\n type: 'code',\n language: language || 'text',\n code: codeLines.join('\\n'),\n });\n continue;\n }\n if (/^#{1,4}\\s+/.test(trimmed)) {\n const level = trimmed.match(/^#{1,4}/)?.[0].length ?? 2;\n blocks.push({\n type: 'heading',\n level,\n text: trimmed.replace(/^#{1,4}\\s+/, ''),\n });\n i += 1;\n continue;\n }\n if (/^>\\s+/.test(trimmed)) {\n const quoteLines: string[] = [];\n while (i < lines.length && /^>\\s+/.test((lines[i] ?? '').trim())) {\n quoteLines.push((lines[i] ?? '').trim().replace(/^>\\s+/, ''));\n i += 1;\n }\n blocks.push({ type: 'quote', text: quoteLines.join(' ') });\n continue;\n }\n if (/^[-*]\\s+/.test(trimmed) || /^\\d+\\.\\s+/.test(trimmed)) {\n const ordered = /^\\d+\\.\\s+/.test(trimmed);\n const items: string[] = [];\n while (i < lines.length && isBlockStart((lines[i] ?? '').trim())) {\n const itemLine = (lines[i] ?? '').trim();\n if (ordered && /^\\d+\\.\\s+/.test(itemLine)) {\n items.push(itemLine.replace(/^\\d+\\.\\s+/, ''));\n } else if (!ordered && /^[-*]\\s+/.test(itemLine)) {\n items.push(itemLine.replace(/^[-*]\\s+/, ''));\n } else {\n break;\n }\n i += 1;\n }\n blocks.push({ type: 'list', ordered, items });\n continue;\n }\n const paragraphLines: string[] = [];\n while (i < lines.length && !isBlockStart((lines[i] ?? '').trim())) {\n const paragraphLine = (lines[i] ?? '').trim();\n if (!paragraphLine) break;\n paragraphLines.push(paragraphLine);\n i += 1;\n }\n blocks.push({ type: 'paragraph', text: paragraphLines.join(' ') });\n }\n return blocks;\n}\n"],"mappings":";AAMA,MAAM,mBAAmB;AACzB,SAAS,cAAc,SAAiB;AAEtC,QADqB,QAAQ,QAAQ,eAAe,GAAG,CACnC,QAAQ,kBAAkB,GAAG;;AAEnD,SAAS,aAAa,MAAc;AAClC,QACE,aAAa,KAAK,KAAK,IACvB,OAAO,KAAK,KAAK,IACjB,cAAc,KAAK,KAAK,IACxB,eAAe,KAAK,KAAK,IACzB,QAAQ,KAAK,KAAK;;AAGtB,SAAgB,kBAAkB,SAAsC;CACtE,MAAM,QAAQ,cAAc,QAAQ,CAAC,MAAM,QAAQ;CACnD,MAAM,SAA8B,EAAE;CACtC,IAAI,IAAI;AACR,QAAO,IAAI,MAAM,QAAQ;EACvB,MAAM,OAAO,MAAM,MAAM;AACzB,MAAI,KAAK,WAAW,kBAAkB,EAAE;AACtC,QAAK;AACL;;EAGF,MAAM,UAAU,KAAK,MAAM;AAC3B,MAAI,CAAC,SAAS;AACZ,QAAK;AACL;;AAEF,MAAI,QAAQ,WAAW,MAAM,EAAE;GAC7B,MAAM,WAAW,QAAQ,MAAM,EAAE,CAAC,MAAM;GACxC,MAAM,YAAsB,EAAE;AAC9B,QAAK;AACL,UAAO,IAAI,MAAM,UAAU,EAAE,MAAM,MAAM,IAAI,MAAM,CAAC,WAAW,MAAM,EAAE;AACrE,cAAU,KAAK,MAAM,MAAM,GAAG;AAC9B,SAAK;;AAEP,QAAK;AACL,UAAO,KAAK;IACV,MAAM;IACN,UAAU,YAAY;IACtB,MAAM,UAAU,KAAK,KAAK;IAC3B,CAAC;AACF;;AAEF,MAAI,aAAa,KAAK,QAAQ,EAAE;GAC9B,MAAM,QAAQ,QAAQ,MAAM,UAAU,GAAG,GAAG,UAAU;AACtD,UAAO,KAAK;IACV,MAAM;IACN;IACA,MAAM,QAAQ,QAAQ,cAAc,GAAG;IACxC,CAAC;AACF,QAAK;AACL;;AAEF,MAAI,QAAQ,KAAK,QAAQ,EAAE;GACzB,MAAM,aAAuB,EAAE;AAC/B,UAAO,IAAI,MAAM,UAAU,QAAQ,MAAM,MAAM,MAAM,IAAI,MAAM,CAAC,EAAE;AAChE,eAAW,MAAM,MAAM,MAAM,IAAI,MAAM,CAAC,QAAQ,SAAS,GAAG,CAAC;AAC7D,SAAK;;AAEP,UAAO,KAAK;IAAE,MAAM;IAAS,MAAM,WAAW,KAAK,IAAI;IAAE,CAAC;AAC1D;;AAEF,MAAI,WAAW,KAAK,QAAQ,IAAI,YAAY,KAAK,QAAQ,EAAE;GACzD,MAAM,UAAU,YAAY,KAAK,QAAQ;GACzC,MAAM,QAAkB,EAAE;AAC1B,UAAO,IAAI,MAAM,UAAU,cAAc,MAAM,MAAM,IAAI,MAAM,CAAC,EAAE;IAChE,MAAM,YAAY,MAAM,MAAM,IAAI,MAAM;AACxC,QAAI,WAAW,YAAY,KAAK,SAAS,CACvC,OAAM,KAAK,SAAS,QAAQ,aAAa,GAAG,CAAC;aACpC,CAAC,WAAW,WAAW,KAAK,SAAS,CAC9C,OAAM,KAAK,SAAS,QAAQ,YAAY,GAAG,CAAC;QAE5C;AAEF,SAAK;;AAEP,UAAO,KAAK;IAAE,MAAM;IAAQ;IAAS;IAAO,CAAC;AAC7C;;EAEF,MAAM,iBAA2B,EAAE;AACnC,SAAO,IAAI,MAAM,UAAU,CAAC,cAAc,MAAM,MAAM,IAAI,MAAM,CAAC,EAAE;GACjE,MAAM,iBAAiB,MAAM,MAAM,IAAI,MAAM;AAC7C,OAAI,CAAC,cAAe;AACpB,kBAAe,KAAK,cAAc;AAClC,QAAK;;AAEP,SAAO,KAAK;GAAE,MAAM;GAAa,MAAM,eAAe,KAAK,IAAI;GAAE,CAAC;;AAEpE,QAAO"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SafetyAuditingPage.js","names":[],"sources":["../../../../src/components/docs/safety/SafetyAuditingPage.tsx"],"sourcesContent":["import Link from '@contractspec/lib.ui-link';\nimport { ChevronRight } from 'lucide-react';\n\n// export const metadata = {\n// title: 'Audit Logs: ContractSpec Docs',\n// description:\n// 'Learn how ContractSpec captures and stores audit logs for accountability, security, compliance, and debugging.',\n// };\n\nexport function SafetyAuditingPage() {\n return (\n <div className=\"space-y-8\">\n <div className=\"space-y-4\">\n <h1 className=\"text-4xl font-bold\">Audit Logs</h1>\n <p className=\"text-muted-foreground\">\n An <strong>audit log</strong> (also called an audit trail) is a\n chronological record of system activities. According to{' '}\n <a\n href=\"https://www.sumologic.com/glossary/audit-log/\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"text-violet-400 hover:text-violet-300\"\n >\n Sumo Logic\n </a>\n , audit logs \"provide a detailed record of events and changes within a\n system, enabling organizations to track user actions, system changes,\n and access to sensitive data.\"\n </p>\n </div>\n\n <div className=\"space-y-4\">\n <h2 className=\"text-2xl font-bold\">Why audit logs matter</h2>\n <div className=\"space-y-3\">\n <div>\n <h3 className=\"text-lg font-semibold\">Accountability</h3>\n <p className=\"text-muted-foreground\">\n Audit logs answer the question \"who did what, when?\" This is\n essential for holding users and administrators accountable for\n their actions. If data is deleted or modified, the audit log shows\n exactly who made the change.\n </p>\n </div>\n <div>\n <h3 className=\"text-lg font-semibold\">Security</h3>\n <p className=\"text-muted-foreground\">\n Audit logs help detect and investigate security incidents. For\n example, if an attacker gains unauthorized access, the logs reveal\n which resources they accessed and what actions they performed.\n This information is critical for incident response and forensics.\n </p>\n </div>\n <div>\n <h3 className=\"text-lg font-semibold\">Compliance</h3>\n <p className=\"text-muted-foreground\">\n Many regulations (GDPR, HIPAA, SOC 2, PCI DSS) require\n organizations to maintain audit logs. These logs must be\n tamper-evident, retained for a specified period, and available for\n inspection by auditors.\n </p>\n </div>\n <div>\n <h3 className=\"text-lg font-semibold\">Debugging</h3>\n <p className=\"text-muted-foreground\">\n When something goes wrong in production, audit logs provide a\n detailed timeline of events leading up to the failure. This makes\n it much easier to diagnose and fix issues.\n </p>\n </div>\n </div>\n </div>\n\n <div className=\"space-y-4\">\n <h2 className=\"text-2xl font-bold\">What ContractSpec logs</h2>\n <p className=\"text-muted-foreground\">\n ContractSpec automatically logs every significant operation,\n including:\n </p>\n <ul className=\"text-muted-foreground list-inside list-disc space-y-2\">\n <li>\n <strong>API calls</strong> – Every invocation of a capability,\n including inputs, outputs, and the user who made the call.\n </li>\n <li>\n <strong>Policy decisions</strong> – Every decision made by the{' '}\n <Link\n href=\"/docs/safety/pdp\"\n className=\"text-violet-400 hover:text-violet-300\"\n >\n Policy Decision Point\n </Link>\n , including the rule that matched and the reason for the decision.\n </li>\n <li>\n <strong>Data access</strong> – Every query to a data view, including\n which fields were accessed and whether any were redacted.\n </li>\n <li>\n <strong>Workflow execution</strong> – Every step in a workflow,\n including retries, compensations, and failures.\n </li>\n <li>\n <strong>Administrative actions</strong> – Spec deployments,\n configuration changes, user role assignments, and other privileged\n operations.\n </li>\n <li>\n <strong>Authentication events</strong> – Login attempts, password\n resets, and session expirations.\n </li>\n </ul>\n </div>\n\n <div className=\"space-y-4\">\n <h2 className=\"text-2xl font-bold\">Audit log format</h2>\n <p className=\"text-muted-foreground\">\n Each audit log entry is a structured JSON object containing:\n </p>\n <div className=\"bg-background/50 border-border text-muted-foreground overflow-x-auto rounded-lg border p-4 font-mono text-sm\">\n <pre>{`{\n \"timestamp\": \"2025-11-13T14:32:15.123Z\",\n \"eventId\": \"evt_abc123\",\n \"eventType\": \"capability.invoked\",\n \"actor\": {\n \"userId\": \"user_xyz789\",\n \"role\": \"admin\",\n \"ipAddress\": \"203.0.113.42\"\n },\n \"resource\": {\n \"type\": \"capability\",\n \"id\": \"transferFunds\",\n \"version\": \"1.2.0\"\n },\n \"action\": \"execute\",\n \"result\": \"success\",\n \"metadata\": {\n \"inputs\": {\n \"recipient\": \"user_def456\",\n \"amount\": 100.00\n },\n \"outputs\": {\n \"transactionId\": \"txn_ghi789\",\n \"timestamp\": \"2025-11-13T14:32:15.456Z\"\n }\n },\n \"policyDecision\": {\n \"decision\": \"PERMIT\",\n \"ruleId\": \"allow-admin-transfers\",\n \"reason\": \"User has admin role\"\n }\n}`}</pre>\n </div>\n </div>\n\n <div className=\"space-y-4\">\n <h2 className=\"text-2xl font-bold\">Storage and retention</h2>\n <p className=\"text-muted-foreground\">\n Audit logs are stored in a tamper-evident append-only log. Once\n written, entries cannot be modified or deleted. This ensures the\n integrity of the audit trail.\n </p>\n <p className=\"text-muted-foreground\">\n ContractSpec supports multiple storage backends:\n </p>\n <ul className=\"text-muted-foreground list-inside list-disc space-y-2\">\n <li>\n <strong>Local file system</strong> – For development and testing.\n </li>\n <li>\n <strong>Cloud object storage</strong> – S3, GCS, or Azure Blob\n Storage for production.\n </li>\n <li>\n <strong>SIEM integration</strong> – Forward logs to Splunk, Datadog,\n or other security information and event management systems.\n </li>\n </ul>\n <p className=\"text-muted-foreground\">\n You can configure retention policies to automatically archive or\n delete old logs after a specified period (e.g., 7 years for GDPR\n compliance).\n </p>\n </div>\n\n <div className=\"space-y-4\">\n <h2 className=\"text-2xl font-bold\">Querying audit logs</h2>\n <p className=\"text-muted-foreground\">\n ContractSpec provides a query API for searching audit logs. You can\n filter by:\n </p>\n <ul className=\"text-muted-foreground list-inside list-disc space-y-2\">\n <li>Time range</li>\n <li>Event type</li>\n <li>Actor (user ID, role, IP address)</li>\n <li>Resource (capability, data view, workflow)</li>\n <li>Result (success, failure, denied)</li>\n </ul>\n <p className=\"text-muted-foreground\">\n Example query: \"Show all failed login attempts from IP address\n 203.0.113.42 in the last 24 hours.\"\n </p>\n </div>\n\n <div className=\"space-y-4\">\n <h2 className=\"text-2xl font-bold\">Best practices</h2>\n <ul className=\"text-muted-foreground list-inside list-disc space-y-2\">\n <li>\n <strong>Review logs regularly</strong> – Set up alerts for\n suspicious activity (e.g., repeated failed login attempts,\n unauthorized access attempts).\n </li>\n <li>\n <strong>Protect log access</strong> – Only authorized personnel\n should be able to view audit logs. Use role-based access control to\n restrict access.\n </li>\n <li>\n <strong>Retain logs long enough</strong> – Check your compliance\n requirements and configure retention policies accordingly.\n </li>\n <li>\n <strong>Test log integrity</strong> – Periodically verify that logs\n have not been tampered with by checking cryptographic signatures.\n </li>\n </ul>\n </div>\n\n <div className=\"flex items-center gap-4 pt-4\">\n <Link href=\"/docs/safety/pdp\" className=\"btn-ghost\">\n Previous: Policy Decision Points\n </Link>\n <Link href=\"/docs/safety/migrations\" className=\"btn-primary\">\n Next: Migrations <ChevronRight size={16} />\n </Link>\n </div>\n </div>\n );\n}\n"],"mappings":";;;;;AASA,SAAgB,qBAAqB;AACnC,QACE,qBAAC;EAAI,WAAU;;GACb,qBAAC;IAAI,WAAU;eACb,oBAAC;KAAG,WAAU;eAAqB;MAAe,EAClD,qBAAC;KAAE,WAAU;;MAAwB;MAChC,oBAAC,sBAAO,cAAkB;;MAC2B;MACxD,oBAAC;OACC,MAAK;OACL,QAAO;OACP,KAAI;OACJ,WAAU;iBACX;QAEG;;;MAIF;KACA;GAEN,qBAAC;IAAI,WAAU;eACb,oBAAC;KAAG,WAAU;eAAqB;MAA0B,EAC7D,qBAAC;KAAI,WAAU;;MACb,qBAAC,oBACC,oBAAC;OAAG,WAAU;iBAAwB;QAAmB,EACzD,oBAAC;OAAE,WAAU;iBAAwB;QAKjC,IACA;MACN,qBAAC,oBACC,oBAAC;OAAG,WAAU;iBAAwB;QAAa,EACnD,oBAAC;OAAE,WAAU;iBAAwB;QAKjC,IACA;MACN,qBAAC,oBACC,oBAAC;OAAG,WAAU;iBAAwB;QAAe,EACrD,oBAAC;OAAE,WAAU;iBAAwB;QAKjC,IACA;MACN,qBAAC,oBACC,oBAAC;OAAG,WAAU;iBAAwB;QAAc,EACpD,oBAAC;OAAE,WAAU;iBAAwB;QAIjC,IACA;;MACF;KACF;GAEN,qBAAC;IAAI,WAAU;;KACb,oBAAC;MAAG,WAAU;gBAAqB;OAA2B;KAC9D,oBAAC;MAAE,WAAU;gBAAwB;OAGjC;KACJ,qBAAC;MAAG,WAAU;;OACZ,qBAAC,mBACC,oBAAC,sBAAO,cAAkB,uGAEvB;OACL,qBAAC;QACC,oBAAC,sBAAO,qBAAyB;;QAA8B;QAC/D,oBAAC;SACC,MAAK;SACL,WAAU;mBACX;UAEM;;WAEJ;OACL,qBAAC,mBACC,oBAAC,sBAAO,gBAAoB,0GAEzB;OACL,qBAAC,mBACC,oBAAC,sBAAO,uBAA2B,oFAEhC;OACL,qBAAC,mBACC,oBAAC,sBAAO,2BAA+B,2GAGpC;OACL,qBAAC,mBACC,oBAAC,sBAAO,0BAA8B,oEAEnC;;OACF;;KACD;GAEN,qBAAC;IAAI,WAAU;;KACb,oBAAC;MAAG,WAAU;gBAAqB;OAAqB;KACxD,oBAAC;MAAE,WAAU;gBAAwB;OAEjC;KACJ,oBAAC;MAAI,WAAU;gBACb,oBAAC,mBAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KA+BP;OACK;;KACF;GAEN,qBAAC;IAAI,WAAU;;KACb,oBAAC;MAAG,WAAU;gBAAqB;OAA0B;KAC7D,oBAAC;MAAE,WAAU;gBAAwB;OAIjC;KACJ,oBAAC;MAAE,WAAU;gBAAwB;OAEjC;KACJ,qBAAC;MAAG,WAAU;;OACZ,qBAAC,mBACC,oBAAC,sBAAO,sBAA0B,uCAC/B;OACL,qBAAC,mBACC,oBAAC,sBAAO,yBAA6B,yDAElC;OACL,qBAAC,mBACC,oBAAC,sBAAO,qBAAyB,uGAE9B;;OACF;KACL,oBAAC;MAAE,WAAU;gBAAwB;OAIjC;;KACA;GAEN,qBAAC;IAAI,WAAU;;KACb,oBAAC;MAAG,WAAU;gBAAqB;OAAwB;KAC3D,oBAAC;MAAE,WAAU;gBAAwB;OAGjC;KACJ,qBAAC;MAAG,WAAU;;OACZ,oBAAC,kBAAG,eAAe;OACnB,oBAAC,kBAAG,eAAe;OACnB,oBAAC,kBAAG,sCAAsC;OAC1C,oBAAC,kBAAG,+CAA+C;OACnD,oBAAC,kBAAG,sCAAsC;;OACvC;KACL,oBAAC;MAAE,WAAU;gBAAwB;OAGjC;;KACA;GAEN,qBAAC;IAAI,WAAU;eACb,oBAAC;KAAG,WAAU;eAAqB;MAAmB,EACtD,qBAAC;KAAG,WAAU;;MACZ,qBAAC,mBACC,oBAAC,sBAAO,0BAA8B,sHAGnC;MACL,qBAAC,mBACC,oBAAC,sBAAO,uBAA2B,yHAGhC;MACL,qBAAC,mBACC,oBAAC,sBAAO,4BAAgC,2FAErC;MACL,qBAAC,mBACC,oBAAC,sBAAO,uBAA2B,0GAEhC;;MACF;KACD;GAEN,qBAAC;IAAI,WAAU;eACb,oBAAC;KAAK,MAAK;KAAmB,WAAU;eAAY;MAE7C,EACP,qBAAC;KAAK,MAAK;KAA0B,WAAU;gBAAc,qBAC1C,oBAAC,gBAAa,MAAM,KAAM;MACtC;KACH;;GACF"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SafetyMigrationsPage.js","names":[],"sources":["../../../../src/components/docs/safety/SafetyMigrationsPage.tsx"],"sourcesContent":["import Link from '@contractspec/lib.ui-link';\nimport { ChevronRight } from 'lucide-react';\n\n// export const metadata = {\n// title: 'Migrations: ContractSpec Docs',\n// description:\n// 'Learn how to manage schema and data migrations safely with MigrationSpec in ContractSpec.',\n// };\n\nexport function SafetyMigrationsPage() {\n return (\n <div className=\"space-y-8\">\n <div className=\"space-y-4\">\n <h1 className=\"text-4xl font-bold\">Migrations</h1>\n <p className=\"text-muted-foreground\">\n A <strong>schema migration</strong> (also called a database migration)\n is a set of incremental, reversible changes to a database schema.\n According to{' '}\n <a\n href=\"https://en.wikipedia.org/wiki/Schema_migration\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"text-violet-400 hover:text-violet-300\"\n >\n Wikipedia\n </a>\n , schema migrations \"allow the database schema to evolve as the\n application's requirements change, while preserving existing data.\"\n </p>\n </div>\n\n <div className=\"space-y-4\">\n <h2 className=\"text-2xl font-bold\">Why migrations matter</h2>\n <p className=\"text-muted-foreground\">\n As your application evolves, you'll need to change your data\n model—adding new fields, renaming tables, changing data types, or\n restructuring relationships. Without a disciplined approach, these\n changes can lead to:\n </p>\n <ul className=\"text-muted-foreground list-inside list-disc space-y-2\">\n <li>Data loss or corruption</li>\n <li>Downtime during deployments</li>\n <li>\n Inconsistencies between environments (dev, staging, production)\n </li>\n <li>Difficulty rolling back failed changes</li>\n </ul>\n <p className=\"text-muted-foreground\">\n Migrations solve these problems by treating schema changes as\n versioned, tested, and reversible operations.\n </p>\n </div>\n\n <div className=\"space-y-4\">\n <h2 className=\"text-2xl font-bold\">How MigrationSpec works</h2>\n <p className=\"text-muted-foreground\">\n In ContractSpec, migrations are defined using{' '}\n <strong>MigrationSpec</strong>. Each migration has:\n </p>\n <ul className=\"text-muted-foreground list-inside list-disc space-y-2\">\n <li>\n <strong>Version</strong> – A unique identifier (e.g.,\n \"2025-11-13-001\") that determines the order of execution.\n </li>\n <li>\n <strong>Up function</strong> – The forward migration that applies\n the change (e.g., \"add column 'email_verified'\").\n </li>\n <li>\n <strong>Down function</strong> – The reverse migration that undoes\n the change (e.g., \"drop column 'email_verified'\").\n </li>\n <li>\n <strong>Dependencies</strong> – Other migrations that must run\n before this one.\n </li>\n <li>\n <strong>Validation</strong> – Optional checks to ensure the\n migration succeeded (e.g., \"verify all users have an email\n address\").\n </li>\n </ul>\n </div>\n\n <div className=\"space-y-4\">\n <h2 className=\"text-2xl font-bold\">Example MigrationSpec</h2>\n <p className=\"text-muted-foreground\">\n Here's a migration that adds an email verification field to the users\n table:\n </p>\n <div className=\"bg-background/50 border-border text-muted-foreground overflow-x-auto rounded-lg border p-4 font-mono text-sm\">\n <pre>{`migrationId: add-email-verified\nversion: 2025-11-13-001\ndependencies: []\n\nup:\n - sql: |\n ALTER TABLE users\n ADD COLUMN email_verified BOOLEAN DEFAULT FALSE NOT NULL;\n - sql: |\n CREATE INDEX idx_users_email_verified\n ON users(email_verified);\n\ndown:\n - sql: |\n DROP INDEX idx_users_email_verified;\n - sql: |\n ALTER TABLE users\n DROP COLUMN email_verified;\n\nvalidation:\n - sql: |\n SELECT COUNT(*) FROM users\n WHERE email_verified IS NULL;\n expectZeroRows: true`}</pre>\n </div>\n </div>\n\n <div className=\"space-y-4\">\n <h2 className=\"text-2xl font-bold\">Running migrations</h2>\n <p className=\"text-muted-foreground\">\n Migrations are applied automatically during deployment. The\n ContractSpec runtime:\n </p>\n <ol className=\"text-muted-foreground list-inside list-decimal space-y-2\">\n <li>\n Checks which migrations have already been applied (stored in a\n migrations table).\n </li>\n <li>Identifies new migrations that need to run.</li>\n <li>Executes them in order, respecting dependencies.</li>\n <li>Runs validation checks to ensure success.</li>\n <li>Records the migration as applied.</li>\n </ol>\n <p className=\"text-muted-foreground\">\n If a migration fails, the deployment is aborted, and the system\n remains in its previous state. You can then fix the migration and\n redeploy.\n </p>\n </div>\n\n <div className=\"space-y-4\">\n <h2 className=\"text-2xl font-bold\">Rolling back migrations</h2>\n <p className=\"text-muted-foreground\">\n If you need to roll back a deployment, ContractSpec automatically runs\n the <strong>down</strong> functions of any migrations that were\n applied. This restores the database to its previous state.\n </p>\n <p className=\"text-muted-foreground\">\n Note that rollbacks are not always possible—for example, if you've\n deleted a column, you cannot recover the data unless you have a\n backup. For destructive changes, it's best to use a multi-step\n migration:\n </p>\n <ol className=\"text-muted-foreground list-inside list-decimal space-y-2\">\n <li>Add the new column (reversible).</li>\n <li>\n Backfill data from the old column to the new column (reversible).\n </li>\n <li>Update application code to use the new column (reversible).</li>\n <li>\n Drop the old column (irreversible—only do this after confirming the\n new column works).\n </li>\n </ol>\n </div>\n\n <div className=\"space-y-4\">\n <h2 className=\"text-2xl font-bold\">Best practices</h2>\n <ul className=\"text-muted-foreground list-inside list-disc space-y-2\">\n <li>\n <strong>Test migrations locally</strong> – Run them against a copy\n of production data to catch issues before deploying.\n </li>\n <li>\n <strong>Keep migrations small</strong> – Each migration should do\n one thing. This makes them easier to understand and roll back.\n </li>\n <li>\n <strong>Write reversible migrations</strong> – Always provide a down\n function, even if you don't plan to roll back.\n </li>\n <li>\n <strong>Use transactions</strong> – Wrap migrations in database\n transactions so they either fully succeed or fully fail.\n </li>\n <li>\n <strong>Avoid destructive changes</strong> – Prefer additive changes\n (adding columns) over destructive ones (dropping columns). If you\n must delete data, archive it first.\n </li>\n <li>\n <strong>Version your migrations</strong> – Use timestamps or\n sequential numbers to ensure migrations run in the correct order.\n </li>\n <li>\n <strong>Document breaking changes</strong> – If a migration requires\n application code changes, note this in the migration description.\n </li>\n </ul>\n </div>\n\n <div className=\"space-y-4\">\n <h2 className=\"text-2xl font-bold\">Zero-downtime migrations</h2>\n <p className=\"text-muted-foreground\">\n Some migrations can cause downtime if not handled carefully. For\n example, adding a NOT NULL column to a large table can lock the table\n for minutes. To avoid this, use a multi-step approach:\n </p>\n <ol className=\"text-muted-foreground list-inside list-decimal space-y-2\">\n <li>Add the column as nullable.</li>\n <li>Backfill the column in batches (without locking the table).</li>\n <li>Add the NOT NULL constraint once all rows are populated.</li>\n </ol>\n <p className=\"text-muted-foreground\">\n ContractSpec's migration system supports this pattern by allowing you\n to split a logical change into multiple versioned migrations.\n </p>\n </div>\n\n <div className=\"flex items-center gap-4 pt-4\">\n <Link href=\"/docs/safety/auditing\" className=\"btn-ghost\">\n Previous: Audit Logs\n </Link>\n <Link href=\"/docs/advanced/renderers\" className=\"btn-primary\">\n Next: Advanced Topics <ChevronRight size={16} />\n </Link>\n </div>\n </div>\n );\n}\n"],"mappings":";;;;;AASA,SAAgB,uBAAuB;AACrC,QACE,qBAAC;EAAI,WAAU;;GACb,qBAAC;IAAI,WAAU;eACb,oBAAC;KAAG,WAAU;eAAqB;MAAe,EAClD,qBAAC;KAAE,WAAU;;MAAwB;MACjC,oBAAC,sBAAO,qBAAyB;;MAEtB;MACb,oBAAC;OACC,MAAK;OACL,QAAO;OACP,KAAI;OACJ,WAAU;iBACX;QAEG;;;MAGF;KACA;GAEN,qBAAC;IAAI,WAAU;;KACb,oBAAC;MAAG,WAAU;gBAAqB;OAA0B;KAC7D,oBAAC;MAAE,WAAU;gBAAwB;OAKjC;KACJ,qBAAC;MAAG,WAAU;;OACZ,oBAAC,kBAAG,4BAA4B;OAChC,oBAAC,kBAAG,gCAAgC;OACpC,oBAAC,kBAAG,oEAEC;OACL,oBAAC,kBAAG,2CAA2C;;OAC5C;KACL,oBAAC;MAAE,WAAU;gBAAwB;OAGjC;;KACA;GAEN,qBAAC;IAAI,WAAU;;KACb,oBAAC;MAAG,WAAU;gBAAqB;OAA4B;KAC/D,qBAAC;MAAE,WAAU;;OAAwB;OACW;OAC9C,oBAAC,sBAAO,kBAAsB;;;OAC5B;KACJ,qBAAC;MAAG,WAAU;;OACZ,qBAAC,mBACC,oBAAC,sBAAO,YAAgB,iGAErB;OACL,qBAAC,mBACC,oBAAC,sBAAO,gBAAoB,iGAEzB;OACL,qBAAC,mBACC,oBAAC,sBAAO,kBAAsB,iGAE3B;OACL,qBAAC,mBACC,oBAAC,sBAAO,iBAAqB,0DAE1B;OACL,qBAAC,mBACC,oBAAC,sBAAO,eAAmB,gHAGxB;;OACF;;KACD;GAEN,qBAAC;IAAI,WAAU;;KACb,oBAAC;MAAG,WAAU;gBAAqB;OAA0B;KAC7D,oBAAC;MAAE,WAAU;gBAAwB;OAGjC;KACJ,oBAAC;MAAI,WAAU;gBACb,oBAAC,mBAAK;;;;;;;;;;;;;;;;;;;;;;;4BAuBgB;OAClB;;KACF;GAEN,qBAAC;IAAI,WAAU;;KACb,oBAAC;MAAG,WAAU;gBAAqB;OAAuB;KAC1D,oBAAC;MAAE,WAAU;gBAAwB;OAGjC;KACJ,qBAAC;MAAG,WAAU;;OACZ,oBAAC,kBAAG,sFAGC;OACL,oBAAC,kBAAG,gDAAgD;OACpD,oBAAC,kBAAG,qDAAqD;OACzD,oBAAC,kBAAG,8CAA8C;OAClD,oBAAC,kBAAG,sCAAsC;;OACvC;KACL,oBAAC;MAAE,WAAU;gBAAwB;OAIjC;;KACA;GAEN,qBAAC;IAAI,WAAU;;KACb,oBAAC;MAAG,WAAU;gBAAqB;OAA4B;KAC/D,qBAAC;MAAE,WAAU;;OAAwB;OAE/B,oBAAC,sBAAO,SAAa;;;OAEvB;KACJ,oBAAC;MAAE,WAAU;gBAAwB;OAKjC;KACJ,qBAAC;MAAG,WAAU;;OACZ,oBAAC,kBAAG,qCAAqC;OACzC,oBAAC,kBAAG,sEAEC;OACL,oBAAC,kBAAG,gEAAgE;OACpE,oBAAC,kBAAG,2FAGC;;OACF;;KACD;GAEN,qBAAC;IAAI,WAAU;eACb,oBAAC;KAAG,WAAU;eAAqB;MAAmB,EACtD,qBAAC;KAAG,WAAU;;MACZ,qBAAC,mBACC,oBAAC,sBAAO,4BAAgC,uFAErC;MACL,qBAAC,mBACC,oBAAC,sBAAO,0BAA8B,kGAEnC;MACL,qBAAC,mBACC,oBAAC,sBAAO,gCAAoC,+EAEzC;MACL,qBAAC,mBACC,oBAAC,sBAAO,qBAAyB,+FAE9B;MACL,qBAAC,mBACC,oBAAC,sBAAO,8BAAkC,wIAGvC;MACL,qBAAC,mBACC,oBAAC,sBAAO,4BAAgC,8FAErC;MACL,qBAAC,mBACC,oBAAC,sBAAO,8BAAkC,oGAEvC;;MACF;KACD;GAEN,qBAAC;IAAI,WAAU;;KACb,oBAAC;MAAG,WAAU;gBAAqB;OAA6B;KAChE,oBAAC;MAAE,WAAU;gBAAwB;OAIjC;KACJ,qBAAC;MAAG,WAAU;;OACZ,oBAAC,kBAAG,gCAAgC;OACpC,oBAAC,kBAAG,gEAAgE;OACpE,oBAAC,kBAAG,6DAA6D;;OAC9D;KACL,oBAAC;MAAE,WAAU;gBAAwB;OAGjC;;KACA;GAEN,qBAAC;IAAI,WAAU;eACb,oBAAC;KAAK,MAAK;KAAwB,WAAU;eAAY;MAElD,EACP,qBAAC;KAAK,MAAK;KAA2B,WAAU;gBAAc,0BACtC,oBAAC,gBAAa,MAAM,KAAM;MAC3C;KACH;;GACF"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SafetyOverviewPage.js","names":[],"sources":["../../../../src/components/docs/safety/SafetyOverviewPage.tsx"],"sourcesContent":["import Link from '@contractspec/lib.ui-link';\nimport { ChevronRight } from 'lucide-react';\n\n// export const metadata = {\n// title: 'Safety Overview: ContractSpec Docs',\n// description:\n// \"Learn about ContractSpec's safety features: spec signing, policy decision points, audit logs, migrations, and more.\",\n// };\n\nexport function SafetyOverviewPage() {\n return (\n <div className=\"space-y-8\">\n <div className=\"space-y-4\">\n <h1 className=\"text-4xl font-bold\">Safety Overview</h1>\n <p className=\"text-muted-foreground\">\n ContractSpec is designed with <strong>safety by default</strong>.\n Every operation is governed by policies, every change is audited, and\n every deployment is reversible. This section covers the core safety\n mechanisms that protect your application and data.\n </p>\n </div>\n\n <div className=\"space-y-4\">\n <h2 className=\"text-2xl font-bold\">Core safety features</h2>\n <div className=\"space-y-6\">\n <div className=\"space-y-2\">\n <h3 className=\"text-xl font-semibold\">\n <Link\n href=\"/docs/safety/signing\"\n className=\"text-violet-400 hover:text-violet-300\"\n >\n Spec Signing\n </Link>\n </h3>\n <p className=\"text-muted-foreground\">\n All specifications are cryptographically signed before deployment.\n This ensures that only authorized changes reach production and\n that specs cannot be tampered with in transit or at rest.\n Signatures are verified at runtime, and unsigned specs are\n rejected.\n </p>\n </div>\n\n <div className=\"space-y-2\">\n <h3 className=\"text-xl font-semibold\">\n <Link\n href=\"/docs/safety/pdp\"\n className=\"text-violet-400 hover:text-violet-300\"\n >\n Policy Decision Points (PDP)\n </Link>\n </h3>\n <p className=\"text-muted-foreground\">\n Every API call, UI render, and data access passes through a\n centralized Policy Decision Point. The PDP evaluates\n attribute-based access control (ABAC) rules and PII policies to\n determine whether the operation is allowed. This ensures\n consistent enforcement across your entire application.\n </p>\n </div>\n\n <div className=\"space-y-2\">\n <h3 className=\"text-xl font-semibold\">\n <Link\n href=\"/docs/safety/auditing\"\n className=\"text-violet-400 hover:text-violet-300\"\n >\n Audit Logs\n </Link>\n </h3>\n <p className=\"text-muted-foreground\">\n ContractSpec automatically records every operation in\n tamper-evident audit logs. These logs capture who did what, when,\n and why—including policy decisions, data access, and\n administrative actions. Audit logs are essential for compliance,\n security investigations, and debugging.\n </p>\n </div>\n\n <div className=\"space-y-2\">\n <h3 className=\"text-xl font-semibold\">\n <Link\n href=\"/docs/safety/migrations\"\n className=\"text-violet-400 hover:text-violet-300\"\n >\n Migrations\n </Link>\n </h3>\n <p className=\"text-muted-foreground\">\n Schema and data migrations are managed through{' '}\n <strong>MigrationSpecs</strong>. Each migration is versioned,\n reversible, and tested before deployment. This allows you to\n evolve your application safely without downtime or data loss.\n </p>\n </div>\n\n <div className=\"space-y-2\">\n <h3 className=\"text-xl font-semibold\">Dark Launch & Rollback</h3>\n <p className=\"text-muted-foreground\">\n New features can be deployed in \"dark launch\" mode, where they run\n in production but are not visible to users. This allows you to\n test performance and correctness with real traffic before enabling\n the feature. If issues arise, you can instantly roll back to the\n previous version without redeploying.\n </p>\n </div>\n\n <div className=\"space-y-2\">\n <h3 className=\"text-xl font-semibold\">Data Classification</h3>\n <p className=\"text-muted-foreground\">\n Fields in your specs can be tagged with sensitivity levels (e.g.,\n PII, PHI, confidential). The policy engine uses these tags to\n enforce access controls, redaction rules, and data retention\n policies automatically. This reduces the risk of accidental data\n leaks.\n </p>\n </div>\n </div>\n </div>\n\n <div className=\"space-y-4\">\n <h2 className=\"text-2xl font-bold\">Why safety matters</h2>\n <p className=\"text-muted-foreground\">\n Modern applications handle sensitive data and critical operations. A\n single bug or misconfiguration can lead to data breaches, compliance\n violations, or service outages. ContractSpec's safety features are not\n optional add-ons—they are built into the core platform and enforced\n automatically.\n </p>\n <p className=\"text-muted-foreground\">\n By making safety the default, ContractSpec allows you to move fast\n without breaking things. You can deploy new features confidently,\n knowing that policies are enforced, changes are audited, and rollbacks\n are always available.\n </p>\n </div>\n\n <div className=\"space-y-4\">\n <h2 className=\"text-2xl font-bold\">Next steps</h2>\n <p className=\"text-muted-foreground\">\n Explore each safety feature in detail using the links above, or\n continue with the advanced topics:\n </p>\n <div className=\"flex flex-wrap gap-4 pt-4\">\n <Link href=\"/docs/safety/signing\" className=\"btn-primary\">\n Spec Signing <ChevronRight size={16} className=\"inline\" />\n </Link>\n <Link href=\"/docs/safety/pdp\" className=\"btn-ghost\">\n Policy Decision Points <ChevronRight size={16} className=\"inline\" />\n </Link>\n <Link href=\"/docs/safety/auditing\" className=\"btn-ghost\">\n Audit Logs <ChevronRight size={16} className=\"inline\" />\n </Link>\n <Link href=\"/docs/safety/migrations\" className=\"btn-ghost\">\n Migrations <ChevronRight size={16} className=\"inline\" />\n </Link>\n <Link href=\"/docs/safety/security-trust\" className=\"btn-ghost\">\n Security & Trust <ChevronRight size={16} className=\"inline\" />\n </Link>\n </div>\n </div>\n </div>\n );\n}\n"],"mappings":";;;;;AASA,SAAgB,qBAAqB;AACnC,QACE,qBAAC;EAAI,WAAU;;GACb,qBAAC;IAAI,WAAU;eACb,oBAAC;KAAG,WAAU;eAAqB;MAAoB,EACvD,qBAAC;KAAE,WAAU;;MAAwB;MACL,oBAAC,sBAAO,sBAA0B;;;MAI9D;KACA;GAEN,qBAAC;IAAI,WAAU;eACb,oBAAC;KAAG,WAAU;eAAqB;MAAyB,EAC5D,qBAAC;KAAI,WAAU;;MACb,qBAAC;OAAI,WAAU;kBACb,oBAAC;QAAG,WAAU;kBACZ,oBAAC;SACC,MAAK;SACL,WAAU;mBACX;UAEM;SACJ,EACL,oBAAC;QAAE,WAAU;kBAAwB;SAMjC;QACA;MAEN,qBAAC;OAAI,WAAU;kBACb,oBAAC;QAAG,WAAU;kBACZ,oBAAC;SACC,MAAK;SACL,WAAU;mBACX;UAEM;SACJ,EACL,oBAAC;QAAE,WAAU;kBAAwB;SAMjC;QACA;MAEN,qBAAC;OAAI,WAAU;kBACb,oBAAC;QAAG,WAAU;kBACZ,oBAAC;SACC,MAAK;SACL,WAAU;mBACX;UAEM;SACJ,EACL,oBAAC;QAAE,WAAU;kBAAwB;SAMjC;QACA;MAEN,qBAAC;OAAI,WAAU;kBACb,oBAAC;QAAG,WAAU;kBACZ,oBAAC;SACC,MAAK;SACL,WAAU;mBACX;UAEM;SACJ,EACL,qBAAC;QAAE,WAAU;;SAAwB;SACY;SAC/C,oBAAC,sBAAO,mBAAuB;;;SAG7B;QACA;MAEN,qBAAC;OAAI,WAAU;kBACb,oBAAC;QAAG,WAAU;kBAAwB;SAA2B,EACjE,oBAAC;QAAE,WAAU;kBAAwB;SAMjC;QACA;MAEN,qBAAC;OAAI,WAAU;kBACb,oBAAC;QAAG,WAAU;kBAAwB;SAAwB,EAC9D,oBAAC;QAAE,WAAU;kBAAwB;SAMjC;QACA;;MACF;KACF;GAEN,qBAAC;IAAI,WAAU;;KACb,oBAAC;MAAG,WAAU;gBAAqB;OAAuB;KAC1D,oBAAC;MAAE,WAAU;gBAAwB;OAMjC;KACJ,oBAAC;MAAE,WAAU;gBAAwB;OAKjC;;KACA;GAEN,qBAAC;IAAI,WAAU;;KACb,oBAAC;MAAG,WAAU;gBAAqB;OAAe;KAClD,oBAAC;MAAE,WAAU;gBAAwB;OAGjC;KACJ,qBAAC;MAAI,WAAU;;OACb,qBAAC;QAAK,MAAK;QAAuB,WAAU;mBAAc,iBAC3C,oBAAC;SAAa,MAAM;SAAI,WAAU;UAAW;SACrD;OACP,qBAAC;QAAK,MAAK;QAAmB,WAAU;mBAAY,2BAC3B,oBAAC;SAAa,MAAM;SAAI,WAAU;UAAW;SAC/D;OACP,qBAAC;QAAK,MAAK;QAAwB,WAAU;mBAAY,eAC5C,oBAAC;SAAa,MAAM;SAAI,WAAU;UAAW;SACnD;OACP,qBAAC;QAAK,MAAK;QAA0B,WAAU;mBAAY,eAC9C,oBAAC;SAAa,MAAM;SAAI,WAAU;UAAW;SACnD;OACP,qBAAC;QAAK,MAAK;QAA8B,WAAU;mBAAY,qBAC5C,oBAAC;SAAa,MAAM;SAAI,WAAU;UAAW;SACzD;;OACH;;KACF;;GACF"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SafetyPDPPage.js","names":[],"sources":["../../../../src/components/docs/safety/SafetyPDPPage.tsx"],"sourcesContent":["import Link from '@contractspec/lib.ui-link';\nimport { ChevronRight } from 'lucide-react';\n\n// export const metadata = {\n// title: 'Policy Decision Points: ContractSpec Docs',\n// description:\n// \"Learn how ContractSpec's Policy Decision Point (PDP) enforces access control and data protection policies.\",\n// };\n\nexport function SafetyPDPPage() {\n return (\n <div className=\"space-y-8\">\n <div className=\"space-y-4\">\n <h1 className=\"text-4xl font-bold\">Policy Decision Points</h1>\n <p className=\"text-muted-foreground\">\n A <strong>Policy Decision Point (PDP)</strong> is a centralized\n component that evaluates access control policies and makes\n authorization decisions. According to{' '}\n <a\n href=\"https://www.strongdm.com/blog/policy-decision-point\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"text-violet-400 hover:text-violet-300\"\n >\n StrongDM\n </a>\n , the PDP \"receives requests for access to resources, evaluates them\n against policies, and returns a decision (permit or deny).\"\n </p>\n </div>\n\n <div className=\"space-y-4\">\n <h2 className=\"text-2xl font-bold\">\n How the PDP works in ContractSpec\n </h2>\n <p className=\"text-muted-foreground\">\n In ContractSpec, the PDP is invoked on every operation—whether it's\n rendering a UI component, executing a capability, or querying a data\n view. The flow is:\n </p>\n <ol className=\"text-muted-foreground list-inside list-decimal space-y-3\">\n <li>\n <strong>Request evaluation</strong> – The runtime sends a request to\n the PDP containing:\n <ul className=\"mt-2 ml-6 list-inside list-disc space-y-1\">\n <li>\n The user's identity and attributes (roles, groups, location,\n etc.)\n </li>\n <li>\n The resource being accessed (capability, field, workflow step)\n </li>\n <li>The action being performed (read, write, execute)</li>\n <li>\n Contextual information (time of day, device type, IP address)\n </li>\n </ul>\n </li>\n <li>\n <strong>Policy evaluation</strong> – The PDP evaluates the request\n against all applicable <strong>PolicySpecs</strong>. These specs\n define rules using attribute-based access control (ABAC) and can\n reference:\n <ul className=\"mt-2 ml-6 list-inside list-disc space-y-1\">\n <li>User attributes (e.g., \"role == 'admin'\")</li>\n <li>Resource attributes (e.g., \"field.sensitivity == 'PII'\")</li>\n <li>\n Environmental attributes (e.g., \"time.hour >= 9 AND time.hour\n < 17\")\n </li>\n </ul>\n </li>\n <li>\n <strong>Decision return</strong> – The PDP returns one of:\n <ul className=\"mt-2 ml-6 list-inside list-disc space-y-1\">\n <li>\n <code className=\"bg-background/50 rounded px-2 py-1\">\n PERMIT\n </code>{' '}\n – The operation is allowed.\n </li>\n <li>\n <code className=\"bg-background/50 rounded px-2 py-1\">DENY</code>{' '}\n – The operation is blocked.\n </li>\n <li>\n <code className=\"bg-background/50 rounded px-2 py-1\">\n REDACT\n </code>{' '}\n – The operation is allowed, but sensitive fields are masked.\n </li>\n </ul>\n </li>\n <li>\n <strong>Enforcement</strong> – The runtime enforces the decision. If\n denied, the operation fails with a clear error message. If redacted,\n sensitive fields are replaced with placeholders.\n </li>\n <li>\n <strong>Auditing</strong> – Every PDP decision is logged to the{' '}\n <Link\n href=\"/docs/safety/auditing\"\n className=\"text-violet-400 hover:text-violet-300\"\n >\n audit log\n </Link>\n , including the request, decision, and reasoning.\n </li>\n </ol>\n </div>\n\n <div className=\"space-y-4\">\n <h2 className=\"text-2xl font-bold\">Example PolicySpec</h2>\n <p className=\"text-muted-foreground\">\n Here's a simple policy that restricts access to PII fields:\n </p>\n <div className=\"bg-background/50 border-border text-muted-foreground overflow-x-auto rounded-lg border p-4 font-mono text-sm\">\n <pre>{`policyId: pii-access-control\nversion: '1.0.0'.0.0\nrules:\n - id: allow-admin-full-access\n effect: PERMIT\n condition: user.role == 'admin'\n \n - id: redact-pii-for-support\n effect: REDACT\n condition: |\n user.role == 'support' AND\n field.sensitivity == 'PII'\n redactFields: ['ssn', 'creditCard', 'dateOfBirth']\n \n - id: deny-pii-for-others\n effect: DENY\n condition: |\n user.role NOT IN ['admin', 'support'] AND\n field.sensitivity == 'PII'`}</pre>\n </div>\n <p className=\"text-muted-foreground\">\n With this policy, admins see all data, support staff see redacted PII,\n and other users cannot access PII at all.\n </p>\n </div>\n\n <div className=\"space-y-4\">\n <h2 className=\"text-2xl font-bold\">\n Benefits of centralized decision-making\n </h2>\n <ul className=\"text-muted-foreground list-inside list-disc space-y-2\">\n <li>\n <strong>Consistency</strong> – Policies are enforced uniformly\n across all surfaces (API, UI, workflows).\n </li>\n <li>\n <strong>Auditability</strong> – Every decision is logged, making it\n easy to trace why access was granted or denied.\n </li>\n <li>\n <strong>Flexibility</strong> – Policies can be updated without\n changing application code.\n </li>\n <li>\n <strong>Security</strong> – Reduces the risk of authorization bugs\n by removing ad-hoc checks scattered throughout the codebase.\n </li>\n </ul>\n </div>\n\n <div className=\"space-y-4\">\n <h2 className=\"text-2xl font-bold\">Performance considerations</h2>\n <p className=\"text-muted-foreground\">\n Because the PDP is invoked on every operation, performance is\n critical. ContractSpec optimizes this by:\n </p>\n <ul className=\"text-muted-foreground list-inside list-disc space-y-2\">\n <li>Caching policy decisions for identical requests</li>\n <li>Compiling policies into efficient bytecode</li>\n <li>\n Evaluating only the minimal set of rules needed for each request\n </li>\n <li>Running the PDP in-process to avoid network latency</li>\n </ul>\n <p className=\"text-muted-foreground\">\n In practice, PDP overhead is typically less than 1ms per request.\n </p>\n </div>\n\n <div className=\"flex items-center gap-4 pt-4\">\n <Link href=\"/docs/safety/signing\" className=\"btn-ghost\">\n Previous: Spec Signing\n </Link>\n <Link href=\"/docs/safety/auditing\" className=\"btn-primary\">\n Next: Audit Logs <ChevronRight size={16} />\n </Link>\n </div>\n </div>\n );\n}\n"],"mappings":";;;;;AASA,SAAgB,gBAAgB;AAC9B,QACE,qBAAC;EAAI,WAAU;;GACb,qBAAC;IAAI,WAAU;eACb,oBAAC;KAAG,WAAU;eAAqB;MAA2B,EAC9D,qBAAC;KAAE,WAAU;;MAAwB;MACjC,oBAAC,sBAAO,gCAAoC;;MAER;MACtC,oBAAC;OACC,MAAK;OACL,QAAO;OACP,KAAI;OACJ,WAAU;iBACX;QAEG;;;MAGF;KACA;GAEN,qBAAC;IAAI,WAAU;;KACb,oBAAC;MAAG,WAAU;gBAAqB;OAE9B;KACL,oBAAC;MAAE,WAAU;gBAAwB;OAIjC;KACJ,qBAAC;MAAG,WAAU;;OACZ,qBAAC;QACC,oBAAC,sBAAO,uBAA2B;;QAEnC,qBAAC;SAAG,WAAU;;UACZ,oBAAC,kBAAG,uEAGC;UACL,oBAAC,kBAAG,mEAEC;UACL,oBAAC,kBAAG,sDAAsD;UAC1D,oBAAC,kBAAG,kEAEC;;UACF;WACF;OACL,qBAAC;QACC,oBAAC,sBAAO,sBAA0B;;QACX,oBAAC,sBAAO,gBAAoB;;QAGnD,qBAAC;SAAG,WAAU;;UACZ,oBAAC,kBAAG,gDAA8C;UAClD,oBAAC,kBAAG,+DAA6D;UACjE,oBAAC,kBAAG,2EAGC;;UACF;WACF;OACL,qBAAC;QACC,oBAAC,sBAAO,oBAAwB;;QAChC,qBAAC;SAAG,WAAU;;UACZ,qBAAC;WACC,oBAAC;YAAK,WAAU;sBAAqC;aAE9C;WAAC;WAAI;cAET;UACL,qBAAC;WACC,oBAAC;YAAK,WAAU;sBAAqC;aAAW;WAAC;WAAI;cAElE;UACL,qBAAC;WACC,oBAAC;YAAK,WAAU;sBAAqC;aAE9C;WAAC;WAAI;cAET;;UACF;WACF;OACL,qBAAC,mBACC,oBAAC,sBAAO,gBAAoB,sKAGzB;OACL,qBAAC;QACC,oBAAC,sBAAO,aAAiB;;QAAuC;QAChE,oBAAC;SACC,MAAK;SACL,WAAU;mBACX;UAEM;;WAEJ;;OACF;;KACD;GAEN,qBAAC;IAAI,WAAU;;KACb,oBAAC;MAAG,WAAU;gBAAqB;OAAuB;KAC1D,oBAAC;MAAE,WAAU;gBAAwB;OAEjC;KACJ,oBAAC;MAAI,WAAU;gBACb,oBAAC,mBAAK;;;;;;;;;;;;;;;;;;oCAkBwB;OAC1B;KACN,oBAAC;MAAE,WAAU;gBAAwB;OAGjC;;KACA;GAEN,qBAAC;IAAI,WAAU;eACb,oBAAC;KAAG,WAAU;eAAqB;MAE9B,EACL,qBAAC;KAAG,WAAU;;MACZ,qBAAC,mBACC,oBAAC,sBAAO,gBAAoB,oFAEzB;MACL,qBAAC,mBACC,oBAAC,sBAAO,iBAAqB,8FAE1B;MACL,qBAAC,mBACC,oBAAC,sBAAO,gBAAoB,qEAEzB;MACL,qBAAC,mBACC,oBAAC,sBAAO,aAAiB,8GAEtB;;MACF;KACD;GAEN,qBAAC;IAAI,WAAU;;KACb,oBAAC;MAAG,WAAU;gBAAqB;OAA+B;KAClE,oBAAC;MAAE,WAAU;gBAAwB;OAGjC;KACJ,qBAAC;MAAG,WAAU;;OACZ,oBAAC,kBAAG,oDAAoD;OACxD,oBAAC,kBAAG,+CAA+C;OACnD,oBAAC,kBAAG,qEAEC;OACL,oBAAC,kBAAG,wDAAwD;;OACzD;KACL,oBAAC;MAAE,WAAU;gBAAwB;OAEjC;;KACA;GAEN,qBAAC;IAAI,WAAU;eACb,oBAAC;KAAK,MAAK;KAAuB,WAAU;eAAY;MAEjD,EACP,qBAAC;KAAK,MAAK;KAAwB,WAAU;gBAAc,qBACxC,oBAAC,gBAAa,MAAM,KAAM;MACtC;KACH;;GACF"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SafetySecurityTrustPage.js","names":[],"sources":["../../../../src/components/docs/safety/SafetySecurityTrustPage.tsx"],"sourcesContent":["import Link from '@contractspec/lib.ui-link';\nimport { ChevronRight } from 'lucide-react';\n\nexport function SafetySecurityTrustPage() {\n return (\n <div className=\"space-y-8\">\n <div className=\"space-y-4\">\n <h1 className=\"text-4xl font-bold\">Security & Trust</h1>\n <p className=\"text-muted-foreground\">\n ContractSpec focuses on deterministic, auditable software delivery.\n This page summarizes our security posture and trust commitments so\n teams can adopt with clarity.\n </p>\n </div>\n\n <div className=\"card-subtle space-y-4 p-6\">\n <h2 className=\"text-2xl font-bold\">Security policy</h2>\n <p className=\"text-muted-foreground text-sm\">\n We publish a dedicated security policy that explains how to report\n vulnerabilities and how we respond.\n </p>\n <Link href=\"/SECURITY.md\" className=\"btn-primary\">\n Read the security policy <ChevronRight size={16} />\n </Link>\n </div>\n\n <div className=\"grid gap-4 md:grid-cols-2\">\n <div className=\"card-subtle space-y-3 p-6\">\n <h3 className=\"text-lg font-semibold\">Release hygiene</h3>\n <p className=\"text-muted-foreground text-sm\">\n We ship with deterministic CI, changesets, and contract validation\n so teams can trust every release.\n </p>\n <ul className=\"text-muted-foreground space-y-2 text-sm\">\n <li>Changesets required for published packages.</li>\n <li>CI gate for contract validation and drift detection.</li>\n <li>Rollback-friendly release process.</li>\n </ul>\n </div>\n\n <div className=\"card-subtle space-y-3 p-6\">\n <h3 className=\"text-lg font-semibold\">Data handling</h3>\n <p className=\"text-muted-foreground text-sm\">\n ContractSpec promotes strict data classification and policy-driven\n access. Specs can tag sensitive fields for enforcement.\n </p>\n <ul className=\"text-muted-foreground space-y-2 text-sm\">\n <li>Schema-level sensitivity tags.</li>\n <li>Policy Decision Point enforcement.</li>\n <li>Audit logs for operational traceability.</li>\n </ul>\n </div>\n </div>\n\n <div className=\"grid gap-4 md:grid-cols-2\">\n <div className=\"card-subtle space-y-3 p-6\">\n <h3 className=\"text-lg font-semibold\">Supply chain</h3>\n <p className=\"text-muted-foreground text-sm\">\n We track dependency updates and keep the monorepo build\n reproducible.\n </p>\n <ul className=\"text-muted-foreground space-y-2 text-sm\">\n <li>Dependabot + Renovate-style updates where available.</li>\n <li>Signed release artifacts planned for Studio release cycles.</li>\n <li>Transparent changelogs for every package.</li>\n </ul>\n </div>\n\n <div className=\"card-subtle space-y-3 p-6\">\n <h3 className=\"text-lg font-semibold\">Responsible disclosure</h3>\n <p className=\"text-muted-foreground text-sm\">\n We respond quickly to security reports and coordinate fixes before\n public disclosure.\n </p>\n <ul className=\"text-muted-foreground space-y-2 text-sm\">\n <li>Security response within 5 business days.</li>\n <li>Private disclosure via security@contractspec.io.</li>\n <li>Credit for researchers (with permission).</li>\n </ul>\n </div>\n </div>\n\n <div className=\"space-y-4\">\n <h2 className=\"text-2xl font-bold\">Next steps</h2>\n <p className=\"text-muted-foreground\">\n Explore the broader safety controls or read the roadmap to see\n upcoming trust investments.\n </p>\n <div className=\"flex flex-wrap gap-4 pt-4\">\n <Link href=\"/docs/safety\" className=\"btn-ghost\">\n Safety overview <ChevronRight size={16} />\n </Link>\n <Link href=\"/ROADMAP.md\" className=\"btn-ghost\">\n Roadmap <ChevronRight size={16} />\n </Link>\n </div>\n </div>\n </div>\n );\n}\n"],"mappings":";;;;;AAGA,SAAgB,0BAA0B;AACxC,QACE,qBAAC;EAAI,WAAU;;GACb,qBAAC;IAAI,WAAU;eACb,oBAAC;KAAG,WAAU;eAAqB;MAAqB,EACxD,oBAAC;KAAE,WAAU;eAAwB;MAIjC;KACA;GAEN,qBAAC;IAAI,WAAU;;KACb,oBAAC;MAAG,WAAU;gBAAqB;OAAoB;KACvD,oBAAC;MAAE,WAAU;gBAAgC;OAGzC;KACJ,qBAAC;MAAK,MAAK;MAAe,WAAU;iBAAc,6BACvB,oBAAC,gBAAa,MAAM,KAAM;OAC9C;;KACH;GAEN,qBAAC;IAAI,WAAU;eACb,qBAAC;KAAI,WAAU;;MACb,oBAAC;OAAG,WAAU;iBAAwB;QAAoB;MAC1D,oBAAC;OAAE,WAAU;iBAAgC;QAGzC;MACJ,qBAAC;OAAG,WAAU;;QACZ,oBAAC,kBAAG,gDAAgD;QACpD,oBAAC,kBAAG,yDAAyD;QAC7D,oBAAC,kBAAG,uCAAuC;;QACxC;;MACD,EAEN,qBAAC;KAAI,WAAU;;MACb,oBAAC;OAAG,WAAU;iBAAwB;QAAkB;MACxD,oBAAC;OAAE,WAAU;iBAAgC;QAGzC;MACJ,qBAAC;OAAG,WAAU;;QACZ,oBAAC,kBAAG,mCAAmC;QACvC,oBAAC,kBAAG,uCAAuC;QAC3C,oBAAC,kBAAG,6CAA6C;;QAC9C;;MACD;KACF;GAEN,qBAAC;IAAI,WAAU;eACb,qBAAC;KAAI,WAAU;;MACb,oBAAC;OAAG,WAAU;iBAAwB;QAAiB;MACvD,oBAAC;OAAE,WAAU;iBAAgC;QAGzC;MACJ,qBAAC;OAAG,WAAU;;QACZ,oBAAC,kBAAG,yDAAyD;QAC7D,oBAAC,kBAAG,gEAAgE;QACpE,oBAAC,kBAAG,8CAA8C;;QAC/C;;MACD,EAEN,qBAAC;KAAI,WAAU;;MACb,oBAAC;OAAG,WAAU;iBAAwB;QAA2B;MACjE,oBAAC;OAAE,WAAU;iBAAgC;QAGzC;MACJ,qBAAC;OAAG,WAAU;;QACZ,oBAAC,kBAAG,8CAA8C;QAClD,oBAAC,kBAAG,qDAAqD;QACzD,oBAAC,kBAAG,8CAA8C;;QAC/C;;MACD;KACF;GAEN,qBAAC;IAAI,WAAU;;KACb,oBAAC;MAAG,WAAU;gBAAqB;OAAe;KAClD,oBAAC;MAAE,WAAU;gBAAwB;OAGjC;KACJ,qBAAC;MAAI,WAAU;iBACb,qBAAC;OAAK,MAAK;OAAe,WAAU;kBAAY,oBAC9B,oBAAC,gBAAa,MAAM,KAAM;QACrC,EACP,qBAAC;OAAK,MAAK;OAAc,WAAU;kBAAY,YACrC,oBAAC,gBAAa,MAAM,KAAM;QAC7B;OACH;;KACF;;GACF"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SafetySigningPage.js","names":[],"sources":["../../../../src/components/docs/safety/SafetySigningPage.tsx"],"sourcesContent":["import Link from '@contractspec/lib.ui-link';\nimport { ChevronRight } from 'lucide-react';\n\n// export const metadata = {\n// title: 'Spec Signing: ContractSpec Docs',\n// description: 'Learn how spec signing ensures security and auditability.',\n// };\n\nexport function SafetySigningPage() {\n return (\n <div className=\"space-y-8\">\n <div className=\"space-y-2\">\n <h1 className=\"text-4xl font-bold\">Spec Signing</h1>\n <p className=\"text-muted-foreground text-lg\">\n Signing ensures specs haven't been tampered with and provides an audit\n trail of all changes.\n </p>\n </div>\n\n <div className=\"space-y-6\">\n <div className=\"space-y-3\">\n <h2 className=\"text-2xl font-bold\">How it works</h2>\n <p className=\"text-muted-foreground\">\n Every spec is cryptographically signed before deployment. The\n signature proves that the spec hasn't been modified since it was\n signed and creates a permanent record of who deployed it and when.\n </p>\n </div>\n\n <div className=\"space-y-3\">\n <h2 className=\"text-2xl font-bold\">Signing a spec</h2>\n <div className=\"bg-background/50 border-border text-muted-foreground overflow-x-auto rounded-lg border p-4 font-mono text-sm\">\n <pre>{`contractspec sign app.spec.ts --key ~/.contractspec/key.pem\ncontractspec deploy --signed app.spec.ts.signed`}</pre>\n </div>\n </div>\n\n <div className=\"space-y-3\">\n <h2 className=\"text-2xl font-bold\">Verifying signatures</h2>\n <div className=\"bg-background/50 border-border text-muted-foreground overflow-x-auto rounded-lg border p-4 font-mono text-sm\">\n <pre>{`contractspec verify app.spec.ts.signed\n# Output: ✓ Signature valid\n# Signed by: alice@example.com\n# Timestamp: 2024-11-08T10:30:00Z`}</pre>\n </div>\n </div>\n\n <div className=\"flex items-center gap-4 pt-4\">\n <Link href=\"/docs/safety/pdp\" className=\"btn-primary\">\n Next: Policy Decision Points <ChevronRight size={16} />\n </Link>\n </div>\n </div>\n </div>\n );\n}\n"],"mappings":";;;;;AAQA,SAAgB,oBAAoB;AAClC,QACE,qBAAC;EAAI,WAAU;aACb,qBAAC;GAAI,WAAU;cACb,oBAAC;IAAG,WAAU;cAAqB;KAAiB,EACpD,oBAAC;IAAE,WAAU;cAAgC;KAGzC;IACA,EAEN,qBAAC;GAAI,WAAU;;IACb,qBAAC;KAAI,WAAU;gBACb,oBAAC;MAAG,WAAU;gBAAqB;OAAiB,EACpD,oBAAC;MAAE,WAAU;gBAAwB;OAIjC;MACA;IAEN,qBAAC;KAAI,WAAU;gBACb,oBAAC;MAAG,WAAU;gBAAqB;OAAmB,EACtD,oBAAC;MAAI,WAAU;gBACb,oBAAC,mBAAK;mDACqC;OACvC;MACF;IAEN,qBAAC;KAAI,WAAU;gBACb,oBAAC;MAAG,WAAU;gBAAqB;OAAyB,EAC5D,oBAAC;MAAI,WAAU;gBACb,oBAAC,mBAAK;;;qCAGuB;OACzB;MACF;IAEN,oBAAC;KAAI,WAAU;eACb,qBAAC;MAAK,MAAK;MAAmB,WAAU;iBAAc,iCACvB,oBAAC,gBAAa,MAAM,KAAM;OAClD;MACH;;IACF;GACF"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SafetyTenantIsolationPage.js","names":[],"sources":["../../../../src/components/docs/safety/SafetyTenantIsolationPage.tsx"],"sourcesContent":["// export const metadata: Metadata = {\n// title: 'Tenant Isolation Safety | ContractSpec',\n// description: 'How to ensure data never leaks between tenants.',\n// };\n\nexport function SafetyTenantIsolationPage() {\n return (\n <div className=\"space-y-8\">\n <div className=\"space-y-4\">\n <h1 className=\"text-4xl font-bold\">Tenant Isolation</h1>\n <p className=\"text-muted-foreground text-lg\">\n Preventing cross-tenant data leaks is the #1 security priority for any\n SaaS. ContractSpec employs \"Defense in Depth\" to ensure safety.\n </p>\n </div>\n\n <div className=\"space-y-4\">\n <h2 className=\"text-2xl font-bold\">Layer 1: RLS Middleware</h2>\n <p>\n The primary defense is the Prisma middleware that rewrites queries to\n include <code>WHERE tenantId = ?</code>. This protects against\n developer error (forgetting to filter).\n </p>\n </div>\n\n <div className=\"space-y-4\">\n <h2 className=\"text-2xl font-bold\">Layer 2: Isolation Validator</h2>\n <p>\n For high-security environments, you can use the{' '}\n <code>IsolationValidator</code> in your test suite to verify that\n every query generated by your operations actually includes the tenant\n ID.\n </p>\n <pre className=\"bg-muted rounded-lg border p-4 text-sm\">\n {`import { IsolationValidator } from '@contractspec/lib.multi-tenancy/isolation';\n\ntest('findUser query is isolated', () => {\n const isValid = IsolationValidator.validateQuery(\n 'User',\n 'findFirst',\n args,\n 'tenant-123'\n );\n expect(isValid).toBe(true);\n});`}\n </pre>\n </div>\n\n <div className=\"space-y-4\">\n <h2 className=\"text-2xl font-bold\">Layer 3: Policy Engine</h2>\n <p>\n The Policy Decision Point (PDP) verifies that the authenticated user\n actually belongs to the requested tenant before any operation logic\n runs.\n </p>\n </div>\n </div>\n );\n}\n"],"mappings":";;;AAKA,SAAgB,4BAA4B;AAC1C,QACE,qBAAC;EAAI,WAAU;;GACb,qBAAC;IAAI,WAAU;eACb,oBAAC;KAAG,WAAU;eAAqB;MAAqB,EACxD,oBAAC;KAAE,WAAU;eAAgC;MAGzC;KACA;GAEN,qBAAC;IAAI,WAAU;eACb,oBAAC;KAAG,WAAU;eAAqB;MAA4B,EAC/D,qBAAC;KAAE;KAEO,oBAAC,oBAAK,uBAAyB;;QAErC;KACA;GAEN,qBAAC;IAAI,WAAU;;KACb,oBAAC;MAAG,WAAU;gBAAqB;OAAiC;KACpE,qBAAC;MAAE;MAC+C;MAChD,oBAAC,oBAAK,uBAAyB;;SAG7B;KACJ,oBAAC;MAAI,WAAU;gBACZ;;;;;;;;;;;OAWG;;KACF;GAEN,qBAAC;IAAI,WAAU;eACb,oBAAC;KAAG,WAAU;eAAqB;MAA2B,EAC9D,oBAAC,iBAAE,mJAIC;KACA;;GACF"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"StudioPrompt.js","names":[],"sources":["../../../../src/components/docs/shared/StudioPrompt.tsx"],"sourcesContent":["import Link from '@contractspec/lib.ui-link';\n\ninterface StudioPromptProps {\n title?: string;\n body?: string;\n ctaLabel?: string;\n href?: string;\n}\n\nexport function StudioPrompt({\n title = 'Need managed policy gates and approvals?',\n body = 'ContractSpec Studio adds policy gates, remote registry workflows, and audit trails when you are ready to scale adoption.',\n ctaLabel = 'Join Studio waitlist',\n href = '/contact#waitlist',\n}: StudioPromptProps) {\n return (\n <div className=\"card-subtle space-y-3 p-6\">\n <h3 className=\"text-lg font-semibold\">{title}</h3>\n <p className=\"text-muted-foreground text-sm\">{body}</p>\n <Link href={href} className=\"btn-primary\">\n {ctaLabel}\n </Link>\n </div>\n );\n}\n"],"mappings":";;;;AASA,SAAgB,aAAa,EAC3B,QAAQ,4CACR,OAAO,4HACP,WAAW,wBACX,OAAO,uBACa;AACpB,QACE,qBAAC;EAAI,WAAU;;GACb,oBAAC;IAAG,WAAU;cAAyB;KAAW;GAClD,oBAAC;IAAE,WAAU;cAAiC;KAAS;GACvD,oBAAC;IAAW;IAAM,WAAU;cACzB;KACI;;GACH"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SpecsCapabilitiesPage.js","names":[],"sources":["../../../../src/components/docs/specs/SpecsCapabilitiesPage.tsx"],"sourcesContent":["import Link from '@contractspec/lib.ui-link';\nimport { ChevronRight } from 'lucide-react';\n\n// export const metadata = {\n// title: 'Capabilities: ContractSpec Docs',\n// description: 'Learn how to define capabilities in ContractSpec.',\n// };\n\nexport function SpecsCapabilitiesPage() {\n return (\n <div className=\"space-y-8\">\n <div className=\"space-y-2\">\n <h1 className=\"text-4xl font-bold\">Capabilities</h1>\n <p className=\"text-muted-foreground text-lg\">\n Capabilities are the core building block of ContractSpec. They define\n what your app can do.\n </p>\n </div>\n\n <div className=\"space-y-6\">\n <div className=\"space-y-3\">\n <h2 className=\"text-2xl font-bold\">Overview</h2>\n <p className=\"text-muted-foreground\">\n A ContractSpec (or Capability) is a typed, declarative description\n of an operation. It defines the operation's name, version, inputs,\n outputs, policies, and side effects. Runtime adapters automatically\n serve these as REST/GraphQL/MCP endpoints with full validation and\n policy enforcement.\n </p>\n </div>\n\n <div className=\"space-y-3\">\n <h2 className=\"text-2xl font-bold\">Defining a Command (Write)</h2>\n <div className=\"bg-background/50 border-border text-muted-foreground overflow-x-auto rounded-lg border p-4 font-mono text-sm\">\n <pre>{`import { defineCommand } from '@contractspec/lib.contracts';\nimport { SchemaModel, ScalarTypeEnum } from '@contractspec/lib.schema';\n\nconst TransferFundsInput = new SchemaModel({\n name: 'TransferFundsInput',\n fields: {\n recipient: { type: ScalarTypeEnum.NonEmptyString(), isOptional: false },\n amount: { type: ScalarTypeEnum.PositiveNumber(), isOptional: false },\n },\n});\n\nconst TransferFundsOutput = new SchemaModel({\n name: 'TransferFundsOutput',\n fields: {\n transactionId: { type: ScalarTypeEnum.String(), isOptional: false },\n timestamp: { type: ScalarTypeEnum.DateTime(), isOptional: false },\n },\n});\n\nexport const TransferFunds = defineCommand({\n meta: {\n key: 'wallet.transferFunds',\n version: '1.0.0',\n description: 'Transfer funds to another user',\n goal: 'Enable peer-to-peer payments',\n context: 'Requires sufficient balance',\n owners: ['team-payments'],\n tags: ['payments'],\n stability: 'stable',\n },\n io: {\n input: TransferFundsInput,\n output: TransferFundsOutput,\n },\n policy: {\n auth: 'user',\n flags: ['payments_enabled'],\n },\n});`}</pre>\n </div>\n </div>\n\n <div className=\"space-y-3\">\n <h2 className=\"text-2xl font-bold\">Schema Types</h2>\n <p className=\"text-muted-foreground\">\n ContractSpec uses <code>@contractspec/lib.schema</code> for I/O\n definitions. This provides Zod validation, GraphQL types, and JSON\n Schema from a single source.\n </p>\n <ul className=\"text-muted-foreground space-y-2\">\n <li>\n •{' '}\n <code className=\"bg-background/50 rounded px-2 py-1\">\n ScalarTypeEnum.NonEmptyString()\n </code>{' '}\n - Non-empty text\n </li>\n <li>\n •{' '}\n <code className=\"bg-background/50 rounded px-2 py-1\">\n ScalarTypeEnum.PositiveNumber()\n </code>{' '}\n - Positive numbers\n </li>\n <li>\n •{' '}\n <code className=\"bg-background/50 rounded px-2 py-1\">\n ScalarTypeEnum.DateTime()\n </code>{' '}\n - ISO 8601 timestamps\n </li>\n <li>\n •{' '}\n <code className=\"bg-background/50 rounded px-2 py-1\">\n ScalarTypeEnum.Email()\n </code>{' '}\n - Valid email addresses\n </li>\n <li>\n •{' '}\n <code className=\"bg-background/50 rounded px-2 py-1\">\n defineEnum(...)\n </code>{' '}\n - Type-safe enums\n </li>\n </ul>\n </div>\n\n <div className=\"flex items-center gap-4 pt-4\">\n <Link href=\"/docs/specs/dataviews\" className=\"btn-primary\">\n Next: DataViews <ChevronRight size={16} />\n </Link>\n </div>\n </div>\n </div>\n );\n}\n"],"mappings":";;;;;AAQA,SAAgB,wBAAwB;AACtC,QACE,qBAAC;EAAI,WAAU;aACb,qBAAC;GAAI,WAAU;cACb,oBAAC;IAAG,WAAU;cAAqB;KAAiB,EACpD,oBAAC;IAAE,WAAU;cAAgC;KAGzC;IACA,EAEN,qBAAC;GAAI,WAAU;;IACb,qBAAC;KAAI,WAAU;gBACb,oBAAC;MAAG,WAAU;gBAAqB;OAAa,EAChD,oBAAC;MAAE,WAAU;gBAAwB;OAMjC;MACA;IAEN,qBAAC;KAAI,WAAU;gBACb,oBAAC;MAAG,WAAU;gBAAqB;OAA+B,EAClE,oBAAC;MAAI,WAAU;gBACb,oBAAC,mBAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAsCP;OACK;MACF;IAEN,qBAAC;KAAI,WAAU;;MACb,oBAAC;OAAG,WAAU;iBAAqB;QAAiB;MACpD,qBAAC;OAAE,WAAU;;QAAwB;QACjB,oBAAC,oBAAK,6BAA+B;;;QAGrD;MACJ,qBAAC;OAAG,WAAU;;QACZ,qBAAC;SAAG;SACA;SACF,oBAAC;UAAK,WAAU;oBAAqC;WAE9C;SAAC;SAAI;YAET;QACL,qBAAC;SAAG;SACA;SACF,oBAAC;UAAK,WAAU;oBAAqC;WAE9C;SAAC;SAAI;YAET;QACL,qBAAC;SAAG;SACA;SACF,oBAAC;UAAK,WAAU;oBAAqC;WAE9C;SAAC;SAAI;YAET;QACL,qBAAC;SAAG;SACA;SACF,oBAAC;UAAK,WAAU;oBAAqC;WAE9C;SAAC;SAAI;YAET;QACL,qBAAC;SAAG;SACA;SACF,oBAAC;UAAK,WAAU;oBAAqC;WAE9C;SAAC;SAAI;YAET;;QACF;;MACD;IAEN,oBAAC;KAAI,WAAU;eACb,qBAAC;MAAK,MAAK;MAAwB,WAAU;iBAAc,oBACzC,oBAAC,gBAAa,MAAM,KAAM;OACrC;MACH;;IACF;GACF"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SpecsDataViewsPage.js","names":[],"sources":["../../../../src/components/docs/specs/SpecsDataViewsPage.tsx"],"sourcesContent":["import Link from '@contractspec/lib.ui-link';\nimport { ChevronRight } from 'lucide-react';\n\n// export const metadata = {\n// title: 'DataViews: ContractSpec Docs',\n// description:\n// 'Learn how to define data views for querying, filtering, and presenting data in ContractSpec.',\n// };\n\nexport function SpecsDataViewsPage() {\n return (\n <div className=\"space-y-8\">\n <div className=\"space-y-4\">\n <h1 className=\"text-4xl font-bold\">DataViews</h1>\n <p className=\"text-muted-foreground\">\n A <strong>DataViewSpec</strong> describes how data should be queried,\n filtered, sorted, and presented to users. Runtime adapters execute\n optimized database queries and serve list views, detail views, and\n search interfaces while respecting policy constraints.\n </p>\n </div>\n\n <div className=\"space-y-4\">\n <h2 className=\"text-2xl font-bold\">Core concepts</h2>\n <div className=\"space-y-3\">\n <div>\n <h3 className=\"text-lg font-semibold\">Data sources</h3>\n <p className=\"text-muted-foreground\">\n A DataView connects to one or more data sources—databases, APIs,\n or other capabilities. You specify the source and the fields you\n want to expose.\n </p>\n </div>\n <div>\n <h3 className=\"text-lg font-semibold\">Filtering</h3>\n <p className=\"text-muted-foreground\">\n Define filters that users can apply to narrow down results.\n Filters can be simple (e.g., \"status equals 'active'\") or complex\n (e.g., \"created within the last 30 days AND assigned to current\n user\").\n </p>\n </div>\n <div>\n <h3 className=\"text-lg font-semibold\">Sorting</h3>\n <p className=\"text-muted-foreground\">\n Specify which fields can be sorted and the default sort order.\n ContractSpec generates efficient database queries with proper\n indexes.\n </p>\n </div>\n <div>\n <h3 className=\"text-lg font-semibold\">Pagination</h3>\n <p className=\"text-muted-foreground\">\n DataViews automatically support pagination to handle large\n datasets. You can configure page size limits and cursor-based or\n offset-based pagination.\n </p>\n </div>\n <div>\n <h3 className=\"text-lg font-semibold\">Aggregations</h3>\n <p className=\"text-muted-foreground\">\n Compute aggregates like counts, sums, averages, and group-by\n operations. These are useful for dashboards and summary views.\n </p>\n </div>\n </div>\n </div>\n\n <div className=\"space-y-4\">\n <h2 className=\"text-2xl font-bold\">Example DataViewSpec</h2>\n <p className=\"text-muted-foreground\">\n Here's a DataView for listing orders in TypeScript:\n </p>\n <div className=\"bg-background/50 border-border text-muted-foreground overflow-x-auto rounded-lg border p-4 font-mono text-sm\">\n <pre>{`import { defineDataView } from '@contractspec/lib.contracts';\nimport { SchemaModel, ScalarTypeEnum } from '@contractspec/lib.schema';\n\nexport const OrderList = defineDataView({\n meta: {\n key: 'order.list',\n version: '1.0.0',\n description: 'List of recent orders',\n },\n source: {\n type: 'database',\n table: 'orders',\n },\n fields: [\n { name: 'orderId', type: 'uuid', sortable: true },\n { name: 'customerName', type: 'string', searchable: true },\n { name: 'total', type: 'number', sortable: true },\n { \n name: 'status', \n type: 'enum', \n values: ['pending', 'processing', 'shipped'],\n filterable: true \n },\n { \n name: 'createdAt', \n type: 'timestamp', \n sortable: true, \n defaultSort: 'desc' \n },\n ],\n filters: [\n { name: 'status', field: 'status', operator: 'in' },\n { name: 'dateRange', field: 'createdAt', operator: 'between' },\n { name: 'minTotal', field: 'total', operator: 'gte' },\n ],\n pagination: {\n type: 'cursor',\n defaultPageSize: 50,\n maxPageSize: 200,\n },\n});`}</pre>\n </div>\n </div>\n\n <div className=\"space-y-4\">\n <h2 className=\"text-2xl font-bold\">Policy integration</h2>\n <p className=\"text-muted-foreground\">\n DataViews automatically enforce{' '}\n <Link\n href=\"/docs/specs/policy\"\n className=\"text-violet-400 hover:text-violet-300\"\n >\n PolicySpecs\n </Link>\n . If a user doesn't have permission to see certain fields, those\n fields are automatically filtered out or redacted. If a user can only\n see their own data, the query is automatically scoped.\n </p>\n <p className=\"text-muted-foreground\">\n This means you define the data view once, and it works correctly for\n all users based on their permissions—no need to write separate queries\n for different roles.\n </p>\n </div>\n\n <div className=\"space-y-4\">\n <h2 className=\"text-2xl font-bold\">Served outputs</h2>\n <p className=\"text-muted-foreground\">\n From a DataViewSpec, ContractSpec serves:\n </p>\n <ul className=\"text-muted-foreground list-inside list-disc space-y-2\">\n <li>\n <strong>Database queries</strong> – Optimized SQL or NoSQL queries\n executed at runtime\n </li>\n <li>\n <strong>API endpoints</strong> – RESTful or GraphQL endpoints for\n fetching data\n </li>\n <li>\n <strong>UI components</strong> – List views, tables, cards, and\n detail views\n </li>\n <li>\n <strong>Search interfaces</strong> – Full-text search with\n autocomplete\n </li>\n <li>\n <strong>Export functions</strong> – CSV, JSON, or Excel exports\n </li>\n </ul>\n </div>\n\n <div className=\"space-y-4\">\n <h2 className=\"text-2xl font-bold\">Best practices</h2>\n <ul className=\"text-muted-foreground list-inside list-disc space-y-2\">\n <li>\n Only expose fields that users actually need—this improves\n performance and security.\n </li>\n <li>Use appropriate indexes for sortable and filterable fields.</li>\n <li>\n Set reasonable pagination limits to prevent performance issues.\n </li>\n <li>\n Use aggregations sparingly—they can be expensive on large datasets.\n </li>\n <li>\n Test DataViews with realistic data volumes to ensure they perform\n well.\n </li>\n </ul>\n </div>\n\n <div className=\"flex items-center gap-4 pt-4\">\n <Link href=\"/docs/specs/capabilities\" className=\"btn-ghost\">\n Previous: Capabilities\n </Link>\n <Link href=\"/docs/specs/workflows\" className=\"btn-primary\">\n Next: Workflows <ChevronRight size={16} />\n </Link>\n </div>\n </div>\n );\n}\n"],"mappings":";;;;;AASA,SAAgB,qBAAqB;AACnC,QACE,qBAAC;EAAI,WAAU;;GACb,qBAAC;IAAI,WAAU;eACb,oBAAC;KAAG,WAAU;eAAqB;MAAc,EACjD,qBAAC;KAAE,WAAU;;MAAwB;MACjC,oBAAC,sBAAO,iBAAqB;;;MAI7B;KACA;GAEN,qBAAC;IAAI,WAAU;eACb,oBAAC;KAAG,WAAU;eAAqB;MAAkB,EACrD,qBAAC;KAAI,WAAU;;MACb,qBAAC,oBACC,oBAAC;OAAG,WAAU;iBAAwB;QAAiB,EACvD,oBAAC;OAAE,WAAU;iBAAwB;QAIjC,IACA;MACN,qBAAC,oBACC,oBAAC;OAAG,WAAU;iBAAwB;QAAc,EACpD,oBAAC;OAAE,WAAU;iBAAwB;QAKjC,IACA;MACN,qBAAC,oBACC,oBAAC;OAAG,WAAU;iBAAwB;QAAY,EAClD,oBAAC;OAAE,WAAU;iBAAwB;QAIjC,IACA;MACN,qBAAC,oBACC,oBAAC;OAAG,WAAU;iBAAwB;QAAe,EACrD,oBAAC;OAAE,WAAU;iBAAwB;QAIjC,IACA;MACN,qBAAC,oBACC,oBAAC;OAAG,WAAU;iBAAwB;QAAiB,EACvD,oBAAC;OAAE,WAAU;iBAAwB;QAGjC,IACA;;MACF;KACF;GAEN,qBAAC;IAAI,WAAU;;KACb,oBAAC;MAAG,WAAU;gBAAqB;OAAyB;KAC5D,oBAAC;MAAE,WAAU;gBAAwB;OAEjC;KACJ,oBAAC;MAAI,WAAU;gBACb,oBAAC,mBAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAwCL;OACG;;KACF;GAEN,qBAAC;IAAI,WAAU;;KACb,oBAAC;MAAG,WAAU;gBAAqB;OAAuB;KAC1D,qBAAC;MAAE,WAAU;;OAAwB;OACH;OAChC,oBAAC;QACC,MAAK;QACL,WAAU;kBACX;SAEM;;;OAIL;KACJ,oBAAC;MAAE,WAAU;gBAAwB;OAIjC;;KACA;GAEN,qBAAC;IAAI,WAAU;;KACb,oBAAC;MAAG,WAAU;gBAAqB;OAAmB;KACtD,oBAAC;MAAE,WAAU;gBAAwB;OAEjC;KACJ,qBAAC;MAAG,WAAU;;OACZ,qBAAC,mBACC,oBAAC,sBAAO,qBAAyB,6DAE9B;OACL,qBAAC,mBACC,oBAAC,sBAAO,kBAAsB,yDAE3B;OACL,qBAAC,mBACC,oBAAC,sBAAO,kBAAsB,sDAE3B;OACL,qBAAC,mBACC,oBAAC,sBAAO,sBAA0B,6CAE/B;OACL,qBAAC,mBACC,oBAAC,sBAAO,qBAAyB,sCAC9B;;OACF;;KACD;GAEN,qBAAC;IAAI,WAAU;eACb,oBAAC;KAAG,WAAU;eAAqB;MAAmB,EACtD,qBAAC;KAAG,WAAU;;MACZ,oBAAC,kBAAG,wFAGC;MACL,oBAAC,kBAAG,gEAAgE;MACpE,oBAAC,kBAAG,oEAEC;MACL,oBAAC,kBAAG,wEAEC;MACL,oBAAC,kBAAG,4EAGC;;MACF;KACD;GAEN,qBAAC;IAAI,WAAU;eACb,oBAAC;KAAK,MAAK;KAA2B,WAAU;eAAY;MAErD,EACP,qBAAC;KAAK,MAAK;KAAwB,WAAU;gBAAc,oBACzC,oBAAC,gBAAa,MAAM,KAAM;MACrC;KACH;;GACF"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SpecsOverlaysPage.js","names":[],"sources":["../../../../src/components/docs/specs/SpecsOverlaysPage.tsx"],"sourcesContent":["import Link from '@contractspec/lib.ui-link';\nimport { ChevronRight } from 'lucide-react';\n\n// export const metadata = {\n// title: 'Overlays: ContractSpec Docs',\n// description:\n// 'Learn how OverlaySpecs enable safe, signed customization of UI layouts and field visibility in ContractSpec.',\n// };\n\nexport function SpecsOverlaysPage() {\n return (\n <div className=\"space-y-8\">\n <div className=\"space-y-4\">\n <h1 className=\"text-4xl font-bold\">Overlays</h1>\n <p className=\"text-muted-foreground\">\n An <strong>OverlaySpec</strong> allows tenants or users to customize\n UI layouts and field visibility without modifying the underlying\n application code. Overlays are cryptographically signed to ensure they\n respect policy boundaries and cannot introduce security\n vulnerabilities.\n </p>\n </div>\n\n <div className=\"space-y-4\">\n <h2 className=\"text-2xl font-bold\">Why overlays matter</h2>\n <p className=\"text-muted-foreground\">\n Different users have different needs. A power user might want to see\n all available fields and actions, while a casual user prefers a\n simplified interface. A tenant in a multi-tenant application might\n want to brand the UI or hide features they don't use.\n </p>\n <p className=\"text-muted-foreground\">\n Traditional approaches require either building multiple UIs or adding\n complex configuration logic throughout the codebase. OverlaySpecs\n provide a safer, more maintainable solution: users can customize their\n experience, but only within the bounds allowed by the underlying specs\n and policies.\n </p>\n </div>\n\n <div className=\"space-y-4\">\n <h2 className=\"text-2xl font-bold\">What overlays can do</h2>\n <ul className=\"text-muted-foreground list-inside list-disc space-y-2\">\n <li>\n <strong>Hide or show fields</strong> – Remove fields from forms or\n detail views (but only if the user has permission to see them in the\n first place)\n </li>\n <li>\n <strong>Reorder fields</strong> – Change the order in which fields\n appear\n </li>\n <li>\n <strong>Rename labels</strong> – Use different terminology that's\n more familiar to the user\n </li>\n <li>\n <strong>Change layouts</strong> – Switch between list, grid, or card\n views\n </li>\n <li>\n <strong>Add help text</strong> – Provide context-specific guidance\n </li>\n <li>\n <strong>Set default values</strong> – Pre-fill forms with\n tenant-specific defaults\n </li>\n <li>\n <strong>Apply branding</strong> – Customize colors, logos, and\n styling (within approved themes)\n </li>\n </ul>\n </div>\n\n <div className=\"space-y-4\">\n <h2 className=\"text-2xl font-bold\">Example OverlaySpec</h2>\n <p className=\"text-muted-foreground\">\n Here's an overlay that customizes an order form:\n </p>\n <div className=\"bg-background/50 border-border text-muted-foreground overflow-x-auto rounded-lg border p-4 font-mono text-sm\">\n <pre>{`overlayId: acme-order-form\nversion: '1.0.0'.0.0\nappliesTo:\n capability: createOrder\n tenantId: acme-corp\n \nmodifications:\n - type: hideField\n field: internalNotes\n reason: \"ACME doesn't use internal notes\"\n \n - type: renameLabel\n field: customerReference\n newLabel: \"PO Number\"\n \n - type: reorderFields\n fields:\n - customerReference\n - items\n - shippingAddress\n - billingAddress\n - paymentMethod\n \n - type: setDefault\n field: paymentMethod\n value: \"net30\"\n \n - type: addHelpText\n field: customerReference\n text: \"Enter your purchase order number from your procurement system\"\n \n - type: makeRequired\n field: customerReference\n \nsignature:\n algorithm: EdDSA\n publicKey: \"acme-corp-overlay-key\"\n signature: \"base64-encoded-signature\"`}</pre>\n </div>\n </div>\n\n <div className=\"space-y-4\">\n <h2 className=\"text-2xl font-bold\">Safety guarantees</h2>\n <p className=\"text-muted-foreground\">\n Overlays are powerful, but they must not compromise security or data\n integrity. ContractSpec enforces several guarantees:\n </p>\n <ul className=\"text-muted-foreground list-inside list-disc space-y-2\">\n <li>\n <strong>Overlays cannot grant new permissions</strong> – They can\n only hide or rearrange what the user is already allowed to see\n </li>\n <li>\n <strong>Overlays cannot bypass validation</strong> – Field types,\n constraints, and business rules from the underlying spec still apply\n </li>\n <li>\n <strong>Overlays must be signed</strong> – Only authorized parties\n (typically tenant admins) can create overlays\n </li>\n <li>\n <strong>Overlays are versioned</strong> – Changes to overlays are\n tracked and can be rolled back\n </li>\n <li>\n <strong>Overlays are audited</strong> – Every overlay application is\n logged\n </li>\n </ul>\n </div>\n\n <div className=\"space-y-4\">\n <h2 className=\"text-2xl font-bold\">Creating overlays</h2>\n <p className=\"text-muted-foreground\">\n Overlays can be created through:\n </p>\n <ul className=\"text-muted-foreground list-inside list-disc space-y-2\">\n <li>\n <strong>Visual editor</strong> – A drag-and-drop interface for\n non-technical users\n </li>\n <li>\n <strong>TypeScript/JSON</strong> – For developers who prefer code\n </li>\n <li>\n <strong>API</strong> – Programmatically create overlays for\n automation\n </li>\n </ul>\n <p className=\"text-muted-foreground\">\n Once created, overlays must be signed using a private key. The\n corresponding public key is registered with ContractSpec, which\n verifies the signature before applying the overlay.\n </p>\n <p className=\"text-muted-foreground\">\n See{' '}\n <Link\n href=\"/docs/libraries/overlay-engine\"\n className=\"text-violet-400 underline\"\n >\n Overlay Engine docs\n </Link>{' '}\n and the{' '}\n <Link\n href=\"/docs/advanced/overlay-editor\"\n className=\"text-violet-400 underline\"\n >\n Overlay Editor guide\n </Link>{' '}\n for end-to-end workflows.\n </p>\n </div>\n\n <div className=\"space-y-4\">\n <h2 className=\"text-2xl font-bold\">Overlay scope</h2>\n <p className=\"text-muted-foreground\">Overlays can be scoped to:</p>\n <ul className=\"text-muted-foreground list-inside list-disc space-y-2\">\n <li>\n <strong>Tenant</strong> – All users in a tenant see the same overlay\n </li>\n <li>\n <strong>User</strong> – Individual users can have personal overlays\n </li>\n <li>\n <strong>Role</strong> – All users with a specific role see the\n overlay\n </li>\n <li>\n <strong>Device</strong> – Different overlays for mobile vs desktop\n </li>\n </ul>\n <p className=\"text-muted-foreground\">\n If multiple overlays apply to the same user, they are merged in order\n of specificity (user overlays override role overlays, which override\n tenant overlays).\n </p>\n </div>\n\n <div className=\"space-y-4\">\n <h2 className=\"text-2xl font-bold\">Best practices</h2>\n <ul className=\"text-muted-foreground list-inside list-disc space-y-2\">\n <li>\n Start with the default UI and only create overlays when users\n request specific changes.\n </li>\n <li>\n Document why each overlay modification was made—this helps when\n reviewing or updating overlays.\n </li>\n <li>\n Test overlays thoroughly to ensure they don't break workflows or\n confuse users.\n </li>\n <li>\n Use tenant-level overlays for organizational customizations and\n user-level overlays for personal preferences.\n </li>\n <li>\n Regularly review overlays to remove ones that are no longer needed.\n </li>\n <li>\n Protect overlay signing keys carefully—they control what\n customizations are allowed.\n </li>\n </ul>\n </div>\n\n <div className=\"flex items-center gap-4 pt-4\">\n <Link href=\"/docs/specs/policy\" className=\"btn-ghost\">\n Previous: Policy\n </Link>\n <Link href=\"/docs/safety\" className=\"btn-primary\">\n Next: Safety <ChevronRight size={16} />\n </Link>\n </div>\n </div>\n );\n}\n"],"mappings":";;;;;AASA,SAAgB,oBAAoB;AAClC,QACE,qBAAC;EAAI,WAAU;;GACb,qBAAC;IAAI,WAAU;eACb,oBAAC;KAAG,WAAU;eAAqB;MAAa,EAChD,qBAAC;KAAE,WAAU;;MAAwB;MAChC,oBAAC,sBAAO,gBAAoB;;;MAK7B;KACA;GAEN,qBAAC;IAAI,WAAU;;KACb,oBAAC;MAAG,WAAU;gBAAqB;OAAwB;KAC3D,oBAAC;MAAE,WAAU;gBAAwB;OAKjC;KACJ,oBAAC;MAAE,WAAU;gBAAwB;OAMjC;;KACA;GAEN,qBAAC;IAAI,WAAU;eACb,oBAAC;KAAG,WAAU;eAAqB;MAAyB,EAC5D,qBAAC;KAAG,WAAU;;MACZ,qBAAC,mBACC,oBAAC,sBAAO,wBAA4B,wHAGjC;MACL,qBAAC,mBACC,oBAAC,sBAAO,mBAAuB,kDAE5B;MACL,qBAAC,mBACC,oBAAC,sBAAO,kBAAsB,qEAE3B;MACL,qBAAC,mBACC,oBAAC,sBAAO,mBAAuB,mDAE5B;MACL,qBAAC,mBACC,oBAAC,sBAAO,kBAAsB,4CAC3B;MACL,qBAAC,mBACC,oBAAC,sBAAO,uBAA2B,uDAEhC;MACL,qBAAC,mBACC,oBAAC,sBAAO,mBAAuB,wEAE5B;;MACF;KACD;GAEN,qBAAC;IAAI,WAAU;;KACb,oBAAC;MAAG,WAAU;gBAAqB;OAAwB;KAC3D,oBAAC;MAAE,WAAU;gBAAwB;OAEjC;KACJ,oBAAC;MAAI,WAAU;gBACb,oBAAC,mBAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2CAqC+B;OACjC;;KACF;GAEN,qBAAC;IAAI,WAAU;;KACb,oBAAC;MAAG,WAAU;gBAAqB;OAAsB;KACzD,oBAAC;MAAE,WAAU;gBAAwB;OAGjC;KACJ,qBAAC;MAAG,WAAU;;OACZ,qBAAC,mBACC,oBAAC,sBAAO,0CAA8C,kFAEnD;OACL,qBAAC,mBACC,oBAAC,sBAAO,sCAA0C,4FAE/C;OACL,qBAAC,mBACC,oBAAC,sBAAO,4BAAgC,gFAErC;OACL,qBAAC,mBACC,oBAAC,sBAAO,2BAA+B,iEAEpC;OACL,qBAAC,mBACC,oBAAC,sBAAO,yBAA6B,8CAElC;;OACF;;KACD;GAEN,qBAAC;IAAI,WAAU;;KACb,oBAAC;MAAG,WAAU;gBAAqB;OAAsB;KACzD,oBAAC;MAAE,WAAU;gBAAwB;OAEjC;KACJ,qBAAC;MAAG,WAAU;;OACZ,qBAAC,mBACC,oBAAC,sBAAO,kBAAsB,4DAE3B;OACL,qBAAC,mBACC,oBAAC,sBAAO,oBAAwB,yCAC7B;OACL,qBAAC,mBACC,oBAAC,sBAAO,QAAY,0DAEjB;;OACF;KACL,oBAAC;MAAE,WAAU;gBAAwB;OAIjC;KACJ,qBAAC;MAAE,WAAU;;OAAwB;OAC/B;OACJ,oBAAC;QACC,MAAK;QACL,WAAU;kBACX;SAEM;OAAC;OAAI;OACJ;OACR,oBAAC;QACC,MAAK;QACL,WAAU;kBACX;SAEM;OAAC;OAAI;;OAEV;;KACA;GAEN,qBAAC;IAAI,WAAU;;KACb,oBAAC;MAAG,WAAU;gBAAqB;OAAkB;KACrD,oBAAC;MAAE,WAAU;gBAAwB;OAA8B;KACnE,qBAAC;MAAG,WAAU;;OACZ,qBAAC,mBACC,oBAAC,sBAAO,WAAe,qDACpB;OACL,qBAAC,mBACC,oBAAC,sBAAO,SAAa,sDAClB;OACL,qBAAC,mBACC,oBAAC,sBAAO,SAAa,yDAElB;OACL,qBAAC,mBACC,oBAAC,sBAAO,WAAe,mDACpB;;OACF;KACL,oBAAC;MAAE,WAAU;gBAAwB;OAIjC;;KACA;GAEN,qBAAC;IAAI,WAAU;eACb,oBAAC;KAAG,WAAU;eAAqB;MAAmB,EACtD,qBAAC;KAAG,WAAU;;MACZ,oBAAC,kBAAG,4FAGC;MACL,oBAAC,kBAAG,oGAGC;MACL,oBAAC,kBAAG,oFAGC;MACL,oBAAC,kBAAG,kHAGC;MACL,oBAAC,kBAAG,wEAEC;MACL,oBAAC,kBAAG,yFAGC;;MACF;KACD;GAEN,qBAAC;IAAI,WAAU;eACb,oBAAC;KAAK,MAAK;KAAqB,WAAU;eAAY;MAE/C,EACP,qBAAC;KAAK,MAAK;KAAe,WAAU;gBAAc,iBACnC,oBAAC,gBAAa,MAAM,KAAM;MAClC;KACH;;GACF"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SpecsOverviewPage.js","names":[],"sources":["../../../../src/components/docs/specs/SpecsOverviewPage.tsx"],"sourcesContent":["import Link from '@contractspec/lib.ui-link';\nimport { ChevronRight } from 'lucide-react';\n\n// export const metadata = {\n// title: 'Specifications Overview: ContractSpec Docs',\n// description:\n// 'Learn about all specification types in ContractSpec and why spec-first development matters.',\n// };\n\nexport function SpecsOverviewPage() {\n return (\n <div className=\"space-y-8\">\n <div className=\"space-y-4\">\n <h1 className=\"text-4xl font-bold\">Specifications Overview</h1>\n <p className=\"text-muted-foreground\">\n ContractSpec is built on a <strong>spec-first</strong> philosophy. You\n define declarative TypeScript specifications that describe what your\n application can do. Runtime adapters automatically serve these specs\n as type-safe API endpoints (REST, GraphQL, MCP), enforce policies, and\n validate inputs/outputs—no code generation required.\n </p>\n </div>\n\n <div className=\"space-y-4\">\n <h2 className=\"text-2xl font-bold\">Why spec-first matters</h2>\n <p className=\"text-muted-foreground\">\n Traditional development requires writing and maintaining separate code\n for APIs, databases, UI components, validation logic, and access\n control. This approach leads to:\n </p>\n <ul className=\"text-muted-foreground list-inside list-disc space-y-2\">\n <li>Duplication across front-end and back-end</li>\n <li>Type mismatches and runtime errors</li>\n <li>Security vulnerabilities from inconsistent policy enforcement</li>\n <li>High maintenance burden when requirements change</li>\n </ul>\n <p className=\"text-muted-foreground\">\n With ContractSpec, you define your application's operations\n (Commands/Queries), workflows, and policies in pure TypeScript.\n Runtime adapters ensure consistency, type safety, and policy\n enforcement across your entire stack—the spec <em>is</em> the\n implementation.\n </p>\n </div>\n\n <div className=\"space-y-4\">\n <h2 className=\"text-2xl font-bold\">Specification types</h2>\n <div className=\"border-border/50 overflow-x-auto rounded-lg border\">\n <table className=\"w-full text-left text-sm\">\n <thead className=\"bg-card/50\">\n <tr className=\"border-border/50 border-b\">\n <th className=\"px-4 py-3 font-semibold\">Spec Type</th>\n <th className=\"px-4 py-3 font-semibold\">Purpose</th>\n <th className=\"px-4 py-3 font-semibold\">Generates</th>\n </tr>\n </thead>\n <tbody className=\"divide-border/50 divide-y\">\n <tr>\n <td className=\"px-4 py-3 align-top\">\n <Link\n href=\"/docs/specs/capabilities\"\n className=\"text-violet-400 hover:text-violet-300\"\n >\n <strong>CapabilitySpec</strong>\n </Link>\n </td>\n <td className=\"px-4 py-3 align-top\">\n Defines what your application can do: operations\n (Commands/Queries), their inputs, outputs, policies, and side\n effects.\n </td>\n <td className=\"px-4 py-3 align-top\">\n Runtime-served REST/GraphQL/MCP endpoints, Zod validation,\n policy enforcement\n </td>\n </tr>\n <tr>\n <td className=\"px-4 py-3 align-top\">\n <strong>DataViewSpec</strong>\n </td>\n <td className=\"px-4 py-3 align-top\">\n Describes how data should be queried, filtered, sorted, and\n presented to users.\n </td>\n <td className=\"px-4 py-3 align-top\">\n Database queries, list/detail views, search interfaces\n </td>\n </tr>\n <tr>\n <td className=\"px-4 py-3 align-top\">\n <Link\n href=\"/docs/specs/workflows\"\n className=\"text-violet-400 hover:text-violet-300\"\n >\n <strong>WorkflowSpec</strong>\n </Link>\n </td>\n <td className=\"px-4 py-3 align-top\">\n Orchestrates multi-step processes with retries, compensation,\n and monitoring.\n </td>\n <td className=\"px-4 py-3 align-top\">\n Workflow engine, state machines, retry logic, observability\n hooks\n </td>\n </tr>\n <tr>\n <td className=\"px-4 py-3 align-top\">\n <strong>PolicySpec</strong>\n </td>\n <td className=\"px-4 py-3 align-top\">\n Defines who can do what, when, and under what conditions.\n Supports ABAC and PII rules.\n </td>\n <td className=\"px-4 py-3 align-top\">\n Policy decision points, access control middleware, audit logs\n </td>\n </tr>\n <tr>\n <td className=\"px-4 py-3 align-top\">\n <strong>OverlaySpec</strong>\n </td>\n <td className=\"px-4 py-3 align-top\">\n Allows safe, signed customization of UI layouts and field\n visibility by tenants or users.\n </td>\n <td className=\"px-4 py-3 align-top\">\n Personalized UI components, layout variations, conditional\n rendering\n </td>\n </tr>\n <tr>\n <td className=\"px-4 py-3 align-top\">\n <strong>TelemetrySpec</strong>\n </td>\n <td className=\"px-4 py-3 align-top\">\n Specifies what metrics, logs, and traces to collect for\n observability.\n </td>\n <td className=\"px-4 py-3 align-top\">\n Instrumentation code, dashboards, alerting rules\n </td>\n </tr>\n <tr>\n <td className=\"px-4 py-3 align-top\">\n <Link\n href=\"/docs/safety/migrations\"\n className=\"text-violet-400 hover:text-violet-300\"\n >\n <strong>MigrationSpec</strong>\n </Link>\n </td>\n <td className=\"px-4 py-3 align-top\">\n Manages incremental, reversible schema and data migrations.\n </td>\n <td className=\"px-4 py-3 align-top\">\n Migration scripts, rollback procedures, version tracking\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n </div>\n\n <div className=\"space-y-4\">\n <h2 className=\"text-2xl font-bold\">How specs work together</h2>\n <p className=\"text-muted-foreground\">\n Specs compose naturally. A <strong>WorkflowSpec</strong> can invoke\n multiple <strong>CapabilitySpecs</strong>. A{' '}\n <strong>DataViewSpec</strong> respects <strong>PolicySpecs</strong> to\n filter sensitive fields. An <strong>OverlaySpec</strong> can hide or\n rearrange UI elements generated from a <strong>CapabilitySpec</strong>\n , but only within the bounds allowed by the underlying policy.\n </p>\n <p className=\"text-muted-foreground\">\n This composability means you can build complex applications from\n simple, reusable building blocks—all while maintaining type safety and\n policy enforcement.\n </p>\n </div>\n\n <div className=\"space-y-4\">\n <h2 className=\"text-2xl font-bold\">Next steps</h2>\n <p className=\"text-muted-foreground\">\n Explore each specification type in detail using the links in the table\n above, or continue with the core concepts:\n </p>\n <div className=\"flex flex-wrap gap-4 pt-4\">\n <Link href=\"/docs/specs/capabilities\" className=\"btn-primary\">\n Capabilities <ChevronRight size={16} className=\"inline\" />\n </Link>\n <Link href=\"/docs/specs/workflows\" className=\"btn-ghost\">\n Workflows <ChevronRight size={16} className=\"inline\" />\n </Link>\n <Link href=\"/docs/safety\" className=\"btn-ghost\">\n Safety Features <ChevronRight size={16} className=\"inline\" />\n </Link>\n </div>\n </div>\n </div>\n );\n}\n"],"mappings":";;;;;AASA,SAAgB,oBAAoB;AAClC,QACE,qBAAC;EAAI,WAAU;;GACb,qBAAC;IAAI,WAAU;eACb,oBAAC;KAAG,WAAU;eAAqB;MAA4B,EAC/D,qBAAC;KAAE,WAAU;;MAAwB;MACR,oBAAC,sBAAO,eAAmB;;;MAKpD;KACA;GAEN,qBAAC;IAAI,WAAU;;KACb,oBAAC;MAAG,WAAU;gBAAqB;OAA2B;KAC9D,oBAAC;MAAE,WAAU;gBAAwB;OAIjC;KACJ,qBAAC;MAAG,WAAU;;OACZ,oBAAC,kBAAG,8CAA8C;OAClD,oBAAC,kBAAG,uCAAuC;OAC3C,oBAAC,kBAAG,kEAAkE;OACtE,oBAAC,kBAAG,qDAAqD;;OACtD;KACL,qBAAC;MAAE,WAAU;;OAAwB;OAIW,oBAAC,kBAAG,OAAO;;;OAEvD;;KACA;GAEN,qBAAC;IAAI,WAAU;eACb,oBAAC;KAAG,WAAU;eAAqB;MAAwB,EAC3D,oBAAC;KAAI,WAAU;eACb,qBAAC;MAAM,WAAU;iBACf,oBAAC;OAAM,WAAU;iBACf,qBAAC;QAAG,WAAU;;SACZ,oBAAC;UAAG,WAAU;oBAA0B;WAAc;SACtD,oBAAC;UAAG,WAAU;oBAA0B;WAAY;SACpD,oBAAC;UAAG,WAAU;oBAA0B;WAAc;;SACnD;QACC,EACR,qBAAC;OAAM,WAAU;;QACf,qBAAC;SACC,oBAAC;UAAG,WAAU;oBACZ,oBAAC;WACC,MAAK;WACL,WAAU;qBAEV,oBAAC,sBAAO,mBAAuB;YAC1B;WACJ;SACL,oBAAC;UAAG,WAAU;oBAAsB;WAI/B;SACL,oBAAC;UAAG,WAAU;oBAAsB;WAG/B;YACF;QACL,qBAAC;SACC,oBAAC;UAAG,WAAU;oBACZ,oBAAC,sBAAO,iBAAqB;WAC1B;SACL,oBAAC;UAAG,WAAU;oBAAsB;WAG/B;SACL,oBAAC;UAAG,WAAU;oBAAsB;WAE/B;YACF;QACL,qBAAC;SACC,oBAAC;UAAG,WAAU;oBACZ,oBAAC;WACC,MAAK;WACL,WAAU;qBAEV,oBAAC,sBAAO,iBAAqB;YACxB;WACJ;SACL,oBAAC;UAAG,WAAU;oBAAsB;WAG/B;SACL,oBAAC;UAAG,WAAU;oBAAsB;WAG/B;YACF;QACL,qBAAC;SACC,oBAAC;UAAG,WAAU;oBACZ,oBAAC,sBAAO,eAAmB;WACxB;SACL,oBAAC;UAAG,WAAU;oBAAsB;WAG/B;SACL,oBAAC;UAAG,WAAU;oBAAsB;WAE/B;YACF;QACL,qBAAC;SACC,oBAAC;UAAG,WAAU;oBACZ,oBAAC,sBAAO,gBAAoB;WACzB;SACL,oBAAC;UAAG,WAAU;oBAAsB;WAG/B;SACL,oBAAC;UAAG,WAAU;oBAAsB;WAG/B;YACF;QACL,qBAAC;SACC,oBAAC;UAAG,WAAU;oBACZ,oBAAC,sBAAO,kBAAsB;WAC3B;SACL,oBAAC;UAAG,WAAU;oBAAsB;WAG/B;SACL,oBAAC;UAAG,WAAU;oBAAsB;WAE/B;YACF;QACL,qBAAC;SACC,oBAAC;UAAG,WAAU;oBACZ,oBAAC;WACC,MAAK;WACL,WAAU;qBAEV,oBAAC,sBAAO,kBAAsB;YACzB;WACJ;SACL,oBAAC;UAAG,WAAU;oBAAsB;WAE/B;SACL,oBAAC;UAAG,WAAU;oBAAsB;WAE/B;YACF;;QACC;OACF;MACJ;KACF;GAEN,qBAAC;IAAI,WAAU;;KACb,oBAAC;MAAG,WAAU;gBAAqB;OAA4B;KAC/D,qBAAC;MAAE,WAAU;;OAAwB;OACR,oBAAC,sBAAO,iBAAqB;;OAC/C,oBAAC,sBAAO,oBAAwB;;OAAI;OAC7C,oBAAC,sBAAO,iBAAqB;;OAAU,oBAAC,sBAAO,gBAAoB;;OACvC,oBAAC,sBAAO,gBAAoB;;OACjB,oBAAC,sBAAO,mBAAuB;;;OAEpE;KACJ,oBAAC;MAAE,WAAU;gBAAwB;OAIjC;;KACA;GAEN,qBAAC;IAAI,WAAU;;KACb,oBAAC;MAAG,WAAU;gBAAqB;OAAe;KAClD,oBAAC;MAAE,WAAU;gBAAwB;OAGjC;KACJ,qBAAC;MAAI,WAAU;;OACb,qBAAC;QAAK,MAAK;QAA2B,WAAU;mBAAc,iBAC/C,oBAAC;SAAa,MAAM;SAAI,WAAU;UAAW;SACrD;OACP,qBAAC;QAAK,MAAK;QAAwB,WAAU;mBAAY,cAC7C,oBAAC;SAAa,MAAM;SAAI,WAAU;UAAW;SAClD;OACP,qBAAC;QAAK,MAAK;QAAe,WAAU;mBAAY,oBAC9B,oBAAC;SAAa,MAAM;SAAI,WAAU;UAAW;SACxD;;OACH;;KACF;;GACF"}
|